ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง camera_info

ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง camera_info

#include < camera_common.h >

ฟิลด์ข้อมูล

int  facing
 
int  orientation
 
uint32_t  device_version
 
const camera_metadata_t static_camera_characteristics
 
int  resource_cost
 
char **  conflicting_devices
 
size_t  conflicting_devices_length
 

คำอธิบายโดยละเอียด

คําจํากัดความที่บรรทัด 161 ของไฟล์ camera_common.h

เอกสารประกอบในสนาม

char** conflicting_devices

อาร์เรย์รหัสอุปกรณ์กล้องที่แสดงเป็นสตริงที่สิ้นสุดด้วย NULL ซึ่งระบุอุปกรณ์อื่นๆ ที่เปิดพร้อมกันไม่ได้ขณะที่อุปกรณ์กล้องนี้ใช้งานอยู่

ช่องนี้มีไว้เพื่อระบุว่าอุปกรณ์กล้องนี้เป็นอุปกรณ์กล้องแบบผสมจากอุปกรณ์กล้องอื่นๆ หลายเครื่อง หรือมีการใช้งานฮาร์ดแวร์ที่ห้ามไม่ให้ใช้พร้อมกัน หากไม่มีรายการที่เกี่ยวข้อง ระบบอาจแสดงค่า NULL ในช่องนี้เพื่อบ่งบอกถึงสถานะนี้

บริการกล้องจะไม่เปิดอุปกรณ์ใดๆ ในรายการนี้พร้อมกันขณะที่อุปกรณ์กล้องนี้เปิดอยู่

บริการกล้องจะไม่ล้างสตริงที่ชี้ไปยังช่องนี้ และสตริงดังกล่าวต้องยังคงอยู่ขณะที่เสียบปลั๊กอุปกรณ์นี้

ข้อมูลเวอร์ชัน (อิงตาม camera_module_t.common.module_api_version)

CAMERA_MODULE_API_VERSION_2_3 หรือต่ำกว่า

ไม่ถูกต้อง ระบบจะถือว่ามีค่า NULL อย่าอ่านช่องนี้

CAMERA_MODULE_API_VERSION_2_4 ขึ้นไป

ใช้ได้เสมอ

คําจํากัดความที่บรรทัด 404 ของไฟล์ camera_common.h .

size_t conflicting_devices_length

ความยาวของอาร์เรย์ที่ระบุในช่อง conflicting_devices

ข้อมูลเวอร์ชัน (อิงตาม 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 device_version

ค่าของ 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

int facing

ทิศทางที่กล้องหันไป ดูคำจำกัดความของด้านที่กล้องหันไปได้ที่ 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 หากด้านบนของเซ็นเซอร์กล้องหน้าอยู่ในแนวเดียวกับด้านขวาของหน้าจอ ค่าควรเป็น 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 resource_cost

"ต้นทุน" ทรัพยากรทั้งหมดของการใช้กล้องนี้ ซึ่งแสดงเป็นค่าจำนวนเต็มในช่วง [0, 100] โดยที่ 100 แสดงถึงการใช้งานทรัพยากรที่แชร์ทั้งหมดซึ่งเป็นคอขวดของระบบย่อยของกล้อง ซึ่งอาจเป็นค่าประมาณคร่าวๆ และใช้เป็นคำแนะนำสำหรับบริการกล้องเพื่อพิจารณาว่าเมื่อใดควรไม่อนุญาตให้แอปพลิเคชันหลายรายการเปิดกล้องที่แตกต่างกันซึ่งบริการกล้องโฆษณาไว้พร้อมกัน

บริการกล้องต้องเปิดและใช้อุปกรณ์กล้องที่ HAL แสดงร่วมกันได้พร้อมกัน โดยผลรวมของต้นทุนทรัพยากรของกล้องเหล่านี้ต้องไม่เกิน 100 ในการระบุต้นทุน ระบบจะถือว่าอุปกรณ์กล้องแต่ละเครื่องได้รับการกําหนดค่าและทํางานด้วยอัตราเฟรมและการตั้งค่าขนาดสตรีมที่กินทรัพยากรมากที่สุด ซึ่งมีอยู่ในการตั้งค่าการกําหนดค่าที่แสดงสําหรับอุปกรณ์นั้นผ่านข้อมูลเมตาของกล้อง

บริการกล้องอาจยังคงพยายามเปิดอุปกรณ์กล้องหลายเครื่องพร้อมกันซึ่งมีต้นทุนทรัพยากรรวมมากกว่า 100 ซึ่งอาจสำเร็จหรือไม่สำเร็จ หากดำเนินการนี้สำเร็จ การรวมการกำหนดค่าที่ไม่รองรับเนื่องจากข้อจำกัดด้านทรัพยากรจากการมีอุปกรณ์ที่เปิดอยู่หลายเครื่องควรไม่สำเร็จระหว่างการเรียกใช้การกําหนดค่า หากต้นทุนทรัพยากรทั้งหมดน้อยกว่าหรือเท่ากับ 100 การเปิดและกำหนดค่าไม่ควรล้มเหลวสำหรับการตั้งค่าการกำหนดค่าสตรีมหรือความสามารถอื่นๆ ของอุปกรณ์ที่ปกติแล้วจะสำเร็จสำหรับอุปกรณ์เมื่อเป็นอุปกรณ์กล้องที่เปิดอยู่เพียงเครื่องเดียว

ระบบจะใช้ช่องนี้เพื่อระบุว่าแอปพลิเคชันที่ทำงานอยู่เบื้องหลังได้รับอนุญาตให้ใช้อุปกรณ์กล้องนี้ขณะที่แอปพลิเคชันอื่นๆ ใช้อุปกรณ์กล้องอื่นอยู่หรือไม่ หมายเหตุ: บริการกล้องจะไม่อนุญาตให้แอปพลิเคชันหลายรายการเปิดอุปกรณ์กล้องเครื่องเดียวกันพร้อมกัน

ตัวอย่างกรณีการใช้งาน

เช่น 1: อุปกรณ์กล้อง 0 = กล้องหลัง อุปกรณ์กล้อง 1 = กล้องหน้า

  • การใช้อุปกรณ์กล้องทั้ง 2 เครื่องจะทำให้เฟรมเรตช้าลงอย่างมากเนื่องจากแบนด์วิดท์ ISP มีจำกัด

การกำหนดค่า

อุปกรณ์กล้อง 0 - resource_cost = 51 conflicting_devices = null อุปกรณ์กล้อง 1 - resource_cost = 51 conflicting_devices = null

ผลลัพธ์:

เนื่องจากผลรวมของต้นทุนทรัพยากรมากกว่า 100 หากแอปพลิเคชันที่มีลำดับความสำคัญสูงกว่าเปิดอุปกรณ์อยู่ บริการกล้องจะไม่อนุญาตให้แอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่าเปิดอุปกรณ์ดังกล่าว หากแอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่าใช้อุปกรณ์ที่แอปพลิเคชันที่มีลำดับความสำคัญสูงกว่าพยายามเปิดในภายหลัง ระบบจะบังคับให้แอปพลิเคชันที่มีลำดับความสำคัญต่ำกว่ายกเลิกการเชื่อมต่ออุปกรณ์

หากแอปพลิเคชันที่มีลำดับความสำคัญสูงสุดเลือก แอปพลิเคชันดังกล่าวอาจยังคงพยายามเปิดทั้ง 2 อุปกรณ์ (เนื่องจากอุปกรณ์เหล่านี้ไม่ได้แสดงว่าขัดแย้งกันในช่อง conflicting_devices) แต่การใช้อุปกรณ์เหล่านี้อาจไม่สำเร็จในการเปิดหรือกำหนดค่าการโทร

เช่น 2: อุปกรณ์กล้อง 0 = กล้องหลังซ้าย อุปกรณ์กล้อง 1 = กล้องหลังขวา อุปกรณ์กล้อง 2 = กล้องสเตอริโอแบบรวมที่ใช้ทั้งเซ็นเซอร์กล้องหลังขวาและซ้ายซึ่งอุปกรณ์ 0 และ 1 ใช้ อุปกรณ์กล้อง 3 = กล้องหน้า

  • คุณจะเปิดกล้องได้สูงสุด 2 ตัวพร้อมกันเนื่องจากข้อจำกัดของฮาร์ดแวร์ กล้องสเตอริโอแบบรวมจะใช้ร่วมกับอุปกรณ์กล้องหลัง 2 ตัว (อุปกรณ์ 0, 1) ไม่ได้ และโดยทั่วไปต้องใช้แบนด์วิดท์มากเกินไปหากต้องการใช้ร่วมกับกล้องหน้า (อุปกรณ์ 3)

การกำหนดค่า

อุปกรณ์กล้อง 0 - resource_cost = 50 conflicting_devices = { 2 } อุปกรณ์กล้อง 1 - resource_cost = 50 conflicting_devices = { 2 } อุปกรณ์กล้อง 2 - resource_cost = 100 conflicting_devices = { 0, 1 } อุปกรณ์กล้อง 3 - resource_cost = 50 conflicting_devices = null

ผลลัพธ์:

จากฟิลด์ conflicting_devices บริการกล้องรับประกันว่าจะไม่อนุญาตให้อุปกรณ์ชุดต่อไปนี้เปิดอยู่ { 1, 2 }, { 0, 2 }

จากฟิลด์ resource_cost หากแอปพลิเคชันเบื้องหน้าที่มีความสำคัญสูงกำลังใช้อุปกรณ์กล้อง 0 แอปพลิเคชันเบื้องหลังจะได้รับอนุญาตให้เปิดอุปกรณ์กล้อง 1 หรือ 3 (แต่จะถูกบังคับให้ยกเลิกการเชื่อมต่ออีกครั้งหากแอปพลิเคชันเบื้องหน้าเปิดอุปกรณ์อื่น)

แอปพลิเคชันที่มีลำดับความสำคัญสูงสุดอาจยังคงพยายามเปิดอุปกรณ์ 0, 2 และ 3 พร้อมกัน แต่ HAL อาจเปิดหรือกำหนดค่าการโทรสำหรับชุดค่าผสมนี้ไม่สำเร็จ

เช่น 3: อุปกรณ์กล้อง 0 = กล้องหลัง อุปกรณ์กล้อง 1 = กล้องหน้า อุปกรณ์กล้อง 2 = กล้องหน้าแบบพลังงานต่ำที่ใช้เซ็นเซอร์เดียวกับอุปกรณ์ 1 แต่แสดงเฉพาะความละเอียดสตรีมรูปภาพที่ใช้ในโหมดพลังงานต่ำได้

  • คุณใช้กล้องหน้าทั้ง 2 ตัว (อุปกรณ์ 1, 2) พร้อมกันไม่ได้เนื่องจากเซ็นเซอร์ที่จับภาพจริงใช้ร่วมกัน การใช้กล้องหลังและกล้องหน้า "กำลังสูง" (อุปกรณ์ 1) อาจใช้ไม่ได้กับการกำหนดค่าสตรีมบางรายการเนื่องจากข้อจำกัดของฮาร์ดแวร์ แต่คุณอาจใช้ตัวเลือกกล้องหน้า "กำลังต่ำ" ได้เสมอเนื่องจากมีฮาร์ดแวร์เฉพาะ

    การกำหนดค่า

    อุปกรณ์กล้อง 0 - resource_cost = 100 conflicting_devices = null อุปกรณ์กล้อง 1 - resource_cost = 100 conflicting_devices = { 2 } อุปกรณ์กล้อง 2 - resource_cost = 0 conflicting_devices = { 1 } ผลลัพธ์:

    บริการกล้องรับประกันว่าจะไม่อนุญาตให้อุปกรณ์ชุดต่อไปนี้เปิดอยู่ { 1, 2 } โดยอิงตามฟิลด์ conflicting_devices

    จากฟิลด์ resource_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

ลักษณะคงที่ของกล้อง ซึ่งรวมถึงข้อมูลเมตาแบบคงที่ทั้งหมดของกล้องที่ระบุไว้ใน system/media/camera/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 .


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้