From afbd3cadc8df7d6e49b008638074a03552a1ceb4 Mon Sep 17 00:00:00 2001 From: Banks Troutman Date: Sun, 1 Dec 2019 12:23:09 -0500 Subject: [PATCH] Fix videomode change on pipeline change, more memory leak hunting --- .../java/com/chameleonvision/vision/VisionProcess.java | 1 + .../com/chameleonvision/vision/pipeline/CVPipeline.java | 1 + .../chameleonvision/vision/pipeline/CVPipelineResult.java | 8 ++++---- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/VisionProcess.java b/chameleon-server/src/main/java/com/chameleonvision/vision/VisionProcess.java index 43938b274..222723ebc 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/VisionProcess.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/VisionProcess.java @@ -258,6 +258,7 @@ public class VisionProcess { try { streamFrameQueue.clear(); streamFrameQueue.add(lastPipelineResult.outputMat); + camFrame.release(); } catch (Exception e) { Debug.printInfo("Vision running faster than stream."); } diff --git a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline.java b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline.java index 6efd845a0..092939ace 100644 --- a/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline.java +++ b/chameleon-server/src/main/java/com/chameleonvision/vision/pipeline/CVPipeline.java @@ -23,6 +23,7 @@ public abstract class CVPipeline { public final List targets; public final boolean hasTarget; - public final Mat outputMat; + public final Mat outputMat = new Mat(); public final long processTime; public long imageTimestamp = 0; public CVPipelineResult(List targets, Mat outputMat, long processTime) { this.targets = targets; hasTarget = targets != null && !targets.isEmpty(); - this.outputMat = outputMat; -// outputMat.copyTo(this.outputMat); -// outputMat.release(); +// this.outputMat = outputMat; + outputMat.copyTo(this.outputMat); + outputMat.release(); this.processTime = processTime; }