camera2_request_queue_src_ops Tham khảo cấu trúc
#include < camera2.h >
Trường dữ liệu | |
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) |
miêu tả cụ thể
Yêu cầu giao thức hàng đợi đầu vào:
Khung giữ hàng đợi và nội dung của nó. Khi bắt đầu, hàng đợi trống.
- Khi bộ đệm siêu dữ liệu đầu tiên được đặt vào hàng đợi, khung sẽ báo hiệu cho thiết bị bằng cách gọi notification_request_queue_not_empty().
- Sau khi nhận được thông báo_request_queue_not_empty, thiết bị phải gọi dequeue() sau khi sẵn sàng xử lý bộ đệm tiếp theo.
- Khi thiết bị đã xử lý bộ đệm và sẵn sàng cho bộ đệm tiếp theo, thiết bị phải gọi lại dequeue() thay vì chờ thông báo. Nếu không còn bộ đệm nữa, dequeue() sẽ trả về NULL. Sau thời điểm này, khi có bộ đệm, khung phải gọi lại notification_request_queue_not_empty(). Nếu thiết bị nhận được trả về NULL từ dequeue, thiết bị không cần truy vấn lại hàng đợi cho đến khi nhận được lệnh gọi notification_request_queue_not_empty() từ nguồn.
- Nếu thiết bị gọi buffer_count() và nhận được 0, điều này không có nghĩa là khung sẽ cung cấp lệnh gọi notification_request_queue_not_empty(). Khung sẽ chỉ cung cấp thông báo như vậy sau khi thiết bị nhận được NULL từ dequeue hoặc khi khởi động lần đầu.
- Lệnh gọi dequeue() để phản hồi lại notification_request_queue_not_empty() có thể nằm trên cùng một luồng với lệnh gọi notification_request_queue_not_empty() và có thể được thực hiện từ bên trong lệnh gọi notification.
- Tất cả các bộ đệm yêu cầu đã loại bỏ hàng đợi phải được trả về khung bằng cách gọi free_request, kể cả khi xảy ra lỗi, yêu cầu xóa thiết bị hoặc khi thiết bị tắt.
Tài liệu hiện trường
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
Nhận bộ đệm siêu dữ liệu từ khung. Trả về OK nếu không có lỗi. Nếu hàng đợi trống, trả về NULL trong bộ đệm. Trong trường hợp đó, thiết bị phải đợi thông báo notification_request_queue_not_empty() trước khi thử loại bỏ hàng đợi lần nữa. Bộ đệm thu được theo cách này phải được trả về khung bằng free_request() .
int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const struct camera2_request_queue_src_ops *q) |
Lấy số lượng bộ đệm yêu cầu đang chờ xử lý trong hàng đợi. Có thể trả về CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS nếu yêu cầu lặp lại (yêu cầu luồng) hiện được định cấu hình. Việc gọi phương thức này không ảnh hưởng đến việc liệu phương thức notification_request_queue_not_empty() có được khung gọi hay không.
Tài liệu cho cấu trúc này được tạo từ tệp sau:
- phần cứng/libhardware/bao gồm/phần cứng/ camera2.h