ตั้งแต่วันที่ 27 มีนาคม 2025 เป็นต้นไป เราขอแนะนำให้ใช้ android-latest-release
แทน aosp-main
เพื่อสร้างและมีส่วนร่วมใน AOSP โปรดดูข้อมูลเพิ่มเติมที่หัวข้อการเปลี่ยนแปลงใน AOSP
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง camera3_stream_buffer
#include <
camera3.h
>
camera3_stream_buffer_t:
บัฟเฟอร์เดียวจากสตรีมกล้อง 3 ซึ่งประกอบด้วยแฮนเดิลสตรีมหลัก แฮนเดิลบัฟเฟอร์ gralloc เอง และรั้วการซิงค์
บัฟเฟอร์ไม่ได้ระบุว่าจะใช้สำหรับอินพุตหรือเอาต์พุต ขึ้นอยู่กับประเภทสตรีมหลักและวิธีที่ระบบส่งบัฟเฟอร์ไปยังอุปกรณ์ HAL
คําจํากัดความที่บรรทัด
1755
ของไฟล์
camera3.h
.
รั้วการซิงค์ที่รับสำหรับบัฟเฟอร์นี้ HAL ต้องรอ fd ของรั้วนี้ก่อนที่จะพยายามอ่านหรือเขียนลงในบัฟเฟอร์นี้
ระบบอาจตั้งค่าเฟรมเวิร์กเป็น -1 เพื่อระบุว่าไม่จำเป็นต้องรอบัฟเฟอร์นี้
เมื่อ HAL ส่งบัฟเฟอร์เอาต์พุตไปยังเฟรมเวิร์กด้วย process_capture_result() จะต้องตั้งค่า acquire_fence เป็น -1 หาก HAL ไม่เคยรอ acquire_fence เนื่องจากเกิดข้อผิดพลาดในการกรอกข้อมูลบัฟเฟอร์ เมื่อเรียกใช้ process_capture_result() แล้ว HAL ต้องตั้งค่า release_fence ของบัฟเฟอร์เป็น acquire_fence ที่เฟรมเวิร์กส่งให้ ซึ่งจะช่วยให้เฟรมเวิร์กรอก่อนที่จะใช้บัฟเฟอร์ซ้ำ
สำหรับบัฟเฟอร์อินพุต HAL ต้องไม่เปลี่ยนช่อง acquire_fence ระหว่างการเรียก process_capture_request()
>= CAMERA_DEVICE_API_VERSION_3_2:
เมื่อ HAL ส่งบัฟเฟอร์อินพุตไปยังเฟรมเวิร์กด้วย process_capture_result() จะต้องตั้งค่า acquire_fence เป็น -1 หาก HAL ไม่เคยรอรั้วการจองบัฟเฟอร์อินพุตเนื่องจากข้อผิดพลาด ระบบควรจัดการรั้วการซิงค์ในลักษณะเดียวกับที่จัดการสำหรับบัฟเฟอร์เอาต์พุต
คําจํากัดความที่บรรทัด
1800
ของไฟล์
camera3.h
.
แฮนเดิลเนทีฟไปยังบัฟเฟอร์
คําจํากัดความที่บรรทัด
1764
ของไฟล์
camera3.h
.
รั้วการซิงค์รุ่นสำหรับบัฟเฟอร์นี้ HAL ต้องตั้งค่ารั้วนี้เมื่อส่งคืนบัฟเฟอร์ไปยังเฟรมเวิร์ก หรือเขียน -1 เพื่อระบุว่าไม่ต้องรอบัฟเฟอร์นี้
สำหรับบัฟเฟอร์เอาต์พุต คุณต้องตั้งค่ารั้วในอาร์เรย์ output_buffers ที่ส่งไปยัง process_capture_result()
<= CAMERA_DEVICE_API_VERSION_3_1:
สําหรับบัฟเฟอร์อินพุต คุณต้องตั้งค่ารั้วการปล่อยโดยคําเรียก process_capture_request()
>= CAMERA_DEVICE_API_VERSION_3_2:
สำหรับบัฟเฟอร์อินพุต คุณต้องตั้งค่ารั้วใน input_buffer ที่ส่งไปยัง process_capture_result()
หลังจากส่งสัญญาณ release_fence สําหรับบัฟเฟอร์นี้แล้ว HAL ไม่ควรพยายามเข้าถึงบัฟเฟอร์นี้อีก เนื่องจากมีการโอนการเป็นเจ้าของกลับไปให้เฟรมเวิร์กแล้ว
หากระบุรั้วเป็น -1 ระบบจะโอนการเป็นเจ้าของบัฟเฟอร์นี้กลับทันทีเมื่อมีการเรียกใช้ process_capture_result
คําจํากัดความที่บรรทัด
1827
ของไฟล์
camera3.h
.
สถานะปัจจุบันของบัฟเฟอร์ ซึ่งเป็นค่า camera3_buffer_status_t ค่าใดค่าหนึ่ง เฟรมเวิร์กจะไม่ส่งบัฟเฟอร์ไปยัง HAL ที่อยู่ในสถานะข้อผิดพลาด ในกรณีที่ HAL ไม่สามารถกรอกข้อมูลบัฟเฟอร์ได้ จะต้องตั้งค่าสถานะเป็น CAMERA3_BUFFER_STATUS_ERROR เมื่อส่งกลับไปยังเฟรมเวิร์กด้วย process_capture_result()
คําจํากัดความที่บรรทัด
1773
ของไฟล์
camera3.h
.
แฮนเดิลของสตรีมที่บัฟเฟอร์นี้เชื่อมโยงอยู่
คําจํากัดความที่บรรทัด
1759
ของไฟล์
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_stream_buffer Struct Reference\n\ncamera3_stream_buffer Struct Reference\n======================================\n\n[Data Fields](#pub-attribs) \ncamera3_stream_buffer 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| [camera3_stream_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\* | [stream](/reference/hal/structcamera3__stream__buffer#afaf6c85f165b4180fe63affae0232dad) |\n| ||\n| buffer_handle_t \\* | [buffer](/reference/hal/structcamera3__stream__buffer#ab87cddef201db642e7972d124d741dc2) |\n| ||\n| int | [status](/reference/hal/structcamera3__stream__buffer#a6e27f49150e9a14580fb313cc2777e00) |\n| ||\n| int | [acquire_fence](/reference/hal/structcamera3__stream__buffer#a5d59e0770b54af97a9fe151da5688719) |\n| ||\n| int | [release_fence](/reference/hal/structcamera3__stream__buffer#a248e5f7856e4c2877715fc9fda8d8ba8) |\n| ||\n\n\nDetailed Description\n--------------------\n\n\ncamera3_stream_buffer_t:\n\n\nA single buffer from a camera3 stream. It includes a handle to its parent stream, the handle to the gralloc buffer itself, and sync fences\n\n\nThe buffer does not specify whether it is to be used for input or output; that is determined by its parent stream type and how the buffer is passed to the HAL device.\n\n\nDefinition at line\n[1755](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| int acquire_fence |\n\n\nThe acquire sync fence for this buffer. The HAL must wait on this fence fd before attempting to read from or write to this buffer.\n\n\nThe framework may be set to -1 to indicate that no waiting is necessary for this buffer.\n\n\nWhen the HAL returns an output buffer to the framework with process_capture_result(), the acquire_fence must be set to -1. If the HAL never waits on the acquire_fence due to an error in filling a buffer, when calling process_capture_result() the HAL must set the release_fence of the buffer to be the acquire_fence passed to it by the framework. This will allow the framework to wait on the fence before reusing the buffer.\n\n\nFor input buffers, the HAL must not change the acquire_fence field during the process_capture_request() call.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nWhen the HAL returns an input buffer to the framework with process_capture_result(), the acquire_fence must be set to -1. If the HAL never waits on input buffer acquire fence due to an error, the sync fences should be handled similarly to the way they are handled for output buffers.\n\n\nDefinition at line\n[1800](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| buffer_handle_t\\* buffer |\n\n\nThe native handle to the buffer\n\n\nDefinition at line\n[1764](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| int release_fence |\n\n\nThe release sync fence for this buffer. The HAL must set this fence when returning buffers to the framework, or write -1 to indicate that no waiting is required for this buffer.\n\n\nFor the output buffers, the fences must be set in the output_buffers array passed to process_capture_result().\n\n\n\\\u003c= CAMERA_DEVICE_API_VERSION_3_1:\n\n\nFor the input buffer, the release fence must be set by the process_capture_request() call.\n\n\n\\\u003e= CAMERA_DEVICE_API_VERSION_3_2:\n\n\nFor the input buffer, the fences must be set in the input_buffer passed to process_capture_result().\n\n\nAfter signaling the release_fence for this buffer, the HAL should not make any further attempts to access this buffer as the ownership has been fully transferred back to the framework.\n\n\nIf a fence of -1 was specified then the ownership of this buffer is transferred back immediately upon the call of process_capture_result.\n\n\nDefinition at line\n[1827](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| int status |\n\n\nCurrent state of the buffer, one of the camera3_buffer_status_t values. The framework will not pass buffers to the HAL that are in an error state. In case a buffer could not be filled by the HAL, it must have its status set to CAMERA3_BUFFER_STATUS_ERROR when returned to the framework with process_capture_result().\n\n\nDefinition at line\n[1773](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| [camera3_stream_t](https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h) \\* stream |\n\n\nThe handle of the stream this buffer is associated with\n\n\nDefinition at line\n[1759](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)"]]