camera3_callback_ops 結構參考
#include < camera3.h >
資料欄位 | |
空白(* | process_capture_result )(const structcamera3_callback_ops *, constcamera3_capture_result_t *結果) |
空白(* | 通知)(常數結構camera3_callback_ops *,常數camera3_notify_msg_t * msg) |
詳細說明
現場文檔
void(* 通知)(const structcamera3_callback_ops *, constcamera3_notify_msg_t *msg) |
通知:
來自 HAL 的非同步通知回調,因各種原因而觸發。僅適用於與幀捕獲無關的信息,或需要特定計時的信息。訊息結構的所有權仍然屬於 HAL,且訊息只需要在此呼叫期間有效。
多個執行緒可以同時呼叫notify() 。
<= CAMERA_DEVICE_API_VERSION_3_1:
給定請求的暴露開始通知必須由 HAL 在第一次呼叫該請求的process_capture_result()之前發送。
>= CAMERA_DEVICE_API_VERSION_3_2:
在透過 SHUTTER notification()呼叫接收到曝光開始時間戳(或重新處理請求的輸入影像的曝光開始時間戳)之前,傳遞到框架的緩衝區不會被分派到應用程式層。強烈建議儘早撥打此電話。
性能要求:
這是一個非阻塞呼叫。框架將在 5 毫秒內傳回此呼叫。
void(* process_capture_result)(const structcamera3_callback_ops *, constcamera3_capture_result_t *結果) |
進程捕獲結果:
將完成的捕獲結果傳送到框架。 HAL 可能會多次呼叫process_capture_result()以回應單一擷取請求。例如,一旦可用,就可以在一次呼叫中傳回元資料和低解析度緩衝區,並在稍後的呼叫中傳回後處理的 JPEG 緩衝區。每個呼叫必須包含其傳回元資料或緩衝區的請求的幀號。
完整結果的一個組成部分(緩衝區或元資料)只能包含在一個 process_capture_result 呼叫中。即使在產生某些輸出的錯誤的情況下,HAL 也必須為 process_capture_result 呼叫之一中的每個請求傳回每個流的緩衝區以及結果元資料。不允許在沒有輸出緩衝區或結果元資料的情況下呼叫process_capture_result() 。
傳回單一結果的元資料和緩衝區的順序並不重要,但給定流的緩衝區必須以 FIFO 順序傳回。因此,流 A 的請求 5 的緩衝區必須始終在流 A 的請求 6 的緩衝區之前返回。這也適用於結果元資料;請求 5 的元資料必須在請求 6 的元資料之前返回。
然而,不同的流是相互獨立的,因此流A的請求5的緩衝區可以在流B的請求6的緩衝區之後返回是可以接受和預期的。且流B的請求6的結果元資料在流A的請求5的緩衝區之前回傳是可接受的。
HAL 保留結果結構的所有權,該結構只需要在本次呼叫期間有效即可存取。框架將在此呼叫返回之前複製所需的任何內容。
輸出緩衝區還不需要被填滿;框架將在讀取緩衝區資料之前等待流緩衝區釋放同步柵欄。因此,即使部分或全部輸出緩衝區仍在填充中,HAL 也應盡快呼叫此方法。 HAL 必須在每個 output_buffers 流緩衝區項目中包含有效的釋放同步柵欄,如果該流緩衝區已滿,則為 -1。
如果無法為請求構造結果緩衝區,則 HAL 應傳回空的元資料緩衝區,但仍提供輸出緩衝區及其同步柵欄。此外, notify()必須使用 ERROR_RESULT 訊息來呼叫。
如果輸出緩衝區無法填充,則其狀態欄位必須設定為 STATUS_ERROR。此外, notify()必須使用 ERROR_BUFFER 訊息來呼叫。
如果整個捕獲失敗,則仍然需要呼叫此方法將輸出緩衝區返回到框架。所有緩衝區狀態應為 STATUS_ERROR,且結果元資料應為空緩衝區。此外, notify()必須使用 ERROR_REQUEST 訊息來呼叫。在這種情況下,不應發送單獨的 ERROR_RESULT/ERROR_BUFFER 訊息。
性能要求:
這是一個非阻塞呼叫。框架將在 5 毫秒內傳回此呼叫。
管道延遲(定義見S7)應小於或等於4幀間隔,且必須小於或等於8幀間隔。
該結構的文檔是從以下文件產生的:
- 硬體/libhardware/include/hardware/camera3.h