camera3_callback_ops 結構參考

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)

詳細說明

定義位於檔案camera3.h的第2397行。

現場文檔

通知:

來自 HAL 的非同步通知回調,因各種原因而觸發。僅適用於與幀捕獲無關的信息,或需要特定計時的信息。訊息結構的所有權仍然屬於 HAL,且訊息只需要在此呼叫期間有效。

多個執行緒可以同時呼叫notify()

<= CAMERA_DEVICE_API_VERSION_3_1:

給定請求的暴露開始通知必須由 HAL 在第一次呼叫該請求的process_capture_result()之前發送。

>= CAMERA_DEVICE_API_VERSION_3_2:

在透過 SHUTTER notification()呼叫接收到曝光開始時間戳(或重新處理請求的輸入影像的曝光開始時間戳)之前,傳遞到框架的緩衝區不會被分派到應用程式層。強烈建議儘早撥打此電話。


性能要求:

這是一個非阻塞呼叫。框架將在 5 毫秒內傳回此呼叫。

定義位於檔案camera3.h的第2499行。

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幀間隔。

定義位於檔案camera3.h的第2466行。


該結構的文檔是從以下文件產生的:
  • 硬體/libhardware/include/hardware/camera3.h