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(*  notify_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(*  flush_captures_in_progress )(const struct camera2_device *)
 
int(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
int(*  allocate_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(*  allocate_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(*  allocate_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(*  trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)
 

詳細な説明

ファイル camera2.h 527 行目 の定義。

フィールドのドキュメント

int(* allocate_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)

allocate_reprocess_stream:

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

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

入力パラメータ:

  • width、height、format: このストリームを介して送信されるバッファの仕様。形式は、HAL_PIXEL_FORMAT_* リストの値である必要があります。
  • reprocess_stream_ops: このストリームのバッファの取得と解放を行う関数ポインタの構造体。基盤となるストリームは、usage と max_buffers の出力に基づいて構成されます。

出力パラメータ:

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

ファイル camera2.h 708 行目の定義。

int(* allocate_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)

allocate_reprocess_stream_from_stream:

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

エラー条件:

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

入力パラメータ:

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

出力パラメータ:

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

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

ファイル camera2.h 754 行目の定義。

int(* allocate_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)

allocate_stream:

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

  • センサーの静的特性でサポートされていると記載されていない幅/高さ/フォーマットの組み合わせをリクエストしている
  • 特定の形式タイプのストリームが多すぎる(2 つのベイヤー ローストリームなど)。

入力パラメータ:

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

出力パラメータ:

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

ファイル camera2.h 632 行目 の定義。

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

標準のカメラのユースケース用に、入力済みのデフォルトのリクエストを作成します。

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

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

ファイル camera2.h 580 行目の定義。

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

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

ファイル camera2.h 801 行の定義。

int(* flush_captures_in_progress)(const struct camera2_device *)

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

ファイル camera2.h 567 行目の定義。

int(* get_in_progress_count)(const struct camera2_device *)

デバイスで現在処理中のカメラ リクエストの数(リクエストがキューから削除されたが、出力パイプラインにまだキューに入れられていないキャプチャ/再処理)。処理中の数が 0 になるまで、フレームワークはストリームを解放できません。

ファイル camera2.h 558 行目の定義。

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.h 820 行目の定義。

int(* get_metadata_vendor_tag_ops)(const struct camera2_device *, vendor_tag_query_ops_t **ops)

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

ファイル camera2.h 795 行の定義。

int(* notify_request_queue_not_empty)(const struct camera2_device *)

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

ファイル camera2.h 544 行目の定義。

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

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

ファイル camera2.h 657 行の定義。

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

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

ファイル camera2.h 765 行の定義。

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

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

ファイル camera2.h 667 行目の定義。

int(* set_frame_queue_dst_ops)(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

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

ファイル camera2.h 549 行の定義。

int(* set_notify_callback)(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)

通知コールバックの設定

ファイル camera2.h 787 行目の定義。

int(* set_request_queue_src_ops)(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

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

ファイル camera2.h 536 行目の定義。

int(* trigger_action)(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

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

ファイル camera2.h 779 行の定義。


この構造体のドキュメントは、次のファイルから生成されました。