MediaCodec.QueueInputBuffer Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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.
se un oggetto crypto è stato specificato in M:Android.Media.MediaCodec.Configure(Android.Media.MediaFormat,Android.Views.Surface,Android.Views.Surface,Android.Views.Surface)
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.