MediaCodec.QueueInputBuffer Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Después de rellenar un intervalo del búfer de entrada en el índice especificado, envíelo al 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
Índice de un búfer de entrada propiedad del cliente devuelto anteriormente en una llamada a #dequeueInputBuffer.
- offset
- Int32
Desplazamiento de bytes en el búfer de entrada en el que se inician los datos.
- size
- Int32
Número de bytes de datos de entrada válidos.
- presentationTimeUs
- Int64
Marca de tiempo de presentación en microsegundos para este búfer. Normalmente, este es el tiempo multimedia en el que se debe presentar este búfer (representado). Cuando se usa una superficie de salida, se propagará como para SurfaceTexture#getTimestamp timestamp el marco (después de la conversión a nanosegundos).
- flags
- MediaCodecBufferFlags
Máscara de bits de marcas #BUFFER_FLAG_CODEC_CONFIG y #BUFFER_FLAG_END_OF_STREAM.
Aunque no está prohibido, la mayoría de los códecs no usan la #BUFFER_FLAG_KEY_FRAME marca para los búferes de entrada.
- Atributos
Excepciones
si no está en el estado Executing.
error de códec.
si se ha especificado un objeto criptográfico en M:Android.Media.MediaCodec.Configure(Android.Media.MediaFormat,Android.Views.Surface,Android.Views.Surface,Android.Views.Surface)
Comentarios
Después de rellenar un intervalo del búfer de entrada en el índice especificado, envíelo al componente. Una vez que se pone en cola un búfer de entrada en el códec, NO DEBE usarse hasta que se recupere más adelante en #getInputBuffer respuesta a un #dequeueInputBuffer valor devuelto o a una Callback#onInputBufferAvailable devolución de llamada.
Muchos descodificadores requieren que la secuencia de datos comprimida real esté precedida de "datos específicos del códec", es decir, los datos de instalación utilizados para inicializar el códec, como PPS/SPS, en el caso de tablas de código o vídeo de AVC en el caso de audio vorbis. La clase android.media.MediaExtractor proporciona datos específicos del códec como parte del formato de pista devuelto en entradas denominadas "csd-0", "csd-1" ...
Estos búferes se pueden enviar directamente después #start o #flush especificando la marca #BUFFER_FLAG_CODEC_CONFIG. Sin embargo, si configura el códec con una MediaFormat clase que contiene estas claves, MediaCodec los enviará automáticamente directamente después del inicio. Por lo tanto, se desaconseja el uso de #BUFFER_FLAG_CODEC_CONFIG la marca y solo se recomienda para los usuarios avanzados.
Para indicar que esta es la parte final de los datos de entrada (o, en su lugar, que no se siguen más datos de entrada a menos que el descodificador se vacía posteriormente) especifique la marca #BUFFER_FLAG_END_OF_STREAM.
<strong>Note:</strong> Antes de android.os.Build.VERSION_CODES#M, presentationTimeUs no se propagó a la marca de tiempo de fotogramas de (representado) Surface búferes de salida y la marca de tiempo de fotograma resultante no estaba definida. Use #releaseOutputBuffer(int, long) para asegurarse de que se establece una marca de tiempo de fotograma específica. Del mismo modo, dado que la superficie de destino puede usar las marcas de tiempo de fotograma para la sincronización de representación, <se debe tener cuidado de>normalizar presentationTimeUs para no confundirse con una hora del sistema. (Consulta #releaseOutputBuffer(int, long) detalles de SurfaceView).</strong>
Java documentación para android.media.MediaCodec.queueInputBuffer(int, int, int, long, int).
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.