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

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

#include < camera2.h >

ฟิลด์ข้อมูล

int(*  set_request_queue_src_ops )(const struct camera2_device *, const camera2_request_queue_src_ops_t *request_src_ops)
 
int(*  notify_request_queue_not_empty )(const struct camera2_device *)
 
int(*  set_frame_queue_dst_ops )(const struct camera2_device *, const camera2_frame_queue_dst_ops_t *frame_dst_ops)
 
int(*  get_in_progress_count )(const struct camera2_device *)
 
int(*  flush_captures_in_progress )(const struct camera2_device *)
 
int(*  construct_default_request )(const struct camera2_device *, int request_template, camera_metadata_t **request)
 
int(*  allocate_stream )(const struct camera2_device *, uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops, uint32_t *stream_id, uint32_t *format_actual, uint32_t *usage, uint32_t *max_buffers)
 
int(*  register_stream_buffers )(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)
 
int(*  release_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  allocate_reprocess_stream )(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops, uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)
 
int(*  allocate_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)
 
int(*  release_reprocess_stream )(const struct camera2_device *, uint32_t stream_id)
 
int(*  trigger_action )(const struct camera2_device *, uint32_t trigger_id, int32_t ext1, int32_t ext2)
 
int(*  set_notify_callback )(const struct camera2_device *, camera2_notify_callback notify_cb, void *user)
 
int(*  get_metadata_vendor_tag_ops )(const struct camera2_device *, vendor_tag_query_ops_t **ops)
 
int(*  dump )(const struct camera2_device *, int fd)
 
int(*  get_instance_metadata )(const struct camera2_device *, camera_metadata **instance_metadata)
 

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

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

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

int(* allocate_reprocess_stream)(const struct camera2_device *, uint32_t width, uint32_t height, uint32_t format, const camera2_stream_in_ops_t *reprocess_stream_ops,uint32_t *stream_id, uint32_t *consumer_usage, uint32_t *max_buffers)

allocate_reprocess_stream:

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

  • การขอชุดค่าผสมความกว้าง/ความสูง/รูปแบบที่ไม่ได้ระบุไว้ว่าลักษณะแบบคงที่ของเซ็นเซอร์รองรับ
  • ขอให้กําหนดค่าสตรีมการประมวลผลอีกครั้งมากเกินไปในคราวเดียว

พารามิเตอร์อินพุต

  • width, height, format: ข้อมูลจำเพาะสำหรับบัฟเฟอร์ที่จะส่งผ่านสตรีมนี้ รูปแบบต้องเป็นค่าจากรายการ HAL_PIXEL_FORMAT_*
  • reprocess_stream_ops: โครงสร้างของพอยน์เตอร์ฟังก์ชันสำหรับการรับและปล่อยบัฟเฟอร์สำหรับสตรีมนี้ ระบบจะกําหนดค่าสตรีมพื้นฐานตามเอาต์พุตการใช้งานและ max_buffers

พารามิเตอร์เอาต์พุต

  • stream_id: จำนวนเต็มแบบไม่ลงนามที่ระบุสตรีมนี้ ค่านี้ใช้ในคําขอขาเข้าเพื่อระบุสตรีมและในการเผยแพร่สตรีม รหัสเหล่านี้จะนับแยกต่างหากจากรหัสสตรีมอินพุต
  • consumer_usage: มาสก์การใช้งาน gralloc ที่อุปกรณ์ HAL ต้องใช้เพื่อบริโภคข้อมูลประเภทที่ขอ ซึ่งใช้ในการจัดสรรบัฟเฟอร์ gralloc ใหม่สำหรับคิวบัฟเฟอร์สตรีม
  • max_buffers: จำนวนบัฟเฟอร์สูงสุดที่อุปกรณ์ HAL อาจต้องได้รับพร้อมกัน อุปกรณ์อาจมีบัฟเฟอร์ที่รับพร้อมกันได้ไม่เกินค่านี้

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

int(* allocate_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)

allocate_reprocess_stream_from_stream:

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

เงื่อนไขข้อผิดพลาด

  • การใช้สตรีมเอาต์พุตที่มีขนาด/รูปแบบไม่เหมาะสมสำหรับพื้นฐานของสตรีมการประมวลผลอีกครั้ง
  • พยายามจัดสรรสตรีมการประมวลผลอีกครั้งมากเกินไปในครั้งเดียว

พารามิเตอร์อินพุต

  • output_stream_id: รหัสของสตรีมเอาต์พุตที่มีอยู่ซึ่งมีขนาดและรูปแบบที่เหมาะสำหรับการประมวลผลอีกครั้ง
  • reprocess_stream_ops: โครงสร้างของพอยน์เตอร์ฟังก์ชันสำหรับการรับและปล่อยบัฟเฟอร์สำหรับสตรีมนี้ สตรีมที่อยู่เบื้องหลังจะใช้แฮนเดิลบัฟเฟอร์กราฟิกเดียวกับที่สตรีมเอาต์พุตใช้

พารามิเตอร์เอาต์พุต

  • stream_id: จำนวนเต็มแบบไม่ลงนามที่ระบุสตรีมนี้ ค่านี้ใช้ในคําขอขาเข้าเพื่อระบุสตรีมและในการเผยแพร่สตรีม รหัสเหล่านี้จะนับแยกต่างหากจากรหัสสตรีมอินพุต

ลูกค้า HAL ต้องเผยแพร่สตรีมการประมวลผลอีกครั้งก่อนเผยแพร่สตรีมเอาต์พุตที่ใช้เป็นพื้นฐานเสมอ

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

int(* allocate_stream)(const struct camera2_device *,uint32_t width, uint32_t height, int format, const camera2_stream_ops_t *stream_ops,uint32_t *stream_id, uint32_t *format_actual,uint32_t *usage, uint32_t *max_buffers)

allocate_stream:

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

  • การขอชุดค่าผสมความกว้าง/ความสูง/รูปแบบที่ไม่ได้ระบุไว้ว่าลักษณะแบบคงที่ของเซ็นเซอร์รองรับ
  • การขอสตรีมรูปแบบหนึ่งๆ มากเกินไป (เช่น สตรีม RAW แบบ Bayer 2 รายการ)

พารามิเตอร์อินพุต

  • width, height, format: ข้อมูลจำเพาะสำหรับบัฟเฟอร์ที่จะส่งผ่านสตรีมนี้ รูปแบบคือค่าจากรายการ HAL_PIXEL_FORMAT_* หากใช้ HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED โมดูล gralloc ของแพลตฟอร์มจะเลือกรูปแบบตาม Flag การใช้งานที่ HAL ของกล้องและผู้ใช้งานสตรีมระบุ HAL ของกล้องควรตรวจสอบบัฟเฟอร์ที่ส่งให้ในการเรียกใช้ register_stream_buffers เพื่อรับรูปแบบเฉพาะการใช้งาน หากจำเป็น
  • stream_ops: โครงสร้างของพอยน์เตอร์ฟังก์ชันสำหรับการรับและจัดคิวบัฟเฟอร์สำหรับสตรีมนี้ ระบบจะกําหนดค่าสตรีมพื้นฐานตามเอาต์พุตการใช้งานและ max_buffers ระบบอาจไม่เรียกใช้เมธอดในโครงสร้างนี้จนกว่า allocate_stream จะแสดงผล

พารามิเตอร์เอาต์พุต

  • stream_id: จำนวนเต็มแบบไม่ลงนามที่ระบุสตรีมนี้ ค่านี้ใช้ในคําขอขาเข้าเพื่อระบุสตรีมและในการเผยแพร่สตรีม
  • usage: มาสก์การใช้งาน gralloc ที่อุปกรณ์ HAL ต้องใช้ในการสร้างข้อมูลประเภทที่ขอ ซึ่งใช้ในการจัดสรรบัฟเฟอร์ gralloc ใหม่สำหรับคิวบัฟเฟอร์สตรีม
  • max_buffers: จำนวนบัฟเฟอร์สูงสุดที่อุปกรณ์ HAL อาจต้องนำออกจากคิวพร้อมกัน อุปกรณ์จะยกเลิกการจัดคิวบัฟเฟอร์ได้ไม่เกินค่านี้พร้อมกัน

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

int(* construct_default_request)(const struct camera2_device *, int request_template, camera_metadata_t **request)

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

อุปกรณ์ต้องแสดงคำขอที่สมบูรณ์ซึ่งกําหนดค่าให้เป็นไปตาม Use Case ที่ขอ ซึ่งต้องเป็นค่าใดค่าหนึ่งใน CAMERA2_TEMPLATE_* ต้องรวมช่องควบคุมคําขอทั้งหมดไว้ ยกเว้น android.request.outputStreams

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

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

int(* dump)(const struct camera2_device *, int fd)

แสดงสถานะของฮาร์ดแวร์กล้อง

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

int(* flush_captures_in_progress)(const struct camera2_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:

ไม่พร้อมใช้งาน เฟรมเวิร์กอาจเข้าถึงตัวชี้ฟังก์ชันนี้ไม่ได้

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)

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

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

int(* notify_request_queue_not_empty)(const struct camera2_device *)

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

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

int(* register_stream_buffers)(const struct camera2_device *, uint32_t stream_id, int num_buffers, buffer_handle_t *buffers)

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

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

int(* release_reprocess_stream)(const struct camera2_device *, uint32_t stream_id)

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

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

int(* release_stream)(const struct camera2_device *, uint32_t stream_id)

เผยแพร่สตรีม แสดงข้อผิดพลาดหากเรียกใช้เมื่อ get_in_progress_count ไม่ใช่ 0 หรือหากรหัสสตรีมไม่ถูกต้อง

คําจํากัดความที่บรรทัด 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, void *user)

การตั้งค่าการเรียกกลับสำหรับการแจ้งเตือน

คําจํากัดความที่บรรทัด 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 .


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