camera3_callback_ops 構造体リファレンス
#include <
camera3.h
>
データ フィールド |
|
void(* | process_capture_result )(const struct camera3_callback_ops *, const camera3_capture_result_t *result) |
void(* | notify )(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
詳細な説明
フィールドのドキュメント
void(* notify)(const struct camera3_callback_ops *, const camera3_notify_msg_t *msg) |
notify:
さまざまな理由で発生する HAL からの非同期通知コールバック。フレーム キャプチャに依存しない情報、または特定のタイミングを必要とする情報のみ。メッセージ構造体の所有権は HAL に残り、msg はこの呼び出しの間のみ有効である必要があります。
複数のスレッドが 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:
完了したキャプチャの結果をフレームワークに送信します。 process_capture_result() は、単一のキャプチャ リクエストに対する応答として HAL によって複数回呼び出されることがあります。これにより、たとえば、メタデータと低解像度バッファを 1 回の呼び出しで返し、後処理された JPEG バッファを、利用可能になったら後で呼び出すことができます。各呼び出しには、メタデータまたはバッファを返すリクエストのフレーム番号を含める必要があります。
完全な結果のコンポーネント(バッファまたはメタデータ)は、1 回の process_capture_result 呼び出しにのみ含めることができます。HAL は、出力の一部を生成する際にエラーが発生した場合でも、各リクエストの各ストリームのバッファと結果メタデータを、process_capture_result 呼び出しのいずれかで返す必要があります。出力バッファも結果メタデータもない process_capture_result() の呼び出しは許可されません。
単一の結果のメタデータとバッファを返す順序は重要ではありませんが、特定のストリームのバッファは FIFO 順序で返す必要があります。そのため、ストリーム A のリクエスト 5 のバッファは、ストリーム A のリクエスト 6 のバッファよりも常に先に返される必要があります。これは結果メタデータにも適用されます。リクエスト 5 のメタデータは、リクエスト 6 のメタデータよりも前に返される必要があります。
ただし、ストリームは互いに独立しているため、ストリーム A のリクエスト 5 のバッファがストリーム B のリクエスト 6 のバッファの後に返されることは許容され、想定されています。また、ストリーム 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 フレーム間隔以下でなければなりません。
この構造体のドキュメントは、次のファイルから生成されました。
- hardware/libhardware/include/hardware/ camera3.h