MediaCodec.QueueInputBuffer Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Depois de preencher um intervalo do buffer de entrada no índice especificado, envie-o ao componente.
[Android.Runtime.Register("queueInputBuffer", "(IIIJI)V", "")]
public void QueueInputBuffer(int index, int offset, int size, long presentationTimeUs, Android.Media.MediaCodecBufferFlags flags);
[<Android.Runtime.Register("queueInputBuffer", "(IIIJI)V", "")>]
member this.QueueInputBuffer : int * int * int * int64 * Android.Media.MediaCodecBufferFlags -> unit
Parâmetros
- index
- Int32
O índice de um buffer de entrada de propriedade do cliente retornado anteriormente em uma chamada para #dequeueInputBuffer.
- offset
- Int32
O deslocamento de bytes para o buffer de entrada no qual os dados são iniciados.
- size
- Int32
O número de bytes de dados de entrada válidos.
- presentationTimeUs
- Int64
O carimbo de data/hora da apresentação em microssegundos para esse buffer. Normalmente, esse é o tempo de mídia no qual esse buffer deve ser apresentado (renderizado). Ao usar uma superfície de saída, isso será propagado como o SurfaceTexture#getTimestamp timestamp quadro (após a conversão em nanossegundos).
- flags
- MediaCodecBufferFlags
Uma máscara de sinalizadores #BUFFER_FLAG_CODEC_CONFIG e #BUFFER_FLAG_END_OF_STREAM.
Embora não seja proibido, a maioria dos codecs não usa o #BUFFER_FLAG_KEY_FRAME sinalizador para buffers de entrada.
- Atributos
Exceções
se não estiver no estado em execução.
após o erro codec.
se um objeto de criptografia tiver sido especificado em M:Android.Media.MediaCodec.Configure(Android.Media.MediaFormat,Android.Views.Surface,Android.Views.Surface,Android.Views.Surface)
Comentários
Depois de preencher um intervalo do buffer de entrada no índice especificado, envie-o ao componente. Depois que um buffer de entrada é enfileirado no codec, ele NÃO deve ser usado até que seja recuperado posteriormente #getInputBuffer em resposta a um #dequeueInputBuffer valor retornado ou um Callback#onInputBufferAvailable retorno de chamada.
Muitos decodificadores exigem que o fluxo de dados compactado real seja precedido por "dados específicos do codec", ou seja, dados de instalação usados para inicializar o codec, como PPS/SPS, no caso de tabelas de código ou vídeo do AVC no caso de áudio vorbis. A classe android.media.MediaExtractor fornece dados específicos de codec como parte do formato de faixa retornado em entradas chamadas "csd-0", "csd-1" ...
Esses buffers podem ser enviados diretamente após #start ou #flush especificando o sinalizador #BUFFER_FLAG_CODEC_CONFIG. No entanto, se você configurar o codec com uma MediaFormat que contenha essas chaves, elas serão enviadas automaticamente pelo MediaCodec logo após o início. Portanto, o uso do #BUFFER_FLAG_CODEC_CONFIG sinalizador é desencorajado e é recomendado apenas para usuários avançados.
Para indicar que essa é a parte final dos dados de entrada (ou melhor, que não há mais dados de entrada a seguir, a menos que o decodificador seja liberado posteriormente) especifique o sinalizador #BUFFER_FLAG_END_OF_STREAM.
<Nota forte>:</strong> Antes android.os.Build.VERSION_CODES#Mde , presentationTimeUs não foi propagado para o carimbo de data/hora do quadro de buffers de saída de Surface de Surface e o carimbo de data/hora do quadro resultante foi indefinido. Use #releaseOutputBuffer(int, long) para garantir que um carimbo de data/hora de quadro específico esteja definido. Da mesma forma, como os carimbos de data/hora de quadro podem ser usados pela superfície de destino para renderizar a sincronização, <é necessário ter cuidado forte>para normalizar presentationTimeUs para não ser confundido com o tempo do sistema. (Consulte #releaseOutputBuffer(int, long) específicos do SurfaceView).</strong>
Java documentação para android.media.MediaCodec.queueInputBuffer(int, int, int, long, int).
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.