ข้อมูลอ้างอิงเกี่ยวกับ 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 .
เอกสารประกอบในสนาม
hw_module_t common |
วิธีการทั่วไปของโมดูลกล้อง ข้อมูลนี้ ต้อง เป็นสมาชิกแรกของ 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 .
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
- hardware/libhardware/include/hardware/ camera_common.h