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

ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง 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 ทิศทาง) โปรดดูช่องการใช้งานด้านล่าง

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

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

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

คําจํากัดความที่บรรทัด 1648 ของไฟล์ camera3.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 และไปป์ไลน์เซ็นเซอร์ตามขนาด แฟล็กการใช้งาน และรูปแบบสำหรับสตรีมที่กําหนดค่าไว้เท่านั้น

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

uint32_t height

ความสูงเป็นพิกเซลของบัฟเฟอร์ในสตรีมนี้

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

uint32_t max_buffers

จำนวนบัฟเฟอร์สูงสุดที่อุปกรณ์ HAL อาจต้องนำออกจากคิวพร้อมกัน อุปกรณ์ HAL อาจมีบัฟเฟอร์ที่ส่งจากสตรีมนี้ไม่เกินค่านี้

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

void* priv

แฮนเดิลสำหรับข้อมูลส่วนตัวของ HAL สําหรับสตรีม จะไม่ได้รับการตรวจสอบโดยโค้ดเฟรมเวิร์ก

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

void* reserved[7]

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

การหมุนเวียน 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

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

int stream_type

ประเภทสตรีม ซึ่งเป็นค่า camera3_stream_type_t ค่าใดค่าหนึ่ง

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

การใช้งาน 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 การใช้งาน

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

uint32_t width

ความกว้างเป็นพิกเซลของบัฟเฟอร์ในสตรีมนี้

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


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