Lingua

MediaCodec.QueueInputBuffer Metodo

Definizione

Dopo aver riempito un intervallo del buffer di input in corrispondenza dell'indice specificato, inviarlo 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

Parametri

index
Int32

Indice di un buffer di input di proprietà del client restituito in precedenza in una chiamata a #dequeueInputBuffer.

offset
Int32

Offset di byte nel buffer di input in corrispondenza del quale iniziano i dati.

size
Int32

Numero di byte di dati di input validi.

presentationTimeUs
Int64

Timestamp della presentazione in microsecondi per questo buffer. Si tratta in genere del tempo multimediale in cui deve essere presentato il buffer (sottoposto a rendering). Quando si usa una superficie di output, questa verrà propagata come per SurfaceTexture#getTimestamp timestamp il frame (dopo la conversione in nanosecondi).

flags
MediaCodecBufferFlags

Maschera di bit di flag #BUFFER_FLAG_CODEC_CONFIG e #BUFFER_FLAG_END_OF_STREAM. Sebbene non sia vietato, la maggior parte dei codec non usa il #BUFFER_FLAG_KEY_FRAME flag per i buffer di input.

Attributi

Eccezioni

se non è nello stato Esecuzione.

in caso di errore del codec.

Commenti

Dopo aver riempito un intervallo del buffer di input in corrispondenza dell'indice specificato, inviarlo al componente. Quando un buffer di input viene accodato al codec, non deve essere usato finché non viene recuperato in seguito da #getInputBuffer in risposta a un #dequeueInputBuffer valore restituito o a un Callback#onInputBufferAvailable callback.

Molti decodificatori richiedono che il flusso di dati compressi effettivo sia preceduto da "dati specifici del codec", ad esempio i dati di installazione usati per inizializzare il codec, ad esempio PPS/SPS, nel caso di tabelle di codice o video AVC nel caso dell'audio vorbis. La classe android.media.MediaExtractor fornisce dati specifici del codec come parte del formato di traccia restituito nelle voci denominate "csd-0", "csd-1" ...

Questi buffer possono essere inviati direttamente dopo #start o #flush specificando il flag #BUFFER_FLAG_CODEC_CONFIG. Tuttavia, se si configura il codec con un MediaFormat contenente queste chiavi, questi verranno inviati automaticamente da MediaCodec direttamente dopo l'avvio. Pertanto, l'uso del #BUFFER_FLAG_CODEC_CONFIG flag è sconsigliato ed è consigliato solo per gli utenti avanzati.

Per indicare che si tratta della parte finale dei dati di input (o piuttosto che non seguono altri dati di input, a meno che il decodificatore non venga successivamente scaricato) specificare il flag #BUFFER_FLAG_END_OF_STREAM.

<nota>forte:</strong> Prima di android.os.Build.VERSION_CODES#M, presentationTimeUs non è stato propagato al timestamp di frame di (rendering) Surface buffer di output e il timestamp del frame risultante non è stato definito. Usare #releaseOutputBuffer(int, long) per assicurarsi che sia impostato un timestamp di intervallo specifico. Analogamente, poiché i timestamp dei fotogrammi possono essere usati dalla superficie di destinazione per la sincronizzazione del rendering, <è necessario prestare attenzione>a normalizzare presentationTimeUs in modo da non essere sbagliati per un'ora di sistema. Vedere le specifiche di SurfaceView (int, long) #releaseOutputBuffer).</strong>

per android.media.MediaCodec.queueInputBuffer(int, int, int, long, int).

Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.

Si applica a