camera2_request_queue_src_ops結構參考
camera2_request_queue_src_ops結構參考
#include < camera2.h >
資料欄位 | |
整數(* | request_count )(const structcamera2_request_queue_src_ops *q) |
整數(* | dequeue_request )(常數結構camera2_request_queue_src_ops *q, camera_metadata_t **緩衝區) |
整數(* | free_request )(常數結構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 接收到 NULL 傳回,則無需再次查詢佇列,直到從來源接收到 notification_request_queue_not_empty() 呼叫。
- 如果裝置呼叫 buffer_count() 並接收到 0,這並不表示框架將提供 notification_request_queue_not_empty() 呼叫。框架僅在設備從出隊接收到 NULL 後或在初始啟動時才會提供此類通知。
- 回應於notify_request_queue_not_empty()的dequeue()呼叫可以與notify_request_queue_not_empty()呼叫在同一執行緒上,並且可以從notify呼叫內執行。
- 所有出隊的請求緩衝區必須透過呼叫 free_request 返回框架,包括發生錯誤、請求裝置刷新或裝置關閉時。
現場文檔
int(* dequeue_request)(常數結構camera2_request_queue_src_ops * q, camera_metadata_t **緩衝區) |
從框架取得元資料緩衝區。如果沒有錯誤則傳回 OK。如果佇列為空,則在緩衝區中傳回 NULL。在這種情況下,設備必須等待notify_request_queue_not_empty()訊息,然後才能再次嘗試出隊。以這種方式獲得的緩衝區必須使用free_request()返回框架。
int(* free_request)(常數結構camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer) |
int(* request_count)(const structcamera2_request_queue_src_ops *q) |
該結構的文檔是從以下文件產生的: