ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง camera3_stream
#include <
camera3.h
>
ฟิลด์ข้อมูล |
|
int | stream_type |
uint32_t | width |
uint32_t | height |
int | format |
uint32_t | usage |
uint32_t | max_buffers |
void * | priv |
android_dataspace_t | data_space |
int | rotation |
void * | reserved [7] |
คำอธิบายโดยละเอียด
camera3_stream_t:
แฮนเดิลสตรีมอินพุตหรือเอาต์พุตของกล้องเดียว เฟรมเวิร์กจะกำหนดสตรีมตามความละเอียดและรูปแบบบัฟเฟอร์ และ HAL จะกำหนดเพิ่มเติมด้วย Flag การใช้งาน gralloc และจำนวนบัฟเฟอร์ที่ส่งในเที่ยวบินสูงสุด
เฟรมเวิร์กเป็นเจ้าของโครงสร้างสตรีม แต่พอยน์เตอร์ไปยัง camera3_stream ที่ส่งไปยัง HAL โดย configure_streams() จะใช้งานได้จนกว่าจะสิ้นสุดการเรียกใช้ configure_streams() ครั้งแรกถัดไปซึ่ง ไม่ได้รวม camera3_stream เป็นอาร์กิวเมนต์ หรือจนกว่าจะสิ้นสุดการเรียกใช้ close()
สมาชิกทั้งหมดที่ควบคุมโดยเฟรมเวิร์ก camera3_stream จะเปลี่ยนแปลงไม่ได้เมื่อมีการส่ง camera3_stream ไปยัง configure_streams() HAL จะเปลี่ยนได้เฉพาะพารามิเตอร์ที่ HAL ควบคุมระหว่างการเรียกใช้ configure_streams() เท่านั้น ยกเว้นเนื้อหาของพอยน์เตอร์ส่วนตัว
หากการเรียก configure_streams() แสดงผลข้อผิดพลาดที่ไม่ร้ายแรง สตรีมทั้งหมดที่ใช้งานอยู่จะยังคงใช้งานได้อยู่ราวกับว่าไม่มีการเรียกใช้ configure_streams()
อุปกรณ์ HAL ของกล้องมองไม่เห็นปลายทางของสตรีม ใน DEVICE_API_VERSION_3_1 มีการเปลี่ยนแปลงเพื่อแชร์ Flag การใช้งานของผู้บริโภคในสตรีมที่มีกล้องเป็นผู้ผลิต (ประเภทสตรีมเอาต์พุตและสตรีมแบบ 2 ทิศทาง) โปรดดูช่องการใช้งานด้านล่าง
เอกสารประกอบในสนาม
android_dataspace_t data_space |
ฟิลด์ที่อธิบายเนื้อหาของบัฟเฟอร์ มิติข้อมูลรูปแบบและบัฟเฟอร์จะกำหนดเลย์เอาต์หน่วยความจำและโครงสร้างของบัฟเฟอร์สตรีม ส่วน dataSpace จะกำหนดความหมายของข้อมูลภายในบัฟเฟอร์
สำหรับรูปแบบส่วนใหญ่ dataSpace จะกำหนดพื้นที่สีของข้อมูลรูปภาพ นอกจากนี้ สำหรับบางรูปแบบ dataSpace จะระบุว่ามีการขอข้อมูลตามรูปภาพหรือข้อมูลตามระดับความลึก ดูรายละเอียดรูปแบบและค่า dataSpace ที่ถูกต้องสำหรับแต่ละรูปแบบได้ที่ system/core/include/system/graphics.h
ข้อมูลเวอร์ชัน
< CAMERA_DEVICE_API_VERSION_3_3:
ไม่ได้กําหนดไว้และไม่ควรเข้าถึง ควรถือว่า dataSpace เป็น HAL_DATASPACE_UNKNOWN และควรพิจารณาพื้นที่สีที่เหมาะสม ฯลฯ จาก Flag การใช้งานและรูปแบบ
= 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 ของแพลตฟอร์มจะเลือกรูปแบบตาม Flag การใช้งานที่อุปกรณ์กล้องระบุและปลายทางอื่นๆ ของสตรีม
<= CAMERA_DEVICE_API_VERSION_3_1:
อุปกรณ์ HAL ของกล้องต้องตรวจสอบบัฟเฟอร์ที่ส่งให้ในการเรียกใช้ register_stream_buffers() ถัดไปเพื่อรับรายละเอียดรูปแบบเฉพาะการใช้งาน หากจำเป็น
>= CAMERA_DEVICE_API_VERSION_3_2:
เฟรมเวิร์กจะไม่เรียกใช้ register_stream_buffers() ดังนั้น HAL ควรกำหนดค่า ISP และไปป์ไลน์เซ็นเซอร์ตามขนาด แฟล็กการใช้งาน และรูปแบบสำหรับสตรีมที่กําหนดค่าไว้เท่านั้น
uint32_t height |
uint32_t max_buffers |
void* priv |
การหมุนเวียน int |
การหมุนเอาต์พุตที่จำเป็นของสตรีม ซึ่งเป็นค่า 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 เสมอ ดังนั้นการเรียกใช้ configure_streams() ต้องไม่ล้มเหลวเนื่องจากการหมุนที่ไม่รองรับหากช่องการหมุนของสตรีมทั้งหมดคือ CAMERA3_STREAM_ROTATION_0
int stream_type |
การใช้งาน uint32_t |
Flag การใช้งาน gralloc สำหรับสตรีมนี้ตามต้องการของ HAL มีการกําหนด Flag การใช้งานใน gralloc.h (GRALLOC_USAGE_*) หรือในส่วนหัวเฉพาะอุปกรณ์
สําหรับสตรีมเอาต์พุต สิ่งเหล่านี้คือ Flag การใช้งานของผู้ผลิต HAL สําหรับสตรีมอินพุต รายการเหล่านี้คือ Flag การใช้งานสำหรับผู้บริโภคของ HAL ระบบจะรวม Flag การใช้งานจากผู้ผลิตและผู้บริโภคเข้าด้วยกัน แล้วส่งไปยังโมดูล gralloc HAL ของแพลตฟอร์มเพื่อจัดสรรบัฟเฟอร์ gralloc สําหรับแต่ละสตรีม
ข้อมูลเวอร์ชัน
== CAMERA_DEVICE_API_VERSION_3_0:
ไม่มีการรับประกันค่าเริ่มต้นเมื่อส่งผ่าน configure_streams() HAL อาจไม่ใช้ฟิลด์นี้เป็นอินพุต และต้องเขียนทับฟิลด์นี้ด้วย Flag การใช้งาน
>= CAMERA_DEVICE_API_VERSION_3_1:
สำหรับ stream_type OUTPUT และ BIDIRECTIONAL เมื่อส่งผ่านผ่าน configure_streams() ค่าเริ่มต้นของค่านี้คือ Flag การใช้งานของผู้บริโภค HAL อาจใช้ Flag ของผู้บริโภคเหล่านี้เพื่อตัดสินใจเกี่ยวกับการกำหนดค่าสตรีม สำหรับ stream_type INPUT เมื่อส่งผ่าน configure_streams() ค่าเริ่มต้นของค่านี้คือ 0 สำหรับสตรีมทั้งหมดที่ส่งผ่าน configure_streams() นั้น HAL ต้องเขียนทับฟิลด์นี้ด้วย Flag การใช้งาน
uint32_t width |
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
- hardware/libhardware/include/hardware/ camera3.h