camera3_stream 結構參考資料

camera3_stream 結構參考資料

#include < camera3.h >

資料欄位

int  stream_type
 
uint32_t width
 
uint32_t height
 
int  格式
 
uint32_t 用量
 
uint32_t max_buffers
 
void *  priv
 
android_dataspace_t data_space
 
int  旋轉
 
void *  保留 [7]
 

詳細說明

camera3_stream_t:

單一攝影機輸入或輸出串流的句柄。此串流是由架構透過緩衝區解析度和格式定義,並且由 HAL 透過 gralloc 用法旗標和最大飛行中緩衝區數量定義。

串流結構體由架構擁有,但由 configure_streams() 傳遞至 HAL 的 camera3_stream 指標,在第一個後續的 configure_streams() 呼叫結束前 ( 不包含該 camera3_stream 做為引數) 或 close() 呼叫結束前,都有效。

一旦將 camera3_stream 傳入 configure_streams() 後,所有 camera3_stream 架構控制成員都會變得不可變動。在 configure_streams() 呼叫期間,HAL 只能變更 HAL 控制的參數,私人指標的內容除外。

如果 configure_streams() 呼叫傳回非致命錯誤,所有有效的串流都會保持有效,就好像未呼叫 configure_streams() 一樣。

攝影機 HAL 裝置無法看到串流的端點。在 DEVICE_API_VERSION_3_1 中,這項設定已變更為在相機為產生者 (OUTPUT 和 BIDIRECTIONAL 串流類型) 的串流上共用使用者用途旗標,請參閱下方的用途欄位。

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

欄位說明文件

android_dataspace_t data_space

用來描述緩衝區內容的欄位。格式和緩衝區維度會定義串流緩衝區的記憶體配置和結構,而 dataSpace 則會定義緩衝區內資料的意義。

對於大多數格式,dataSpace 會定義圖片資料的色彩空間。此外,針對某些格式,dataSpace 會指出是否要求圖像或深度資料。如需格式詳細資料和每個格式的有效 dataSpace 值,請參閱 system/core/include/system/graphics.h。

版本資訊:

< CAMERA_DEVICE_API_VERSION_3_3:

未定義,且不應存取。dataSpace 應假設為 HAL_DATASPACE_UNKNOWN,而適當的色域等應根據用途旗標和格式決定。

= CAMERA_DEVICE_API_VERSION_3_3:

一律由攝影機服務設定。HAL 必須使用這個 dataSpace,將串流設定為正確的色彩空間,或在支援的情況下,選擇顏色和深度輸出。資料空間值是 graphics.h 中的舊定義。

>= CAMERA_DEVICE_API_VERSION_3_4:

一律由攝影機服務設定。HAL 必須使用這個 dataSpace,將串流設定為正確的色彩空間,或在支援的情況下,選擇顏色和深度輸出。使用 graphics.h 中的 V0 資料空間定義設定資料空間值。

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

int 格式

這個串流中緩衝區的像素格式。格式是 system/core/include/system/graphics.h 或裝置專屬標頭中的 HAL_PIXEL_FORMAT_* 清單值。

如果使用 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,平台 gralloc 模組會根據相機裝置和串流的其他端點提供的用途標記,選取格式。

<= CAMERA_DEVICE_API_VERSION_3_1:

相機 HAL 裝置必須在後續 register_stream_buffers() 呼叫中檢查交給它的緩衝區,以便在必要時取得特定實作格式的詳細資料。

>= CAMERA_DEVICE_API_VERSION_3_2:

架構不會呼叫 register_stream_buffers(),因此 HAL 應只根據已設定串流的大小、用途標記和格式,設定 ISP 和感應器管道。

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

uint32_t height

此串流中緩衝區的高度 (以像素為單位)

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

uint32_t max_buffers

HAL 裝置可能需要同時取消排隊的緩衝區數量上限。HAL 裝置可能不會在這個串流中,有比這個值更多的緩衝區。

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

void* priv

此為串流的 HAL 私有資訊句柄。不會由架構程式碼檢查。

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

void* reserved[7]

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

int rotation

串流的必要輸出旋轉角度,為 camera3_stream_rotation_t 值之一。HAL 必須檢查這項資訊,以及串流的寬度和高度。舉例來說,如果旋轉角度為 90 度,且串流寬度和高度分別為 720 和 1280,相機服務會提供大小為 720x1280 的緩衝區,而 HAL 應擷取 1280x720 的圖片,並將圖片旋轉 90 度逆時針。當串流類型為輸入時,旋轉欄位會無操作。Camera HAL 必須忽略輸入串流的旋轉欄位。

<= CAMERA_DEVICE_API_VERSION_3_2:

未定義,且不得存取。HAL 不得對輸出圖片套用任何旋轉效果。

>= CAMERA_DEVICE_API_VERSION_3_3:

一律由攝影機服務設定。HAL 必須在串流設定期間檢查這個欄位,如果 HAL 無法執行此旋轉作業,則會傳回 -EINVAL。HAL 一律必須支援 CAMERA3_STREAM_ROTATION_0,因此如果所有串流的旋轉欄位為 CAMERA3_STREAM_ROTATION_0,則 configure_streams() 呼叫不得因不支援的旋轉而失敗。

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

int stream_type

串流類型,為 camera3_stream_type_t 值之一。

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

uint32_t 用法

這個串流的 gralloc 用法旗標,視 HAL 的需求而定。使用量標記是在 gralloc.h (GRALLOC_USAGE_*) 或裝置專屬標頭中定義。

對於輸出串流,這些是 HAL 的產生器用法旗標。對於輸入串流,這些是 HAL 的使用者用途旗標。供應者和使用者使用的標記會合併,然後傳遞至平台 gralloc HAL 模組,為每個串流分配 gralloc 緩衝區。

版本資訊:

== CAMERA_DEVICE_API_VERSION_3_0:

透過 configure_streams() 傳遞時,系統不會保證有初始值。HAL 可能不會使用這個欄位做為輸入,且必須使用其使用旗標覆寫這個欄位。

>= CAMERA_DEVICE_API_VERSION_3_1:

如果 stream_type 為 OUTPUT 和 BIDIRECTIONAL,透過 configure_streams() 傳遞時,初始值即為使用者的使用標記。HAL 可能會使用這些消費者標記來決定串流設定。如果 stream_type 為 INPUT,透過 configure_streams() 傳遞時,這個值的初始值為 0。對於透過 configure_streams() 傳遞的所有串流,HAL 必須使用其用途標記覆寫這個欄位。

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

uint32_t width

此串流中緩衝區的寬度 (以像素為單位)

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


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