Language

CameraCaptureSession.Prepare(Surface) メソッド

定義

出力Surfaceのすべてのバッファーを事前に割り当てます。

[Android.Runtime.Register("prepare", "(Landroid/view/Surface;)V", "GetPrepare_Landroid_view_Surface_Handler", ApiSince=23)]
public abstract void Prepare(Android.Views.Surface surface);
[<Android.Runtime.Register("prepare", "(Landroid/view/Surface;)V", "GetPrepare_Landroid_view_Surface_Handler", ApiSince=23)>]
abstract member Prepare : Android.Views.Surface -> unit

パラメーター

surface
Surface

バッファーを事前に割り当てる必要がある出力Surface。 このセッションの作成に使用する出力サーフェスのいずれかである必要があります。

属性

注釈

出力Surfaceのすべてのバッファーを事前に割り当てます。

通常、特定の出力Surfaceのイメージ バッファーは、起動時の待機時間とメモリのオーバーヘッドを最小限に抑えるために、オンデマンドで割り当てられます。

ただし、場合によっては、Surfaceを対象とする要求が実際にデバイスに送信される前にバッファーを割り当てることが望ましい場合があります。 大きなバッファーの割り当てには時間がかかる場合があり、安定した状態の動作に達するために十分なバッファーが割り当てられるまで、要求の送信に遅延が発生する可能性があります。 このような遅延により、バーストに必要以上の時間がかかる場合や、プレビュー出力でスキップやスタッターが発生する可能性があります。

prepare() メソッドを使用して、この事前割り当てを実行できます。 特定の出力Surfaceに対してのみ呼び出してから、そのSurfaceを要求のターゲットとして使用できます。 割り当てられるバッファーの数は、コンシューマーが出力Surfaceを提供するために必要な数と、パイプラインを埋めるためにカメラ デバイスが必要とする最大数の合計です。 これは、安定状態の操作に実際に必要な数よりも大きくなる可能性があるため、準備を使用すると、通常のオンデマンド動作よりもメモリ消費量が多くなる可能性があります。 Prepare() は、割り当てが完了すると、よりスムーズなフレーム レートと引き換えに、特定のSurfaceへの最初の出力までの時間も遅延します。

たとえば、maxImages 引数が 10 の android.media.ImageReader#newInstance ImageReader を作成し、同時に 3 つのイメージのみを使用するアプリケーションでは、通常、これらの 3 つの画像のみが割り当てられます (さらに、スムーズな操作のためにカメラ デバイスで必要なもの)。 ただし、ImageReader Surfaceで prepare() を使用すると、10 個のイメージがすべて割り当てられます。 そのため、このメソッドを使用するアプリケーションでは、アプリケーションに実際に必要なバッファーの数のみを要求するように注意する必要があります。

同じ出力Surfaceが連続したセッションで使用されている場合 (最初のセッションを明示的に閉じることなく)、既に割り当てられているバッファーが引き継がれ、最初のセッションでキャプチャ要求のターゲットとして使用された場合、2 番目のセッションで prepare を呼び出すことはできません。

割り当てが完了すると、このメソッドに指定されたSurfaceを使用してStateCallback#onSurfacePreparedが呼び出されます。 準備呼び出しと onSurfacePrepared 呼び出しの間で、準備に指定されたSurfaceを、このセッションに送信された CaptureRequest のターゲットとして使用することはできません。

OutputConfiguration#enableSurfaceSharingとOutputConfiguration#addSurfaceを介して 2 つのサーフェスが同じストリームを共有する場合は、prepare() を 1 つのサーフェスでのみ呼び出す必要があり、両方のサーフェスに対してStateCallback#onSurfacePreparedがトリガーされることに注意してください。

android.hardware.camera2.CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY デバイスは出力バッファーを事前に割り当てることができません。これらのデバイスの場合、 StateCallback#onSurfacePrepared はすぐに呼び出され、事前割り当てが行われません。

Javaドキュメント。

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

適用対象