From a113bd4192070dceac8479fd885d1b7fefea52ea Mon Sep 17 00:00:00 2001 From: Banks T Date: Sun, 17 Jan 2021 23:28:00 -0500 Subject: [PATCH] Fix processing timings in CVPipelineResult (#236) --- .../org/photonvision/common/util/math/MathUtils.java | 4 ++++ .../vision/pipeline/result/CVPipelineResult.java | 10 +++++++--- .../java/org/photonvision/common/BenchmarkTest.java | 4 ++-- .../org/photonvision/common/ShapeBenchmarkTest.java | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/photon-core/src/main/java/org/photonvision/common/util/math/MathUtils.java b/photon-core/src/main/java/org/photonvision/common/util/math/MathUtils.java index dc925afde..9b9fb02c0 100644 --- a/photon-core/src/main/java/org/photonvision/common/util/math/MathUtils.java +++ b/photon-core/src/main/java/org/photonvision/common/util/math/MathUtils.java @@ -44,6 +44,10 @@ public class MathUtils { return nanos / 1000000.0; } + public static double nanosToMillis(double nanos) { + return nanos / 1000000.0; + } + public static long millisToNanos(long millis) { return millis * 1000000; } diff --git a/photon-core/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java b/photon-core/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java index 13c3098ca..4f902ab00 100644 --- a/photon-core/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java +++ b/photon-core/src/main/java/org/photonvision/vision/pipeline/result/CVPipelineResult.java @@ -26,19 +26,19 @@ import org.photonvision.vision.target.TrackedTarget; public class CVPipelineResult implements Releasable { private long imageCaptureTimestampNanos; - public final double processingMillis; + public final double processingNanos; public final double fps; public final List targets; public final Frame outputFrame; public final Frame inputFrame; public CVPipelineResult( - double processingMillis, + double processingNanos, double fps, List targets, Frame outputFrame, Frame inputFrame) { - this.processingMillis = processingMillis; + this.processingNanos = processingNanos; this.fps = fps; this.targets = targets != null ? targets : Collections.emptyList(); @@ -73,6 +73,10 @@ public class CVPipelineResult implements Releasable { return MathUtils.nanosToMillis(now - imageCaptureTimestampNanos); } + public double getProcessingMillis() { + return MathUtils.nanosToMillis(processingNanos); + } + public long getImageCaptureTimestampNanos() { return imageCaptureTimestampNanos; } diff --git a/photon-core/src/test/java/org/photonvision/common/BenchmarkTest.java b/photon-core/src/test/java/org/photonvision/common/BenchmarkTest.java index 81ebd1402..bbf83c6e6 100644 --- a/photon-core/src/test/java/org/photonvision/common/BenchmarkTest.java +++ b/photon-core/src/test/java/org/photonvision/common/BenchmarkTest.java @@ -144,9 +144,9 @@ public class BenchmarkTest { CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); pipelineResult.release(); - processingTimes.add(pipelineResult.processingMillis); + processingTimes.add(pipelineResult.getProcessingMillis()); latencyTimes.add(pipelineResult.getLatencyMillis()); - } while (System.currentTimeMillis() - benchmarkStartMillis < secondsToRun * 1000); + } while (System.currentTimeMillis() - benchmarkStartMillis < secondsToRun * 1000.0); System.out.println("Benchmark complete."); var processingMin = Collections.min(processingTimes); diff --git a/photon-core/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java b/photon-core/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java index daca840a0..7f4174eda 100644 --- a/photon-core/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java +++ b/photon-core/src/test/java/org/photonvision/common/ShapeBenchmarkTest.java @@ -172,7 +172,7 @@ public class ShapeBenchmarkTest { CVPipelineResult pipelineResult = pipeline.run(frameProvider.get(), QuirkyCamera.DefaultCamera); pipelineResult.release(); - processingTimes.add(pipelineResult.processingMillis); + processingTimes.add(pipelineResult.getProcessingMillis()); latencyTimes.add(pipelineResult.getLatencyMillis()); } while (System.currentTimeMillis() - benchmarkStartMillis < secondsToRun * 1000L); System.out.println("Benchmark complete.");