การอ้างอิง Struct camera2_request_queue_src_ops

การอ้างอิง Struct camera2_request_queue_src_ops

#include < camera2.h >

ฟิลด์ข้อมูล

int(*  request_count )(const struct camera2_request_queue_src_ops *q)
 
int(*  dequeue_request )(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)
 
int(*  free_request )(const struct camera2_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() และอาจดำเนินการจากภายในการเรียก notify
  6. ต้องส่งบัฟเฟอร์คำขอที่ออกจากคิวทั้งหมดกลับไปยังเฟรมเวิร์กโดยเรียกใช้ free_request ซึ่งรวมถึงกรณีที่เกิดข้อผิดพลาด มีการขอล้างข้อมูลอุปกรณ์ หรือเมื่ออุปกรณ์ปิดอยู่

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

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

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

รับบัฟเฟอร์ข้อมูลเมตาจากเฟรมเวิร์ก แสดงผล OK หากไม่มีข้อผิดพลาด หากคิวว่าง จะแสดงผล 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)(const struct camera2_request_queue_src_ops *q)

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

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


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