ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
การอ้างอิง Struct camera2_request_queue_src_ops
#include <
camera2.h
>
โปรโตคอลคิวอินพุตคำขอ
เฟรมเวิร์กจะเก็บคิวและเนื้อหาของคิวไว้ ในตอนเริ่มต้น คิวจะว่างเปล่า
-
เมื่อวางบัฟเฟอร์ข้อมูลเมตาแรกลงในคิวแล้ว เฟรมเวิร์กจะส่งสัญญาณไปยังอุปกรณ์โดยเรียกใช้ notify_request_queue_not_empty()
-
หลังจากได้รับ notify_request_queue_not_empty อุปกรณ์ต้องเรียก dequeue() เมื่อพร้อมที่จะจัดการบัฟเฟอร์ถัดไป
-
เมื่ออุปกรณ์ประมวลผลบัฟเฟอร์และพร้อมสำหรับบัฟเฟอร์ถัดไปแล้ว อุปกรณ์จะต้องเรียก dequeue() อีกครั้งแทนที่จะรอการแจ้งเตือน หากไม่มีบัฟเฟอร์เหลืออยู่ dequeue() จะแสดงผลลัพธ์เป็น NULL หลังจากนี้ เมื่อบัฟเฟอร์พร้อมใช้งานแล้ว เฟรมเวิร์กจะต้องเรียก notify_request_queue_not_empty() อีกครั้ง หากอุปกรณ์ได้รับค่า NULL จากการนำออกจากคิว ก็ไม่จำเป็นต้องค้นหาคิวอีกครั้งจนกว่าจะได้รับการเรียก notify_request_queue_not_empty() จากแหล่งที่มา
-
หากอุปกรณ์เรียกใช้ buffer_count() และได้รับ 0 ก็ไม่ได้หมายความว่าเฟรมเวิร์กจะเรียกใช้ notify_request_queue_not_empty() เฟรมเวิร์กจะแสดงการแจ้งเตือนดังกล่าวหลังจากที่อุปกรณ์ได้รับค่า NULL จากการจัดคิวใหม่หรือเมื่อเริ่มต้นครั้งแรกเท่านั้น
-
การเรียก dequeue() เพื่อตอบสนองต่อ notify_request_queue_not_empty() อาจอยู่ในชุดข้อความเดียวกับการเรียก notify_request_queue_not_empty() และอาจดำเนินการจากภายในการเรียก notify
-
ต้องส่งบัฟเฟอร์คำขอที่ออกจากคิวทั้งหมดกลับไปยังเฟรมเวิร์กโดยเรียกใช้ free_request ซึ่งรวมถึงกรณีที่เกิดข้อผิดพลาด มีการขอล้างข้อมูลอุปกรณ์ หรือเมื่ออุปกรณ์ปิดอยู่
คําจํากัดความที่บรรทัด
220
ของไฟล์
camera2.h
รับบัฟเฟอร์ข้อมูลเมตาจากเฟรมเวิร์ก แสดงผล OK หากไม่มีข้อผิดพลาด หากคิวว่าง จะแสดงผล NULL ในบัฟเฟอร์ ในกรณีนี้ อุปกรณ์จะต้องรอข้อความ notify_request_queue_not_empty() ก่อนพยายามนำออกจากคิวอีกครั้ง ต้องส่งบัฟเฟอร์ที่ได้รับด้วยวิธีนี้กลับไปยังเฟรมเวิร์กด้วย
free_request()
คําจํากัดความที่บรรทัด
237
ของไฟล์
camera2.h
.
ส่งบัฟเฟอร์ข้อมูลเมตากลับไปยังเฟรมเวิร์กเมื่อใช้งานแล้ว หรือหากเกิดข้อผิดพลาดหรือการปิดเครื่อง
คําจํากัดความที่บรรทัด
243
ของไฟล์
camera2.h
.
รับจํานวนบัฟเฟอร์คําขอที่รออยู่ในคิว อาจแสดงผล CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS หากมีการกำหนดค่าคำขอที่ซ้ำกัน (คำขอสตรีม) อยู่ การเรียกใช้เมธอดนี้ไม่มีผลต่อการพิจารณาว่าเฟรมเวิร์กจะเรียกใช้เมธอด notify_request_queue_not_empty() หรือไม่
คําจํากัดความที่บรรทัด
228
ของไฟล์
camera2.h
.
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
-
hardware/libhardware/include/hardware/
camera2.h
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[[["เข้าใจง่าย","easyToUnderstand","thumb-up"],["แก้ปัญหาของฉันได้","solvedMyProblem","thumb-up"],["อื่นๆ","otherUp","thumb-up"]],[["ไม่มีข้อมูลที่ฉันต้องการ","missingTheInformationINeed","thumb-down"],["ซับซ้อนเกินไป/มีหลายขั้นตอนมากเกินไป","tooComplicatedTooManySteps","thumb-down"],["ล้าสมัย","outOfDate","thumb-down"],["ปัญหาเกี่ยวกับการแปล","translationIssue","thumb-down"],["ตัวอย่าง/ปัญหาเกี่ยวกับโค้ด","samplesCodeIssue","thumb-down"],["อื่นๆ","otherDown","thumb-down"]],["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Android Hardware Abstraction Layer: camera2_request_queue_src_ops Struct Reference\n\ncamera2_request_queue_src_ops Struct Reference\n==============================================\n\n[Data Fields](#pub-attribs) \ncamera2_request_queue_src_ops Struct Reference \n\n`\n#include \u003c\n`[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)`\n\u003e\n`\n\n|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| int(\\* | [request_count](/reference/hal/structcamera2__request__queue__src__ops#a19ec09251038ee392fedcaeb68ede229) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n| ||\n| int(\\* | [dequeue_request](/reference/hal/structcamera2__request__queue__src__ops#a79adee987dbd6a8ea0cfab81c89ae579) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n| ||\n| int(\\* | [free_request](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8) )(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nRequest input queue protocol:\n\n\nThe framework holds the queue and its contents. At start, the queue is empty.\n\n1. When the first metadata buffer is placed into the queue, the framework signals the device by calling notify_request_queue_not_empty().\n2. After receiving notify_request_queue_not_empty, the device must call dequeue() once it's ready to handle the next buffer.\n3. Once the device has processed a buffer, and is ready for the next buffer, it must call dequeue() again instead of waiting for a notification. If there are no more buffers available, dequeue() will return NULL. After this point, when a buffer becomes available, the framework must call notify_request_queue_not_empty() again. If the device receives a NULL return from dequeue, it does not need to query the queue again until a notify_request_queue_not_empty() call is received from the source.\n4. If the device calls buffer_count() and receives 0, this does not mean that the framework will provide a notify_request_queue_not_empty() call. The framework will only provide such a notification after the device has received a NULL from dequeue, or on initial startup.\n5. The dequeue() call in response to notify_request_queue_not_empty() may be on the same thread as the notify_request_queue_not_empty() call, and may be performed from within the notify call.\n6. All dequeued request buffers must be returned to the framework by calling free_request, including when errors occur, a device flush is requested, or when the device is shutting down.\n\n\nDefinition at line\n[220](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\nField Documentation\n-------------------\n\n\n|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* dequeue_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*\\*buffer) |\n\n\nGet a metadata buffer from the framework. Returns OK if there is no error. If the queue is empty, returns NULL in buffer. In that case, the device must wait for a notify_request_queue_not_empty() message before attempting to dequeue again. Buffers obtained in this way must be returned to the framework with\n[free_request()](/reference/hal/structcamera2__request__queue__src__ops#aa45ae2fd2aedf1843378e213e65a66f8)\n.\n\n\nDefinition at line\n[237](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* free_request)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q, [camera_metadata_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h) \\*old_buffer) |\n\n\nReturn a metadata buffer to the framework once it has been used, or if an error or shutdown occurs.\n\n\nDefinition at line\n[243](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------|\n| int(\\* request_count)(const struct [camera2_request_queue_src_ops](/reference/hal/structcamera2__request__queue__src__ops) \\*q) |\n\n\nGet the count of request buffers pending in the queue. May return CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS if a repeating request (stream request) is currently configured. Calling this method has no effect on whether the notify_request_queue_not_empty() method will be called by the framework.\n\n\nDefinition at line\n[228](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\nof file\n[camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera2.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera2.h)"]]