From 1d9810505a5f4f6a19041244da2b34dd016b3175 Mon Sep 17 00:00:00 2001 From: "Cameron (3539)" Date: Wed, 19 Jun 2024 19:09:52 -0400 Subject: [PATCH] fix CSI camera null quirks error (#1349) temp fix for this issue with csi cameras --- .../vision/camera/FileVisionSource.java | 4 ++++ .../vision/camera/LibcameraGpuSource.java | 3 +++ .../photonvision/vision/processes/VisionModule.java | 13 ++++--------- .../vision/processes/VisionModuleManagerTest.java | 3 +++ 4 files changed, 14 insertions(+), 9 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/FileVisionSource.java b/photon-core/src/main/java/org/photonvision/vision/camera/FileVisionSource.java index b50be3dd9..0ae1fa907 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/FileVisionSource.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/FileVisionSource.java @@ -44,6 +44,10 @@ public class FileVisionSource extends VisionSource { cameraConfiguration.FOV, FileFrameProvider.MAX_FPS, calibration); + + if (getCameraConfiguration().cameraQuirks == null) + getCameraConfiguration().cameraQuirks = QuirkyCamera.DefaultCamera; + settables = new FileSourceSettables(cameraConfiguration, frameProvider.get().frameStaticProperties); } diff --git a/photon-core/src/main/java/org/photonvision/vision/camera/LibcameraGpuSource.java b/photon-core/src/main/java/org/photonvision/vision/camera/LibcameraGpuSource.java index f8dc87d82..a26a19819 100644 --- a/photon-core/src/main/java/org/photonvision/vision/camera/LibcameraGpuSource.java +++ b/photon-core/src/main/java/org/photonvision/vision/camera/LibcameraGpuSource.java @@ -41,6 +41,9 @@ public class LibcameraGpuSource extends VisionSource { "GPUAcceleratedPicamSource only accepts CameraConfigurations with type Picam"); } + if (getCameraConfiguration().cameraQuirks == null) + getCameraConfiguration().cameraQuirks = QuirkyCamera.ZeroCopyPiCamera; + settables = new LibcameraGpuSettables(configuration); frameProvider = new LibcameraGpuFrameProvider(settables); } diff --git a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java index fc0802b1f..9c2392956 100644 --- a/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java +++ b/photon-core/src/main/java/org/photonvision/vision/processes/VisionModule.java @@ -46,7 +46,6 @@ import org.photonvision.vision.camera.CameraQuirk; import org.photonvision.vision.camera.CameraType; import org.photonvision.vision.camera.LibcameraGpuSource; import org.photonvision.vision.camera.QuirkyCamera; -import org.photonvision.vision.camera.USBCameraSource; import org.photonvision.vision.frame.Frame; import org.photonvision.vision.frame.consumer.FileSaveFrameConsumer; import org.photonvision.vision.frame.consumer.MJPGFrameConsumer; @@ -98,14 +97,10 @@ public class VisionModule { visionSource.getSettables().getConfiguration().nickname, LogGroup.VisionModule); - // Find quirks for the current camera - if (visionSource instanceof USBCameraSource) { - cameraQuirks = ((USBCameraSource) visionSource).getCameraQuirks(); - } else if (visionSource instanceof LibcameraGpuSource) { - cameraQuirks = QuirkyCamera.ZeroCopyPiCamera; - } else { - cameraQuirks = QuirkyCamera.DefaultCamera; - } + cameraQuirks = visionSource.getCameraConfiguration().cameraQuirks; + + if (visionSource.getCameraConfiguration().cameraQuirks == null) + visionSource.getCameraConfiguration().cameraQuirks = QuirkyCamera.DefaultCamera; // We don't show gain if the config says it's -1. So check here to make sure it's non-negative // if it _is_ supported diff --git a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java index 9b4ca528b..6ba98876e 100644 --- a/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java +++ b/photon-core/src/test/java/org/photonvision/vision/processes/VisionModuleManagerTest.java @@ -31,6 +31,7 @@ import org.photonvision.common.configuration.CameraConfiguration; import org.photonvision.common.configuration.ConfigManager; import org.photonvision.common.dataflow.CVPipelineResultConsumer; import org.photonvision.common.util.TestUtils; +import org.photonvision.vision.camera.QuirkyCamera; import org.photonvision.vision.camera.USBCameraSource; import org.photonvision.vision.frame.FrameProvider; import org.photonvision.vision.frame.FrameStaticProperties; @@ -49,6 +50,8 @@ public class VisionModuleManagerTest { public TestSource(FrameProvider provider, CameraConfiguration cameraConfiguration) { super(cameraConfiguration); this.provider = provider; + if (getCameraConfiguration().cameraQuirks == null) + getCameraConfiguration().cameraQuirks = QuirkyCamera.DefaultCamera; } @Override