相機散景

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