Idioma

MediaCodec.QueueInputBuffer Método

Definição

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.

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.

Aplica-se a