Sprache

MediaCodec.QueueInputBuffer Methode

Definition

Nach dem Ausfüllen eines Bereichs des Eingabepuffers am angegebenen Index übermitteln sie an die Komponente.

[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

Parameter

index
Int32

Der Index eines clienteigenen Eingabepuffers, der zuvor in einem Aufruf von #dequeueInputBuffer.

offset
Int32

Der Byteoffset in den Eingabepuffer, an dem die Daten gestartet werden.

size
Int32

Die Anzahl der Bytes gültiger Eingabedaten.

presentationTimeUs
Int64

Der Zeitstempel der Präsentation in Mikrosekunden für diesen Puffer. Dies ist normalerweise die Medienzeit, zu der dieser Puffer dargestellt werden soll (gerendert). Bei Verwendung einer Ausgabeoberfläche wird dies als SurfaceTexture#getTimestamp timestamp Frame (nach der Konvertierung in Nanosekunden) verteilt.

flags
MediaCodecBufferFlags

Eine Bitmaske von Flags #BUFFER_FLAG_CODEC_CONFIG und #BUFFER_FLAG_END_OF_STREAM. Die meisten Codecs verwenden #BUFFER_FLAG_KEY_FRAME zwar nicht das Flag für Eingabepuffer.

Attribute

Ausnahmen

wenn nicht im Zustand "Ausführen" vorhanden.

bei Codecfehler.

Hinweise

Nach dem Ausfüllen eines Bereichs des Eingabepuffers am angegebenen Index übermitteln sie an die Komponente. Sobald ein Eingabepuffer an den Codec in die Warteschlange gestellt wurde, muss er erst verwendet werden, wenn er später als Reaktion auf einen #dequeueInputBuffer Rückgabewert oder einen Callback#onInputBufferAvailable Rückruf abgerufen #getInputBuffer wird.

Viele Decoder erfordern, dass dem tatsächlich komprimierten Datenstrom "codecspezifische Daten" vorangestellt werden muss, d. h. Setupdaten, die zum Initialisieren des Codecs wie PPS/SPS im Fall von AVC-Video- oder Codetabellen im Falle von Vorbis-Audio verwendet werden. Die Klasse android.media.MediaExtractor stellt codecspezifische Daten als Teil des zurückgegebenen Titelformats in Einträgen mit dem Namen "csd-0", "csd-1" bereit...

Diese Puffer können direkt nach #start oder #flush durch Angeben des Flags #BUFFER_FLAG_CODEC_CONFIGübermittelt werden. Wenn Sie den Codec jedoch mit einem MediaFormat dieser Schlüssel konfigurieren, werden diese automatisch von MediaCodec direkt nach dem Start übermittelt. Daher wird die Verwendung der #BUFFER_FLAG_CODEC_CONFIG Kennzeichnung abgeraten und nur für erweiterte Benutzer empfohlen.

Um anzugeben, dass dies der letzte Teil der Eingabedaten ist (oder dass keine weiteren Eingabedaten folgen, es sei denn, der Decoder wird anschließend geleert), geben Sie das Kennzeichen #BUFFER_FLAG_END_OF_STREAMan.

<strong>Hinweis:</strong> Vor android.os.Build.VERSION_CODES#M, presentationTimeUs wurde nicht an den Frame-Zeitstempel von (gerenderten) Surface Ausgabepuffer verteilt, und der resultierende Frame-Zeitstempel wurde nicht definiert. Wird #releaseOutputBuffer(int, long) verwendet, um sicherzustellen, dass ein bestimmter Frame-Zeitstempel festgelegt ist. Da Frame-Zeitstempel für die Renderingsynchronisierung von der Zieloberfläche verwendet werden können, muss eine starke>Sorgfalt erforderlich sein, <um presentationTimeUs zu normalisieren, damit sie nicht für eine Systemzeit verwechselt werden können. (Siehe #releaseOutputBuffer(int, long) SurfaceView-Spezifisches).</strong>

Java Dokumentation für android.media.MediaCodec.queueInputBuffer(int, int, int, long, int).

Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.

Gilt für: