相機散景是一種淺景深效果,透過模糊場景的某些部分以使它們不在焦點上而創建。在行動裝置上的相機上,散景是使用從兩台相機或單一相機的雙光電二極體 (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 Verifier 中的
CameraBokehTest
相機散景是一種淺景深效果,透過模糊場景的某些部分以使它們不在焦點上而創建。在行動裝置上的相機上,散景是使用從兩台相機或單一相機的雙光電二極體 (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 Verifier 中的
CameraBokehTest