Camera_info 構造体のリファレンス

Camera_info 構造体のリファレンス

#include < camera_common.h >

データフィールド

整数直面している
整数オリエンテーション
uint32_tデバイスのバージョン
constカメラ_メタデータ_t *静的カメラの特性
整数リソースコスト
文字**競合するデバイス
サイズ_t競合するデバイスの長さ

詳細な説明

ファイルCamera_common.h161行目の定義。

フィールドドキュメント

char** 競合するデバイス

このカメラ デバイスの使用中に同時に開くことができない他のデバイスを示す、NULL で終了する文字列として表されるカメラ デバイス ID の配列。

このフィールドは、このカメラ デバイスが他のいくつかのカメラ デバイスの複合体であること、または同時使用を禁止するハードウェア依存関係があることを示すために使用することを目的としています。依存関係がない場合は、それを示すためにこのフィールドに NULL が返されることがあります。

このカメラ デバイスが開いている間、カメラ サービスはこのリスト内のデバイスを同時に開くことはありません。

このフィールドで指定された文字列はカメラ サービスによってクリーンアップされないため、このデバイスが接続されている間はそのままにしておく必要があります。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_2_3 以下:

有効ではありません。 NULL であると想定できます。このフィールドは読まないでください。

CAMERA_MODULE_API_VERSION_2_4 以降:

常に有効です。

ファイルCamera_common.h404行目の定義。

size_t 競合するデバイスの長さ

conflicting_devices フィールドで指定された配列の長さ。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_2_3 以下:

有効ではありません。 0 であると想定できます。このフィールドは読み取らないでください。

CAMERA_MODULE_API_VERSION_2_4 以降:

常に有効です。

ファイルCamera_common.h419行目の定義。

uint32_t デバイスのバージョン

Camera_device_t.common.version の値。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_1_0:

有効ではありません。 CAMERA_DEVICE_API_VERSION_1_0 であると想定できます。このフィールドは読まないでください。

CAMERA_MODULE_API_VERSION_2_0 以降:

常に有効

ファイルCamera_common.h219行目の定義。

内部向き

カメラが向いている方向。カメラ側の定義については、system/core/include/system/camera.h を参照してください。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_2_3 以下:

CAMERA_FACING_BACK または CAMERA_FACING_FRONT である必要があります。

CAMERA_MODULE_API_VERSION_2_4 以降:

CAMERA_FACING_BACK、CAMERA_FACING_FRONT、または CAMERA_FACING_EXTERNAL である必要があります。

ファイルCamera_common.h177行目の定義。

int 方向

カメラ画像の向き。この値は、カメラ画像が自然な向きでディスプレイに正しく表示されるように、カメラ画像を時計回りに回転する必要がある角度です。 0、90、180、または 270 である必要があります。

たとえば、デバイスにもともと縦長の画面があるとします。背面カメラセンサーは横向きに取り付けられています。あなたは画面を見ています。カメラ センサーの上辺が自然な向きで画面の右端に揃っている場合、値は 90 になります。正面カメラ センサーの上辺が画面の右端に揃っている場合、値は 90 になるはずです。 270になります。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_2_3 以下:

すべてのcamera_moduleバージョンで有効です。

CAMERA_MODULE_API_VERSION_2_4 以降:

カメラの向きが CAMERA_FACING_BACK または CAMERA_FACING_FRONT の場合は有効ですが、カメラの向きが CAMERA_FACING_EXTERNAL の場合は無効です。

ファイルCamera_common.h202行目の定義。

int リソースコスト

このカメラを使用する総リソース「コスト」。[0, 100] の範囲の整数値で表されます。100 は、カメラ サブシステムの制限ボトルネックである共有リソースの総使用量を表します。これは非常に大まかな推定値である可能性があり、複数のアプリケーションがカメラ サービスによってアドバタイズされた異なるカメラを同時に開くことをいつ禁止するかを決定するためのカメラ サービスへのヒントとして使用されます。

カメラ サービスは、HAL によって公開されるカメラ デバイスの任意の組み合わせ (これらのカメラのリソース コストの合計が 100 以下である場合) を同時に開いて使用できる必要があります。コストを決定するには、各カメラ デバイスが構成され、動作していると想定する必要があります。カメラのメタデータを通じてそのデバイスに公開される構成設定で利用可能な、リソースを最大に消費するフレームレートとストリーム サイズの設定。

カメラ サービスは、合計リソース コストが 100 を超えるカメラ デバイスの組み合わせを同時に開こうとする可能性があります。これは成功する場合も失敗する場合もあります。これが成功すると、複数のオープンデバイスによるリソース制約によりサポートされない構成の組み合わせは、configure 呼び出し中に失敗するはずです。合計リソース コストが 100 以下の場合、開いている唯一のカメラ デバイスである場合、デバイスで通常は成功するストリーム構成設定またはその他のデバイス機能のオープンと構成が失敗することはありません。

このフィールドは、他のアプリケーションが他のカメラ デバイスを使用しているときに、バックグラウンド アプリケーションがこのカメラ デバイスを使用できるかどうかを決定するために使用されます。注: 複数のアプリケーションが同じカメラ デバイスを同時に開くことは、カメラ サービスによって決して許可されません。

ユースケースの例:

元。 1: カメラ デバイス 0 = バック カメラ カメラ デバイス 1 = フロント カメラ

  • 両方のカメラ デバイスを使用すると、ISP の帯域幅が制限されるため、フレームレートが大幅に低下します。

構成:

カメラ デバイス 0 - resource_cost = 51、conflicting_devices = null カメラ デバイス 1 - resource_cost = 51、conflicting_devices = null

結果:

リソース コストの合計が 100 を超えるため、優先順位の高いアプリケーションがいずれかのデバイスを開いている場合、カメラ サービスによって優先順位の低いアプリケーションがいずれのデバイスを開くことも許可されません。優先順位の低いアプリケーションがデバイスを使用しており、そのデバイスをその後優先順位の高いアプリケーションが開こうとすると、優先順位の低いアプリケーションはデバイスの接続を強制的に切断されます。

最も優先順位の高いアプリケーションが選択した場合、両方のデバイスを開こうとする可能性がありますが (これらのデバイスは、conflicting_devices フィールドに競合としてリストされていないため)、open 呼び出しまたはconfigure 呼び出しでこれらのデバイスの使用が失敗する可能性があります。

元。 2: カメラ デバイス 0 = 左バック カメラ カメラ デバイス 1 = 右バック カメラ カメラ デバイス 2 = デバイス 0 および 1 で使用される左右のバック カメラ センサーを使用する複合ステレオ カメラ カメラ デバイス 3 = 前面カメラ

  • ハードウェアの制約により、最大 2 台のカメラを同時に開くことができます。結合されたステレオ カメラは、2 つのバック カメラ デバイス (デバイス 0、1) のいずれかと同時に使用することはできず、通常、フロント カメラ (デバイス 3) と同時に使用するには多すぎる帯域幅が必要になります。

構成:

カメラ デバイス 0 - resource_cost = 50 競合デバイス = { 2 } カメラ デバイス 1 - リソース コスト = 50 競合デバイス = { 2 } カメラ デバイス 2 - リソースコスト = 100 競合デバイス = { 0, 1 } カメラ デバイス 3 - リソースコスト = 50 競合デバイス = null

結果:

カメラ サービスは、conflicting_devices フィールドに基づいて、次のオープン デバイスのセットが決して許可されないことを保証します: { 1, 2 }、{ 0, 2 }。

resource_cost フィールドに基づいて、優先度の高いフォアグラウンド アプリケーションがカメラ デバイス 0 を使用している場合、バックグラウンド アプリケーションはカメラ デバイス 1 または 3 を開くことが許可されます (ただし、フォアグラウンド アプリケーションが別のデバイスを開いた場合は、再度切断が強制されます)。

最も優先度の高いアプリケーションは引き続きデバイス 0、2、および 3 を同時にオープンしようとする可能性がありますが、HAL はこの組み合わせのコールのオープンまたは設定に失敗する可能性があります。

元。 3: カメラ デバイス 0 = バック カメラ カメラ デバイス 1 = フロント カメラ カメラ デバイス 2 = デバイス 1 と同じセンサーを使用する低電力フロント カメラですが、低電力モードで使用できる画像ストリーム解像度のみを公開します

  • 物理センサーが共有されているため、両方のフロント カメラ (デバイス 1、2) を同時に使用することはできません。ハードウェアの制限のため、一部のストリーム構成では背面カメラと「高電力」前面カメラ (デバイス 1) の使用が不可能な場合がありますが、「低電力」前面カメラ オプションは特別な専用ハードウェアを備えているため、常に使用できます。

    構成:

    カメラ デバイス 0 - resource_cost = 100 競合デバイス = null カメラ デバイス 1 - resource_cost = 100 競合デバイス = { 2 } カメラ デバイス 2 - resource_cost = 0 競合デバイス = { 1 } 結果:

    カメラ サービスは、conflicting_devices フィールドに基づいて、次のオープン デバイスのセットが決して許可されないことを保証します: { 1, 2 }。

    resource_cost フィールドに基づいて、最も優先度の高いアプリケーションのみがデバイス 0 と 1 の両方を同時にオープンしようと試みることができます。優先度の高いアプリケーションがデバイス 1 または 2 を使用していない場合、優先度の低いバックグラウンド アプリケーションがデバイス 2 を開く可能性があります (ただし、優先度の高いアプリケーションがその後デバイス 1 または 2 を開くと、強制的に切断されます)。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_2_3 以下:

有効ではありません。 100 であると想定できます。このフィールドは読み取らないでください。

CAMERA_MODULE_API_VERSION_2_4 以降:

常に有効です。

ファイルCamera_common.h376行目の定義。

const Camera_metadata_t * static_camera_characteristics

カメラの固定特性。system/media/camera/docs/docs.html で指定されたすべての静的カメラ メタデータが含まれます。これはソートされたメタデータ バッファである必要があり、呼び出し元によって変更または解放されることはできません。ポインタはカメラ モジュールの存続期間中有効である必要があり、その値は get_camera_info() によって返された後は変更されない可能性があります。

バージョン情報 (camera_module_t.common.module_api_version に基づく):

CAMERA_MODULE_API_VERSION_1_0:

有効ではありません。追加の特性は使用できません。このフィールドは読まないでください。

CAMERA_MODULE_API_VERSION_2_0 以降:

device_version >= CAMERA_DEVICE_API_VERSION_2_0 の場合に有効です。それ以外の場合は読まないでください。

ファイルCamera_common.h241行目の定義。


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