การอ้างอิงโครงสร้าง camera_module
#include < camera_common.h >
เขตข้อมูล | |
hw_module_t | ทั่วไป |
อินท์(* | get_number_of_camers ) (เป็นโมฆะ) |
อินท์(* | get_camera_info )(int camera_id, struct camera_info *ข้อมูล) |
อินท์(* | set_callbacks ) (const camera_module_callbacks_t * โทรกลับ) |
เป็นโมฆะ(* | get_vendor_tag_ops )(ผู้ขาย_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] |
คำอธิบายโดยละเอียด
คำจำกัดความที่บรรทัด 646 ของไฟล์ camera_common.h
เอกสารภาคสนาม
hw_module_t ทั่วไป |
วิธีการทั่วไปของโมดูลกล้อง นี่ จะต้อง เป็นสมาชิกคนแรกของ camera_module เนื่องจากผู้ใช้โครงสร้างนี้จะส่ง hw_module_t ไปยังตัวชี้ camera_module ในบริบทที่ทราบว่า hw_module_t อ้างอิงถึง camera_module
ค่าที่ส่งคืนสำหรับ common.methods->open สำหรับ camera_module คือ:
0: เมื่อเปิดอุปกรณ์กล้องสำเร็จ
-ENODEV: ไม่สามารถเปิดอุปกรณ์กล้องได้เนื่องจากข้อผิดพลาดภายใน
-EINVAL: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น ID ไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง
-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 *ข้อมูล) |
รับ_กล้อง_ข้อมูล:
ส่งคืนข้อมูลกล้องคงที่สำหรับอุปกรณ์กล้องที่กำหนด ข้อมูลนี้อาจไม่เปลี่ยนแปลงสำหรับอุปกรณ์กล้อง
ส่งกลับค่า:
0: ในการดำเนินการที่ประสบความสำเร็จ
-ENODEV: ไม่สามารถให้ข้อมูลได้เนื่องจากข้อผิดพลาดภายใน
-EINVAL: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น ID ไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ 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_camers) (เป็นโมฆะ) |
get_number_of_กล้อง:
ส่งกลับจำนวนอุปกรณ์กล้องที่สามารถเข้าถึงได้ผ่านโมดูลกล้อง อุปกรณ์กล้องจะมีหมายเลข 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
เป็นโมฆะ(* 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(* เริ่มต้น)() |
ในนั้น:
บริการกล้องเรียกเมธอดนี้ก่อนที่จะเรียกใช้เมธอดอื่น ทันทีหลังจากที่โหลดไลบรารี 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 Framework จะไม่เรียกใช้ฟังก์ชันนี้
CAMERA_MODULE_API_VERSION_2_4: หากไม่ใช่ NULL เฟรมเวิร์กจะถูกเรียกเสมอหนึ่งครั้งหลังจากโหลดโมดูล HAL ก่อนที่จะเรียกใช้เมธอดโมดูล HAL อื่นใด
ส่งกลับค่า:
0: ในการดำเนินการที่ประสบความสำเร็จ
-ENODEV: ไม่สามารถดำเนินการเตรียมใช้งานให้เสร็จสิ้นได้เนื่องจากข้อผิดพลาดภายใน HAL จะต้องถือว่าอยู่ในสถานะไม่ทำงาน
คำจำกัดความที่บรรทัด 909 ของไฟล์ camera_common.h
int(* open_legacy)(const struct hw_module_t *โมดูล, const char *id, uint32_t halVersion, struct hw_device_t **อุปกรณ์) |
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
นี่เป็นวิธีทางเลือก โมดูล Camera HAL ไม่จำเป็นต้องรองรับอุปกรณ์ HAL มากกว่าหนึ่งเวอร์ชันต่ออุปกรณ์ และโมดูลดังกล่าวอาจส่งคืน -ENOSYS สำหรับการเรียกเมธอดนี้ทั้งหมด สำหรับ API เวอร์ชันเก่าทั้งหมดของอุปกรณ์ HAL ที่ไม่รองรับ อาจส่งคืน -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 Framework จะไม่เรียกใช้ฟังก์ชันนี้
CAMERA_MODULE_API_VERSION_2_3: ถูกต้องที่จะเรียกโดยเฟรมเวิร์ก
ส่งกลับค่า:
0: เมื่อเปิดอุปกรณ์กล้องสำเร็จ
-ENOSYS ไม่รองรับวิธีนี้
-EOPNOTSUPP: วิธีการนี้ไม่รองรับเวอร์ชัน HAL ที่ร้องขอ
-EINVAL: อาร์กิวเมนต์อินพุตไม่ถูกต้อง เช่น ID ไม่ถูกต้อง และ/หรือโมดูลไม่ถูกต้อง
-EBUSY: อุปกรณ์กล้องถูกเปิดแล้วสำหรับรหัสกล้องนี้ (โดยใช้วิธีนี้หรือ common.methods->วิธีเปิด) โดยไม่คำนึงถึงเวอร์ชัน HAL ของอุปกรณ์ที่ถูกเปิดเป็น
-EUSERS: จำนวนอุปกรณ์กล้องสูงสุดที่สามารถเปิดพร้อมกันได้ถูกเปิดแล้ว ไม่ว่าจะโดยวิธีนี้หรือ common.methods->วิธีเปิด
คำจำกัดความที่บรรทัด 824 ของไฟล์ camera_common.h
เป็นโมฆะ* สงวนไว้[5] |
คำจำกัดความที่บรรทัด 912 ของไฟล์ camera_common.h
int(* set_callbacks)(const camera_module_callbacks_t *โทรกลับ) |
set_callbacks:
จัดให้มีตัวชี้ฟังก์ชันเรียกกลับไปยังโมดูล 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: อาร์กิวเมนต์อินพุตไม่ถูกต้อง กล่าวคือ การโทรกลับเป็นโมฆะ
คำจำกัดความที่บรรทัด 758 ของไฟล์ camera_common.h
int(* set_torch_mode)(const char *camera_id, เปิดใช้งานบูล) |
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 Framework จะไม่เรียกใช้ฟังก์ชันนี้
CAMERA_MODULE_API_VERSION_2_4: ถูกต้องที่จะเรียกโดยเฟรมเวิร์ก
ส่งกลับค่า:
0: ในการดำเนินการที่ประสบความสำเร็จ
-ENOSYS: อุปกรณ์กล้องไม่รองรับการทำงานนี้ มันจะถูกส่งคืนหาก android.flash.info.available เป็นเท็จเท่านั้น
-EBUSY: มีการใช้งานอุปกรณ์กล้องอยู่แล้ว
-EUSERS: ทรัพยากรที่จำเป็นในการเปิดโหมดไฟฉายไม่พร้อมใช้งาน โดยทั่วไปเนื่องจากอุปกรณ์กล้องอื่นๆ กำลังเก็บทรัพยากรไว้เพื่อทำให้ไม่สามารถใช้ชุดแฟลชได้
-EINVAL: camera_id ไม่ถูกต้อง
คำจำกัดความที่บรรทัด 878 ของไฟล์ camera_common.h
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / camera_common.h