diff --git a/package/android/src/main/java/com/mrousavy/camera/core/CameraError.kt b/package/android/src/main/java/com/mrousavy/camera/core/CameraError.kt index d11f18fb0b..6b1c1e4000 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/CameraError.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/CameraError.kt @@ -108,11 +108,11 @@ class PhotoHdrAndVideoHdrNotSupportedSimultaneously : "photo-hdr-and-video-hdr-not-suppoted-simultaneously", "Photo HDR and Video HDR are not supported simultaneously! Disable either `videoHdr` or `photoHdr`." ) -class LowLightBoostNotSupportedWithVideoHdr : +class LowLightBoostNotSupportedWithHdr : CameraError( "format", - "low-light-boost-not-supported-with-video-hdr", - "The low light boost extension does not work when video HDR is enabled! Disable either `lowLightBoost` or `videoHdr`." + "low-light-boost-not-supported-with-hdr", + "The low light boost extension does not work when HDR is enabled! Disable either `lowLightBoost` or `videoHdr`/`photoHdr`." ) class VideoNotEnabledError : diff --git a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt index b5d450ee88..de26257c7d 100644 --- a/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt +++ b/package/android/src/main/java/com/mrousavy/camera/core/CameraSession.kt @@ -372,7 +372,8 @@ class CameraSession(private val context: Context, private val callback: Callback val isStreamingHDR = useCases.any { !it.currentConfig.dynamicRange.isSDR } val needsImageAnalysis = codeScannerOutput != null val photoOptions = configuration.photo as? CameraConfiguration.Output.Enabled - if (photoOptions != null && photoOptions.config.enableHdr) { + val enableHdrExtension = photoOptions != null && photoOptions.config.enableHdr + if (enableHdrExtension) { if (isStreamingHDR) { // extensions don't work if a camera stream is running at 10-bit HDR. throw PhotoHdrAndVideoHdrNotSupportedSimultaneously() @@ -383,7 +384,11 @@ class CameraSession(private val context: Context, private val callback: Callback if (configuration.enableLowLightBoost) { if (isStreamingHDR) { // extensions don't work if a camera stream is running at 10-bit HDR. - throw LowLightBoostNotSupportedWithVideoHdr() + throw LowLightBoostNotSupportedWithHdr() + } + if (enableHdrExtension) { + // low-light boost does not work when another HDR extension is already applied + throw LowLightBoostNotSupportedWithHdr() } // Load night mode Vendor extension (only applies to image capture) cameraSelector = cameraSelector.withExtension(context, provider, needsImageAnalysis, ExtensionMode.NIGHT, "NIGHT") diff --git a/package/src/CameraError.ts b/package/src/CameraError.ts index 6567ede335..23728ef2c6 100644 --- a/package/src/CameraError.ts +++ b/package/src/CameraError.ts @@ -18,7 +18,7 @@ export type FormatError = | 'format/invalid-fps' | 'format/invalid-video-hdr' | 'format/photo-hdr-and-video-hdr-not-suppoted-simultaneously' - | 'format/low-light-boost-not-supported-with-video-hdr' + | 'format/low-light-boost-not-supported-with-hdr' | 'format/invalid-video-stabilization-mode' | 'format/incompatible-pixel-format-with-hdr-setting' | 'format/invalid-format'