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 chung
int(* get_number_of_máy ảnh )(void)
int(* get_Camera_info )(int camera_id, struct camera_info *info)
int(* set_callbacks )(const camera_module_callbacks_t *callbacks)
khoảng trống(* 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, đã bật bool)
int(* trong đó )()
trống * dành riêng [5]

miêu tả cụ thể

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

Tài liệu hiện trường

Các phương pháp phổ biến của mô-đun máy ảnh. Đâ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 con trỏ hw_module_t tới camera_module trong các ngữ cảnh mà hw_module_t đã biết tham chiếu đến camera_module .

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

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

-ENODEV: Không mở được thiết bị camera do lỗi bên trong.

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

-EBUSY: Thiết bị camera đã được mở cho id camera này (bằng cách sử dụng phương pháp này hoặc open_legacy), bất kể phiên bản HAL của thiết bị được mở là gì.

-EUUSERS: Số lượng thiết bị camera tối đa có thể mở đồng thời đã được mở bằng phương pháp này hoặc phương pháp 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 file camera_common.h .

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

get_máy ảnh_info:

Trả về thông tin camera tĩnh cho một thiết bị camera 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 hoạt động thành công

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

-EINVAL: Các đối số đầu vào không hợp lệ, tức là id 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 camera bị ngắt kết nối, id camera của nó sẽ không hợp lệ. Gọi phương thức này với id máy ảnh không hợp lệ này 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 file camera_common.h .

int(* get_number_of_máy ảnh)(void)

get_number_of_máy ảnh:

Trả về số lượng thiết bị camera có thể truy cập được thông qua mô-đun camera. Các thiết bị camera đượ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ị camera cho open() chỉ đơn giản là số được chuyển đổi thành chuỗi. Tức là "0" cho ID camera 0, "1" cho ID camera 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ần 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ỉ tính các camera tích hợp có giá trị hướng về camera CAMERA_FACING_BACK hoặc CAMERA_FACING_FRONT ( camera_info.facing ). HAL không được bao gồm các camera bên ngoài ( camera_info.facing == CAMERA_FACING_EXTERNAL) vào giá trị trả về của lệnh gọi này. Các khung sẽ sử dụng lệnh gọi lại camera_device_status_change để quản lý số lượng camera bên ngoài.

Định nghĩa tại dòng 701 của file 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 mở rộng nhà cung cấp. HAL phải điền vào tất cả các phương thức hoạt động của thẻ nhà cung cấp hoặc giữ nguyên các hoạt động nếu không có thẻ nhà cung cấp nào được xác định.

Cấu trúc của nhà cung cấp_tag_ops được sử dụng ở đây được xác định trong: system/media/máy ảnh/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 được mô-đun HAL cung cấp. Framework có thể không gọi được chức năng này.

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

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

int(* init)()

trong đó:

Phương thức này được dịch vụ camera 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 camera được tải thành công. Nó có thể được mô-đun HAL để lại dưới dạng NULL nếu không cần khởi tạo.

Nó có thể được sử dụng bởi các triển khai HAL để thực hiện khởi tạo và các hoạt động 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 được mô-đun HAL cung cấp. Framework sẽ không gọi chức năng này.

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

Giá trị trả về:

0: Khi hoạt động thành công.

-ENODEV: Không thể hoàn tất quá trình khởi tạo do lỗi nội bộ. HAL phải được coi là ở trạng thái không hoạt động.

Định nghĩa tại dòng 909 của file 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 nhiều phiên bản API HAL của thiết bị được mô-đun HAL máy ảnh này hỗ trợ. 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 id máy ảnh, khung có thể gọi chức năng này để mở thiết bị máy ảnh dưới dạng thiết bị CAMERA_DEVICE_API_VERSION_1_0.

Đây là một phương pháp tùy chọn. Mô-đun Camera HAL không cần hỗ trợ nhiều hơn một phiên bản HAL của thiết bị cho mỗi thiết bị và các mô-đun đó có thể trả về -ENOSYS cho tất 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ũ hơn không được hỗ trợ, nó có thể trả về -EOPNOTSUPP. Khi các trường hợp trên xảy ra, phương thức open() bình thường (common.methods->open) sẽ được framework sử dụng thay thế.

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 được mô-đun HAL cung cấp. Framework sẽ không gọi chức năng này.

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

Giá trị trả về:

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

-ENOSYS Phương pháp này không được hỗ trợ.

-EOPNOTSUPP: Phiên bản HAL được yêu cầu không được phương pháp này hỗ trợ.

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

-EBUSY: Thiết bị camera đã được mở cho id camera 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ở là gì.

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

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

void* dành riêng[5]

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

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

Cung cấp các con trỏ hàm gọi lại tới mô-đun HAL để thông báo 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 lần tải mô-đun HAL máy ảnh đầu tiên, sau khi phương thức get_number_of_Cameras() được gọi lần đầu tiên và trước bất kỳ lệnh gọi nào 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 được cung cấp bởi mô-đun HAL. Framework có thể không gọi được chức năng này.

CAMERA_MODULE_API_VERSION_2_1:

Hợp lệ để được gọi bởi khung.

Giá trị trả về:

0: Khi hoạt động thành công

-ENODEV: Không thể hoàn thành 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à null

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

int(* set_torch_mode)(const char *Camera_id, đã bật bool)

set_torch_mode:

Bật hoặc tắt chế độ đèn pin của bộ đèn flash được liên kết với ID 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 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 bộ đèn flash. Khi có bất kỳ xung đột tài nguyên nào, chẳng hạn như open() được gọi để mở thiết bị camera, 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 đã bị tắt và trạng thái chế độ đèn pin đã trở thành TORCH_MODE_STATUS_NOT_AVAILABLE. Khi tài nguyên để bật chế độ đèn pin khả dụng trở lại, 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 để set_torch_mode() được gọi.

Khi khung gọi set_torch_mode() để bật chế độ đèn pin của bộ đèn flash, nếu HAL không thể bật đồng thời nhiều chế độ đèn pin, 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 bộ đèn nháy đó đã 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 được mô-đun HAL cung cấp. Framework sẽ không gọi chức năng này.

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

Giá trị trả về:

0: Khi hoạt động thành công.

-ENOSYS: Thiết bị camera không hỗ trợ thao tác này. Nó được trả về khi và chỉ khi android.flash.info.available là sai.

-EBUSY: Thiết bị camera đã được sử dụng.

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

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

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


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