Merge "Reuse VideoCapture use case in CameraController" into androidx-main
diff --git a/camera/camera-view/src/main/java/androidx/camera/view/CameraController.java b/camera/camera-view/src/main/java/androidx/camera/view/CameraController.java
index 2ed53fc..3602e67 100644
--- a/camera/camera-view/src/main/java/androidx/camera/view/CameraController.java
+++ b/camera/camera-view/src/main/java/androidx/camera/view/CameraController.java
@@ -1435,6 +1435,7 @@
return;
}
mVideoCaptureQuality = targetQuality;
+ unbindVideoAndRecreate();
startCameraAndTrackStates();
}
@@ -1450,6 +1451,16 @@
return mVideoCaptureQuality;
}
+ /**
+ * Unbinds VideoCapture and recreate with the latest parameters.
+ */
+ private void unbindVideoAndRecreate() {
+ if (isCameraInitialized()) {
+ mCameraProvider.unbind(mVideoCapture);
+ }
+ mVideoCapture = createNewVideoCapture();
+ }
+
private VideoCapture<Recorder> createNewVideoCapture() {
return VideoCapture.withOutput(generateVideoCaptureRecorder(mVideoCaptureQuality));
}
@@ -2002,11 +2013,10 @@
mCameraProvider.unbind(mImageAnalysis);
}
- // TODO: revert aosp/2280599 to reuse VideoCapture when VideoCapture supports reuse.
- mCameraProvider.unbind(mVideoCapture);
if (isVideoCaptureEnabled()) {
- mVideoCapture = createNewVideoCapture();
builder.addUseCase(mVideoCapture);
+ } else {
+ mCameraProvider.unbind(mVideoCapture);
}
builder.setViewPort(mViewPort);