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)

詳細說明

請求輸入隊列協定:

此框架保存佇列及其內容。開始時,隊列是空的。

  1. 當第一個元資料緩衝區放入佇列時,框架透過呼叫notify_request_queue_not_empty()向裝置發出訊號。
  2. 收到notify_request_queue_not_empty後,裝置必須在準備好處理下一個緩衝區時呼叫dequeue()。
  3. 一旦裝置處理完一個緩衝區並準備好處理下一個緩衝區,它必須再次呼叫 dequeue() 而不是等待通知。如果沒有更多可用緩衝區,dequeue() 將傳回 NULL。此後,當緩衝區變得可用時,框架必須再次呼叫notify_request_queue_not_empty()。如果裝置從 dequeue 接收到 NULL 傳回,則無需再次查詢佇列,直到從來源接收到 notification_request_queue_not_empty() 呼叫。
  4. 如果裝置呼叫 buffer_count() 並接收到 0,這並不表示框架將提供 notification_request_queue_not_empty() 呼叫。框架僅在設備從出隊接收到 NULL 後或在初始啟動時才會提供此類通知。
  5. 回應於notify_request_queue_not_empty()的dequeue()呼叫可以與notify_request_queue_not_empty()呼叫在同一執行緒上,並且可以從notify呼叫內執行。
  6. 所有出隊的請求緩衝區必須透過呼叫 free_request 返回框架,包括發生錯誤、請求裝置刷新或裝置關閉時。

檔案camera2.h220行的定義。

現場文檔

int(* dequeue_request)(常數結構camera2_request_queue_src_ops * q, camera_metadata_t **緩衝區)

從框架取得元資料緩衝區。如果沒有錯誤則傳回 OK。如果佇列為空,則在緩衝區中傳回 NULL。在這種情況下,設備必須等待notify_request_queue_not_empty()訊息,然後才能再次嘗試出隊。以這種方式獲得的緩衝區必須使用free_request()返回框架。

定義位於檔案camera2.h的第237行。

int(* free_request)(常數結構camera2_request_queue_src_ops *q, camera_metadata_t *old_buffer)

使用元資料緩衝區後,或發生錯誤或關閉時,將其返回框架。

檔案camera2.h243行的定義。

int(* request_count)(const structcamera2_request_queue_src_ops *q)

取得佇列中待處理的請求緩衝區的計數。如果目前配置了重複請求(串流請求),可能會傳回 CAMERA2_REQUEST_QUEUE_IS_BOTTOMLESS。呼叫此方法對於框架是否呼叫notify_request_queue_not_empty()方法沒有影響。

檔案camera2.h228行的定義。


該結構的文檔是從以下文件產生的: