การอ้างอิงโครงสร้าง camera_module

การอ้างอิงโครงสร้าง 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