camera3_callback_ops構造体リファレンス
#include < camera3.h >
データフィールド | |
void(* | process_capture_result )(const struct camera3_callback_ops *、const camera3_capture_result_t * result) |
void(* | 通知)(const struct camera3_callback_ops *、const camera3_notify_msg_t * msg) |
詳細な説明
ファイルcamera3.hの2397行で定義されています。
フィールドドキュメント
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()呼び出しを介して露出の開始タイムスタンプ(または再処理要求の入力イメージの露出の開始タイムスタンプ)が受信されるまで、アプリケーション層にディスパッチされません。このコールをできるだけ早くディスパッチすることを強くお勧めします。
性能要件:
これはノンブロッキングコールです。フレームワークは5msでこの呼び出しを返します。
ファイルcamera3.hの2499行で定義されています。
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呼び出しにのみ含めることができます。出力の一部を生成するエラーの場合でも、各ストリームのバッファーと結果のメタデータは、process_capture_result呼び出しの1つで要求ごとにHALによって返される必要があります。出力バッファーも結果メタデータも使用しないprocess_capture_result()の呼び出しは許可されていません。
単一の結果に対してメタデータとバッファーを返す順序は重要ではありませんが、特定のストリームのバッファーはFIFOの順序で返す必要があります。したがって、ストリームAの要求5のバッファーは、常にストリームAの要求6のバッファーの前に返される必要があります。これは結果のメタデータにも当てはまります。リクエスト5のメタデータは、リクエスト6のメタデータの前に返される必要があります。
ただし、異なるストリームは互いに独立しているため、ストリームAの要求5のバッファーは、ストリームBの要求6のバッファーの後に返される可能性があります。また、ストリームAのリクエスト5のバッファが返される前に、ストリームBのリクエスト6の結果メタデータが返されることは許容されます。
HALは結果構造の所有権を保持します。これは、この呼び出し中にアクセスするためにのみ有効である必要があります。フレームワークは、この呼び出しが戻る前に必要なものをすべてコピーします。
出力バッファはまだ満たす必要はありません。フレームワークは、バッファデータを読み取る前に、ストリームバッファリリース同期フェンスを待機します。したがって、このメソッドは、出力バッファの一部またはすべてがまだいっぱいになっている場合でも、HALによってできるだけ早く呼び出す必要があります。 HALは、有効なリリース同期フェンスを各output_buffersストリームバッファエントリに含める必要があります。そのストリームバッファがすでにいっぱいになっている場合は-1を含める必要があります。
リクエストに対して結果バッファを構築できない場合、HALは空のメタデータバッファを返す必要がありますが、出力バッファとその同期フェンスは提供します。さらに、 notify()はERROR_RESULTメッセージで呼び出す必要があります。
出力バッファを埋めることができない場合は、そのステータスフィールドをSTATUS_ERRORに設定する必要があります。さらに、 notify()はERROR_BUFFERメッセージで呼び出す必要があります。
キャプチャ全体が失敗した場合でも、出力バッファをフレームワークに返すためにこのメソッドを呼び出す必要があります。すべてのバッファステータスはSTATUS_ERRORであり、結果のメタデータは空のバッファである必要があります。さらに、 notify()はERROR_REQUESTメッセージで呼び出す必要があります。この場合、個々のERROR_RESULT / ERROR_BUFFERメッセージは送信しないでください。
性能要件:
これはノンブロッキングコールです。フレームワークは5msでこの呼び出しを返します。
パイプラインレイテンシー(定義についてはS7を参照)は4フレーム間隔以下である必要があり、8フレーム間隔以下である必要があります。
ファイルcamera3.hの2466行で定義されています。
この構造体のドキュメントは、次のファイルから生成されました。