camera_module結構參考

camera_module結構參考

#include < camera_common.h >

資料欄位

硬體模組_t常見的
整數(*取得攝影機數量)(無效)
整數(* get_camera_info )(intcamera_id, structcamera_info *info)
整數(* set_callbacks )(常數camera_module_callbacks_t *回呼)
空白(* get_vendor_tag_ops )(vendor_tag_ops_t *ops)
整數(* open_legacy )(const struct hw_module_t *模組,const char *id,uint32_t halVersion,struct hw_device_t **設備)
整數(* set_torch_mode )(const char *camera_id,布林啟用)
整數(*在裡面)()
空白 *保留[5]

詳細說明

檔案camera_common.h646行的定義。

現場文檔

攝影機模組的常用方法。這必須camera_module的第一個成員,因為結構的使用者將在已知hw_module_t引用camera_module的上下文中將hw_module_t強制轉換為camera_module指標。

camera_module的 common.methods->open 的回傳值為:

0:成功開啟相機設備。

-ENODEV:由於內部錯誤,相機設備無法開啟。

-EINVAL:輸入參數無效,即id無效,和/或模組無效。

-EBUSY:相機設備已為此相機 ID 開啟(透過使用此方法或 open_legacy),無論其開啟的裝置 HAL 版本為何。

-EUSERS:可以同時開啟的相機設備的最大數量已經透過此方法或 open_legacy 方法開啟。

common.methods->open 的所有其他回傳值將被視為 -ENODEV。

檔案camera_common.h674行的定義。

int(* get_camera_info)(intcamera_id, structcamera_info *info)

取得相機資訊:

傳回給定相機設備的靜態相機資訊。對於相機設備,此資訊可能不會改變。

傳回值:

0:操作成功

-ENODEV:由於內部錯誤,無法提供資訊。

-EINVAL:輸入參數無效,即id無效,和/或模組無效。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

當相機斷開連接時,其相機ID將失效。使用此無效相機 ID 呼叫此方法將獲得 -EINVAL 和 NULL 相機靜態元資料 ( camera_info.static_camera_characteristics )。

檔案camera_common.h727行的定義。

int(* get_number_of_cameras)(void)

取得攝影機數量:

返回可透過相機模組存取的相機設備的數量。相機設備編號為 0 到 N-1,其中 N 是此呼叫傳回的值。 open() 的相機設備名稱只是轉換為字串的數字。即,「0」表示攝影機 ID 0,「1」表示攝影機 ID 1。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 或更低版本:

這裡的值必須是靜態的,並且在第一次呼叫此方法後不能更改。

CAMERA_MODULE_API_VERSION_2_4 或更高版本:

此處的值必須是靜態的,並且必須僅計算具有 CAMERA_FACING_BACK 或 CAMERA_FACING_FRONT 相機朝向值 ( camera_info.faceing ) 的內建相機。 HAL 不得將外部攝影機 ( camera_info.faceing == CAMERA_FACING_EXTERNAL) 包含在此呼叫的回傳值中。框架將使用camera_device_status_change回調來管理外部相機的數量。

檔案camera_common.h701行的定義。

無效(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

取得供應商標籤操作:

取得查詢供應商擴展元資料標籤資訊的方法。 HAL 應填寫所有供應商標籤操作方法,或如果未定義供應商標籤,則保持操作不變。

這裡使用的vendor_tag_ops結構體定義在:system/media/camera/include/system/vendor_tags.h

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1:HAL 模組未提供。框架可能不會呼叫此函數。

CAMERA_MODULE_API_VERSION_2_2:可由框架呼叫有效。

檔案camera_common.h778行的定義。

int(* 初始化)()

在裡面:

在成功載入相機 HAL 庫之後,相機服務會在呼叫任何其他方法之前呼叫此方法。如果不需要初始化,HAL 模組可能會將其保留為 NULL。

HAL 實作可以使用它來執行初始化和其他一次性操作。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:HAL 模組未提供。框架不會呼叫此函數。

CAMERA_MODULE_API_VERSION_2_4:如果不是 NULL,則框架始終在載入 HAL 模組後、呼叫任何其他 HAL 模組方法之前呼叫一次。

傳回值:

0:操作成功。

-ENODEV:由於內部錯誤,初始化無法完成。必須假定 HAL 處於非功能狀態。

檔案camera_common.h909行的定義。

int(* open_legacy)(const struct hw_module_t *模組,const char *id,uint32_t halVersion,struct hw_device_t **設備)

開放遺產:

如果此相機 HAL 模組支援多個裝置 HAL API 版本,則開啟特定的舊版相機 HAL 裝置。例如,如果相機模組支援相同相機 ID 的 CAMERA_DEVICE_API_VERSION_1_0 和 CAMERA_DEVICE_API_VERSION_3_2 裝置 API,則框架可以呼叫此函數將相機裝置以 CAMERA_DEVICE_API_VERSION_1_0 裝置開啟。

這是一種可選方法。相機 HAL 模組不需要為每個裝置支援多個裝置 HAL 版本,且此類模組可能會針對對此方法的所有呼叫傳回 -ENOSYS。對於所有不受支援的舊 HAL 設備 API 版本,它可能會返回 -EOPNOTSUPP。當發生上述情況時,框架將改用普通的 open() 方法(common.methods->open)。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2:HAL 模組未提供。框架不會呼叫此函數。

CAMERA_MODULE_API_VERSION_2_3:可由框架呼叫有效。

傳回值:

0:成功開啟相機設備。

-ENOSYS 不支援此方法。

-EOPNOTSUPP:此方法不支援要求的 HAL 版本。

-EINVAL:輸入參數無效,即id無效,和/或模組無效。

-EBUSY:相機設備已為此相機 ID 開啟(透過使用此方法或 common.methods->open 方法),無論其開啟的裝置 HAL 版本為何。

-EUSERS:已透過此方法或 common.methods->open 方法開啟可同時開啟的最大數量的相機設備。

檔案camera_common.h824行的定義。

無效* 保留[5]

檔案camera_common.h912行的定義。

int(* set_callbacks)(常數camera_module_callbacks_t *回呼)

設定回調:

提供指向 HAL 模組的回調函數指針,以通知框架非同步相機模組事件。框架將在初始相機 HAL 模組載入後、首次呼叫get_number_of_cameras()方法後以及對該模組的任何其他呼叫之前呼叫此函數一次。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0、CAMERA_MODULE_API_VERSION_2_0:

HAL 模組不提供。框架可能不會呼叫此函數。

CAMERA_MODULE_API_VERSION_2_1:

由框架調用有效。

傳回值:

0:操作成功

-ENODEV:由於內部錯誤,操作無法完成。

-EINVAL:輸入參數無效,即回調為空

檔案camera_common.h758行的定義。

int(* set_torch_mode)(const char *camera_id, bool 啟用)

設定火炬模式:

開啟或關閉與給定相機 ID 關聯的閃光燈裝置的手電筒模式。如果操作成功,HAL 必須透過使用新狀態呼叫camera_module_callbacks.torch_mode_status_change()來通知框架火炬狀態。

相機設備具有較高的存取閃光燈單元的優先權。當出現任何資源衝突時,例如呼叫 open() 開啟相機設備,HAL 模組必須透過camera_module_callbacks.torch_mode_status_change()通知框架手電筒模式已關閉,且手電筒模式狀態已變為 TORCH_MODE_STATUS_NOT_AVAILABLE。當開啟手電筒模式的資源再次可用時,HAL模組必須透過camera_module_callbacks.torch_mode_status_change()通知框架手電筒模式狀態已變為TORCH_MODE_STATUS_AVAILABLE_OFF,以便呼叫set_torch_mode()

當框架呼叫set_torch_mode()開啟 Flash 單元的手電筒模式時,如果 HAL 無法同時保持多個手電筒模式,HAL 應關閉先前呼叫set_torch_mode()開啟的手電筒模式並通知框架該閃光燈裝置的手電筒模式狀態已變為TORCH_MODE_STATUS_AVAILAB_STATUS_OFF 。

版本資訊(基於camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3:HAL 模組未提供。框架不會呼叫此函數。

CAMERA_MODULE_API_VERSION_2_4:可由框架呼叫有效。

傳回值:

0:操作成功。

-ENOSYS:相機設備不支援此操作。當且僅當 android.flash.info.available 為 false 時才傳回它。

-EBUSY:攝影機設備已在使用中。

-EUSERS:開啟手電筒模式所需的資源不可用,通常是因為其他相機設備佔用了資源,導致無法使用閃光燈。

-EINVAL:camera_id 無效。

檔案camera_common.h878行的定義。


該結構的文檔是從以下文件產生的: