diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirk.java b/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirk.java index ed801646f..fe5043f13 100644 --- a/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirk.java +++ b/photon-server/src/main/java/org/photonvision/vision/camera/CameraQuirk.java @@ -21,5 +21,7 @@ public enum CameraQuirk { /** Camera settable for controllable image gain */ Gain, /** For the Raspberry Pi Camera */ - PiCam + PiCam, + /** Cap at 100FPS for high-bandwidth cameras */ + FPSCap100 } diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java b/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java index 85aba1637..737585f28 100644 --- a/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java +++ b/photon-server/src/main/java/org/photonvision/vision/camera/QuirkyCamera.java @@ -25,7 +25,7 @@ public class QuirkyCamera { private static final List quirkyCameras = List.of( - new QuirkyCamera(0x2000, 0x1415, CameraQuirk.Gain), // PS3Eye + new QuirkyCamera(0x2000, 0x1415, CameraQuirk.Gain, CameraQuirk.FPSCap100), // PS3Eye new QuirkyCamera(-1, -1, "mmal service 16.1", CameraQuirk.PiCam) // PiCam (via V4L2) ); diff --git a/photon-server/src/main/java/org/photonvision/vision/camera/USBCameraSource.java b/photon-server/src/main/java/org/photonvision/vision/camera/USBCameraSource.java index efc6b18de..e7327b27e 100644 --- a/photon-server/src/main/java/org/photonvision/vision/camera/USBCameraSource.java +++ b/photon-server/src/main/java/org/photonvision/vision/camera/USBCameraSource.java @@ -194,6 +194,12 @@ public class USBCameraSource implements VisionSource { } } + if (cameraQuirks.hasQuirk(CameraQuirk.FPSCap100)) { + if (videoMode.fps > 100) { + continue; + } + } + videoModesList.add(videoMode); // We look for modes with the same height/width/pixelformat as this mode diff --git a/photon-server/src/test/java/org/photonvision/vision/QuirkyCameraTest.java b/photon-server/src/test/java/org/photonvision/vision/QuirkyCameraTest.java index 00b2e69a5..45517ee02 100644 --- a/photon-server/src/test/java/org/photonvision/vision/QuirkyCameraTest.java +++ b/photon-server/src/test/java/org/photonvision/vision/QuirkyCameraTest.java @@ -28,6 +28,7 @@ public class QuirkyCameraTest { public void ps3EyeTest() { HashMap ps3EyeQuirks = new HashMap<>(); ps3EyeQuirks.put(CameraQuirk.Gain, true); + ps3EyeQuirks.put(CameraQuirk.FPSCap100, true); for (var q : CameraQuirk.values()) { ps3EyeQuirks.putIfAbsent(q, false); }