From dbe22417ae2199f7b06cb32a2ee3f814a46df76e Mon Sep 17 00:00:00 2001 From: Matt Date: Sat, 23 Nov 2019 09:09:31 -0800 Subject: [PATCH] Update cameraRunnable fps with video mode change --- .../java/com/chameleonvision/util/LoopingRunnable.java | 2 +- .../java/com/chameleonvision/vision/VisionProcess.java | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Main/src/main/java/com/chameleonvision/util/LoopingRunnable.java b/Main/src/main/java/com/chameleonvision/util/LoopingRunnable.java index 1df278996..555063956 100644 --- a/Main/src/main/java/com/chameleonvision/util/LoopingRunnable.java +++ b/Main/src/main/java/com/chameleonvision/util/LoopingRunnable.java @@ -4,7 +4,7 @@ package com.chameleonvision.util; * A thread that tries to run at a specified loop time */ public abstract class LoopingRunnable implements Runnable { - private final Long loopTimeMs; + protected volatile Long loopTimeMs; protected abstract void process(); diff --git a/Main/src/main/java/com/chameleonvision/vision/VisionProcess.java b/Main/src/main/java/com/chameleonvision/vision/VisionProcess.java index 25aff9ce0..453e750af 100644 --- a/Main/src/main/java/com/chameleonvision/vision/VisionProcess.java +++ b/Main/src/main/java/com/chameleonvision/vision/VisionProcess.java @@ -61,8 +61,7 @@ public class VisionProcess { // Thread to grab frames from the camera // TODO: (HIGH) fix video modes!!! - // TODO: (HIGH) FIX FPS!!!!!!! - this.cameraRunnable = new CameraFrameRunnable(cameraProcess.getProperties().videoModes.get(0).fps); + this.cameraRunnable = new CameraFrameRunnable(cameraProcess.getProperties().videoModes.get(0).f ps); lastPipelineResult = new DriverVisionPipeline.DriverPipelineResult( null, cameraRunnable.getFrame(new Mat()), 0 @@ -229,6 +228,7 @@ public class VisionProcess { public void setVideoMode(VideoMode newMode) { cameraProcess.setVideoMode(newMode); + cameraRunnable.updateCameraFPS(newMode.fps); cameraStreamer.setNewVideoMode(newMode); } @@ -290,6 +290,10 @@ public class VisionProcess { super(1000L/(cameraFPS + 2)); } + void updateCameraFPS(int newFPS) { + super.loopTimeMs = 1000L / (newFPS + 2); + } + @Override public void process() { System.out.println("running camera grabber process");