2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
camera3_callback_ops 構造体リファレンス
#include <
camera3.h
>
ファイル
camera3.h
の
2397 行目
で定義されています。
notify:
さまざまな理由で発生する HAL からの非同期通知コールバック。フレーム キャプチャに依存しない情報、または特定のタイミングを必要とする情報のみ。メッセージ構造体の所有権は HAL に残り、msg はこの呼び出しの間のみ有効である必要があります。
複数のスレッドが
notify()
を同時に呼び出すことがあります。
<= CAMERA_DEVICE_API_VERSION_3_1:
特定のリクエストの露出開始の通知は、そのリクエストの
process_capture_result()
の最初の呼び出しが行われる前に、HAL によって送信されなければなりません。
>= CAMERA_DEVICE_API_VERSION_3_2:
フレームワークに配信されたバッファは、SHUTTER
notify()
呼び出しを介して露出開始のタイムスタンプ(再処理リクエストの場合は入力画像の露出開始のタイムスタンプ)が受信されるまで、アプリケーション レイヤにディスパッチされません。この呼び出しはできるだけ早くディスパッチすることを強くおすすめします。
パフォーマンス要件:
これはノンブロッキング呼び出しです。フレームワークは 5 ミリ秒でこの呼び出しを返します。
ファイル
camera3.h
の
2499 行目
で定義されています。
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 フレーム間隔以下でなければなりません。
ファイル
camera3.h
の
2466 行目
で定義されています。
この構造体のドキュメントは、次のファイルから生成されました。
-
hardware/libhardware/include/hardware/
camera3.h
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-07-27 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-07-27 UTC。"],[],[],null,["# Android Hardware Abstraction Layer: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]