串流設定

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 快照串流設定必須至少包含一個大小接近 android.sensor.info.activeArraySize 的 BLOB + 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 查詢地圖項目組合,請在 ICameraDevice 3 版中實作下列地圖項目組合查詢 API:

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

如要進一步瞭解 API 查詢的功能組合,請參閱 system/media/camera/docs/metadata_definitions.xml 中的 sessionConfigurationQueryVersion 說明文件。

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

公用 API

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

驗證

如要驗證您實作這項功能的結果,請使用下列 VTS、CTS 和 Camera ITS (CTS 驗證工具) 測試:

VTS

CTS

相機 ITS