Tham chiếu cấu trúc camera2_request_queue_src_ops

Tham chiếu cấu trúc camera2_request_queue_src_ops

#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)
 

Nội dung mô tả chi tiết

Yêu cầu giao thức hàng đợi đầu vào:

Khung này chứa hàng đợi và nội dung của hàng đợi. Ban đầu, hàng đợi này sẽ trống.

  1. Khi vùng đệ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 notify_request_queue_not_empty().
  2. Sau khi nhận được notify_request_queue_not_empty, thiết bị phải gọi dequeue() khi đã sẵn sàng xử lý bộ đệm tiếp theo.
  3. Sau khi xử lý một 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 vùng đệm nào, dequeue() sẽ trả về NULL. Sau thời điểm này, khi có bộ đệm, khung phải gọi lại notify_request_queue_not_empty(). Nếu nhận được giá trị trả về NULL từ thao tác xoá khỏi hàng đợi, 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 notify_request_queue_not_empty() từ nguồn.
  4. 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 notify_request_queue_not_empty(). Khung này sẽ chỉ cung cấp thông báo như vậy sau khi thiết bị nhận được NULL từ thao tác xoá hàng đợi hoặc khi khởi động ban đầu.
  5. Lệnh gọi dequeue() để phản hồi notify_request_queue_not_empty() có thể nằm trên cùng một luồng với lệnh gọi notify_request_queue_not_empty() và có thể được thực hiện từ bên trong lệnh gọi thông báo.
  6. Tất cả vùng đệm yêu cầu đã loại bỏ khỏi hàng đợi phải được trả về khung bằng cách gọi free_request, bao gồm cả khi xảy ra lỗi, yêu cầu xoá sạch thiết bị hoặc khi thiết bị đang tắt.

Định nghĩa tại dòng 220 của tệp camera2.h .

Tài liệu về trường

int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer)

Lấy vùng đệ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ề giá trị NULL trong vùng đệm. Trong trường hợp đó, thiết bị phải đợi thông báo notify_request_queue_not_empty() trước khi thử loại bỏ khỏi hàng đợi lại. Các vùng đệm thu được theo cách này phải được trả về khung bằng free_request() .

Định nghĩa tại dòng 237 của tệp camera2.h .

int(* free_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

Trả về vùng đệm siêu dữ liệu cho khung sau khi sử dụng hoặc nếu xảy ra lỗi hoặc tắt.

Định nghĩa tại dòng 243 của tệp camera2.h .

int(* request_count)(const struct camera2_request_queue_src_ops *q)

Lấy số lượng vùng đệ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 truyền trực tuyến) hiện đang được định cấu hình. Việc gọi phương thức này không ảnh hưởng đến việc khung có gọi phương thức notify_request_queue_not_empty() hay không.

Định nghĩa tại dòng 228 của tệp camera2.h .


Tài liệu cho cấu trúc này được tạo từ tệp sau: