camera2_request_queue_src_ops 結構體參考
camera2_request_queue_src_ops 結構體參考資料
#include <
camera2.h
>
資料欄位 |
|
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) |
詳細說明
要求輸入佇列通訊協定:
此架構會保留佇列及其內容。在開始時,佇列為空。
- 當第一個中繼資料緩衝區放入佇列時,架構會呼叫 notify_request_queue_not_empty(),向裝置發出信號。
- 收到 notify_request_queue_not_empty 後,裝置必須在準備好處理下一個緩衝區時呼叫 dequeue()。
- 裝置處理完一個緩衝區後,如果已準備好處理下一個緩衝區,就必須再次呼叫 dequeue(),而非等待通知。如果沒有可用的緩衝區,dequeue() 會傳回 NULL。此時,當緩衝區可用時,架構必須再次呼叫 notify_request_queue_not_empty()。如果裝置從 dequeue 收到空值回傳,則在從來源接收 notify_request_queue_not_empty() 呼叫之前,不需要再次查詢佇列。
- 如果裝置呼叫 buffer_count() 並收到 0,這並不表示架構會提供 notify_request_queue_not_empty() 呼叫。只有在裝置從 dequeue 收到空值,或在初始啟動時,架構才會提供這類通知。
- 回應 notify_request_queue_not_empty() 的 dequeue() 呼叫可能與 notify_request_queue_not_empty() 呼叫位於同一執行緒,且可能會在通知呼叫中執行。
- 所有已從佇列中移除的要求緩衝區都必須透過呼叫 free_request 傳回至架構,包括發生錯誤、要求裝置清除或裝置關機時。
欄位說明文件
int(* dequeue_request)(const struct camera2_request_queue_src_ops *q, camera_metadata_t **buffer) |
從架構取得中繼資料緩衝區。如果沒有錯誤,就會傳回 OK。如果佇列為空,則會在緩衝區中傳回 NULL。在這種情況下,裝置必須等待 notify_request_queue_not_empty() 訊息,才能再次嘗試移除佇列。以這種方式取得的緩衝區必須透過 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) |
這個結構體的說明文件是由下列檔案產生:
- hardware/libhardware/include/hardware/ camera2.h