MediaCodec.ReleaseOutputBuffer メソッド

定義

オーバーロード

ReleaseOutputBuffer(Int32, Boolean)

バッファーが完了した場合は、この呼び出しを使用して、バッファーをコーデックに返すか、出力画面にレンダリングします。

ReleaseOutputBuffer(Int32, Int64)

バッファーが完了した場合は、この呼び出しを使用してそのサーフェス タイムスタンプを更新し、コーデックに返して出力サーフェイスにレンダリングします。

ReleaseOutputBuffer(Int32, Boolean)

バッファーが完了した場合は、この呼び出しを使用して、バッファーをコーデックに返すか、出力画面にレンダリングします。

[Android.Runtime.Register("releaseOutputBuffer", "(IZ)V", "")]
public void ReleaseOutputBuffer (int index, bool render);
[<Android.Runtime.Register("releaseOutputBuffer", "(IZ)V", "")>]
member this.ReleaseOutputBuffer : int * bool -> unit

パラメーター

index
Int32

への呼び出し #dequeueOutputBufferから以前に返されたクライアント所有の出力バッファーのインデックス。

render
Boolean

コーデックの構成時に有効なサーフェスが指定された場合、true を渡すと、この出力バッファーがサーフェスにレンダリングされます。

属性

例外

が実行中の状態でない場合は 。

コーデック エラーが発生した場合。

注釈

バッファーが完了した場合は、この呼び出しを使用して、バッファーをコーデックに返すか、出力画面にレンダリングします。 出力サーフェスを使用してコーデックを構成した場合、 を にtrue設定renderすると、最初にその出力サーフェスにバッファーが送信されます。 サーフェスは、使用または表示されなくなったバッファーをコーデックに解放します。

出力バッファーをコーデックに解放した後、戻り値またはコールバックに応答して によって#getOutputBuffer取得されるまで、出力バッファーを#dequeueOutputBufferCallback#onOutputBufferAvailable使用することはできません。

android.media.MediaCodec.releaseOutputBuffer(int, boolean)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象

ReleaseOutputBuffer(Int32, Int64)

バッファーが完了した場合は、この呼び出しを使用してそのサーフェス タイムスタンプを更新し、コーデックに返して出力サーフェイスにレンダリングします。

[Android.Runtime.Register("releaseOutputBuffer", "(IJ)V", "")]
public void ReleaseOutputBuffer (int index, long renderTimestampNs);
[<Android.Runtime.Register("releaseOutputBuffer", "(IJ)V", "")>]
member this.ReleaseOutputBuffer : int * int64 -> unit

パラメーター

index
Int32

への呼び出し #dequeueOutputBufferから以前に返されたクライアント所有の出力バッファーのインデックス。

renderTimestampNs
Int64

Surface に送信されるときにこのバッファーに関連付けるタイムスタンプ。

属性

例外

が実行中の状態でない場合は 。

コーデック エラーが発生した場合。

注釈

バッファーが完了した場合は、この呼び出しを使用してそのサーフェス タイムスタンプを更新し、コーデックに返して出力サーフェイスにレンダリングします。 このビデオ コーデックを設定するときに出力サーフェスを指定していない場合、この呼び出しは単にバッファーをコーデックに返します。

タイムスタンプは、変換先のサーフェスによっては特別な意味を持つ場合があります。

<table><tr><th>SurfaceView specifics</th></tr tr><td>>< でandroid.view.SurfaceViewバッファーをレンダリングする場合は、タイムスタンプを使用して(バッファー タイムスタンプの後の VSYNC で) 特定の時刻にバッファーをレンダリングできます。 これを機能させるには、タイムスタンプが現在System#nanoTimeの に適度に近い必要があります。 現在、これは 1 秒以内として設定されています。 いくつかのメモ:

<ul li><>タイムスタンプが渡され、バッファーがによって使用されなくなるまで、バッファーはコーデックにandroid.view.Surface返されません。 <li>バッファーは順番に処理されるため、 に表示される後続のバッファーを android.view.Surfaceブロックできます。 これは、ビデオの停止やシークなど、ユーザーの操作に対応する場合に重要です。 <li>同じ VSYNC でレンダリングされる に複数のバッファーが送信 android.view.Surface されると、最後のバッファーが表示され、他のバッファーは削除されます。 <タイムスタンプ>が現在のシステム時刻に "適度に近い" 場合、android.view.Surfaceli は<<>>タイムスタンプを無視し、可能な限り早くバッファーを表示します。 このモードでは、フレームはドロップされません。 <最適なパフォーマンスと品質を得るための li>は、目的のレンダリング時間の約 2 つ前の VSYNC の時間である場合に、このメソッドを呼び出します。 60Hz ディスプレイの場合、これは約 33 ミリ秒です。 </ul></td></tr></table>

出力バッファーをコーデックに解放した後、戻り値またはコールバックに応答して によって#getOutputBuffer取得されるまで、出力バッファーを#dequeueOutputBufferCallback#onOutputBufferAvailable使用することはできません。

android.media.MediaCodec.releaseOutputBuffer(int, long)Java ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

適用対象