Skip to content

Commit

Permalink
Merge branch 'master' into feature/318-input-builder
Browse files Browse the repository at this point in the history
  • Loading branch information
Euklios committed Aug 21, 2024
2 parents cbbeeac + b3b21a9 commit e47421a
Show file tree
Hide file tree
Showing 21 changed files with 799 additions and 349 deletions.
22 changes: 10 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@
<maven.compiler.source>${base.java.version}</maven.compiler.source>
<maven.compiler.target>${base.java.version}</maven.compiler.target>

<powermock.version>1.5.2</powermock.version>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
Expand All @@ -54,12 +52,12 @@
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.12</version>
<version>2.0.13</version>
</dependency>
<dependency>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-annotations</artifactId>
<version>4.8.3</version>
<version>4.8.6</version>
</dependency>
<dependency>
<groupId>com.google.errorprone</groupId>
Expand All @@ -69,27 +67,27 @@
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>33.0.0-jre</version>
<version>33.2.1-jre</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.15.1</version>
<version>2.16.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.14.0</version>
<version>3.16.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.modelmapper</groupId>
<artifactId>modelmapper</artifactId>
<version>3.2.0</version>
<version>3.2.1</version>
</dependency>

<!-- Test Scope -->
Expand All @@ -107,7 +105,7 @@
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>5.11.0</version>
<version>5.12.0</version>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
Expand All @@ -117,7 +115,7 @@
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest</artifactId>
<version>2.2</version>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.nitorcreations</groupId>
Expand Down Expand Up @@ -755,7 +753,7 @@
<path>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_core</artifactId>
<version>2.25.0</version>
<version>2.29.2</version>
</path>
<!-- Other annotation processors go here.
Expand Down
19 changes: 17 additions & 2 deletions src/main/java/net/bramp/ffmpeg/FFcommon.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.io.CharStreams;
import net.bramp.ffmpeg.io.ProcessUtils;
import net.bramp.ffmpeg.probe.FFmpegError;
import net.bramp.ffmpeg.probe.FFmpegProbeResult;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
Expand All @@ -15,7 +19,6 @@
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.annotation.Nonnull;
import net.bramp.ffmpeg.io.ProcessUtils;

/** Private class to contain common methods for both FFmpeg and FFprobe. */
abstract class FFcommon {
Expand Down Expand Up @@ -69,7 +72,6 @@ protected BufferedReader wrapErrorInReader(Process p) {

protected void throwOnError(Process p) throws IOException {
try {
// TODO In java 8 use waitFor(long timeout, TimeUnit unit)
if (ProcessUtils.waitForWithTimeout(p, 1, TimeUnit.SECONDS) != 0) {
// TODO Parse the error
throw new IOException(path + " returned non-zero exit status. Check stdout.");
Expand All @@ -79,6 +81,19 @@ protected void throwOnError(Process p) throws IOException {
}
}

protected void throwOnError(Process p, FFmpegProbeResult result) throws IOException {
try {
if (ProcessUtils.waitForWithTimeout(p, 1, TimeUnit.SECONDS) != 0) {
// TODO Parse the error
final FFmpegError ffmpegError = null == result ? null : result.getError();
throw new FFmpegException(
path + " returned non-zero exit status. Check stdout.", ffmpegError);
}
} catch (TimeoutException e) {
throw new IOException("Timed out waiting for " + path + " to finish.");
}
}

/**
* Returns the version string for this binary.
*
Expand Down
20 changes: 20 additions & 0 deletions src/main/java/net/bramp/ffmpeg/FFmpegException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package net.bramp.ffmpeg;

import net.bramp.ffmpeg.probe.FFmpegError;

import java.io.IOException;

public class FFmpegException extends IOException {

private static final long serialVersionUID = 3048288225568984942L;
private final FFmpegError error;

public FFmpegException(String message, FFmpegError error) {
super(message);
this.error = error;
}

public FFmpegError getError() {
return error;
}
}
4 changes: 0 additions & 4 deletions src/main/java/net/bramp/ffmpeg/FFmpegUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
import net.bramp.commons.lang3.math.gson.FractionAdapter;
import net.bramp.ffmpeg.adapter.FFmpegPacketsAndFramesAdapter;
import net.bramp.ffmpeg.gson.LowercaseEnumTypeAdapterFactory;
import net.bramp.ffmpeg.gson.NamedBitsetAdapter;
import net.bramp.ffmpeg.probe.FFmpegDisposition;
import net.bramp.ffmpeg.probe.FFmpegFrameOrPacket;
import org.apache.commons.lang3.math.Fraction;

Expand Down Expand Up @@ -132,8 +130,6 @@ private static Gson setupGson() {
builder.registerTypeAdapterFactory(new LowercaseEnumTypeAdapterFactory());
builder.registerTypeAdapter(Fraction.class, new FractionAdapter());
builder.registerTypeAdapter(FFmpegFrameOrPacket.class, new FFmpegPacketsAndFramesAdapter());
builder.registerTypeAdapter(
FFmpegDisposition.class, new NamedBitsetAdapter<>(FFmpegDisposition.class));

return builder.create();
}
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/net/bramp/ffmpeg/FFprobe.java
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ public FFmpegProbeResult probe(List<String> args) throws IOException {

FFmpegProbeResult result = gson.fromJson(reader, FFmpegProbeResult.class);

throwOnError(p);
throwOnError(p, result);

if (result == null) {
throw new IllegalStateException("Gson returned null, which shouldn't happen :(");
Expand Down
26 changes: 26 additions & 0 deletions src/main/java/net/bramp/ffmpeg/adapter/BooleanTypeAdapter.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package net.bramp.ffmpeg.adapter;

import java.lang.reflect.Type;
import com.google.gson.*;

public class BooleanTypeAdapter implements JsonDeserializer<Boolean> {
@Override
public Boolean deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isBoolean()) {
return json.getAsBoolean();
}

if (json.isJsonPrimitive() && json.getAsJsonPrimitive().isString()) {
String jsonValue = json.getAsString();
if (jsonValue.equalsIgnoreCase("true")) {
return true;
} else if (jsonValue.equalsIgnoreCase("false")) {
return false;
} else {
return null;
}
}

return json.getAsInt() != 0;
}
}
142 changes: 0 additions & 142 deletions src/main/java/net/bramp/ffmpeg/gson/NamedBitsetAdapter.java

This file was deleted.

Loading

0 comments on commit e47421a

Please sign in to comment.