diff --git a/build.gradle b/build.gradle index 953046884..4d3e83cf0 100644 --- a/build.gradle +++ b/build.gradle @@ -27,7 +27,7 @@ ext { openCVversion = "4.8.0-2" joglVersion = "2.4.0-rc-20200307" javalinVersion = "5.6.2" - photonGlDriverLibVersion = "dev-v2023.1.0-8-g38bbe74" + photonGlDriverLibVersion = "dev-v2023.1.0-9-g75fc678" frcYear = "2024" pubVersion = versionString diff --git a/photon-core/src/main/java/org/photonvision/vision/frame/provider/LibcameraGpuFrameProvider.java b/photon-core/src/main/java/org/photonvision/vision/frame/provider/LibcameraGpuFrameProvider.java index 6e49ce153..68f454cda 100644 --- a/photon-core/src/main/java/org/photonvision/vision/frame/provider/LibcameraGpuFrameProvider.java +++ b/photon-core/src/main/java/org/photonvision/vision/frame/provider/LibcameraGpuFrameProvider.java @@ -18,6 +18,8 @@ package org.photonvision.vision.frame.provider; import org.opencv.core.Mat; +import org.photonvision.common.logging.LogGroup; +import org.photonvision.common.logging.Logger; import org.photonvision.common.util.math.MathUtils; import org.photonvision.raspi.LibCameraJNI; import org.photonvision.vision.camera.LibcameraGpuSettables; @@ -31,6 +33,8 @@ import org.photonvision.vision.pipe.impl.HSVPipe.HSVParams; public class LibcameraGpuFrameProvider implements FrameProvider { private final LibcameraGpuSettables settables; + static final Logger logger = new Logger(LibcameraGpuFrameProvider.class, LogGroup.Camera); + public LibcameraGpuFrameProvider(LibcameraGpuSettables visionSettables) { this.settables = visionSettables; @@ -43,21 +47,30 @@ public class LibcameraGpuFrameProvider implements FrameProvider { return "AcceleratedPicamFrameProvider"; } - int i = 0; + int badFrameCounter = 0; @Override public Frame get() { // We need to make sure that other threads don't try to change video modes while - // we're waiting - // for a frame + // we're waiting for a frame // System.out.println("GET!"); synchronized (settables.CAMERA_LOCK) { var p_ptr = LibCameraJNI.awaitNewFrame(settables.r_ptr); if (p_ptr == 0) { - System.out.println("No new frame"); + logger.error("No new frame from " + settables.getConfiguration().nickname); + badFrameCounter++; + if (badFrameCounter > 3) { + logger.error( + "No new frame from " + + settables.getConfiguration().nickname + + " for 3 seconds attempting recreate!"); + settables.setVideoMode(settables.getCurrentVideoMode()); + badFrameCounter = 0; + } return new Frame(); } + badFrameCounter = 0; var colorMat = new CVMat(new Mat(LibCameraJNI.takeColorFrame(p_ptr))); var processedMat = new CVMat(new Mat(LibCameraJNI.takeProcessedFrame(p_ptr)));