ข้อมูลอ้างอิงเกี่ยวกับ Struct camera_module

ข้อมูลอ้างอิงเกี่ยวกับ Struct camera_module

#include < camera_common.h >

ฟิลด์ข้อมูล

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]
 

คำอธิบายโดยละเอียด

คําจํากัดความที่บรรทัด 646 ของไฟล์ camera_common.h .

เอกสารประกอบในสนาม

วิธีการทั่วไปของโมดูลกล้อง ข้อมูลนี้ ต้อง เป็นสมาชิกแรกของ camera_module เนื่องจากผู้ใช้โครงสร้างนี้จะแคสต์ hw_module_t เป็น ตัวชี้ camera_module ในบริบทที่ทราบว่า hw_module_t อ้างอิงถึง camera_module

ค่าที่แสดงผลสําหรับ common.methods->open for camera_module มีดังนี้

0: เปิดอุปกรณ์กล้องสำเร็จ

-ENODEV: เปิดอุปกรณ์กล้องไม่ได้เนื่องจากข้อผิดพลาดภายใน

-EINVAL: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น รหัสไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง

-EBUSY: อุปกรณ์กล้องเปิดอยู่สำหรับรหัสกล้องนี้แล้ว (โดยใช้เมธอดนี้หรือ open_legacy) ไม่ว่าจะเปิดด้วย HAL เวอร์ชันใดของอุปกรณ์ก็ตาม

-EUSERS: อุปกรณ์กล้องจำนวนสูงสุดที่เปิดพร้อมกันได้เปิดไปแล้ว ไม่ว่าจะด้วยวิธีนี้หรือวิธี open_legacy

ระบบจะถือว่าค่าอื่นๆ ทั้งหมดที่แสดงผลจาก common.methods->open เป็น -ENODEV

คําจํากัดความที่บรรทัด 674 ของไฟล์ camera_common.h .

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

get_camera_info:

แสดงข้อมูลกล้องแบบคงที่ของอุปกรณ์กล้องที่ระบุ ข้อมูลนี้อาจไม่เปลี่ยนแปลงสำหรับอุปกรณ์กล้อง

ผลลัพธ์

0: การดำเนินการสำเร็จ

-ENODEV: ไม่สามารถระบุข้อมูลได้เนื่องจากเกิดข้อผิดพลาดภายใน

-EINVAL: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น รหัสไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง

ข้อมูลเวอร์ชัน (อิงตาม camera_module_t.common.module_api_version)

CAMERA_MODULE_API_VERSION_2_4 ขึ้นไป

เมื่อยกเลิกการเชื่อมต่อกล้อง รหัสกล้องจะใช้งานไม่ได้ การเรียกใช้เมธอดนี้ด้วยรหัสกล้องที่ไม่ถูกต้องจะได้รับ -EINVAL และข้อมูลเมตาแบบคงที่ของกล้อง NULL ( camera_info.static_camera_characteristics )

คําจํากัดความที่บรรทัด 727 ของไฟล์ camera_common.h .

int(* get_number_of_cameras)(void)

get_number_of_cameras:

แสดงจํานวนอุปกรณ์กล้องที่เข้าถึงได้ผ่านโมดูลกล้อง อุปกรณ์กล้องจะนับตั้งแต่ 0 ถึง N-1 โดยที่ N คือค่าที่การเรียกนี้แสดงผล ชื่อของอุปกรณ์กล้องสําหรับ open() คือตัวเลขที่แปลงเป็นสตริง นั่นคือ "0" สำหรับรหัสกล้อง 0, "1" สำหรับรหัสกล้อง 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.facing ) HAL ต้องไม่รวมกล้องภายนอก ( camera_info.facing == CAMERA_FACING_EXTERNAL) ไว้ในผลลัพธ์ของการเรียกใช้นี้ เฟรมเวิร์กจะใช้การเรียกกลับ camera_device_status_change เพื่อจัดการจำนวนกล้องภายนอก

คําจํากัดความที่บรรทัด 701 ของไฟล์ camera_common.h .

void(* get_vendor_tag_ops)(vendor_tag_ops_t *ops)

get_vendor_tag_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: เฟรมเวิร์กเรียกใช้ได้

คําจํากัดความที่บรรทัด 778 ของไฟล์ camera_common.h

int(* init)()

init:

บริการกล้องจะเรียกใช้เมธอดนี้ก่อนเรียกใช้เมธอดอื่นๆ หลังจากที่โหลดไลบรารี 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 เฟรมเวิร์กจะเรียกใช้ 1 ครั้งเสมอหลังจากโหลดโมดูล HAL ก่อนเรียกใช้เมธอดอื่นๆ ของโมดูล HAL

ผลลัพธ์

0: การดำเนินการสําเร็จ

-ENODEV: เริ่มต้นไม่สำเร็จเนื่องจากข้อผิดพลาดภายใน ต้องถือว่า HAL อยู่ในสถานะไม่ทำงาน

คําจํากัดความที่บรรทัด 909 ของไฟล์ 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:

เปิดอุปกรณ์ HAL ของกล้องเดิมที่เฉพาะเจาะจงหากโมดูล HAL ของกล้องนี้รองรับ HAL API ของอุปกรณ์หลายเวอร์ชัน ตัวอย่างเช่น หากโมดูลกล้องรองรับทั้ง API ของอุปกรณ์ CAMERA_DEVICE_API_VERSION_1_0 และ CAMERA_DEVICE_API_VERSION_3_2 สำหรับรหัสกล้องเดียวกัน เฟรมเวิร์กจะเรียกใช้ฟังก์ชันนี้เพื่อเปิดอุปกรณ์กล้องเป็นอุปกรณ์ CAMERA_DEVICE_API_VERSION_1_0 ได้

วิธีนี้เป็นวิธีที่ไม่บังคับ โมดูล HAL ของกล้องไม่จำเป็นต้องรองรับ HAL ของอุปกรณ์มากกว่า 1 เวอร์ชันต่ออุปกรณ์ และโมดูลดังกล่าวอาจแสดงผล -ENOSYS สําหรับการเรียกใช้เมธอดนี้ทั้งหมด สำหรับ HAL Device 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: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น รหัสไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง

-EBUSY: อุปกรณ์กล้องเปิดอยู่สำหรับรหัสกล้องนี้แล้ว (โดยใช้เมธอดนี้หรือเมธอด common.methods->open) ไม่ว่าจะเปิดด้วย HAL เวอร์ชันใดของอุปกรณ์ก็ตาม

-EUSERS: อุปกรณ์กล้องจำนวนสูงสุดที่เปิดพร้อมกันได้เปิดไปแล้ว ไม่ว่าจะเป็นด้วยวิธีนี้หรือเมธอด common.methods->open

คําจํากัดความที่บรรทัด 824 ของไฟล์ camera_common.h .

void* reserved[5]

คําจํากัดความที่บรรทัด 912 ของไฟล์ camera_common.h .

int(* set_callbacks)(const camera_module_callbacks_t *callbacks)

set_callbacks:

ระบุตัวชี้ฟังก์ชัน Callback ไปยังโมดูล HAL เพื่อแจ้งเฟรมเวิร์กของเหตุการณ์โมดูลกล้องแบบไม่พร้อมกัน เฟรมเวิร์กจะเรียกใช้ฟังก์ชันนี้ 1 ครั้งหลังจากโหลดโมดูล 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: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น ฟังก์ชันการเรียกคืนเป็นค่า Null

คําจํากัดความที่บรรทัด 758 ของไฟล์ camera_common.h .

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

set_torch_mode:

เปิดหรือปิดโหมดไฟฉายของชุดแฟลชที่เชื่อมโยงกับรหัสกล้องที่ระบุ หากการดำเนินการสำเร็จ 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() เพื่อเปิดโหมดไฟฉายของหน่วยแฟลช หาก HAL เปิดโหมดไฟฉายหลายโหมดพร้อมกันไม่ได้ HAL ควรปิดโหมดไฟฉายที่เปิดไว้จาก set_torch_mode() การเรียกใช้ก่อนหน้านี้และแจ้งให้เฟรมเวิร์กทราบว่าสถานะโหมดไฟฉายของหน่วยแฟลชนั้นกลายเป็น TORCH_MODE_STATUS_AVAILABLE_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 เป็นเท็จ

-EBUSY: มีการใช้อุปกรณ์กล้องอยู่

-EUSERS: ทรัพยากรที่จําเป็นสําหรับเปิดโหมดไฟฉายไม่พร้อมใช้งาน ซึ่งมักเกิดจากอุปกรณ์กล้องอื่นใช้ทรัพยากรอยู่จนทำให้ใช้แฟลชไม่ได้

-EINVAL: camera_id ไม่ถูกต้อง

คําจํากัดความที่บรรทัด 878 ของไฟล์ camera_common.h .


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้