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 を使用すると、通常のオンデマンド動作よりもメモリ消費量が多くなる可能性があります。 Prepare() は、割り当てが完了すると、よりスムーズなフレーム レートと引き換えに、特定の Surface への最初の出力までの時間も遅延します。

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

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

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

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

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

android.hardware.camera2.CameraCaptureSession.prepare(android.view.Surface)Java ドキュメント。

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

適用対象