Tham chiếu cấu trúc camera_module

Tham chiếu cấu trúc camera_module

#include < camera_common.h >

Trường dữ liệu

hw_module_t   common
 
int(*  get_number_of_cameras )(void)
 
int(*  get_camera_info )(int camera_id, struct camera_info *info)
 
int(*  set_callbacks )(const camera_module_callbacks_t *callbacks)
 
void(*  get_vendor_tag_ops )(vendor_tag_ops_t *ops)
 
int(*  open_legacy )(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)
 
int(*  set_torch_mode )(const char *camera_id, bool enabled)
 
int(*  init )()
 
void *  reserved [5]
 

Nội dung mô tả chi tiết

Định nghĩa tại dòng 646 của tệp camera_common.h .

Tài liệu về trường

Các phương thức phổ biến của mô-đun máy ảnh. này phải là thành viên đầu tiên của camera_module vì người dùng cấu trúc này sẽ truyền một hw_module_t đến con trỏ camera_module trong ngữ cảnh mà bạn biết rằng hw_module_t tham chiếu đến camera_module .

Giá trị trả về cho common.methods->open cho camera_module là:

0: Khi mở thành công thiết bị máy ảnh.

-ENODEV: Không thể mở thiết bị máy ảnh do lỗi nội bộ.

-EINVAL: Các đối số đầu vào không hợp lệ, tức là mã nhận dạng không hợp lệ và/hoặc mô-đun không hợp lệ.

-EBUSY: Thiết bị máy ảnh đã được mở cho mã máy ảnh này (bằng cách sử dụng phương thức này hoặc open_legacy), bất kể phiên bản HAL của thiết bị được mở dưới dạng nào.

-EUSERS: Số lượng thiết bị máy ảnh tối đa có thể mở đồng thời đã được mở, bằng phương thức này hoặc phương thức open_legacy.

Tất cả các giá trị trả về khác từ common.methods->open sẽ được coi là -ENODEV.

Định nghĩa tại dòng 674 của tệp camera_common.h .

int(* get_camera_info)(int camera_id, struct camera_info *info)

get_camera_info:

Trả về thông tin máy ảnh tĩnh cho một thiết bị máy ảnh nhất định. Thông tin này có thể không thay đổi đối với thiết bị máy ảnh.

Giá trị trả về:

0: Khi thao tác thành công

-ENODEV: Không thể cung cấp thông tin do lỗi nội bộ.

-EINVAL: Các đối số đầu vào không hợp lệ, tức là mã nhận dạng không hợp lệ và/hoặc mô-đun không hợp lệ.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Khi một máy ảnh bị ngắt kết nối, mã nhận dạng máy ảnh của máy ảnh đó sẽ không hợp lệ. Việc gọi phương thức này bằng mã máy ảnh không hợp lệ sẽ nhận được siêu dữ liệu tĩnh của máy ảnh -EINVAL và NULL ( camera_info.static_camera_characteristics ).

Định nghĩa tại dòng 727 của tệp camera_common.h .

int(* get_number_of_cameras)(void)

get_number_of_cameras:

Trả về số lượng thiết bị máy ảnh có thể truy cập thông qua mô-đun máy ảnh. Các thiết bị máy ảnh được đánh số từ 0 đến N-1, trong đó N là giá trị được lệnh gọi này trả về. Tên của thiết bị máy ảnh cho open() chỉ là số được chuyển đổi thành chuỗi. Tức là "0" cho mã nhận dạng máy ảnh 0, "1" cho mã nhận dạng máy ảnh 1.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_2_3 trở xuống:

Giá trị ở đây phải là tĩnh và không thể thay đổi sau lệnh gọi đầu tiên đến phương thức này.

CAMERA_MODULE_API_VERSION_2_4 trở lên:

Giá trị ở đây phải là tĩnh và chỉ được tính các máy ảnh tích hợp có giá trị hướng máy ảnh CAMERA_FACING_BACK hoặc CAMERA_FACING_FRONT ( camera_info.facing ). HAL không được đưa máy ảnh bên ngoài ( camera_info.facing == CAMERA_FACING_EXTERNAL) vào giá trị trả về của lệnh gọi này. Khung sẽ sử dụng lệnh gọi lại camera_device_status_change để quản lý số lượng máy ảnh bên ngoài.

Định nghĩa tại dòng 701 của tệp camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_ops:

Nhận các phương thức để truy vấn thông tin thẻ siêu dữ liệu của tiện ích của nhà cung cấp. HAL phải điền vào tất cả các phương thức thao tác thẻ nhà cung cấp hoặc để các thao tác không thay đổi nếu không có thẻ nhà cung cấp nào được xác định.

Cấu trúc vendor_tag_ops dùng ở đây được xác định trong: system/media/camera/include/system/vendor_tags.h

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1: Không do mô-đun HAL cung cấp. Khung có thể không gọi hàm này.

CAMERA_MODULE_API_VERSION_2_2: Hợp lệ để khung gọi.

Định nghĩa tại dòng 778 của tệp camera_common.h .

int(* init)()

init:

Phương thức này được dịch vụ máy ảnh gọi trước khi bất kỳ phương thức nào khác được gọi, ngay sau khi thư viện HAL của máy ảnh được tải thành công. Mô-đun HAL có thể để giá trị này ở dạng NULL nếu không cần khởi chạy.

Các hoạt động triển khai HAL có thể sử dụng phương thức này để thực hiện việc khởi chạy và các thao tác một lần khác.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: Không do mô-đun HAL cung cấp. Khung sẽ không gọi hàm này.

CAMERA_MODULE_API_VERSION_2_4: Nếu không phải là NULL, khung sẽ luôn gọi một lần sau khi tải mô-đun HAL, trước khi gọi bất kỳ phương thức mô-đun HAL nào khác.

Giá trị trả về:

0: Khi thao tác thành công.

-ENODEV: Không thể hoàn tất quá trình khởi chạy do lỗi nội bộ. Phải giả định HAL ở trạng thái không hoạt động.

Định nghĩa tại dòng 909 của tệp camera_common.h .

int(* open_legacy)(const struct hw_module_t *module, const char *id, uint32_t halVersion, struct hw_device_t **device)

open_legacy:

Mở một thiết bị HAL máy ảnh cũ cụ thể nếu mô-đun HAL máy ảnh này hỗ trợ nhiều phiên bản API HAL của thiết bị. Ví dụ: nếu mô-đun máy ảnh hỗ trợ cả API thiết bị CAMERA_DEVICE_API_VERSION_1_0 và CAMERA_DEVICE_API_VERSION_3_2 cho cùng một mã máy ảnh, thì khung có thể gọi hàm này để mở thiết bị máy ảnh dưới dạng thiết bị CAMERA_DEVICE_API_VERSION_1_0.

Đây là phương thức không bắt buộc. Mô-đun HAL của máy ảnh không cần hỗ trợ nhiều phiên bản HAL của thiết bị trên mỗi thiết bị và các mô-đun như vậy có thể trả về -ENOSYS cho tất cả các lệnh gọi đến phương thức này. Đối với tất cả các phiên bản API thiết bị HAL cũ không được hỗ trợ, phương thức này có thể trả về -EOPNOTSUPP. Khi các trường hợp trên xảy ra, khung sẽ sử dụng phương thức open() thông thường (common.methods->open).

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2: Không do mô-đun HAL cung cấp. Khung sẽ không gọi hàm này.

CAMERA_MODULE_API_VERSION_2_3: Khung có thể gọi giá trị này.

Giá trị trả về:

0: Khi mở thành công thiết bị máy ảnh.

-ENOSYS Phương thức này không được hỗ trợ.

-EOPNOTSUPP: Phương thức này không hỗ trợ phiên bản HAL đã yêu cầu.

-EINVAL: Các đối số đầu vào không hợp lệ, tức là mã nhận dạng không hợp lệ và/hoặc mô-đun không hợp lệ.

-EBUSY: Thiết bị máy ảnh đã được mở cho mã máy ảnh này (bằng cách sử dụng phương thức này hoặc phương thức common.methods->open), bất kể phiên bản HAL của thiết bị được mở dưới dạng nào.

-EUSERS: Số lượng thiết bị máy ảnh tối đa có thể mở đồng thời đã được mở, bằng phương thức này hoặc phương thức common.methods->open.

Định nghĩa tại dòng 824 của tệp camera_common.h .

void* reserved[5]

Định nghĩa tại dòng 912 của tệp camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

Cung cấp con trỏ hàm gọi lại cho mô-đun HAL để thông báo cho khung về các sự kiện mô-đun máy ảnh không đồng bộ. Khung sẽ gọi hàm này một lần sau khi tải mô-đun HAL máy ảnh ban đầu, sau khi phương thức get_number_of_cameras() được gọi lần đầu tiên và trước mọi lệnh gọi khác đến mô-đun.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_0, CAMERA_MODULE_API_VERSION_2_0:

Không do mô-đun HAL cung cấp. Khung có thể không gọi hàm này.

CAMERA_MODULE_API_VERSION_2_1:

Có hiệu lực để được khung gọi.

Giá trị trả về:

0: Khi thao tác thành công

-ENODEV: Không thể hoàn tất thao tác do lỗi nội bộ.

-EINVAL: Các đối số đầu vào không hợp lệ, tức là các lệnh gọi lại là rỗng

Định nghĩa tại dòng 758 của tệp camera_common.h .

int(* set_torch_mode)(const char *camera_id, bool enabled)

set_torch_mode:

Bật hoặc tắt chế độ đèn pin của đèn flash được liên kết với một mã máy ảnh nhất định. Nếu thao tác thành công, HAL phải thông báo trạng thái đèn pin của khung bằng cách gọi camera_module_callbacks.torch_mode_status_change() với trạng thái mới.

Thiết bị máy ảnh có mức độ ưu tiên cao hơn khi truy cập vào đèn flash. Khi có xung đột tài nguyên, chẳng hạn như open() được gọi để mở thiết bị máy ảnh, mô-đun HAL phải thông báo cho khung thông qua camera_module_callbacks.torch_mode_status_change() rằng chế độ đèn pin đã tắt và trạng thái chế độ đèn pin đã trở thành TORCH_MODE_STATUS_NOT_AVAILABLE. Khi có lại tài nguyên để bật chế độ đèn pin, mô-đun HAL phải thông báo cho khung thông qua camera_module_callbacks.torch_mode_status_change() rằng trạng thái chế độ đèn pin đã trở thành TORCH_MODE_STATUS_AVAILABLE_OFF để gọi set_torch_mode() .

Khi khung gọi set_torch_mode() để bật chế độ đèn pin của một đơn vị đèn flash, nếu HAL không thể bật đồng thời nhiều chế độ đèn pin, thì HAL sẽ tắt chế độ đèn pin được bật bằng lệnh gọi set_torch_mode() trước đó và thông báo cho khung rằng trạng thái chế độ đèn pin của đơn vị đèn flash đó đã trở thành TORCH_MODE_STATUS_AVAILABLE_OFF.

Thông tin phiên bản (dựa trên camera_module_t.common.module_api_version):

CAMERA_MODULE_API_VERSION_1_x/2_0/2_1/2_2/2_3: Không do mô-đun HAL cung cấp. Khung sẽ không gọi hàm này.

CAMERA_MODULE_API_VERSION_2_4: Hợp lệ để được khung gọi.

Giá trị trả về:

0: Khi thao tác thành công.

-ENOSYS: Thiết bị máy ảnh không hỗ trợ thao tác này. Giá trị này được trả về nếu và chỉ khi android.flash.info.available là false.

-EBUSY: Thiết bị máy ảnh đang được sử dụng.

-EUSERS: Không có tài nguyên cần thiết để bật chế độ đèn pin, thường là do các thiết bị máy ảnh khác đang giữ tài nguyên khiến không thể sử dụng đèn flash.

-EINVAL: camera_id không hợp lệ.

Định nghĩa tại dòng 878 của tệp camera_common.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau: