相機散景

相機散景是一種淺景深效果,會模糊處理場景中的某些部分,使其不會成為焦點。在行動裝置的相機上,散景效果是透過從兩部相機的立體視覺或單一相機的雙光電二極體 (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_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() 方法,避免針對不需要重新設定的擴充場景模式進行重新設定。

驗證

如要驗證裝置上的 bokeh 功能,請執行下列 CTS、VTS 和 CTS Verifier 測試:

  • CtsCameraTestCases
  • VtsHalCameraProviderV2_4TargetTest
  • CTS Verifier 中的 CameraBokehTest