REPLACE AtomicProgress with simple ProgressTracker

This commit is contained in:
2025-07-23 00:18:25 +02:00
parent f6e6aae5c6
commit 618c140449
4 changed files with 27 additions and 8 deletions

View File

@@ -0,0 +1,19 @@
package com.ddf.vodsystem.dto;
import lombok.Getter;
@Getter
public class ProgressTracker {
private float progress;
public ProgressTracker(float initialProgress) {
this.progress = initialProgress;
}
public void setProgress(float newProgress) {
if (newProgress < 0 || newProgress > 1) {
throw new IllegalArgumentException("Progress must be between 0 and 1");
}
this.progress = newProgress;
}
}

View File

@@ -1,8 +1,8 @@
package com.ddf.vodsystem.entities;
import java.io.File;
import java.util.concurrent.atomic.AtomicReference;
import com.ddf.vodsystem.dto.ProgressTracker;
import com.ddf.vodsystem.dto.VideoMetadata;
import org.springframework.security.core.context.SecurityContext;
@@ -23,7 +23,7 @@ public class Job {
// job status
private JobStatus status = JobStatus.NOT_READY;
private AtomicReference<Float> progress = new AtomicReference<>(0f);
private ProgressTracker progress = new ProgressTracker(0.0f);
public Job(String uuid, File inputFile, File outputFile, VideoMetadata inputVideoMetadata) {
this.uuid = uuid;

View File

@@ -30,7 +30,7 @@ public class EditService {
return 1f;
}
return job.getProgress().get();
return job.getProgress().getProgress();
}
private void validateClipConfig(VideoMetadata videoMetadata) {

View File

@@ -1,5 +1,6 @@
package com.ddf.vodsystem.services;
import com.ddf.vodsystem.dto.ProgressTracker;
import com.ddf.vodsystem.dto.VideoMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -11,7 +12,6 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -24,7 +24,7 @@ public class FfmpegService {
private static final float BITRATE_MULTIPLIER = 0.9f;
private final Pattern timePattern = Pattern.compile("out_time_ms=(\\d+)");
public void runWithProgress(File inputFile, File outputFile, VideoMetadata videoMetadata, AtomicReference<Float> progress) throws IOException, InterruptedException {
public void runWithProgress(File inputFile, File outputFile, VideoMetadata videoMetadata, ProgressTracker progress) throws IOException, InterruptedException {
logger.info("Starting FFMPEG process");
List<String> command = buildCommand(inputFile, outputFile, videoMetadata);
@@ -45,7 +45,7 @@ public class FfmpegService {
}
public void run(File inputFile, File outputFile, VideoMetadata videoMetadata) throws IOException, InterruptedException {
runWithProgress(inputFile, outputFile, videoMetadata, new AtomicReference<>(0f));
runWithProgress(inputFile, outputFile, videoMetadata, new ProgressTracker(0.0f));
}
public void generateThumbnail(File inputFile, File outputFile, Float timeInVideo) throws IOException, InterruptedException {
@@ -77,7 +77,7 @@ public class FfmpegService {
logger.info("Thumbnail generated successfully at {}", outputFile.getAbsolutePath());
}
private void updateJobProgress(Process process, AtomicReference<Float> progress, Float length) throws IOException {
private void updateJobProgress(Process process, ProgressTracker progress, Float length) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
@@ -87,7 +87,7 @@ public class FfmpegService {
if (matcher.find()) {
Float timeInMs = Float.parseFloat(matcher.group(1)) / 1000000f;
progress.set(timeInMs/length);
progress.setProgress(timeInMs/length);
}
}
}