Bugfix: set frame range in Preview
The value was incorrectly removed in aosp/2600745. Added a test to guard it.
Bug: 286817690
Test: manual test and ./gradlew bOS
Change-Id: Iebbc7cddd421c65d5ffcd53e19291e4049f34529
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
index 38faf0c..52c6e0d 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
@@ -266,6 +266,7 @@
// Send the camera Surface to the camera2.
SessionConfig.Builder sessionConfigBuilder = SessionConfig.Builder.createFrom(config,
streamSpec.getResolution());
+ sessionConfigBuilder.setExpectedFrameRateRange(streamSpec.getExpectedFrameRateRange());
if (streamSpec.getImplementationOptions() != null) {
sessionConfigBuilder.addImplementationOptions(streamSpec.getImplementationOptions());
}
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
index 26333fb..b2692bc 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
@@ -88,6 +88,10 @@
// *********************************************************************************************
class PreviewTest {
+ companion object {
+ val FRAME_RATE_RANGE = Range(30, 60)
+ }
+
private var cameraUseCaseAdapter: CameraUseCaseAdapter? = null
private lateinit var appSurface: Surface
@@ -161,6 +165,17 @@
}
@Test
+ fun createPreview_sessionConfigMatchesStreamSpec() {
+ // Act: Create a preview use case.
+ val preview = createPreview()
+ // Assert: The session config matches the stream spec.
+ val sessionConfig = preview.sessionConfig
+ assertThat(sessionConfig.expectedFrameRateRange).isEqualTo(FRAME_RATE_RANGE)
+ assertThat(sessionConfig.implementationOptions.retrieveOption(testImplementationOption))
+ .isEqualTo(testImplementationOptionValue)
+ }
+
+ @Test
fun verifySupportedEffects() {
val preview = Preview.Builder().build()
assertThat(preview.isEffectTargetsSupported(PREVIEW)).isTrue()
@@ -796,6 +811,7 @@
val streamSpecOptions = MutableOptionsBundle.create()
streamSpecOptions.insertOption(testImplementationOption, testImplementationOptionValue)
val streamSpec = StreamSpec.builder(Size(640, 480))
+ .setExpectedFrameRateRange(FRAME_RATE_RANGE)
.setImplementationOptions(streamSpecOptions).build()
previewToDetach.sensorToBufferTransformMatrix = sensorToBufferTransform
previewToDetach.updateSuggestedStreamSpec(streamSpec)