diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/USBCameraSource.java b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/USBCameraSource.java index dc32ed5c9..8bcd1e144 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/USBCameraSource.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/USBCameras/USBCameraSource.java @@ -85,6 +85,7 @@ public class USBCameraSource extends VisionSource { } else { // Camera is likely to work, set up the Settables settables = createSettables(config, camera); + logger.info("Created settables " + settables); if (settables.getAllVideoModes().isEmpty()) { // No video modes produced from settables, disable the camera @@ -160,7 +161,15 @@ public class USBCameraSource extends VisionSource { var oldConfig = this.cameraConfiguration; var oldCamera = this.camera; + // Re-create settables + var oldVideoMode = this.settables.getCurrentVideoMode(); this.settables = createSettables(oldConfig, oldCamera); + + // And update FrameStaticProps + settables.setVideoMode(oldVideoMode); + + // Propogate our updated settables over to the frame provider + ((USBFrameProvider) this.usbFrameProvider).updateSettables(this.settables); } private void printCameraProperaties() { diff --git a/photon-core/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java b/photon-core/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java index f28cabdd9..0cca9c984 100644 --- a/photon-core/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java +++ b/photon-core/src/main/java/org/photonvision/vision/frame/provider/USBFrameProvider.java @@ -29,7 +29,7 @@ public class USBFrameProvider extends CpuImageProcessor { private final CvSink cvSink; @SuppressWarnings("SpellCheckingInspection") - private final VisionSourceSettables settables; + private VisionSourceSettables settables; @SuppressWarnings("SpellCheckingInspection") public USBFrameProvider(CvSink sink, VisionSourceSettables visionSettables) { @@ -60,4 +60,8 @@ public class USBFrameProvider extends CpuImageProcessor { public String getName() { return "USBFrameProvider - " + cvSink.getName(); } + + public void updateSettables(VisionSourceSettables settables) { + this.settables = settables; + } }