ข้อมูลอ้างอิงเกี่ยวกับโครงสร้าง camera3_stream_buffer
#include <
camera3.h
>
ฟิลด์ข้อมูล |
|
camera3_stream_t * | stream |
buffer_handle_t * | buffer |
int | status |
int | acquire_fence |
int | release_fence |
คำอธิบายโดยละเอียด
camera3_stream_buffer_t:
บัฟเฟอร์เดียวจากสตรีมกล้อง 3 ซึ่งประกอบด้วยแฮนเดิลสตรีมหลัก แฮนเดิลบัฟเฟอร์ gralloc เอง และรั้วการซิงค์
บัฟเฟอร์ไม่ได้ระบุว่าจะใช้สำหรับอินพุตหรือเอาต์พุต ขึ้นอยู่กับประเภทสตรีมหลักและวิธีที่ระบบส่งบัฟเฟอร์ไปยังอุปกรณ์ HAL
เอกสารประกอบในสนาม
int acquire_fence |
รั้วการซิงค์ที่รับสำหรับบัฟเฟอร์นี้ 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 ไม่เคยรอรั้วการจองบัฟเฟอร์อินพุตเนื่องจากข้อผิดพลาด ระบบควรจัดการรั้วการซิงค์ในลักษณะเดียวกับที่จัดการสำหรับบัฟเฟอร์เอาต์พุต
int release_fence |
รั้วการซิงค์รุ่นสำหรับบัฟเฟอร์นี้ 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
สถานะ int |
สถานะปัจจุบันของบัฟเฟอร์ ซึ่งเป็นค่า camera3_buffer_status_t ค่าใดค่าหนึ่ง เฟรมเวิร์กจะไม่ส่งบัฟเฟอร์ไปยัง HAL ที่อยู่ในสถานะข้อผิดพลาด ในกรณีที่ HAL ไม่สามารถกรอกข้อมูลบัฟเฟอร์ได้ จะต้องตั้งค่าสถานะเป็น CAMERA3_BUFFER_STATUS_ERROR เมื่อส่งกลับไปยังเฟรมเวิร์กด้วย process_capture_result()
camera3_stream_t * stream |
เอกสารประกอบสำหรับโครงสร้างนี้สร้างขึ้นจากไฟล์ต่อไปนี้
- hardware/libhardware/include/hardware/ camera3.h