Camera2_device_ops 構造体のリファレンス

Camera2_device_ops 構造体のリファレンス

#include < camera2.h >

データフィールド

int(* set_request_queue_src_ops )(const struct Camera2_device *, const Camera2_request_queue_src_ops_t *request_src_ops)
int(* Notice_request_queue_not_empty )(const struct Camera2_device *)
int(* set_frame_queue_dst_ops )(const struct Camera2_device *, const Camera2_frame_queue_dst_ops_t *frame_dst_ops)
int(* get_in_progress_count )(const struct Camera2_device *)
int(* flash_captures_in_progress )(const struct Camera2_device *)
int(* construct_default_request )(const struct Camera2_device *, int request_template, Camera_metadata_t **request)
int(* assign_stream )(const struct Camera2_device *, uint32_t width, uint32_t height, int format, const Camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
int(* register_stream_buffers )(const struct Camera2_device *, uint32_t stream_id, int num_buffers,buffer_handle_t *buffers)
int(* release_stream )(const struct Camera2_device *, uint32_t stream_id)
int(* assign_reprocess_stream )(const struct Camera2_device *, uint32_t width, uint32_t height, uint32_t format, const Camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
int(* assign_reprocess_stream_from_stream )(const struct Camera2_device *, uint32_t Output_stream_id, const Camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id)
int(* release_reprocess_stream )(const struct Camera2_device *, uint32_t stream_id)
int(*トリガー_アクション)(const structカメラ 2_デバイス*, uint32_t トリガー ID, int32_t ext1, int32_t ext2)
int(* set_notify_callback )(const struct Camera2_device *, Camera2_notify_callback Notice_cb, void *user)
int(* get_metadata_vendor_tag_ops )(const struct Camera2_device *、vendor_tag_query_ops_t **ops)
int(*ダンプ)(const struct Camera2_device *, int fd)
int(* get_instance_metadata )(const struct Camera2_device *, Camera_metadata **instance_metadata)

詳細な説明

ファイルCamera2.h527行目の定義。

フィールドドキュメント

int(* assign_reprocess_stream)(const struct Camera2_device *, uint32_t width, uint32_t height, uint32_t format, const Camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

assign_reprocess_stream:

出力バッファの幅、高さ、ピクセル形式によって定義された、使用する新しい入力ストリームを割り当てます。成功した場合は、新しいストリームの ID、gralloc 使用フラグ、および必要な同時取得可能なバッファ数を返します。エラー条件:

  • センサーの静的特性でサポートされているものとしてリストされていない幅/高さ/形式の組み合わせをリクエストしています
  • 一度に構成できる再処理ストリームが多すぎます。

入力パラメータ:

  • width、height、format: このストリームを通じて送信されるバッファの仕様。形式は、HAL_PIXEL_FORMAT_* リストの値である必要があります。
  • reprocess_stream_ops: このストリームのバッファを取得および解放するための関数ポインタの構造体。基礎となるストリームは、使用状況と max_buffers の出力に基づいて構成されます。

出力パラメータ:

  • stream_id: このストリームを識別する符号なし整数。この値は、受信リクエストでストリームを識別するときと、ストリームを解放するときに使用されます。これらの ID には、入力ストリーム ID とは別に番号が付けられます。
  • Consumer_usage: 要求されたタイプのデータを消費するために HAL デバイスが必要とする gralloc 使用マスク。これは、ストリーム バッファ キューに新しい gralloc バッファを割り当てる際に使用されます。
  • max_buffers: HAL デバイスが同時に取得する必要があるバッファの最大数。デバイスは、この値を超えるバッファを同時に取得することはできません。

ファイルCamera2.h708行目の定義。

int(* assign_reprocess_stream_from_stream)(const struct Camera2_device *, uint32_t Output_stream_id, const Camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id)

assign_reprocess_stream_from_stream:

使用する新しい入力ストリームを割り当てます。これは、既存の出力ストリームに割り当てられたバッファを使用します。つまり、HAL が出力ストリームにバッファをエンキューした後、同じバッファがこの入力再処理ストリームから渡されることがわかります。 HAL がバッファを再処理ストリームに解放した後、バッファは再利用のために出力キューに戻されます。

エラー条件:

  • 再処理ストリームのベースとして不適切なサイズ/形式の出力ストリームを使用している。
  • 一度に多すぎる再処理ストリームを割り当てようとしています。

入力パラメータ:

  • Output_stream_id: 再処理に適したサイズと形式を持つ既存の出力ストリームの ID。
  • reprocess_stream_ops: このストリームのバッファを取得および解放するための関数ポインタの構造体。基礎となるストリームは、出力ストリームが使用するのと同じグラフィックス バッファー ハンドルを使用します。

出力パラメータ:

  • stream_id: このストリームを識別する符号なし整数。この値は、受信リクエストでストリームを識別するときと、ストリームを解放するときに使用されます。これらの ID には、入力ストリーム ID とは別に番号が付けられます。

HAL クライアントは、ベースとなる出力ストリームを解放する前に、常に再処理ストリームを解放する必要があります。

ファイルCamera2.h754行目の定義。

int(* assign_stream)(const struct Camera2_device *,uint32_t width, uint32_t height, int format, const Camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

割り当てストリーム:

出力バッファーの幅、高さ、ターゲット、および場合によってはピクセル形式によって定義された、使用する新しい出力ストリームを割り当てます。成功すると、新しいストリームの ID、gralloc 使用フラグ、最小キュー バッファ数、および場合によってはピクセル形式を返します。エラー条件:

  • センサーの静的特性でサポートされているものとしてリストされていない幅/高さ/形式の組み合わせをリクエストしています
  • 特定の形式タイプのストリームが多すぎる (たとえば、2 つのベイヤーの生ストリーム)。

入力パラメータ:

  • width、height、format: このストリームを通じて送信されるバッファの仕様。形式は、HAL_PIXEL_FORMAT_* リストの値です。 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED が使用されている場合、プラットフォームの gralloc モジュールは、カメラ HAL とストリームのコンシューマによって提供される使用フラグに基づいて形式を選択します。カメラ HAL は、register_stream_buffers 呼び出しで渡されたバッファを検査して、必要に応じて実装固有の形式を取得する必要があります。
  • stream_ops: このストリームのバッファを取得してキューに入れるための関数ポインタの構造体。基礎となるストリームは、使用状況と max_buffers の出力に基づいて構成されます。この構造体のメソッドは、allocate_stream が返されるまで呼び出すことができません。

出力パラメータ:

  • stream_id: このストリームを識別する符号なし整数。この値は、受信リクエストでストリームを識別するときと、ストリームを解放するときに使用されます。
  • 使用法: 要求されたタイプのデータを生成するために HAL デバイスが必要とする gralloc 使用法マスク。これは、ストリーム バッファ キューに新しい gralloc バッファを割り当てる際に使用されます。
  • max_buffers: HAL デバイスが同時にデキューする必要があるバッファの最大数。デバイスは、この値を超えるバッファを同時にデキューすることはできません。

ファイルCamera2.h632行目の定義。

int(*construct_default_request)(const struct Camera2_device *, int request_template, Camera_metadata_t **request)

標準的なカメラの使用例に対して、入力済みのデフォルトのリクエストを作成します。

デバイスは、要求されたユースケースを満たすように構成された完全な要求を返す必要があります。これは CAMERA2_TEMPLATE_* 列挙型の 1 つである必要があります。 android.request.outputStreams を除く、すべてのリクエスト コントロール フィールドを含める必要があります。

返されるメタデータ バッファは、allocate_camera_metadata で割り当てる必要があります。フレームワークがバッファーの所有権を取得します。

ファイルCamera2.h580行目の定義。

int(* dump)(const struct Camera2_device *, int fd)

カメラハードウェアの状態をダンプします

ファイルCamera2.h801行目の定義。

int(* flash_captures_in_progress)(const struct Camera2_device *)

進行中のキャプチャをすべてフラッシュします。これには、まだ出力をストリームまたはフレーム キューに入れていない、デキューされたすべてのリクエスト (通常または再処理) が含まれます。部分的に完了したキャプチャは正常に完了する必要があります。フラッシュが完了するまで、新しいリクエストをリクエスト キューからデキューすることはできません。

ファイルCamera2.h567行目の定義。

int(* get_in_progress_count)(const struct Camera2_device *)

現在デバイスによって処理されているカメラ リクエストの数 (リクエストはキューから取り出されたが、出力パイプラインのキューにまだ登録されていないキャプチャ/再処理)。進行中のカウントが 0 になるまで、フレームワークによってストリームが解放されることはありません。

ファイルCamera2.h558行目の定義。

int(* get_instance_metadata)(const struct Camera2_device *, Camera_metadata **instance_metadata)

デバイスインスタンス固有のメタデータを取得します。このメタデータはカメラ デバイスの単一インスタンスに対して一定である必要がありますが、open() 呼び出しごとに異なる場合があります。返された Camera_metadata ポインタは、デバイスの close() メソッドが呼び出されるまで有効である必要があります。

バージョン情報:

CAMERA_DEVICE_API_VERSION_2_0:

利用不可。フレームワークはこの関数ポインターにアクセスできない可能性があります。

CAMERA_DEVICE_API_VERSION_2_1:

有効。フレームワークから呼び出すことができます。

ファイルCamera2.h820行目の定義。

int(* get_metadata_vendor_tag_ops)(const struct Camera2_device *、vendor_tag_query_ops_t **ops)

ベンダー拡張メタデータ タグ情報をクエリするためのメソッドを取得します。ベンダー拡張タグが定義されていない場合は、ops を NULL に設定する可能性があります。

ファイルCamera2.h795行目の定義。

int(*notify_request_queue_not_empty)(const struct Camera2_device *)

リクエストキューが空ではなくなったことをデバイスに通知します。最初のバッファが新しいキューに追加されたとき、またはデキュー呼び出しに応答してソースが NULL を返した後にのみ呼び出す必要があります。

ファイルCamera2.h544行目の定義。

int(* register_stream_buffers)(const struct Camera2_device *, uint32_t stream_id, int num_buffers,buffer_handle_t *buffers)

指定されたストリームのバッファーを登録します。これは、allocate_stream 呼び出しが成功した後、ストリームを参照する最初のリクエストがキューに入れられる前に呼び出されます。このメソッドは、HAL デバイスが後で使用するためにバッファをマッピングまたは準備できるようにすることを目的としています。 num_buffers は、少なくとも max_buffers (allocate_stream から) であることが保証されていますが、それより大きくなる可能性があります。バッファは使用のためにすでにロックされています。呼び出しの終了時には、すべてのバッファをキューに戻す準備ができている必要があります。ストリーム形式が HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED に設定されている場合、カメラ HAL はここで渡されたバッファを検査して、プラットフォームのプライベート ピクセル形式情報を判断する必要があります。

ファイルCamera2.h657行目の定義。

int(* release_reprocess_stream)(const struct Camera2_device *, uint32_t stream_id)

再処理ストリームを解放します。 get_in_progress_count がゼロ以外の場合、またはストリーム ID が無効な場合に呼び出された場合は、エラーを返します。

ファイルCamera2.h765行目の定義。

int(* release_stream)(const struct Camera2_device *, uint32_t stream_id)

ストリームを解放します。 get_in_progress_count がゼロ以外の場合、またはストリーム ID が無効な場合に呼び出された場合は、エラーを返します。

ファイルCamera2.h667行目の定義。

int(* set_frame_queue_dst_ops)(const struct Camera2_device *, const Camera2_frame_queue_dst_ops_t *frame_dst_ops)

出力フレームキューインターフェイスメソッドを渡す

ファイルCamera2.h549行目の定義。

int(* set_notify_callback)(const struct Camera2_device *, Camera2_notify_callback Notice_cb, void *user)

通知コールバックの設定

ファイルCamera2.h787行目の定義。

int(* set_request_queue_src_ops)(const struct Camera2_device *, const Camera2_request_queue_src_ops_t *request_src_ops)

入力リクエストキューインターフェイスメソッドを渡します。

ファイルCamera2.h536行目の定義。

int(* トリガーアクション)(const structカメラ 2_デバイス*、uint32_t トリガー ID、int32_t ext1、int32_t ext2)

非同期アクティビティをトリガーします。これは、カメラ 3A ルーチンの使用時に、そのルーチンの特別な動作をトリガーするために使用されます。トリガー ID とその引数の詳細については、上記の CAMERA2_TRIGGER_* のドキュメントを参照してください。

ファイルCamera2.h779行目の定義。


この構造体のドキュメントは次のファイルから生成されました。
  • ハードウェア/libhardware/include/hardware/camera2.h