การอ้างอิงโครงสร้าง camera2_device_ops

การอ้างอิงโครงสร้าง 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)

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

คำจำกัดความที่บรรทัด 527 ของไฟล์ camera2.h

เอกสารภาคสนาม

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 อาจต้องได้รับในเวลาเดียวกัน อุปกรณ์อาจไม่ได้รับบัฟเฟอร์มากกว่าค่านี้ในเวลาเดียวกัน

คำจำกัดความที่บรรทัด 708 ของไฟล์ camera2.h

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 ต้องปล่อยสตรีมการประมวลผลใหม่เสมอก่อนที่จะปล่อยสตรีมเอาต์พุตที่ยึดตาม

คำจำกัดความที่บรรทัด 754 ของไฟล์ camera2.h

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 อาจจำเป็นต้องแยกคิวในเวลาเดียวกัน อุปกรณ์อาจไม่ยกเลิกคิวบัฟเฟอร์มากกว่าค่านี้ในเวลาเดียวกัน

คำจำกัดความที่บรรทัด 632 ของไฟล์ camera2.h

int (* build_default_request) (const struct camera2_device *, int request_template, camera_metadata_t ** คำขอ)

สร้างคำขอเริ่มต้นที่กรอกไว้สำหรับกรณีการใช้งานกล้องมาตรฐาน

อุปกรณ์จะต้องส่งคืนคำขอที่สมบูรณ์ซึ่งกำหนดค่าให้ตรงกับกรณีการใช้งานที่ร้องขอ ซึ่งจะต้องเป็นหนึ่งใน enums CAMERA2_TEMPLATE_* ต้องรวมฟิลด์ควบคุมคำขอทั้งหมด ยกเว้น android.request.outputStreams

บัฟเฟอร์ข้อมูลเมตาที่ส่งคืนจะต้องได้รับการจัดสรรด้วยจัดสรร_กล้อง_เมตาดาต้า เฟรมเวิร์กเป็นเจ้าของบัฟเฟอร์

คำจำกัดความที่บรรทัด 580 ของไฟล์ camera2.h

int(* ดัมพ์)(const struct camera2_device *, int fd)

สถานะการถ่ายโอนข้อมูลของฮาร์ดแวร์กล้อง

คำจำกัดความที่บรรทัด 801 ของไฟล์ camera2.h

int (* flush_captures_in_progress) (สร้างโครงสร้าง กล้อง 2_device *)

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

คำจำกัดความที่บรรทัด 567 ของไฟล์ camera2.h

int(* get_in_progress_count)(const struct camera2_device *)

จำนวนคำขอกล้องที่กำลังประมวลผลโดยอุปกรณ์ในขณะนี้ (การจับภาพ/การประมวลผลซ้ำที่มีคำขอถูกยกเลิกการจัดคิว แต่ยังไม่ได้จัดคิวไว้ในไปป์ไลน์เอาท์พุต) เฟรมเวิร์กไม่สามารถปล่อยสตรีมได้จนกว่าจำนวนที่กำลังดำเนินการจะเป็น 0

คำจำกัดความที่บรรทัด 558 ของไฟล์ camera2.h

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:

ถูกต้อง. สามารถเรียกตามกรอบงานได้

คำจำกัดความที่บรรทัด 820 ของไฟล์ camera2.h

int (* get_metadata_vendor_tag_ops) (const struct camera2_device *, vendor_tag_query_ops_t ** ops)

รับวิธีการค้นหาข้อมูลแท็กข้อมูลเมตาของส่วนขยายผู้ขาย อาจตั้งค่าตัวเลือกเป็น NULL หากไม่มีการกำหนดแท็กส่วนขยายของผู้ขาย

คำจำกัดความที่บรรทัด 795 ของไฟล์ camera2.h

int(* notify_request_queue_not_empty)(const struct camera2_device *)

แจ้งอุปกรณ์ว่าคิวคำขอไม่ว่างเปล่าอีกต่อไป ต้องถูกเรียกเมื่อมีการเพิ่มบัฟเฟอร์แรกในคิวใหม่เท่านั้น หรือหลังจากที่แหล่งที่มาส่งคืน NULL เพื่อตอบสนองต่อการโทรที่ถูกยกเลิกคิว

คำจำกัดความที่บรรทัด 544 ของไฟล์ camera2.h

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 ควรตรวจสอบบัฟเฟอร์ที่ส่งผ่านที่นี่เพื่อกำหนดข้อมูลรูปแบบพิกเซลส่วนตัวของแพลตฟอร์ม

คำจำกัดความที่บรรทัด 657 ของไฟล์ camera2.h

int (* release_reprocess_stream) (สร้างโครงสร้าง กล้อง 2_device *, uint32_t stream_id)

ปล่อยกระแสการประมวลผลใหม่ ส่งคืนข้อผิดพลาดหากเรียกเมื่อ get_in_progress_count ไม่ใช่ศูนย์ หรือหากรหัสสตรีมไม่ถูกต้อง

คำจำกัดความที่บรรทัด 765 ของไฟล์ camera2.h

int (* release_stream) (สร้างโครงสร้าง กล้อง 2_device *, uint32_t stream_id)

ปล่อยกระแส. ส่งคืนข้อผิดพลาดหากเรียกเมื่อ get_in_progress_count ไม่ใช่ศูนย์ หรือหากรหัสสตรีมไม่ถูกต้อง

คำจำกัดความที่บรรทัด 667 ของไฟล์ camera2.h

int (* set_frame_queue_dst_ops) (const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)

ส่งผ่านวิธีอินเทอร์เฟซคิวเฟรมเอาต์พุต

คำจำกัดความที่บรรทัด 549 ของไฟล์ camera2.h

int (* set_notify_callback) (const struct camera2_device *, camera2_notify_callback notify_cb, เป็นโมฆะ * ผู้ใช้)

การตั้งค่าการโทรกลับการแจ้งเตือน

คำจำกัดความที่บรรทัด 787 ของไฟล์ camera2.h

int (* set_request_queue_src_ops) (const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)

ส่งผ่านวิธีการอินเทอร์เฟซคิวคำขออินพุต

คำจำกัดความที่บรรทัด 536 ของไฟล์ camera2.h

int (* trigger_action) (const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)

ทริกเกอร์กิจกรรมอะซิงโครนัส ใช้สำหรับกระตุ้นพฤติกรรมพิเศษของกิจวัตร 3A ของกล้องเมื่อมีการใช้งาน ดูเอกสารประกอบสำหรับ CAMERA2_TRIGGER_* ด้านบนสำหรับรายละเอียดของรหัสทริกเกอร์และอาร์กิวเมนต์

คำจำกัดความที่บรรทัด 779 ของไฟล์ camera2.h


เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้:
  • ฮาร์ดแวร์ / libhardware / รวม / ฮาร์ดแวร์ / camera2.h