単一のプロデューサ、複数コンシューマ カメラのバッファ トランスポート

この機能により、キャプチャ セッションがアクティブでカメラ ストリーミングが進行中である間にカメラ クライアントが出力サーフェスを動的に追加または削除できる、一連のメソッドが導入されます。新しい出力は、ユーザーが選択した特定の共有カメラ ストリームにマッピングできます。サーフェスを追加した後は、いつでも削除できます。

これは一般的に、特定のカメラ ストリームに関連するバッファを複数の出力サーフェスで共有することを目的としています。内部参照カウンタは、コンシューマー側で次の処理を行う準備ができるまでバッファを追跡します。すべてのコンシューマーがそれぞれのタスクを完了すると、バッファはキューから除外され、カメラで使用できるようになります。

バッファ共有

図 1. バッファ共有

図 1 はシナリオの一例を示しています。カメラサービスの専用共有出力ストリーム内にあるストリーム分割コンポーネントが、カメラ ストリーム 2 によって処理されたバッファに対して、動的な接続または接続解除、参照カウント、管理を行います。

例とソース

この機能のコア実装は、Camera3StreamSplitter モジュールにあります。この機能に関するドキュメントは、次のデベロッパー ガイドにあります。

実装

この機能はフレームワーク側で実装されるため、Camera HAL 側で実装する必要はありません。

検証

実装は、MultiViewTest モジュールとネイティブ API 用のネイティブ JNI ライブラリの、この機能をカバーする CTS ケースにパスする必要があります。