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

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

#include < camera2.h >

เขตข้อมูล

อินท์(* request_count ) (สร้างโครงสร้าง กล้อง 2_request_queue_src_ops * q)
อินท์(* dequeue_request ) (const struct camera2_request_queue_src_ops * q, camera_metadata_t ** บัฟเฟอร์)
อินท์(* free_request ) (สร้างโครงสร้าง กล้อง2_request_queue_src_ops * q, camera_metadata_t * old_buffer)

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

ขอโปรโตคอลคิวอินพุต:

กรอบงานจะเก็บคิวและเนื้อหาไว้ เมื่อเริ่มต้นคิวจะว่างเปล่า

  1. เมื่อบัฟเฟอร์ข้อมูลเมตาแรกถูกวางลงในคิว เฟรมเวิร์กจะส่งสัญญาณอุปกรณ์โดยการเรียก notify_request_queue_not_empty()
  2. หลังจากได้รับ notify_request_queue_not_empty อุปกรณ์จะต้องเรียก dequeue() เมื่อพร้อมที่จะจัดการกับบัฟเฟอร์ถัดไป
  3. เมื่ออุปกรณ์ประมวลผลบัฟเฟอร์แล้ว และพร้อมสำหรับบัฟเฟอร์ถัดไป อุปกรณ์จะต้องเรียก dequeue() อีกครั้งแทนที่จะรอการแจ้งเตือน หากไม่มีบัฟเฟอร์เหลืออยู่ dequeue() จะส่งคืนค่า NULL หลังจากจุดนี้ เมื่อบัฟเฟอร์พร้อมใช้งาน กรอบงานจะต้องเรียก notify_request_queue_not_empty() อีกครั้ง หากอุปกรณ์ได้รับการส่งคืนค่า NULL จากการยกเลิกคิว ก็ไม่จำเป็นต้องสอบถามคิวอีกครั้งจนกว่าจะได้รับการเรียก notify_request_queue_not_empty() จากแหล่งที่มา
  4. หากอุปกรณ์เรียก buffer_count() และได้รับ 0 นี่ไม่ได้หมายความว่าเฟรมเวิร์กจะให้การเรียก notify_request_queue_not_empty() กรอบงานจะส่งการแจ้งเตือนดังกล่าวหลังจากที่อุปกรณ์ได้รับค่า NULL จากการยกเลิกคิวหรือเมื่อเริ่มต้นระบบครั้งแรกเท่านั้น
  5. การเรียก dequeue() เพื่อตอบสนองต่อ notify_request_queue_not_empty() อาจอยู่ในเธรดเดียวกันกับการเรียก notify_request_queue_not_empty() และอาจดำเนินการจากภายในการโทรแจ้งเตือน
  6. บัฟเฟอร์คำขอที่ออกจากคิวทั้งหมดจะต้องส่งคืนไปยังเฟรมเวิร์กโดยการเรียก free_request รวมถึงเมื่อเกิดข้อผิดพลาด มีการขอล้างอุปกรณ์ หรือเมื่ออุปกรณ์ปิดตัวลง

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

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

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **บัฟเฟอร์)

รับบัฟเฟอร์ข้อมูลเมตาจากกรอบงาน ส่งคืนตกลงหากไม่มีข้อผิดพลาด หากคิวว่างเปล่า จะส่งคืนค่า NULL ในบัฟเฟอร์ ในกรณีดังกล่าว อุปกรณ์ต้องรอข้อความ notify_request_queue_not_empty() ก่อนที่จะพยายามถอนคิวอีกครั้ง บัฟเฟอร์ที่ได้รับในลักษณะนี้จะต้องส่งคืนไปยังเฟรมเวิร์กด้วย free_request()

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

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

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

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

int(* request_count)(สร้างโครงสร้าง กล้อง2_request_queue_src_ops *q)

รับจำนวนบัฟเฟอร์คำขอที่ค้างอยู่ในคิว อาจส่งคืน CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS หากมีการกำหนดค่าคำขอซ้ำ (คำขอสตรีม) ในปัจจุบัน การเรียกเมธอดนี้ไม่มีผลกระทบว่าเมธอด notify_request_queue_not_empty() จะถูกเรียกโดยเฟรมเวิร์กหรือไม่

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


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