aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2024-06-03 04:34:23 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2024-06-03 04:34:23 +0000
commitb9fbe957f2920e89bb474e570b512f6339bea280 (patch)
tree9f7dfaf331c9da4369783e710adc11ade1500fe8
parent3527da9547dbd46223ba767eb66a1b3da550bc63 (diff)
parent0accc9893691526c09bcdd7998232d8aa50e93f2 (diff)
downloadsupport-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
-rw-r--r--camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/SupportedSurfaceCombination.java16
-rw-r--r--camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/ZoomControl.java2
-rw-r--r--camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java14
-rw-r--r--camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java19
-rw-r--r--libraryversions.toml2
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"