相機散景效果是一種淺景深度效果,透過模糊處理畫面中的部分畫面,讓畫面模糊不清。在行動裝置的相機上,系統會使用從兩部相機的立體視覺或單一相機的雙光電二極體 (PD) 取得的深度資訊,產生散景效果。
自 Android 11 起,Android 平台支援 bokeh 實作,並提供 API,讓第三方應用程式可使用這項功能。
實作
如要在裝置上使用相機散景功能,請按照下列步驟操作:
廣告
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
:這個標記的格式為三個整數元組陣列,每個元組的格式為
{mode, maxWidth, maxHeight}
。除了{ANDROID_CONTROL_EXTENDED_SCENE_MODE_DISABLED, 0, 0}
之外,相機 HAL 也必須列出ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_STILL_CAPTURE
和ANDROID_CONTROL_EXTENDED_SCENE_MODE_BOKEH_CONTINUOUS
模式 (或兩者皆列出),並附上相應的最大串流大小。廣告
ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_ZOOM_RATIO_RANGES
:這個標記的格式為
{minZoomRatio, maxZoomRatio}
陣列,其中包含已啟用擴充場景模式的所有縮放比例範圍,順序與ANDROID_CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_MAX_SIZES
相同。如果縮放範圍為[1.0, 1.0]
,表示系統不支援縮放。在
ANDROID_CONTROL_AVAILABLE_MODES
中填入ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
。
應用程式必須將 ANDROID_CONTROL_MODE
設為 ANDROID_CONTROL_USE_EXTENDED_SCENE_MODE
,並將 ANDROID_CONTROL_EXTENDED_SCENE_MODE
設為支援的擴充場景模式,才能觸發散景功能。請注意,實作 bokeh 可能會因立體運算而導致額外的記憶體用量。
如果無法為每個影格套用支援的擴充場景模式,且啟用/停用時會導致意外延遲,請在 ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
中加入 ANDROID_CONTROL_EXTENDED_SCENE_MODE
。同時,請實作 ICameraDeviceSession::isReconfigurationRequired()
方法,避免針對不需要重新設定的擴充場景模式進行重新設定。
驗證
如要驗證裝置上的 bokeh 功能,請執行下列 CTS、VTS 和 CTS Verifier 測試:
CtsCameraTestCases
VtsHalCameraProviderV2_4TargetTest
- CTS Verifier 中的
CameraBokehTest