ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
การอ้างอิงโครงสร้าง camera3_callback_ops
#include <
camera3.h
>
คำจำกัดความที่บรรทัด
2397
ของไฟล์
camera3.h
แจ้ง:
การเรียกกลับการแจ้งเตือนแบบไม่พร้อมกันจาก HAL ซึ่งทริกเกอร์ด้วยเหตุผลต่างๆ ใช้เฉพาะกับข้อมูลที่ไม่ขึ้นอยู่กับการจับภาพเฟรม หรือข้อมูลที่ต้องใช้การจับเวลาที่เฉพาะเจาะจง HAL จะยังคงเป็นเจ้าของโครงสร้างข้อความ และ msg จะต้องใช้ได้ในช่วงระยะเวลาของการเรียกนี้เท่านั้น
หลายเธรดอาจเรียก
notify()
พร้อมกัน
<= CAMERA_DEVICE_API_VERSION_3_1:
HAL ต้องส่งการแจ้งเตือนการเริ่มการเปิดรับแสงสำหรับคำขอที่ระบุ ก่อนที่จะมีการเรียกใช้
process_capture_result()
ครั้งแรกสำหรับคำขอนั้น
>= CAMERA_DEVICE_API_VERSION_3_2:
ระบบจะไม่ส่งบัฟเฟอร์ที่ส่งไปยังเฟรมเวิร์กไปยังเลเยอร์แอปพลิเคชันจนกว่าจะได้รับไทม์สแตมป์เริ่มต้นการเปิดรับแสง (หรือไทม์สแตมป์เริ่มต้นการเปิดรับแสงของรูปภาพอินพุตสำหรับคำขอประมวลผลซ้ำ) ผ่าน SHUTTER
notify()
call เราขอแนะนำอย่างยิ่งให้เรียกใช้ฟังก์ชันนี้โดยเร็วที่สุด
ข้อกำหนดด้านประสิทธิภาพ
นี่คือการเรียกที่ไม่บล็อก เฟรมเวิร์กจะส่งคืนการเรียกนี้ใน 5 มิลลิวินาที
คำจำกัดความที่บรรทัด
2499
ของไฟล์
camera3.h
process_capture_result:
ส่งผลลัพธ์จากการจับภาพที่เสร็จสมบูรณ์ไปยังเฟรมเวิร์ก
process_capture_result()
อาจเรียกใช้หลายครั้งโดย HAL เพื่อตอบสนองต่อคำขอจับภาพเดียว ซึ่งจะช่วยให้ส่งคืนข้อมูลเมตาและบัฟเฟอร์ความละเอียดต่ำในการเรียกครั้งเดียว และส่งคืนบัฟเฟอร์ JPEG ที่ประมวลผลภายหลังในการเรียกครั้งถัดไปเมื่อพร้อมใช้งาน การเรียกใช้แต่ละครั้งต้องมีหมายเลขเฟรมของคำขอที่ส่งคืนข้อมูลเมตาหรือบัฟเฟอร์
คอมโพเนนต์ (บัฟเฟอร์หรือข้อมูลเมตา) ของผลลัพธ์ที่สมบูรณ์อาจรวมอยู่ในการเรียกใช้ process_capture_result เพียงครั้งเดียว HAL ต้องส่งคืนบัฟเฟอร์สำหรับแต่ละสตรีมและข้อมูลเมตาของผลลัพธ์สำหรับแต่ละคำขอในการเรียกใช้ process_capture_result อย่างใดอย่างหนึ่ง แม้ว่าจะมีข้อผิดพลาดที่ทำให้เอาต์พุตบางรายการ ไม่อนุญาตให้เรียกใช้
process_capture_result()
โดยไม่มีบัฟเฟอร์เอาต์พุตหรือข้อมูลเมตาของผลลัพธ์
ลำดับการส่งคืนข้อมูลเมตาและบัฟเฟอร์สำหรับผลลัพธ์เดียวไม่สำคัญ แต่ต้องส่งคืนบัฟเฟอร์สำหรับสตรีมที่กำหนดตามลำดับ FIFO ดังนั้น บัฟเฟอร์สำหรับคำขอที่ 5 ของสตรีม A จะต้องแสดงผลก่อนบัฟเฟอร์สำหรับคำขอที่ 6 ของสตรีม A เสมอ ซึ่งรวมถึงข้อมูลเมตาของผลลัพธ์ด้วย โดยคุณต้องส่งคืนข้อมูลเมตาสำหรับคำขอที่ 5 ก่อนข้อมูลเมตาสำหรับคำขอที่ 6
อย่างไรก็ตาม สตรีมต่างๆ จะแยกจากกัน ดังนั้นจึงเป็นเรื่องปกติที่บัฟเฟอร์สำหรับคำขอ 5 ของสตรีม A อาจแสดงผลหลังจากบัฟเฟอร์สำหรับคำขอ 6 ของสตรีม B และเป็นเรื่องปกติที่ข้อมูลเมตาของผลลัพธ์สำหรับคำขอ 6 ของสตรีม B จะแสดงผลก่อนบัฟเฟอร์สำหรับคำขอ 5 ของสตรีม A
HAL จะยังคงเป็นเจ้าของโครงสร้างผลลัพธ์ ซึ่งจะต้องถูกต้องเท่านั้นจึงจะเข้าถึงได้ในระหว่างการโทรนี้ เฟรมเวิร์กจะคัดลอกสิ่งที่จำเป็นก่อนที่การเรียกนี้จะกลับมา
คุณยังไม่จำเป็นต้องป้อนข้อมูลในบัฟเฟอร์เอาต์พุต เนื่องจากเฟรมเวิร์กจะรอรั้วการซิงค์การเผยแพร่บัฟเฟอร์สตรีมก่อนที่จะอ่านข้อมูลบัฟเฟอร์ ดังนั้น HAL ควรเรียกใช้วิธีนี้โดยเร็วที่สุด แม้ว่าบัฟเฟอร์เอาต์พุตบางส่วนหรือทั้งหมดจะยังอยู่ระหว่างการป้อนข้อมูลก็ตาม HAL ต้องมีรั้วการซิงค์การเผยแพร่ที่ถูกต้องในรายการบัฟเฟอร์สตรีมของ output_buffers แต่ละรายการ หรือ -1 หากบัฟเฟอร์สตรีมนั้นเต็มแล้ว
หากสร้างบัฟเฟอร์ผลลัพธ์สำหรับคำขอไม่ได้ HAL ควรแสดงผลบัฟเฟอร์ข้อมูลเมตาที่ว่างเปล่า แต่ยังคงระบุบัฟเฟอร์เอาต์พุตและรั้วการซิงค์ของบัฟเฟอร์เหล่านั้น นอกจากนี้
notify()
ต้องเรียกใช้ด้วยข้อความ ERROR_RESULT
หากป้อนข้อมูลลงในบัฟเฟอร์เอาต์พุตไม่ได้ คุณต้องตั้งค่าฟิลด์สถานะเป็น STATUS_ERROR นอกจากนี้
notify()
ต้องเรียกใช้ด้วยข้อความ ERROR_BUFFER
หากการจับภาพทั้งหมดล้มเหลว คุณยังคงต้องเรียกใช้เมธอดนี้เพื่อส่งคืนบัฟเฟอร์เอาต์พุตไปยังเฟรมเวิร์ก สถานะบัฟเฟอร์ทั้งหมดควรเป็น STATUS_ERROR และข้อมูลเมตาผลลัพธ์ควรเป็นบัฟเฟอร์ว่าง นอกจากนี้
notify()
ต้องเรียกใช้ด้วยข้อความ ERROR_REQUEST ในกรณีนี้ ไม่ควรส่งข้อความ ERROR_RESULT/ERROR_BUFFER แต่ละรายการ
ข้อกำหนดด้านประสิทธิภาพ
นี่คือการเรียกที่ไม่บล็อก เฟรมเวิร์กจะส่งคืนการเรียกนี้ใน 5 มิลลิวินาที
เวลาในการตอบสนองของไปป์ไลน์ (ดูคำจำกัดความใน S7) ควรน้อยกว่าหรือเท่ากับช่วงเวลา 4 เฟรม และต้องน้อยกว่าหรือเท่ากับช่วงเวลา 8 เฟรม
คำจำกัดความที่บรรทัด
2466
ของไฟล์
camera3.h
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
-
hardware/libhardware/include/hardware/
camera3.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: camera3_callback_ops Struct Reference\n\ncamera3_callback_ops Struct Reference\n=====================================\n\n[Data Fields](#pub-attribs) \ncamera3_callback_ops Struct Reference \n\n`\n#include \u003c\n`[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)`\n\u003e\n`\n\n|---------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Data Fields ----------- ||\n| void(\\* | [process_capture_result](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n| ||\n| void(\\* | [notify](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3) )(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\nDefinition at line\n[2397](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\nField Documentation\n-------------------\n\n\n|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* notify)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_notify_msg_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*msg) |\n\n\nnotify:\n\n\nAsynchronous notification callback from the HAL, fired for various reasons. Only for information independent of frame capture, or that require specific timing. The ownership of the message structure remains with the HAL, and the msg only needs to be valid for the duration of this call.\n\n\nMultiple threads may call\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nsimultaneously.\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nThe notification for the start of exposure for a given request must be sent by the HAL before the first call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nfor that request is made.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nBuffers delivered to the framework will not be dispatched to the application layer until a start of exposure timestamp (or input image's start of exposure timestamp for a reprocess request) has been received via a SHUTTER\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\ncall. It is highly recommended to dispatch this call as early as possible.\n\n*** ** * ** ***\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nDefinition at line\n[2499](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| void(\\* process_capture_result)(const struct [camera3_callback_ops](/reference/hal/structcamera3__callback__ops) \\*, const [camera3_capture_result_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\*result) |\n\n\nprocess_capture_result:\n\n\nSend results from a completed capture to the framework.\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nmay be invoked multiple times by the HAL in response to a single capture request. This allows, for example, the metadata and low-resolution buffers to be returned in one call, and post-processed JPEG buffers in a later call, once it is available. Each call must include the frame number of the request it is returning metadata or buffers for.\n\n\nA component (buffer or metadata) of the complete result may only be included in one process_capture_result call. A buffer for each stream, and the result metadata, must be returned by the HAL for each request in one of the process_capture_result calls, even in case of errors producing some of the output. A call to\n[process_capture_result()](/reference/hal/structcamera3__callback__ops#a2f7cf688a195532999b8498d6ef15e45)\nwith neither output buffers or result metadata is not allowed.\n\n\nThe order of returning metadata and buffers for a single result does not matter, but buffers for a given stream must be returned in FIFO order. So the buffer for request 5 for stream A must always be returned before the buffer for request 6 for stream A. This also applies to the result metadata; the metadata for request 5 must be returned before the metadata for request 6.\n\n\nHowever, different streams are independent of each other, so it is acceptable and expected that the buffer for request 5 for stream A may be returned after the buffer for request 6 for stream B is. And it is acceptable that the result metadata for request 6 for stream B is returned before the buffer for request 5 for stream A is.\n\n\nThe HAL retains ownership of result structure, which only needs to be valid to access during this call. The framework will copy whatever it needs before this call returns.\n\n\nThe output buffers do not need to be filled yet; the framework will wait on the stream buffer release sync fence before reading the buffer data. Therefore, this method should be called by the HAL as soon as possible, even if some or all of the output buffers are still in being filled. The HAL must include valid release sync fences into each output_buffers stream buffer entry, or -1 if that stream buffer is already filled.\n\n\nIf the result buffer cannot be constructed for a request, the HAL should return an empty metadata buffer, but still provide the output buffers and their sync fences. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with an ERROR_RESULT message.\n\n\nIf an output buffer cannot be filled, its status field must be set to STATUS_ERROR. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_BUFFER message.\n\n\nIf the entire capture has failed, then this method still needs to be called to return the output buffers to the framework. All the buffer statuses should be STATUS_ERROR, and the result metadata should be an empty buffer. In addition,\n[notify()](/reference/hal/structcamera3__callback__ops#a6d702d6e962f95105b984b17462619b3)\nmust be called with a ERROR_REQUEST message. In this case, individual ERROR_RESULT/ERROR_BUFFER messages should not be sent.\n\n\nPerformance requirements:\n\n\nThis is a non-blocking call. The framework will return this call in 5ms.\n\n\nThe pipeline latency (see S7 for definition) should be less than or equal to 4 frame intervals, and must be less than or equal to 8 frame intervals.\n\n\nDefinition at line\n[2466](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\nof file\n[camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)\n.\n\n*** ** * ** ***\n\nThe documentation for this struct was generated from the following file:\n\n- hardware/libhardware/include/hardware/ [camera3.h](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h)"]]