camera3_stream 構造体リファレンス
#include <
camera3.h
>
データ フィールド |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | 形式 |
uint32_t | Usage |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | 回転 |
void * | 予約済み [7] |
詳細な説明
camera3_stream_t:
単一のカメラ入力ストリームまたは出力ストリームへのハンドル。ストリームは、フレームワークによってバッファの解像度と形式で定義され、さらに HAL によって gralloc の使用フラグと最大フライト中のバッファ数で定義されます。
ストリーム構造はフレームワークが所有しますが、 camera3_stream へのポインタは、その camera3_stream を引数として含まない最初の configure_streams() 呼び出しの終了まで、または close() 呼び出しの終了まで有効です。
camera3_stream フレームワークで制御されるメンバーはすべて、 camera3_stream が configure_streams に渡されると変更できなくなります。HAL が変更できるのは、configure_streams() 呼び出し中の HAL で制御されるパラメータのみです(非公開ポインタの内容を除く)。
configure_streams() 呼び出しが致命的でないエラーを返した場合、すべてのアクティブ ストリームは、configure_streams() が呼び出されなかった場合と同様に有効なままになります。
ストリームのエンドポイントは、カメラ HAL デバイスには表示されません。DEVICE_API_VERSION_3_1 では、カメラがプロデューサーであるストリーム(OUTPUT ストリームタイプと BIDIRECTIONAL ストリームタイプ)でコンシューマの使用フラグを共有するように変更されました(下の使用状況フィールドを参照)。
フィールドのドキュメント
android_dataspace_t data_space |
バッファの内容を記述するフィールド。形式とバッファのディメンションは、ストリーム バッファのメモリ レイアウトと構造を定義します。一方、dataSpace はバッファ内のデータの意味を定義します。
ほとんどの形式では、dataSpace によって画像データの色空間が定義されます。また、一部の形式では、dataSpace が画像ベースのデータと深度ベースのデータのどちらがリクエストされているかを示します。形式の詳細と各形式の有効な dataSpace 値については、system/core/include/system/graphics.h をご覧ください。
バージョン情報:
< CAMERA_DEVICE_API_VERSION_3_3:
定義されておらず、アクセスしないでください。dataSpace は HAL_DATASPACE_UNKNOWN と想定され、適切な色空間などは使用フラグと形式から決定されます。
= CAMERA_DEVICE_API_VERSION_3_3:
常にカメラ サービスによって設定されます。HAL は、この dataSpace を使用して、ストリームを正しい色空間に構成するか、サポートされている場合はカラー出力と深度出力のどちらかを選択する必要があります。データスペース値は、graphics.h の従来の定義です。
>= CAMERA_DEVICE_API_VERSION_3_4:
常にカメラ サービスによって設定されます。HAL は、この dataSpace を使用して、ストリームを正しい色空間に構成するか、サポートされている場合はカラー出力と深度出力のどちらかを選択する必要があります。データスペース値は、graphics.h の V0 データスペース定義を使用して設定されます。
int 形式 |
このストリームのバッファのピクセル形式。Format は、system/core/include/system/graphics.h の HAL_PIXEL_FORMAT_* リストの値、またはデバイス固有のヘッダーの値です。
HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED が使用されている場合、プラットフォームの gralloc モジュールは、カメラ デバイスとストリームの他のエンドポイントから提供される使用フラグに基づいて形式を選択します。
<= CAMERA_DEVICE_API_VERSION_3_1:
カメラ HAL デバイスは、後続の register_stream_buffers() 呼び出しで渡されたバッファを検査し、必要に応じて実装固有の形式の詳細を取得する必要があります。
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() はフレームワークによって呼び出されないため、HAL は、構成されたストリームのサイズ、使用フラグ、形式のみに基づいて ISP とセンサー パイプラインを構成する必要があります。
uint32_t max_buffers |
int rotation |
ストリームに必要な出力回転(camera3_stream_rotation_t 値のいずれか)。これは、ストリームの幅と高さとともに HAL によって検査する必要があります。たとえば、回転が 90 度で、ストリームの幅と高さがそれぞれ 720 と 1,280 の場合、カメラ サービスは 720x1280 サイズのバッファを供給します。HAL は 1,280x720 の画像をキャプチャし、画像を反時計回りに 90 度回転する必要があります。ストリームタイプが入力の場合、ローテーション フィールドは無効です。Camera HAL は、入力ストリームの回転フィールドを無視する必要があります。
<= CAMERA_DEVICE_API_VERSION_3_2:
定義されていないため、アクセスできません。HAL は出力画像に回転を適用してはなりません。
>= CAMERA_DEVICE_API_VERSION_3_3:
常にカメラ サービスによって設定されます。HAL はストリームの構成時にこのフィールドを検査し、HAL がそのような回転を実行できない場合は -EINVAL を返します。HAL は常に CAMERA3_STREAM_ROTATION_0 をサポートする必要があります。そのため、すべてのストリームの回転フィールドが CAMERA3_STREAM_ROTATION_0 である場合、サポートされていない回転で configure_streams() 呼び出しが失敗してはなりません。
uint32_t の使用方法 |
HAL で必要に応じて、このストリームの gralloc 使用フラグ。使用フラグは、 gralloc.h (GRALLOC_USAGE_*)またはデバイス固有のヘッダーで定義されています。
出力ストリームの場合、これらは HAL のプロデューサーの使用フラグです。入力ストリームの場合、これらは HAL のコンシューマ使用フラグです。プロデューサーとコンシューマの使用フラグが結合され、プラットフォームの gralloc HAL モジュールに渡されて、各ストリームの gralloc バッファが割り振られます。
バージョン情報:
== CAMERA_DEVICE_API_VERSION_3_0:
configure_streams() を介して渡された場合、初期値は保証されません。HAL はこのフィールドを入力として使用できないため、このフィールドに使用フラグを書き込む必要があります。
>= CAMERA_DEVICE_API_VERSION_3_1:
stream_type が OUTPUT または BIDIRECTIONAL の場合、configure_streams() を介して渡された場合、この初期値はコンシューマの使用フラグになります。HAL は、これらのコンシューマ フラグを使用してストリーム構成を決定する場合があります。stream_type が INPUT の場合、configure_streams() を介して渡された場合、この値の初期値は 0 です。configure_streams() を介して渡されるすべてのストリームについて、HAL は使用フラグを使用してこのフィールドに書き込む必要があります。
この構造体のドキュメントは、次のファイルから生成されました。
- hardware/libhardware/include/hardware/ camera3.h