camera3_stream結構參考
#include < camera3.h >
資料欄位 | |
整數 | 流類型 |
uint32_t | 寬度 |
uint32_t | 高度 |
整數 | 格式 |
uint32_t | 用法 |
uint32_t | 最大緩衝區數 |
空白 * | 私人 |
android_dataspace_t | 資料空間 |
整數 | 迴轉 |
空白 * | 保留[7] |
詳細說明
相機3_stream_t:
單一相機輸入或輸出流的句柄。流由框架透過其緩衝區解析度和格式定義,此外還由具有 gralloc 使用標誌和最大運行中緩衝區計數的 HAL 定義。
流結構由框架擁有,但透過configure_streams()傳遞到HAL的指向camera3_stream的指標一直有效,直到第一個後續configure_streams()呼叫結束(不包含該camera3_stream作為參數),或直到close() 呼叫。
一旦camera3_stream被傳遞到configure_streams()中,所有camera3_stream框架控制的成員都是不可變的。 HAL 只能在 configure_streams() 呼叫期間更改 HAL 控制的參數,私有指標的內容除外。
如果configure_streams()呼叫傳回非致命錯誤,則所有活動流程仍然有效,就像configure_streams()未被呼叫一樣。
流的端點對於相機 HAL 裝置不可見。在 DEVICE_API_VERSION_3_1 中,這已變更為在相機作為生產者的流上共用消費者使用標誌(輸出和雙向流類型),請參閱下方的使用欄位。
現場文檔
android_dataspace_t 資料空間 |
描述緩衝區內容的欄位。格式和緩衝區維度定義了流緩衝區的記憶體佈局和結構,而資料空間定義了緩衝區內資料的含義。
對於大多數格式,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 必須使用此資料空間將串流配置為正確的色彩空間,或在支援的色彩和深度輸出之間進行選擇。資料空間值是graphics.h中的舊定義
>= CAMERA_DEVICE_API_VERSION_3_4:
始終由相機服務設定。 HAL 必須使用此資料空間將串流配置為正確的色彩空間,或在支援的色彩和深度輸出之間進行選擇。資料空間值是使用graphics.h中的V0資料空間定義設定的
整數格式 |
此流中緩衝區的像素格式。 Format 是來自 system/core/include/system/graphics.h 中的 HAL_PIXEL_FORMAT_* 清單或來自裝置特定標頭的值。
如果使用 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,則平台 gralloc 模組將根據相機裝置和串流的另一個端點提供的使用標誌來選擇格式。
<= CAMERA_DEVICE_API_VERSION_3_1:
如有必要,相機 HAL 裝置必須檢查在後續的 register_stream_buffers() 呼叫中傳遞給它的緩衝區,以取得特定於實作的格式詳細資訊。
>= CAMERA_DEVICE_API_VERSION_3_2:
框架不會呼叫 register_stream_buffers(),因此 HAL 應純粹根據已配置流的大小、使用標誌和格式來配置 ISP 和感測器管道。
整數旋轉 |
流所需的輸出旋轉,camera3_stream_rotation_t 值之一。 HAL 必須對此進行檢查以及流量的寬度和高度。例如,如果旋轉為 90 度,流動寬度和高度分別為 720 和 1280,則相機服務將提供大小為 720x1280 的緩衝區,HAL 應擷取 1280x720 影像並將影像逆時針旋轉 90 度。當輸入流類型時,旋轉欄位是無操作的。相機 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() 呼叫一定不會因不支援的旋轉而失敗。
uint32_t 用法 |
根據 HAL 的需要,該流的 gralloc 使用標誌。使用標誌在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必須使用其使用標誌覆寫該欄位。
該結構的文檔是從以下文件產生的: