camera3_stream構造体リファレンス
#include < camera3.h >
データフィールド | |
int | stream_type |
uint32_t | 幅 |
uint32_t | 身長 |
int | フォーマット |
uint32_t | 利用方法 |
uint32_t | max_buffers |
空所 * | プライベート |
android_dataspace_t | data_space |
int | 回転 |
空所 * | 予約済み[7] |
詳細な説明
camera3_stream_t:
単一のカメラ入力または出力ストリームへのハンドル。ストリームは、フレームワークによってそのバッファーの解像度と形式によって定義され、さらに、グラロック使用フラグと最大の実行中のバッファー数を持つHALによって定義されます。
ストリーム構造はフレームワークによって所有されますが、configure_streams()によってHALに渡されるcamera3_streamへのポインターは、そのcamera3_streamを引数として含まない最初の後続のconfigure_streams()呼び出しが終了するまで、またはclose()呼び出し。
camera3_streamがconfigure_streams()に渡されると、 camera3_streamフレームワークで制御されるすべてのメンバーは不変になります。 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回転 |
ストリームの必要な出力回転、camera3_stream_rotation_t値の1つ。これは、ストリームの幅と高さとともにHALによって検査する必要があります。たとえば、回転が90度で、ストリームの幅と高さがそれぞれ720と1280の場合、カメラサービスはサイズ720x1280のバッファを提供し、HALは1280x720の画像をキャプチャし、画像を反時計回りに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はこのフィールドに使用フラグを書き込む必要があります。
この構造体のドキュメントは、次のファイルから生成されました。
- ハードウェア/libhardware/ include / hardware / camera3.h