MediaCodec.QueueInputBuffer メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したインデックスにある入力バッファーの範囲を入力した後、コンポーネントに送信します。
[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
パラメーター
- index
- Int32
への呼び出し #dequeueInputBuffer
で以前に返されたクライアント所有の入力バッファーのインデックス。
- offset
- Int32
データが開始される入力バッファーへのバイト オフセット。
- size
- Int32
有効な入力データのバイト数。
- presentationTimeUs
- Int64
このバッファーのプレゼンテーション タイムスタンプ (マイクロ秒単位)。 これは通常、このバッファーを表示 (レンダリング) するメディア時間です。 出力サーフェスを使用すると、フレームの として SurfaceTexture#getTimestamp timestamp
伝達されます (ナノ秒への変換後)。
- flags
- MediaCodecBufferFlags
フラグ #BUFFER_FLAG_CODEC_CONFIG
と #BUFFER_FLAG_END_OF_STREAM
のビットマスク。
禁止されていませんが、ほとんどのコーデックでは入力バッファーに フラグが #BUFFER_FLAG_KEY_FRAME
使用されません。
- 属性
例外
が実行中の状態でない場合は 。
コーデック エラーが発生した場合。
注釈
指定したインデックスにある入力バッファーの範囲を入力した後、コンポーネントに送信します。 入力バッファーをコーデックにキューに入れると、後で戻り値またはコールバックに応答して によって#getInputBuffer
取得されるまで、入力バッファーを#dequeueInputBuffer
Callback#onInputBufferAvailable
使用することはできません。
多くのデコーダーでは、実際の圧縮データ ストリームの前に "コーデック固有のデータ" が必要です。つまり、vorbis オーディオの場合は、AVC ビデオまたはコード テーブルの場合に PPS/SPS などのコーデックを初期化するために使用されるセットアップ データが必要です。 クラス android.media.MediaExtractor
は、"csd-0"、"csd-1" という名前のエントリで、返されるトラック形式の一部としてコーデック固有のデータを提供します。
これらのバッファーは、 フラグ #BUFFER_FLAG_CODEC_CONFIG
を指定して、 の直後または#flush
直後#start
に送信できます。 ただし、これらのキーを含む コーデックを MediaFormat
構成すると、開始直後に MediaCodec によって自動的に送信されます。 そのため、フラグの #BUFFER_FLAG_CODEC_CONFIG
使用はお勧めしません。上級ユーザーにのみお勧めします。
これが入力データの最後の部分であることを示すには (デコーダーが後でフラッシュされない限り、これ以上入力データが続かない)、 フラグ #BUFFER_FLAG_END_OF_STREAM
を指定します。 <p class=note><厳密な>Note:</strong> の前にandroid.os.Build.VERSION_CODES#M
presentationTimeUs
、 が (レンダリングされた) Surface 出力バッファーのフレーム タイムスタンプに反映されず、結果のフレーム タイムスタンプが未定義でした。 特定のフレーム タイムスタンプが設定されていることを確認するには、 を使用 #releaseOutputBuffer(int, long)
します。 同様に、フレーム タイムスタンプはレンダリング同期のために変換先サーフェスで使用できるため、 <システム時刻と間違えないように presentationTimeUs を正規化するには、細心>の注意を払う必要があります。 (#releaseOutputBuffer(int, long) SurfaceView の詳細を参照してください)。</強い>
の android.media.MediaCodec.queueInputBuffer(int, int, int, long, int)
Java ドキュメント。
このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。