相機散景

相機散景是一種淺景深效果,通過模糊場景的某些部分以使它們不在焦點上。在移動設備上的攝像頭上,散景是使用從兩個攝像頭的立體視覺或單個攝像頭的雙光電二極管 (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_CAPTUREANDROID_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