การอ้างอิงโครงสร้าง camera3_stream
#include < camera3.h >
เขตข้อมูล | |
ภายใน | stream_type |
uint32_t | ความกว้าง |
uint32_t | ความสูง |
ภายใน | รูปแบบ |
uint32_t | การใช้งาน |
uint32_t | max_buffers |
เป็นโมฆะ * | ส่วนตัว |
android_dataspace_t | data_space |
ภายใน | การหมุน |
เป็นโมฆะ * | สงวนไว้ [7] |
คำอธิบายโดยละเอียด
กล้อง3_stream_t:
หมายเลขอ้างอิงสำหรับอินพุตหรือเอาต์พุตของกล้องตัวเดียว สตรีมถูกกำหนดโดยเฟรมเวิร์กตามความละเอียดและรูปแบบของบัฟเฟอร์ และเพิ่มเติมโดย HAL พร้อมแฟล็กการใช้งาน gralloc และจำนวนบัฟเฟอร์สูงสุดในเที่ยวบิน
โครงสร้างสตรีมเป็นของเฟรมเวิร์ก แต่ตัวชี้ไปยัง camera3_stream ที่ส่งผ่านไปยัง HAL โดย configuration_streams() จะใช้ได้จนกระทั่งสิ้นสุดการเรียก configuration_streams() ครั้งแรกที่ตามมาซึ่ง ไม่ รวม camera3_stream นั้นเป็นอาร์กิวเมนต์ หรือจนกว่าจะสิ้นสุด การโทรปิด ()
สมาชิกที่ควบคุมด้วยเฟรมเวิร์ก camera3_stream ทั้งหมดจะไม่เปลี่ยนรูปเมื่อส่งผ่าน camera3_stream ไปยัง configuration_streams() HAL อาจเปลี่ยนเฉพาะพารามิเตอร์ที่ควบคุมโดย HAL ระหว่างการเรียก configuration_streams() ยกเว้นเนื้อหาของตัวชี้ส่วนตัว
หากการเรียก configuration_streams() ส่งกลับข้อผิดพลาดที่ไม่ร้ายแรง สตรีมที่ใช้งานอยู่ทั้งหมดจะยังคงใช้ได้ราวกับว่าไม่มีการเรียก configuration_streams()
อุปกรณ์ HAL ของกล้องไม่สามารถมองเห็นจุดสิ้นสุดของสตรีมได้ ใน DEVICE_API_VERSION_3_1 สิ่งนี้ได้รับการเปลี่ยนแปลงเพื่อแชร์แฟล็กการใช้งานของผู้บริโภคบนสตรีมที่กล้องเป็นผู้ผลิต (ประเภทสตรีม OUTPUT และ BIDIRECTIONAL) ดูฟิลด์การใช้งานด้านล่าง
เอกสารภาคสนาม
android_dataspace_t data_space |
ฟิลด์ที่อธิบายเนื้อหาของบัฟเฟอร์ ขนาดรูปแบบและบัฟเฟอร์จะกำหนดเค้าโครงหน่วยความจำและโครงสร้างของบัฟเฟอร์สตรีม ในขณะที่ dataSpace จะกำหนดความหมายของข้อมูลภายในบัฟเฟอร์
สำหรับรูปแบบส่วนใหญ่ dataSpace จะกำหนดปริภูมิสีของข้อมูลรูปภาพ นอกจากนี้ สำหรับบางรูปแบบ dataSpace จะระบุว่ามีการร้องขอข้อมูลตามรูปภาพหรือเชิงลึกหรือไม่ โปรดดู system/core/include/system/graphics.h สำหรับรายละเอียดของรูปแบบและค่า dataSpace ที่ถูกต้องสำหรับแต่ละรูปแบบ
ข้อมูลเวอร์ชัน:
< CAMERA_DEVICE_API_VERSION_3_3:
ไม่ได้กำหนดไว้และไม่ควรเข้าถึง dataSpace ควรถือเป็น HAL_DATASPACE_UNKNOWN และปริภูมิสีที่เหมาะสม ฯลฯ ควรพิจารณาจากแฟล็กการใช้งานและรูปแบบ
= CAMERA_DEVICE_API_VERSION_3_3:
ตั้งค่าโดยบริการกล้องเสมอ HAL ต้องใช้ dataSpace นี้เพื่อกำหนดค่าสตรีมให้เป็นพื้นที่สีที่ถูกต้อง หรือเพื่อเลือกระหว่างเอาต์พุตสีและความลึก หากรองรับ ค่าดาต้าสเปซเป็นคำจำกัดความดั้งเดิมใน Graphics.h
>= CAMERA_DEVICE_API_VERSION_3_4:
ตั้งค่าโดยบริการกล้องเสมอ HAL ต้องใช้ dataSpace นี้เพื่อกำหนดค่าสตรีมให้เป็นพื้นที่สีที่ถูกต้อง หรือเพื่อเลือกระหว่างเอาต์พุตสีและความลึก หากรองรับ ค่าของดาต้าสเปซถูกตั้งค่าโดยใช้คำจำกัดความของดาต้าสเปซ V0 ใน Graphics.h
รูปแบบ int |
รูปแบบพิกเซลสำหรับบัฟเฟอร์ในสตรีมนี้ รูปแบบเป็นค่าจากรายการ HAL_PIXEL_FORMAT_* ใน system/core/include/system/graphics.h หรือจากส่วนหัวเฉพาะอุปกรณ์
หากใช้ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED โมดูลแพลตฟอร์ม gralloc จะเลือกรูปแบบตามแฟล็กการใช้งานที่ได้รับจากอุปกรณ์กล้องและจุดสิ้นสุดอื่นๆ ของสตรีม
<= CAMERA_DEVICE_API_VERSION_3_1:
อุปกรณ์ HAL ของกล้องจะต้องตรวจสอบบัฟเฟอร์ที่มอบให้ในการเรียก register_stream_buffers() ครั้งต่อไปเพื่อรับรายละเอียดรูปแบบเฉพาะการใช้งาน หากจำเป็น
>= CAMERA_DEVICE_API_VERSION_3_2:
register_stream_buffers() จะไม่ถูกเรียกโดยเฟรมเวิร์ก ดังนั้น HAL ควรกำหนดค่า ISP และไปป์ไลน์เซ็นเซอร์ตามขนาด แฟล็กการใช้งาน และรูปแบบสำหรับสตรีมที่กำหนดค่าเพียงอย่างเดียว
uint32_t max_buffers |
เป็นโมฆะ* เอกชน |
การหมุนภายใน |
การหมุนเอาต์พุตที่ต้องการของสตรีม ซึ่งเป็นหนึ่งในค่าของ camera3_stream_rotation_t สิ่งนี้จะต้องได้รับการตรวจสอบโดย HAL พร้อมด้วยความกว้างและความสูงของสตรีม ตัวอย่างเช่น หากการหมุนเป็น 90 องศา และความกว้างและความสูงของสตรีมคือ 720 และ 1280 ตามลำดับ บริการกล้องจะจัดหาบัฟเฟอร์ขนาด 720x1280 และ HAL ควรจับภาพขนาด 1280x720 และหมุนรูปภาพ 90 องศาทวนเข็มนาฬิกา ฟิลด์การหมุนจะไม่ดำเนินการเมื่อมีการป้อนประเภทสตรีม กล้อง HAL ต้องละเว้นฟิลด์การหมุนสำหรับสตรีมอินพุต
<= CAMERA_DEVICE_API_VERSION_3_2:
ไม่ได้กำหนดไว้และจะต้องไม่สามารถเข้าถึงได้ HAL ต้องไม่ใช้การหมุนใดๆ กับภาพที่ส่งออก
>= CAMERA_DEVICE_API_VERSION_3_3:
ตั้งค่าโดยบริการกล้องเสมอ HAL ต้องตรวจสอบฟิลด์นี้ระหว่างการกำหนดค่าสตรีมและส่งกลับ -EINVAL หาก HAL ไม่สามารถดำเนินการหมุนเวียนดังกล่าวได้ HAL ต้องรองรับ CAMERA3_STREAM_ROTATION_0 เสมอ ดังนั้นการเรียก configuration_streams() จะต้องไม่ล้มเหลวสำหรับการหมุนที่ไม่รองรับ หากฟิลด์การหมุนของสตรีมทั้งหมดคือ CAMERA3_STREAM_ROTATION_0
int stream_type |
การใช้งาน uint32_t |
การใช้ gralloc จะตั้งค่าสถานะสำหรับสตรีมนี้ ตามที่ HAL ต้องการ แฟล็กการใช้งานถูกกำหนดไว้ใน gralloc.h (GRALLOC_USAGE_*) หรือในส่วนหัวเฉพาะอุปกรณ์
สำหรับสตรีมเอาต์พุต สิ่งเหล่านี้คือแฟล็กการใช้งานของผู้ผลิตของ HAL สำหรับสตรีมอินพุต สิ่งเหล่านี้คือแฟล็กการใช้งานของผู้บริโภคของ HAL แฟล็กการใช้งานจากผู้ผลิตและคอนซูเมอร์จะถูกรวมเข้าด้วยกัน จากนั้นส่งต่อไปยังโมดูลแพลตฟอร์ม gralloc HAL สำหรับการจัดสรรบัฟเฟอร์ gralloc สำหรับแต่ละสตรีม
ข้อมูลเวอร์ชัน:
== CAMERA_DEVICE_API_VERSION_3_0:
ไม่มีการรับประกันค่าเริ่มต้นเมื่อส่งผ่าน configuration_streams() HAL ไม่สามารถใช้ฟิลด์นี้เป็นอินพุต และต้องเขียนทับฟิลด์นี้พร้อมกับแฟล็กการใช้งาน
>= CAMERA_DEVICE_API_VERSION_3_1:
สำหรับ stream_type OUTPUT และ BIDIRECTIONAL เมื่อส่งผ่าน configuration_streams() ค่าเริ่มต้นของค่านี้คือแฟล็กการใช้งานของผู้ใช้บริการ HAL อาจใช้แฟล็กผู้บริโภคเหล่านี้เพื่อตัดสินใจกำหนดค่าสตรีม สำหรับ stream_type INPUT เมื่อส่งผ่าน configuration_streams() ค่าเริ่มต้นจะเป็น 0 สำหรับสตรีมทั้งหมดที่ส่งผ่าน configuration_streams() HAL จะต้องเขียนบนฟิลด์นี้พร้อมกับแฟล็กการใช้งาน
ความกว้าง uint32_t |
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / กล้อง 3.h