diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-06-03 04:34:23 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-06-03 04:34:23 +0000 |
commit | b9fbe957f2920e89bb474e570b512f6339bea280 (patch) | |
tree | 9f7dfaf331c9da4369783e710adc11ade1500fe8 | |
parent | 3527da9547dbd46223ba767eb66a1b3da550bc63 (diff) | |
parent | 0accc9893691526c09bcdd7998232d8aa50e93f2 (diff) | |
download | support-androidx-camera-release.tar.gz |
Merge "Merge cherrypicks of ['android-review.googlesource.com/2889868', 'android-review.googlesource.com/2897603', 'android-review.googlesource.com/3110022', 'android-review.googlesource.com/3109817'] into androidx-camera-release." into androidx-camera-releaseandroidx-camera-release
5 files changed, 39 insertions, 14 deletions
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java index 09f471142c5..3223bf62b41 100644 --- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java +++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java @@ -19,6 +19,7 @@ package androidx.camera.camera2.internal; import static android.content.pm.PackageManager.FEATURE_CAMERA_CONCURRENT; import static android.hardware.camera2.CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES; +import static androidx.camera.core.impl.StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED; import static androidx.camera.core.internal.utils.SizeUtil.RESOLUTION_1080P; import static androidx.camera.core.internal.utils.SizeUtil.RESOLUTION_480P; import static androidx.camera.core.internal.utils.SizeUtil.RESOLUTION_VGA; @@ -397,12 +398,11 @@ final class SupportedSurfaceCombination { * and incoming new use cases * @return a frame rate range supported by the device that is closest to targetFrameRate */ - @NonNull - private Range<Integer> getClosestSupportedDeviceFrameRate(Range<Integer> targetFrameRate, - int maxFps) { - if (targetFrameRate == null) { - return StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED; + private Range<Integer> getClosestSupportedDeviceFrameRate( + @Nullable Range<Integer> targetFrameRate, int maxFps) { + if (targetFrameRate == null || targetFrameRate.equals(FRAME_RATE_RANGE_UNSPECIFIED)) { + return FRAME_RATE_RANGE_UNSPECIFIED; } // get all fps ranges supported by device @@ -410,7 +410,7 @@ final class SupportedSurfaceCombination { mCharacteristics.get(CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES); if (availableFpsRanges == null) { - return StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED; + return FRAME_RATE_RANGE_UNSPECIFIED; } // if whole target framerate range > maxFps of configuration, the target for this // calculation will be [max,max]. @@ -422,14 +422,14 @@ final class SupportedSurfaceCombination { Math.min(targetFrameRate.getUpper(), maxFps) ); - Range<Integer> bestRange = StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED; + Range<Integer> bestRange = FRAME_RATE_RANGE_UNSPECIFIED; int currentIntersectSize = 0; for (Range<Integer> potentialRange : availableFpsRanges) { // ignore ranges completely larger than configuration's maximum fps if (maxFps >= potentialRange.getLower()) { - if (bestRange.equals(StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED)) { + if (bestRange.equals(FRAME_RATE_RANGE_UNSPECIFIED)) { bestRange = potentialRange; } // take if range is a perfect match diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ZoomControl.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ZoomControl.java index 8a30567b84e..de6458db6fe 100644 --- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ZoomControl.java +++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ZoomControl.java @@ -244,8 +244,6 @@ final class ZoomControl { return; } - updateLiveData(zoomState); - mZoomImpl.setZoomRatio(zoomState.getZoomRatio(), completer); mCamera2CameraControlImpl.updateSessionConfigSynchronous(); } diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java index 781554abe2c..c4c26825eb8 100644 --- a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java +++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java @@ -321,6 +321,20 @@ public class CaptureConfigTest { .isEqualTo(optionValue1); } + @Test + public void fpsRangeSetToBuilder_correctFpsRangeAtBuiltInstance() { + Range<Integer> fpsRange = new Range<>(7, 60); + // 1. Arrange + CaptureConfig.Builder builder = new CaptureConfig.Builder(); + + // 2. Act + builder.setExpectedFrameRateRange(fpsRange); + CaptureConfig captureConfig = builder.build(); + + // 3. Assert + assertThat(captureConfig.getExpectedFrameRateRange()).isEqualTo(fpsRange); + } + /** * A fake {@link MultiValueSet}. */ diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java index 6cf83bf42e3..02fa9f2fd94 100644 --- a/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java +++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java @@ -31,6 +31,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; /** @@ -65,6 +66,15 @@ public final class CaptureConfig { public static final Config.Option<Integer> OPTION_JPEG_QUALITY = Config.Option.create("camerax.core.captureConfig.jpegQuality", Integer.class); + /** + * Option: camerax.core.camera.resolvedFrameRate + * + * <p> The frame rate that is resolved for all use cases based on supported surface/stream spec + * combinations. + */ + private static final Config.Option<Range<Integer>> OPTION_RESOLVED_FRAME_RATE = + Config.Option.create("camerax.core.captureConfig.resolvedFrameRate", Range.class); + /** The set of {@link Surface} that data from the camera will be put into. */ final List<DeferrableSurface> mSurfaces; @@ -166,7 +176,9 @@ public final class CaptureConfig { @NonNull public Range<Integer> getExpectedFrameRateRange() { - return mExpectedFrameRateRange; + return Objects.requireNonNull( + mImplementationOptions.retrieveOption(OPTION_RESOLVED_FRAME_RATE, + StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED)); } public boolean isUseRepeatingSurface() { @@ -267,7 +279,8 @@ public final class CaptureConfig { @Nullable public Range<Integer> getExpectedFrameRateRange() { - return mExpectedFrameRateRange; + return mImplementationOptions.retrieveOption(OPTION_RESOLVED_FRAME_RATE, + StreamSpec.FRAME_RATE_RANGE_UNSPECIFIED); } /** @@ -286,7 +299,7 @@ public final class CaptureConfig { * {@link CameraDevice} */ public void setExpectedFrameRateRange(@NonNull Range<Integer> expectedFrameRateRange) { - mExpectedFrameRateRange = expectedFrameRateRange; + addImplementationOption(OPTION_RESOLVED_FRAME_RATE, expectedFrameRateRange); } /** diff --git a/libraryversions.toml b/libraryversions.toml index caa905b9ee1..34f24e96971 100644 --- a/libraryversions.toml +++ b/libraryversions.toml @@ -14,7 +14,7 @@ BIOMETRIC = "1.2.0-alpha06" BLUETOOTH = "1.0.0-alpha01" BROWSER = "1.7.0-alpha01" BUILDSRC_TESTS = "1.0.0-alpha01" -CAMERA = "1.3.3" +CAMERA = "1.3.4" CAMERA_EFFECTS = "1.0.0-alpha01" CAMERA_MLKIT_VISION = "1.4.0-alpha03" CAMERA_TESTING = "1.0.0-alpha01" |