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

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