การอ้างอิงโครงสร้าง camera2_device_ops
#include < camera2.h >
เขตข้อมูล | |
อินท์(* | set_request_queue_src_ops ) (const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
อินท์(* | notify_request_queue_not_empty ) (สร้างโครงสร้าง กล้อง 2_ อุปกรณ์ *) |
อินท์(* | set_frame_queue_dst_ops ) (const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
อินท์(* | get_in_progress_count ) (สร้างโครงสร้าง กล้อง 2_device *) |
อินท์(* | flush_captures_in_progress ) (สร้างโครงสร้าง กล้อง 2_ อุปกรณ์ *) |
อินท์(* | build_default_request ) (const struct camera2_device *, int request_template, camera_metadata_t ** คำขอ) |
อินท์(* | จัดสรร_stream )(const struct camera2_device *, ความกว้าง uint32_t, ความสูง uint32_t, รูปแบบ int, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *การใช้งาน, uint32_t *max_buffers) |
อินท์(* | register_stream_buffers ) (const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t * บัฟเฟอร์) |
อินท์(* | release_stream ) (const struct camera2_device *, uint32_t stream_id) |
อินท์(* | จัดสรร_reprocess_stream ) (const struct camera2_device *, ความกว้าง uint32_t, ความสูง uint32_t, รูปแบบ uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
อินท์(* | จัดสรร_reprocess_stream_from_stream ) (const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id) |
อินท์(* | release_reprocess_stream ) (สร้างโครงสร้าง กล้อง 2_device *, uint32_t stream_id) |
อินท์(* | trigger_action ) (const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
อินท์(* | set_notify_callback ) (const struct camera2_device *, camera2_notify_callback notify_cb, ผู้ใช้ * เป็นโมฆะ) |
อินท์(* | get_metadata_vendor_tag_ops ) (const struct camera2_device *, vendor_tag_query_ops_t ** ops) |
อินท์(* | ดัมพ์ )(const struct camera2_device *, int fd) |
อินท์(* | get_instance_metadata ) (const struct camera2_device *, camera_metadata **instance_metadata) |
คำอธิบายโดยละเอียด
เอกสารภาคสนาม
int (* จัดสรร_reprocess_stream) (const struct camera2_device *, ความกว้าง uint32_t, ความสูง uint32_t, รูปแบบ uint32_t, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers) |
จัดสรร_reprocess_stream:
จัดสรรสตรีมอินพุตใหม่เพื่อใช้ โดยกำหนดโดยความกว้างบัฟเฟอร์เอาต์พุต ความสูง และรูปแบบพิกเซล ส่งคืน ID ของสตรีมใหม่ แฟล็กการใช้งาน gralloc และจำนวนบัฟเฟอร์ที่รับได้พร้อมกันที่ต้องการเมื่อสำเร็จ เงื่อนไขข้อผิดพลาด:
- การร้องขอการผสมผสานความกว้าง/ความสูง/รูปแบบที่ไม่อยู่ในรายการว่ารองรับโดยคุณลักษณะคงที่ของเซ็นเซอร์
- ขอให้กำหนดค่าสตรีมการประมวลผลซ้ำมากเกินไปในคราวเดียว
พารามิเตอร์อินพุต:
- ความกว้าง ความสูง รูปแบบ: ข้อกำหนดสำหรับบัฟเฟอร์ที่จะส่งผ่านสตรีมนี้ รูปแบบต้องเป็นค่าจากรายการ HAL_PIXEL_FORMAT_*
- reprocess_stream_ops: โครงสร้างของตัวชี้ฟังก์ชันสำหรับการรับและปล่อยบัฟเฟอร์สำหรับสตรีมนี้ สตรีมพื้นฐานจะได้รับการกำหนดค่าตามการใช้งานและเอาต์พุต max_buffers
พารามิเตอร์ขาออก:
- stream_id: จำนวนเต็มที่ไม่ได้ลงนามซึ่งระบุสตรีมนี้ ค่านี้ใช้ในคำขอขาเข้าเพื่อระบุสตรีม และในการปล่อยสตรีม รหัสเหล่านี้จะมีหมายเลขแยกจากรหัสสตรีมอินพุต
- Consumer_usage: หน้ากากการใช้งาน gralloc ที่จำเป็นสำหรับอุปกรณ์ HAL สำหรับการใช้ข้อมูลประเภทที่ร้องขอ ใช้ในการจัดสรรบัฟเฟอร์ graloc ใหม่สำหรับคิวบัฟเฟอร์สตรีม
- max_buffers: จำนวนบัฟเฟอร์สูงสุดที่อุปกรณ์ HAL อาจต้องได้รับในเวลาเดียวกัน อุปกรณ์อาจไม่ได้รับบัฟเฟอร์มากกว่าค่านี้ในเวลาเดียวกัน
int (* จัดสรร_reprocess_stream_from_stream) (const struct camera2_device *, uint32_t output_stream_id, const camera2_stream_in_ops_t * reprocess_stream_ops, uint32_t * stream_id) |
จัดสรร_reprocess_stream_from_stream:
จัดสรรสตรีมอินพุตใหม่เพื่อใช้งาน ซึ่งจะใช้บัฟเฟอร์ที่จัดสรรสำหรับสตรีมเอาต์พุตที่มีอยู่ นั่นคือ หลังจากที่ HAL จัดคิวบัฟเฟอร์ลงบนสตรีมเอาท์พุต ก็อาจเห็นว่าบัฟเฟอร์เดียวกันนั้นถูกส่งไปจากสตรีมการประมวลผลอินพุตนี้ใหม่ หลังจากที่ HAL ปล่อยบัฟเฟอร์กลับไปยังสตรีมที่กำลังประมวลผลใหม่ บัฟเฟอร์นั้นจะถูกส่งกลับไปยังคิวเอาท์พุตเพื่อนำมาใช้ซ้ำ
เงื่อนไขข้อผิดพลาด:
- การใช้สตรีมเอาต์พุตที่มีขนาด/รูปแบบไม่เหมาะสมสำหรับพื้นฐานของสตรีมที่กำลังประมวลผลใหม่
- กำลังพยายามจัดสรรสตรีมการประมวลผลซ้ำมากเกินไปในคราวเดียว
พารามิเตอร์อินพุต:
- output_stream_id: ID ของเอาต์พุตสตรีมที่มีอยู่ซึ่งมีขนาดและรูปแบบที่เหมาะสมสำหรับการประมวลผลซ้ำ
- reprocess_stream_ops: โครงสร้างของตัวชี้ฟังก์ชันสำหรับการรับและปล่อยบัฟเฟอร์สำหรับสตรีมนี้ สตรีมต้นแบบจะใช้ตัวจัดการบัฟเฟอร์กราฟิกเดียวกันกับที่สตรีมเอาต์พุตใช้
พารามิเตอร์ขาออก:
- stream_id: จำนวนเต็มที่ไม่ได้ลงนามซึ่งระบุสตรีมนี้ ค่านี้ใช้ในคำขอขาเข้าเพื่อระบุสตรีม และในการปล่อยสตรีม รหัสเหล่านี้จะมีหมายเลขแยกจากรหัสสตรีมอินพุต
ไคลเอนต์ HAL ต้องปล่อยสตรีมการประมวลผลใหม่เสมอก่อนที่จะปล่อยสตรีมเอาต์พุตที่ยึดตาม
int (* จัดสรร_stream) (const struct camera2_device *, ความกว้าง uint32_t, ความสูง uint32_t, รูปแบบ int, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *การใช้งาน, uint32_t *max_buffers) |
จัดสรร_สตรีม:
จัดสรรสตรีมเอาต์พุตใหม่เพื่อใช้ โดยกำหนดโดยความกว้างบัฟเฟอร์เอาต์พุต ความสูง เป้าหมาย และอาจเป็นรูปแบบพิกเซล ส่งคืน ID ของสตรีมใหม่ แฟล็กการใช้งาน gralloc จำนวนบัฟเฟอร์คิวขั้นต่ำ และอาจรวมถึงรูปแบบพิกเซลเมื่อดำเนินการสำเร็จ เงื่อนไขข้อผิดพลาด:
- การร้องขอการผสมผสานความกว้าง/ความสูง/รูปแบบที่ไม่อยู่ในรายการว่ารองรับโดยคุณลักษณะคงที่ของเซ็นเซอร์
- ขอสตรีมประเภทรูปแบบที่กำหนดมากเกินไป (เช่น สตรีมดิบของ Bayer 2 รายการ)
พารามิเตอร์อินพุต:
- ความกว้าง ความสูง รูปแบบ: ข้อกำหนดสำหรับบัฟเฟอร์ที่จะส่งผ่านสตรีมนี้ รูปแบบเป็นค่าจากรายการ HAL_PIXEL_FORMAT_* หากใช้ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED โมดูลแพลตฟอร์ม gralloc จะเลือกรูปแบบตามแฟล็กการใช้งานที่ได้รับจากกล้อง HAL และผู้บริโภคของสตรีม กล้อง HAL ควรตรวจสอบบัฟเฟอร์ที่มอบให้ในการเรียก register_stream_buffers เพื่อรับรูปแบบเฉพาะการใช้งาน หากจำเป็น
- stream_ops: โครงสร้างของตัวชี้ฟังก์ชันสำหรับการรับและจัดคิวบัฟเฟอร์สำหรับสตรีมนี้ สตรีมพื้นฐานจะได้รับการกำหนดค่าตามการใช้งานและเอาต์พุต max_buffers เมธอดในโครงสร้างนี้อาจไม่สามารถเรียกได้จนกว่าหลังจาก allowance_stream ส่งคืน
พารามิเตอร์ขาออก:
- stream_id: จำนวนเต็มที่ไม่ได้ลงนามซึ่งระบุสตรีมนี้ ค่านี้ใช้ในคำขอขาเข้าเพื่อระบุสตรีม และในการปล่อยสตรีม
- การใช้งาน: หน้ากากการใช้งาน gralloc ที่จำเป็นสำหรับอุปกรณ์ HAL สำหรับการสร้างประเภทข้อมูลที่ร้องขอ ใช้ในการจัดสรรบัฟเฟอร์ graloc ใหม่สำหรับคิวบัฟเฟอร์สตรีม
- max_buffers: จำนวนบัฟเฟอร์สูงสุดที่อุปกรณ์ HAL อาจจำเป็นต้องแยกคิวในเวลาเดียวกัน อุปกรณ์อาจไม่ยกเลิกคิวบัฟเฟอร์มากกว่าค่านี้ในเวลาเดียวกัน
int (* build_default_request) (const struct camera2_device *, int request_template, camera_metadata_t ** คำขอ) |
สร้างคำขอเริ่มต้นที่กรอกไว้สำหรับกรณีการใช้งานกล้องมาตรฐาน
อุปกรณ์จะต้องส่งคืนคำขอที่สมบูรณ์ซึ่งกำหนดค่าให้ตรงกับกรณีการใช้งานที่ร้องขอ ซึ่งจะต้องเป็นหนึ่งใน enums CAMERA2_TEMPLATE_* ต้องรวมฟิลด์ควบคุมคำขอทั้งหมด ยกเว้น android.request.outputStreams
บัฟเฟอร์ข้อมูลเมตาที่ส่งคืนจะต้องได้รับการจัดสรรด้วยจัดสรร_กล้อง_เมตาดาต้า เฟรมเวิร์กเป็นเจ้าของบัฟเฟอร์
int(* ดัมพ์)(const struct camera2_device *, int fd) |
int (* flush_captures_in_progress) (สร้างโครงสร้าง กล้อง 2_device *) |
ล้างการจับภาพที่กำลังดำเนินการทั้งหมด ซึ่งรวมถึงคำขอที่ออกจากคิวทั้งหมด (ปกติหรือกำลังประมวลผลซ้ำ) ที่ยังไม่ได้วางเอาต์พุตใดๆ ลงในสตรีมหรือคิวเฟรม การจับที่เสร็จสมบูรณ์บางส่วนจะต้องเสร็จสิ้นตามปกติ ไม่มีการร้องขอใหม่อาจถูกแยกออกจากคิวคำขอจนกว่าการฟลัชจะเสร็จสมบูรณ์
int(* get_in_progress_count)(const struct camera2_device *) |
int (* get_instance_metadata) (const struct camera2_device *, camera_metadata **instance_metadata) |
รับข้อมูลเมตาเฉพาะอุปกรณ์ ข้อมูลเมตานี้จะต้องคงที่สำหรับอินสแตนซ์เดียวของอุปกรณ์กล้อง แต่อาจแตกต่างกันระหว่างการโทร open() ตัวชี้ camera_metadata ที่ส่งคืนจะต้องถูกต้องจนกว่าจะมีการเรียกเมธอด close() ของอุปกรณ์
ข้อมูลเวอร์ชัน:
CAMERA_DEVICE_API_VERSION_2_0:
ไม่สามารถใช้ได้ Framework อาจไม่สามารถเข้าถึงตัวชี้ฟังก์ชันนี้
CAMERA_DEVICE_API_VERSION_2_1:
ถูกต้อง. สามารถเรียกตามกรอบงานได้
int (* get_metadata_vendor_tag_ops) (const struct camera2_device *, vendor_tag_query_ops_t ** ops) |
int(* notify_request_queue_not_empty)(const struct camera2_device *) |
int (* register_stream_buffers) (const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t * บัฟเฟอร์) |
ลงทะเบียนบัฟเฟอร์สำหรับสตรีมที่ระบุ สิ่งนี้ถูกเรียกหลังจากการเรียก allowance_stream สำเร็จ และก่อนที่คำขอแรกที่อ้างอิงถึงสตรีมจะถูกจัดคิว วิธีการนี้มีวัตถุประสงค์เพื่อให้อุปกรณ์ HAL แมปหรือเตรียมบัฟเฟอร์เพื่อใช้ในภายหลัง num_buffers รับประกันว่าจะมีอย่างน้อย max_buffers (จาก allowance_stream) แต่อาจมีมากกว่านั้น บัฟเฟอร์จะถูกล็อคเพื่อใช้งานอยู่แล้ว เมื่อสิ้นสุดการโทร บัฟเฟอร์ทั้งหมดจะต้องพร้อมที่จะส่งคืนไปยังคิว หากตั้งค่ารูปแบบสตรีมเป็น HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED กล้อง HAL ควรตรวจสอบบัฟเฟอร์ที่ส่งผ่านที่นี่เพื่อกำหนดข้อมูลรูปแบบพิกเซลส่วนตัวของแพลตฟอร์ม
int (* release_reprocess_stream) (สร้างโครงสร้าง กล้อง 2_device *, uint32_t stream_id) |
int (* release_stream) (สร้างโครงสร้าง กล้อง 2_device *, uint32_t stream_id) |
int (* set_frame_queue_dst_ops) (const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops) |
int (* set_notify_callback) (const struct camera2_device *, camera2_notify_callback notify_cb, เป็นโมฆะ * ผู้ใช้) |
int (* set_request_queue_src_ops) (const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops) |
int (* trigger_action) (const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2) |
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
- ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / camera2.h