相機散景是一種淺景深效果,通過模糊場景的某些部分以使它們不在焦點上。在移動設備上的攝像頭上,散景是使用從兩個攝像頭的立體視覺或單個攝像頭的雙光電二極管 (PD) 獲取的深度信息來實現的。
從 Android 11 開始,Android 平台支持散景實現並提供 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
設置為支持的擴展場景模式之一。請注意,由於立體計算,實現散景可能會導致額外的內存消耗。
如果無法每幀應用支持的擴展場景模式並在啟用/禁用時導致意外延遲,請在ANDROID_REQUEST_AVAILABLE_SESSION_KEYS
ANDROID_CONTROL_EXTENDED_SCENE_MODE
同時,實現ICameraDeviceSession::isReconfigurationRequired()
方法,避免對不需要重新配置的擴展場景模式進行重新配置。
驗證
要驗證設備上的散景功能,請運行以下 CTS、VTS 和 CTS 驗證程序測試:
-
CtsCameraTestCases
-
VtsHalCameraProviderV2_4TargetTest
- CTS 驗證程序中的
CameraBokehTest