串流設定

Android 具有允許相機用戶端的功能 以便選擇最適合的相機 以及確保特定串流組合 都受到相機裝置支援串流設定是指 在相機裝置上設定的攝影機串流,串流組合則是指 攝影機裝置中設定的一或多組串流數量。如要進一步瞭解 這些功能,請見 建議的串流設定透過 API 查詢特徵組合

參照實作

我們採用供應商端的建議設定實作方式 和 API 來查詢串流組合功能您可以 導入 QCamera3HWI.cpp

攝影機供應商可針對特定用途宣傳建議的串流設定 要將案件提供給相機用戶端這些建議的串流設定 子集 StreamConfigurationMap 可以協助相機用戶端選擇最佳設定。

雖然 StreamConfigurationMap 向相機用戶端提供詳盡的串流設定資訊 沒有提供任何關於效率、電力或效能的資訊 選擇串流的影響相機用戶端可自由選擇 所有可能的串流設定,但在許多情況下,這會導致 客戶的相機設定和應用程式 非常耗時的詳盡搜尋

例如,雖然部分經過處理的 YUV 格式是必要的 因此相機裝置可能未針對這些格式提供原生支援。這個 會產生額外的格式轉換處理過程,並減少 效率。尺寸和對應的顯示比例也可以 因此,就讓某些維度的權力和影響力 才需進行

建議的串流設定對應關係不需要完整詳盡 與 StreamConfigurationMap。 建議的設定對應必須符合 部分,且可包含 廣告空間有哪些格式、大小或其他值 StreamConfigurationMap。 在 StreamConfigurationMap 中找不到隱藏的格式、大小或其他值 無法加入建議的串流設定對應。

所有測試都會維持不變,而且不需根據建議設定放寬限制 串流設定。

以下為實作相機提供的建議串流設定: 選用,而相機用戶端可以忽略這些參數。

實作

請按照下列步驟實作這項功能。

中繼資料項目

如要啟用此功能,相機 HAL 必須填入下列靜態資料 中繼資料項目:

  • android.scaler.availableRecommendedStreamConfigurations: 針對特定用途,建議一部分的串流設定。 宣告會利用點陣圖指出 [1 << PREVIEW | 1 << RECORD..] 的形式。用途擴充了 一般 (格式、寬度、高度、輸入) 元組,並加入一項額外項目。 非現有公開用途,或是範圍中設定的其他位元 禁止使用 [PUBLIC_END, VENDOR_START]

    這類資訊會儲存在 availableRecommendedStreamConfigurations敬上 中繼資料標記。

    以下範例顯示建議串流的陣列 且僅支援 4K 和 1080p 畫質的相機裝置,其中 兩種解析度都適合錄影,但只支援 1080p 建議用於預覽。

    [3840, 2160, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT),
    1920, 1080, HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
    ANDROID_SCALER_AVAILABLE_STREAM_CONFIGURATIONS_OUTPUT,
    (1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_PREVIEW |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_RECORD |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_SNAPSHOT |
    1 << ANDROID_SCALER_AVAILABLE_RECOMMENDED_STREAM_CONFIGURATIONS_VIDEO_SNAPSHOT)]
    
  • android.depth.availableRecommendedDepthStreamConfigurations (僅適用於裝置支援):建議的深度資料空間 這部攝影機裝置建議的串流設定。類似於 就在中繼資料項目上方,有其他用途的點陣圖表示 具體來說,您可以設計提示來解決業務工作

    這類資訊會儲存在 availableRecommendedInputOutputFormatsMap敬上 中繼資料標記。

  • android.scaler.availableRecommendedInputOutputFormatsMap (可用 僅限裝置支援):建議圖片格式的對應建議圖片格式 推薦給這部相機裝置 以及對應的輸出格式

    這類資訊會儲存在 availableRecommendedDepthStreamConfigurations敬上 中繼資料標記。

相機用戶端可透過 RecommendedStreamConfigurationMap 也能使用 Google Cloud CLI 或 Compute Engine API

必要用途

必須為下列用途提供建議的串流設定 並符合相關規定:

用途 規定
PREVIEW 預覽只能包含不會延遲的處理串流設定 以及 YUV_420_888IMPLEMENTATION_DEFINED
RECORD 影片記錄必須包含與通告相符的串流設定 支援的媒體設定檔 格式為 IMPLEMENTATION_DEFINED
VIDEO_SNAPSHOT 影片快照必須包含的串流設定,至少須符合 最大 RECORD 解析度,且僅適用於 BLOB + DATASPACE_JFIF 格式/資料空間組合 (JPEG)。設定 應該不會造成預覽出現問題,且應能以 30 fps 放送。
SNAPSHOT 快照串流設定必須包含至少一個大小接近大小的快照 與 BLOB + android.sensor.info.activeArraySize DATASPACE_JFIF 格式/資料空間組合 (JPEG)。考量中 長寬比、一致性和其他供應商特有限制的限制; 建議大小上限的面積不應小於感應器的 97% 陣列大小區域。
ZSL (如果支援) 如果相機裝置支援,建議輸入串流設定 只能與其他已處理或延遲的輸出內容同時進行通告 格式。
RAW (如果支援) 如果相機裝置支援原始串流設定,建議採用原始串流設定 只能包含 RAW 型輸出格式。

其他使用情況

您可以針對用途,提供其他建議的設定串流 專用於您實作的特定項目

驗證

如要測試建議設定串流的實作方式,請執行 下列 CTS 和 VTS 測試:

用於查詢特徵組合的 API

從 Android 15 開始,Android 平台 用於查詢特徵組合的 API這個 API 可讓相機用戶端查詢 裝置可支援的特定功能組合。這個 API 因為 camera2 API 建構不同的功能,例如 4K、60fps HDR 影片、UlHDR、超廣角變焦和穩定技術做為立體控制。

需求條件

為支援 API 查詢特徵組合,相機 HAL 必須實作 ICameraDevice 介面第 3 版。詳情請參閱 導入一節。

支援這個 API 時,必須授予預覽穩定功能 其他功能因此適用於支援預覽的相機裝置 穩定度,傳回 isStreamCombinationWithSettingsSupported 的值 預覽穩定度時,特定組合的值必須相同。 開啟或關閉。這樣可以減少特徵組合查詢的搜尋空間。

此外,如果是媒體效能類別 15,主要後置鏡頭必須 支援 10 位元 HLG10 預覽 (1080p 和 720p) 預覽穩定功能 預覽畫面和 JPEG 的大小上限如要進一步瞭解這些規定,請參閱 區段 2.2.7.2.相機 CDD 的故事。

實作

如要支援 API 查詢特徵組合,請採用下列程式碼 功能組合查詢 API 適用於第 3 版 ICameraDevice:

若是 ICameraDevice 介面 3 以下版本,HAL 應該將 isStreamCombinationSupported 方法。

如要進一步瞭解 API 查詢的特徵組合,請參閱 有關「sessionConfigurationQueryVersion」的說明文件 system/media/camera/docs/metadata_definitions.xml

如需這項功能的參考實作,請參閱 hardware/google/camera/devices/EmulatedCamera/hwl/

公用 API

應用程式可以使用下列公用 API 查詢支援的功能組合 :

驗證

如要確認是否已導入這項功能,請使用下列 VTS、CTS 和 相機 ITS (CTS Verifier) 測試:

影片觀看體驗 (VTS)

CTS

相機 ITS