camera3_stream_buffer 結構參考資料

camera3_stream_buffer 結構體參考資料

#include < camera3.h >

資料欄位

camera3_stream_t stream
 
buffer_handle_t *  緩衝區
 
int  狀態
 
int  acquire_fence
 
int  release_fence
 

詳細說明

camera3_stream_buffer_t:

來自 camera3 串流的單一緩衝區。其中包含父項串流的處理常式、gralloc 緩衝區本身的處理常式,以及同步化圍欄

緩衝區不會指定要用於輸入還是輸出;這會由其父項串流類型和緩衝區如何傳遞至 HAL 裝置來決定。

定義位於檔案 camera3.h 1755 行。

欄位說明文件

int acquire_fence

此緩衝區的取得同步化圍欄。HAL 必須先等待此柵欄 fd,才能嘗試讀取或寫入此緩衝區。

架構可能會設為 -1,表示這個緩衝區不需要等待。

當 HAL 透過 process_capture_result() 將輸出緩衝區傳回至架構時,acquire_fence 必須設為 -1。如果 HAL 因填入緩衝區時發生錯誤,而從未等待 acquire_fence,則在呼叫 process_capture_result() 時,HAL 必須將緩衝區的 release_fence 設為架構傳遞給它的 acquire_fence。這麼做可讓架構在重複使用緩衝區之前,先等待柵欄。

針對輸入緩衝區,HAL 不得在 process_capture_request() 呼叫期間變更 acquire_fence 欄位。

>= CAMERA_DEVICE_API_VERSION_3_2:

當 HAL 透過 process_capture_result() 將輸入緩衝區傳回至架構時,acquire_fence 必須設為 -1。如果 HAL 因為錯誤而從未等待輸入緩衝區取得柵欄,則應以與處理輸出緩衝區相同的方式處理同步柵欄。

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

buffer_handle_t* buffer

緩衝區的原生句柄

定義位於檔案 camera3.h 1764 行。

int release_fence

此緩衝區的釋放同步柵欄。HAL 必須在將緩衝區傳回至架構時設定此柵欄,或寫入 -1 來表示此緩衝區不需要等待。

對於輸出緩衝區,必須在傳遞至 process_capture_result() 的 output_buffers 陣列中設定柵欄。

<= CAMERA_DEVICE_API_VERSION_3_1:

對於輸入緩衝區,必須透過 process_capture_request() 呼叫來設定釋放柵欄。

>= CAMERA_DEVICE_API_VERSION_3_2:

對於輸入緩衝區,必須在傳遞至 process_capture_result() 的 input_buffer 中設定柵欄。

為此緩衝區發出 release_fence 信號後,HAL 不應再嘗試存取此緩衝區,因為擁有權已完全轉移回架構。

如果指定的邊界為 -1,則在呼叫 process_capture_result 時,這個緩衝區的擁有權會立即轉移回來。

定義位於檔案 camera3.h 1827 行。

int status

緩衝區目前的狀態,為 camera3_buffer_status_t 值之一。架構不會將緩衝區傳遞至處於錯誤狀態的 HAL。如果 HAL 無法填入緩衝區,則必須在使用 process_capture_result() 傳回至架構時,將其狀態設為 CAMERA3_BUFFER_STATUS_ERROR。

定義位於檔案 camera3.h 1773 行。

這個緩衝區所關聯的串流處理常式

定義位於檔案 camera3.h 1759 行。


這個結構體的說明文件是由下列檔案產生: