* added info about required native lib arch to error msg if mediainfo native code can't be loaded
This commit is contained in:
parent
715c6f8ee5
commit
98fdd221ff
|
@ -36,7 +36,11 @@ public class MediaInfo implements Closeable {
|
|||
|
||||
|
||||
public MediaInfo() {
|
||||
handle = MediaInfoLibrary.INSTANCE.New();
|
||||
try {
|
||||
handle = MediaInfoLibrary.INSTANCE.New();
|
||||
} catch (LinkageError e) {
|
||||
throw new MediaInfoException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -236,7 +240,11 @@ public class MediaInfo implements Closeable {
|
|||
|
||||
|
||||
public static String staticOption(String option, String value) {
|
||||
return MediaInfoLibrary.INSTANCE.Option(null, new WString(option), new WString(value)).toString();
|
||||
try {
|
||||
return MediaInfoLibrary.INSTANCE.Option(null, new WString(option), new WString(value)).toString();
|
||||
} catch (LinkageError e) {
|
||||
throw new MediaInfoException(e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
|
||||
package net.sourceforge.filebot.mediainfo;
|
||||
|
||||
|
||||
import com.sun.jna.Platform;
|
||||
|
||||
|
||||
public class MediaInfoException extends RuntimeException {
|
||||
|
||||
public MediaInfoException(LinkageError e) {
|
||||
this(String.format("Unable to load %d-bit native library 'mediainfo'", Platform.is64Bit() ? 64 : 32), e);
|
||||
}
|
||||
|
||||
|
||||
public MediaInfoException(String msg, Throwable e) {
|
||||
super(msg, e);
|
||||
}
|
||||
|
||||
}
|
|
@ -58,6 +58,7 @@ import net.sourceforge.filebot.ResourceManager;
|
|||
import net.sourceforge.filebot.format.ExpressionFormat;
|
||||
import net.sourceforge.filebot.format.MediaBindingBean;
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfoException;
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
||||
import net.sourceforge.tuned.DefaultThreadFactory;
|
||||
import net.sourceforge.tuned.ui.LazyDocumentListener;
|
||||
|
@ -297,8 +298,8 @@ class BindingDialog extends JDialog {
|
|||
mediaInfo.close();
|
||||
}
|
||||
}
|
||||
} catch (LinkageError e) {
|
||||
UILogger.log(Level.SEVERE, "Unable to load native library 'mediainfo'", e);
|
||||
} catch (MediaInfoException e) {
|
||||
UILogger.log(Level.SEVERE, e.getMessage(), e);
|
||||
}
|
||||
|
||||
// could not retrieve media info
|
||||
|
|
|
@ -150,9 +150,6 @@ public class SublightSubtitleClient implements SubtitleProvider, VideoHashSubtit
|
|||
});
|
||||
} catch (IOException e) {
|
||||
Logger.getLogger(SublightSubtitleClient.class.getName()).log(Level.WARNING, "Error computing video hash: " + e.getMessage());
|
||||
} catch (LinkageError e) {
|
||||
// MediaInfo native lib not available
|
||||
throw new UnsupportedOperationException(e.getMessage(), e);
|
||||
}
|
||||
|
||||
requests.add(i, request);
|
||||
|
|
|
@ -15,6 +15,7 @@ import java.util.Formatter;
|
|||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfoException;
|
||||
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
||||
|
||||
|
||||
|
@ -32,7 +33,7 @@ import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
|||
*/
|
||||
public final class SublightVideoHasher {
|
||||
|
||||
public static String computeHash(File file) throws IOException, LinkageError {
|
||||
public static String computeHash(File file) throws IOException, MediaInfoException {
|
||||
byte[][] hash = new byte[4][];
|
||||
|
||||
// 1 byte = 0 (reserved)
|
||||
|
@ -79,7 +80,7 @@ public final class SublightVideoHasher {
|
|||
}
|
||||
|
||||
|
||||
protected static long getDuration(File file, TimeUnit unit) throws IOException, LinkageError {
|
||||
protected static long getDuration(File file, TimeUnit unit) throws IOException, MediaInfoException {
|
||||
MediaInfo mediaInfo = new MediaInfo();
|
||||
|
||||
if (!mediaInfo.open(file))
|
||||
|
|
Loading…
Reference in New Issue