การอ้างอิงโครงสร้าง camera_info
#include < camera_common.h >
เขตข้อมูล | |
ภายใน | เผชิญ |
ภายใน | ปฐมนิเทศ |
uint32_t | อุปกรณ์_รุ่น |
const camera_metadata_t * | static_กล้อง_ลักษณะเฉพาะ |
ภายใน | ทรัพยากร_ต้นทุน |
ถ่าน ** | ข้อขัดแย้ง_อุปกรณ์ |
ขนาด_t | ข้อขัดแย้ง_อุปกรณ์_ความยาว |
คำอธิบายโดยละเอียด
คำจำกัดความที่บรรทัด 161 ของไฟล์ camera_common.h
เอกสารภาคสนาม
ถ่าน ** ที่ขัดแย้งกัน_อุปกรณ์ |
อาร์เรย์ของ ID อุปกรณ์กล้องที่แสดงเป็นสตริงที่สิ้นสุดด้วยค่า NULL บ่งชี้อุปกรณ์อื่นๆ ที่ไม่สามารถเปิดพร้อมกันได้ในขณะที่มีการใช้งานอุปกรณ์กล้องนี้
ฟิลด์นี้มีวัตถุประสงค์เพื่อใช้เพื่อระบุว่าอุปกรณ์กล้องนี้เป็นส่วนประกอบของอุปกรณ์กล้องอื่นๆ หลายๆ ตัว หรือมีการอ้างอิงฮาร์ดแวร์ที่ห้ามการใช้งานพร้อมกัน หากไม่มีการอ้างอิงใดๆ จะมีการคืนค่า NULL ในช่องนี้เพื่อระบุสิ่งนี้
บริการกล้องจะไม่เปิดอุปกรณ์ใดๆ ในรายการนี้พร้อมกันในขณะที่อุปกรณ์กล้องนี้เปิดอยู่
สตริงที่ชี้ไปในช่องนี้จะไม่ได้รับการล้างข้อมูลโดยบริการกล้อง และจะต้องคงอยู่ในขณะที่อุปกรณ์นี้เสียบปลั๊กอยู่
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า:
ไม่ถูกต้อง. สามารถสันนิษฐานได้ว่าเป็นโมฆะ อย่าอ่านช่องนี้
CAMERA_MODULE_API_VERSION_2_4 หรือสูงกว่า:
ถูกต้องเสมอ
คำจำกัดความที่บรรทัด 404 ของไฟล์ camera_common.h
size_t ที่ขัดแย้งกัน_อุปกรณ์_ความยาว |
ความยาวของอาร์เรย์ที่กำหนดในฟิลด์ขัดแย้งอุปกรณ์
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า:
ไม่ถูกต้อง. สามารถถือว่าเป็น 0 ได้ อย่าอ่านฟิลด์นี้
CAMERA_MODULE_API_VERSION_2_4 หรือสูงกว่า:
ถูกต้องเสมอ
คำจำกัดความที่บรรทัด 419 ของไฟล์ camera_common.h
uint32_t อุปกรณ์_รุ่น |
ค่าของ camera_device_t.common.version
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
ไม่ถูกต้อง. สามารถสันนิษฐานได้ว่าเป็น CAMERA_DEVICE_API_VERSION_1_0 อย่าอ่านช่องนี้
CAMERA_MODULE_API_VERSION_2_0 หรือสูงกว่า:
ถูกต้องเสมอ
คำจำกัดความที่บรรทัด 219 ของไฟล์ camera_common.h
เผชิญหน้า |
ทิศทางที่กล้องหันหน้าไป ดู system/core/include/system/camera.h สำหรับคำจำกัดความของกล้อง
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า:
ควรเป็น CAMERA_FACING_BACK หรือ CAMERA_FACING_FRONT
CAMERA_MODULE_API_VERSION_2_4 หรือสูงกว่า:
ควรเป็น CAMERA_FACING_BACK, CAMERA_FACING_FRONT หรือ CAMERA_FACING_EXTERNAL
คำจำกัดความที่บรรทัด 177 ของไฟล์ camera_common.h
ปฐมนิเทศ int |
การวางแนวของภาพจากกล้อง ค่าคือมุมที่ต้องหมุนภาพของกล้องตามเข็มนาฬิกา เพื่อให้แสดงอย่างถูกต้องบนจอแสดงผลในการวางแนวตามธรรมชาติ ควรเป็น 0, 90, 180 หรือ 270
ตัวอย่างเช่น สมมติว่าอุปกรณ์มีหน้าจอที่สูงตามธรรมชาติ เซ็นเซอร์กล้องหลังติดตั้งอยู่ในแนวนอน คุณกำลังดูที่หน้าจอ หากด้านบนของเซนเซอร์กล้องอยู่ตรงกับขอบด้านขวาของหน้าจอในการวางแนวตามธรรมชาติ ค่าควรเป็น 90 หากด้านบนของเซนเซอร์กล้องหน้าอยู่ในแนวเดียวกับด้านขวาของหน้าจอ ค่าควรเป็น 90 เป็น 270
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า:
ใช้ได้ในทุกเวอร์ชัน ของ camera_module
CAMERA_MODULE_API_VERSION_2_4 หรือสูงกว่า:
ใช้ได้หากหันหน้าไปทางกล้องเป็น CAMERA_FACING_BACK หรือ CAMERA_FACING_FRONT และจะใช้ไม่ได้หากหันหน้าไปทางกล้องเป็น CAMERA_FACING_EXTERNAL
คำจำกัดความที่บรรทัด 202 ของไฟล์ camera_common.h
intทรัพยากร_ต้นทุน |
"ต้นทุน" ทรัพยากรรวมของการใช้กล้องนี้ ซึ่งแสดงเป็นค่าจำนวนเต็มในช่วง [0, 100] โดยที่ 100 แสดงถึงการใช้งานทั้งหมดของทรัพยากรที่ใช้ร่วมกันซึ่งเป็นจุดคอขวดที่จำกัดของระบบย่อยของกล้อง นี่อาจเป็นการประมาณการคร่าวๆ และใช้เป็นคำแนะนำสำหรับบริการกล้องเพื่อพิจารณาว่าเมื่อใดที่จะไม่อนุญาตให้แอปพลิเคชันหลายตัวเปิดกล้องที่แตกต่างกันที่โฆษณาโดยบริการกล้องพร้อมกัน
บริการกล้องจะต้องสามารถเปิดและใช้อุปกรณ์กล้องรวมกันใดๆ ก็ตามที่เปิดเผยโดย HAL ได้พร้อมกัน โดยที่ผลรวมของต้นทุนทรัพยากรของกล้องเหล่านี้คือ <= 100 ในการพิจารณาต้นทุน อุปกรณ์กล้องแต่ละตัวจะต้องถือว่าได้รับการกำหนดค่าและใช้งาน ที่การตั้งค่าอัตราเฟรมและขนาดสตรีมที่สิ้นเปลืองทรัพยากรสูงสุดที่มีอยู่ในการตั้งค่าการกำหนดค่าที่เปิดเผยสำหรับอุปกรณ์นั้นผ่านข้อมูลเมตาของกล้อง
บริการกล้องอาจยังคงพยายามเปิดอุปกรณ์กล้องรวมกันพร้อม ๆ กันโดยมีค่าใช้จ่ายทรัพยากรทั้งหมด > 100 การดำเนินการนี้อาจสำเร็จหรือล้มเหลว หากสำเร็จ การรวมการกำหนดค่าที่ไม่ได้รับการสนับสนุนเนื่องจากข้อจำกัดด้านทรัพยากรจากการมีอุปกรณ์เปิดหลายเครื่องควรล้มเหลวในระหว่างการเรียกการกำหนดค่า หากต้นทุนทรัพยากรทั้งหมดคือ <= 100 การเปิดและกำหนดค่าไม่ควรล้มเหลวสำหรับการตั้งค่าการกำหนดค่าสตรีมหรือความสามารถอื่นๆ ของอุปกรณ์ที่ปกติแล้วจะประสบความสำเร็จสำหรับอุปกรณ์เมื่อเป็นอุปกรณ์กล้องแบบเปิดเพียงเครื่องเดียว
ฟิลด์นี้จะใช้เพื่อกำหนดว่าแอปพลิเคชันพื้นหลังได้รับอนุญาตให้ใช้อุปกรณ์กล้องนี้ในขณะที่แอปพลิเคชันอื่นใช้อุปกรณ์กล้องอื่นหรือไม่ หมายเหตุ: บริการกล้องไม่อนุญาตให้หลายแอปพลิเคชันเปิดอุปกรณ์กล้องเดียวกันพร้อมกัน
กรณีการใช้งานตัวอย่าง:
อดีต. 1: อุปกรณ์กล้อง 0 = อุปกรณ์กล้องกล้องด้านหลัง 1 = กล้องหน้า
- การใช้อุปกรณ์กล้องทั้งสองตัวทำให้อัตราเฟรมช้าลงมากเนื่องจากแบนด์วิดท์ ISP ที่จำกัด
การกำหนดค่า:
อุปกรณ์กล้อง 0 - รีซอร์สต้นทุน = 51 อุปกรณ์ที่ขัดแย้งกัน = null อุปกรณ์กล้อง 1 - รีซอร์สต้นทุน = 51 อุปกรณ์ที่ขัดแย้งกัน = null
ผลลัพธ์:
เนื่องจากผลรวมของต้นทุนทรัพยากรคือ > 100 หากแอปพลิเคชันที่มีลำดับความสำคัญสูงกว่ามีอุปกรณ์ตัวใดตัวหนึ่งเปิดอยู่ บริการกล้องจะไม่อนุญาตแอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่าให้เปิดอุปกรณ์ใดอุปกรณ์หนึ่ง หากแอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่ากำลังใช้อุปกรณ์ที่มีลำดับความสำคัญสูงกว่าพยายามเปิดในภายหลัง แอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่าจะถูกบังคับให้ยกเลิกการเชื่อมต่ออุปกรณ์
หากเลือกแอปพลิเคชันที่มีลำดับความสำคัญสูงสุด แอปพลิเคชันอาจยังคงพยายามเปิดอุปกรณ์ทั้งสอง (เนื่องจากอุปกรณ์เหล่านี้ไม่ได้ระบุว่าขัดแย้งกันในฟิลด์ Conflicting_devices) แต่การใช้งานอุปกรณ์เหล่านี้อาจล้มเหลวในการเปิดหรือกำหนดค่าการโทร
อดีต. 2: อุปกรณ์กล้อง 0 = กล้องด้านหลังซ้าย อุปกรณ์กล้อง 1 = กล้องด้านหลังขวา อุปกรณ์กล้อง 2 = กล้องสเตอริโอแบบรวมโดยใช้เซ็นเซอร์กล้องด้านหลังขวาและซ้ายที่ใช้โดยอุปกรณ์ 0 และ 1 อุปกรณ์กล้อง 3 = กล้องหน้า
- เนื่องจากข้อจำกัดด้านฮาร์ดแวร์ จึงอาจเปิดกล้องได้สูงสุดสองตัวพร้อมกัน กล้องสเตอริโอที่รวมกันไม่สามารถใช้พร้อมกันกับอุปกรณ์กล้องหลังตัวใดตัวหนึ่งจากสองตัว (อุปกรณ์ 0, 1) และโดยทั่วไปต้องใช้แบนด์วิธมากเกินไปในการใช้งานพร้อมกันกับกล้องหน้า (อุปกรณ์ 3)
การกำหนดค่า:
อุปกรณ์กล้อง 0 - resources_cost = 50ขัดแย้ง_อุปกรณ์ = { 2 } อุปกรณ์กล้อง 1 - resources_cost = 50 ขัดแย้ง_อุปกรณ์ = { 2 } อุปกรณ์กล้อง 2 - resources_cost = 100 ขัดแย้ง_อุปกรณ์ = { 0, 1 } อุปกรณ์กล้อง 3 - resources_cost = 50 ขัดแย้ง_อุปกรณ์ = null
ผลลัพธ์:
ตามช่อง Conflicting_devices บริการกล้องรับประกันว่าชุดอุปกรณ์ที่เปิดต่อไปนี้จะไม่ได้รับอนุญาต: { 1, 2 }, { 0, 2 }
ขึ้นอยู่กับฟิลด์ resources_cost หากแอปพลิเคชันเบื้องหน้าที่มีลำดับความสำคัญสูงใช้อุปกรณ์กล้อง 0 แอปพลิเคชันพื้นหลังจะได้รับอนุญาตให้เปิดอุปกรณ์กล้อง 1 หรือ 3 (แต่จะถูกบังคับให้ยกเลิกการเชื่อมต่ออีกครั้งหากแอปพลิเคชันเบื้องหน้าเปิดอุปกรณ์อื่น)
แอปพลิเคชันที่มีลำดับความสำคัญสูงสุดอาจยังคงพยายามเปิดอุปกรณ์ 0, 2 และ 3 พร้อมกัน แต่ HAL อาจล้มเหลวในการเปิดหรือกำหนดค่าการโทรสำหรับการรวมกันนี้
อดีต. 3: อุปกรณ์กล้อง 0 = กล้องด้านหลัง อุปกรณ์กล้อง 1 = กล้องหน้า อุปกรณ์กล้อง 2 = กล้องหน้าพลังงานต่ำที่ใช้เซ็นเซอร์เดียวกับอุปกรณ์ 1 แต่แสดงเฉพาะความละเอียดสตรีมภาพที่สามารถใช้ในโหมดพลังงานต่ำเท่านั้น
การใช้กล้องหน้าทั้งสอง (อุปกรณ์ 1, 2) พร้อมกันนั้นเป็นไปไม่ได้เนื่องจากมีการใช้เซ็นเซอร์ทางกายภาพร่วมกัน การใช้ด้านหลังและกล้องหน้า "กำลังสูง" (อุปกรณ์ 1) อาจเป็นไปไม่ได้สำหรับการกำหนดค่าสตรีมบางอย่างเนื่องจากข้อจำกัดของฮาร์ดแวร์ แต่ตัวเลือกกล้องหน้า "กำลังต่ำ" อาจใช้ได้เสมอเนื่องจากมีฮาร์ดแวร์เฉพาะพิเศษ
การกำหนดค่า:
อุปกรณ์กล้อง 0 - resources_cost = 100 conflicing_devices = null อุปกรณ์กล้อง 1 - resources_cost = 100 conflicing_devices = { 2 } อุปกรณ์กล้อง 2 - resources_cost = 0 conflicing_devices = { 1 } ผลลัพธ์:
จากช่อง Conflicting_devices บริการกล้องรับประกันว่าชุดอุปกรณ์ที่เปิดอยู่ต่อไปนี้จะไม่ได้รับอนุญาต: { 1, 2 }
ขึ้นอยู่กับฟิลด์ resources_cost เฉพาะแอปพลิเคชันที่มีลำดับความสำคัญสูงสุดเท่านั้นที่สามารถพยายามเปิดทั้งอุปกรณ์ 0 และ 1 ในเวลาเดียวกัน หากแอปพลิเคชันที่มีลำดับความสำคัญสูงกว่าไม่ได้ใช้อุปกรณ์ 1 หรือ 2 แอปพลิเคชันพื้นหลังที่มีลำดับความสำคัญต่ำอาจเปิดอุปกรณ์ 2 (แต่จะถูกบังคับให้ยกเลิกการเชื่อมต่อหากแอปพลิเคชันที่มีลำดับความสำคัญสูงกว่าเปิดอุปกรณ์ 1 หรือ 2 ในภายหลัง)
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า:
ไม่ถูกต้อง. ถือว่าได้ 100 ห้ามอ่านช่องนี้
CAMERA_MODULE_API_VERSION_2_4 หรือสูงกว่า:
ถูกต้องเสมอ
คำจำกัดความที่บรรทัด 376 ของไฟล์ camera_common.h
const camera_metadata_t * static_camera_Characteristics |
คุณลักษณะคงที่ของกล้อง ซึ่งรวมถึงข้อมูลเมตาของกล้องคงที่ทั้งหมดที่ระบุไว้ในระบบ/สื่อ/กล้อง/docs/docs.html นี่ควรเป็นบัฟเฟอร์ข้อมูลเมตาที่เรียงลำดับแล้ว และผู้เรียกไม่สามารถแก้ไขหรือปล่อยว่างได้ ตัวชี้ควรยังคงใช้ได้ตลอดอายุการใช้งานของโมดูลกล้อง และค่าในโมดูลอาจไม่เปลี่ยนแปลงหลังจากที่ get_camera_info() ส่งคืนแล้ว
ข้อมูลเวอร์ชัน (ขึ้นอยู่กับ camera_module_t.common.module_api_version):
CAMERA_MODULE_API_VERSION_1_0:
ไม่ถูกต้อง. ไม่มีคุณสมบัติพิเศษ อย่าอ่านช่องนี้
CAMERA_MODULE_API_VERSION_2_0 หรือสูงกว่า:
ใช้ได้หาก device_version >= CAMERA_DEVICE_API_VERSION_2_0 ห้ามอ่านเป็นอย่างอื่น
คำจำกัดความที่บรรทัด 241 ของไฟล์ camera_common.h
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / camera_common.h