Camera3_callback_ops 構造体のリファレンス
#include < camera3.h >
データフィールド | |
空所(* | process_capture_result )(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
空所(* | 通知)(const struct Camera3_callback_ops *, const Camera3_notify_msg_t *msg) |
詳細な説明
フィールドドキュメント
void(*notify)(const struct Camera3_callback_ops *, const Camera3_notify_msg_t *msg) |
通知する:
さまざまな理由で起動される、HAL からの非同期通知コールバック。フレーム キャプチャとは独立した情報、または特定のタイミングが必要な情報のみ。メッセージ構造の所有権は HAL に残り、メッセージはこの呼び出しの間のみ有効である必要があります。
複数のスレッドが同時にnotify()を呼び出すことができます。
<= CAMERA_DEVICE_API_VERSION_3_1:
特定のリクエストの公開開始の通知は、そのリクエストのprocess_capture_result()への最初の呼び出しが行われる前に、HAL によって送信される必要があります。
>= CAMERA_DEVICE_API_VERSION_3_2:
フレームワークに配信されたバッファは、SHUTTER notify()呼び出しを介して露光開始タイムスタンプ (または再処理リクエストの場合は入力画像の露光開始タイムスタンプ) が受信されるまで、アプリケーション層にはディスパッチされません。できるだけ早くこの電話を発信することを強くお勧めします。
性能要件:
これはノンブロッキング呼び出しです。フレームワークはこの呼び出しを 5 ミリ秒以内に返します。
void(* process_capture_result)(const struct Camera3_callback_ops *, const Camera3_capture_result_t *result) |
プロセスキャプチャ結果:
完了したキャプチャの結果をフレームワークに送信します。 process_capture_result() は、単一のキャプチャ要求に応答して HAL によって複数回呼び出される場合があります。これにより、たとえば、メタデータと低解像度バッファを 1 回の呼び出しで返し、後処理された JPEG バッファが利用可能になったら、後の呼び出しで返すことができます。各呼び出しには、メタデータまたはバッファを返すリクエストのフレーム番号を含める必要があります。
完全な結果のコンポーネント (バッファまたはメタデータ) は、1 つの process_capture_result 呼び出しにのみ含めることができます。各ストリームのバッファーと結果のメタデータは、出力の一部でエラーが発生した場合でも、process_capture_result 呼び出しの 1 つでリクエストごとに HAL によって返される必要があります。出力バッファーや結果メタデータを使用しないprocess_capture_result()の呼び出しは許可されません。
単一の結果に対してメタデータとバッファを返す順序は重要ではありませんが、特定のストリームのバッファは FIFO 順序で返される必要があります。したがって、ストリーム A のリクエスト 5 のバッファは、常にストリーム A のリクエスト 6 のバッファより前に返される必要があります。これは結果のメタデータにも当てはまります。リクエスト 5 のメタデータは、リクエスト 6 のメタデータより前に返される必要があります。
ただし、異なるストリームは互いに独立しているため、ストリーム B のリクエスト 6 のバッファが返された後に、ストリーム A のリクエスト 5 のバッファが返されることは許容され、期待されます。また、ストリーム B のリクエスト 6 の結果メタデータが、ストリーム A のリクエスト 5 のバッファよりも前に返されることは許容されます。
HAL は結果構造の所有権を保持します。この呼び出し中にアクセスできるようにするためにのみ有効である必要があります。フレームワークは、この呼び出しが戻る前に必要なものをすべてコピーします。
出力バッファをまだ埋める必要はありません。フレームワークは、バッファ データを読み取る前に、ストリーム バッファの解放同期フェンスを待機します。したがって、出力バッファの一部またはすべてがまだ満たされていない場合でも、このメソッドは HAL によってできるだけ早く呼び出される必要があります。 HAL は、各 Output_buffers ストリーム バッファ エントリに有効なリリース同期フェンスを含める必要があります。ストリーム バッファがすでにいっぱいである場合は -1 を含める必要があります。
リクエストに対して結果バッファを構築できない場合、HAL は空のメタデータ バッファを返す必要がありますが、それでも出力バッファとその同期フェンスを提供します。さらに、 notify() はERROR_RESULT メッセージとともに呼び出す必要があります。
出力バッファを埋めることができない場合は、そのステータス フィールドを STATUS_ERROR に設定する必要があります。さらに、 notify() はERROR_BUFFER メッセージとともに呼び出す必要があります。
キャプチャ全体が失敗した場合でも、このメソッドを呼び出して出力バッファをフレームワークに返す必要があります。すべてのバッファーのステータスは STATUS_ERROR である必要があり、結果のメタデータは空のバッファーである必要があります。さらに、 notify() はERROR_REQUEST メッセージとともに呼び出す必要があります。この場合、個々の ERROR_RESULT/ERROR_BUFFER メッセージは送信されるべきではありません。
性能要件:
これはノンブロッキング呼び出しです。フレームワークはこの呼び出しを 5 ミリ秒以内に返します。
パイプライン レイテンシー (定義については S7 を参照) は 4 フレーム間隔以下、および 8 フレーム間隔以下である必要があります。
この構造体のドキュメントは次のファイルから生成されました。
- ハードウェア/libhardware/include/hardware/camera3.h