mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-12 04:15:00 -05:00
* 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() {
|
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) {
|
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.ExpressionFormat;
|
||||||
import net.sourceforge.filebot.format.MediaBindingBean;
|
import net.sourceforge.filebot.format.MediaBindingBean;
|
||||||
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
||||||
|
import net.sourceforge.filebot.mediainfo.MediaInfoException;
|
||||||
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
||||||
import net.sourceforge.tuned.DefaultThreadFactory;
|
import net.sourceforge.tuned.DefaultThreadFactory;
|
||||||
import net.sourceforge.tuned.ui.LazyDocumentListener;
|
import net.sourceforge.tuned.ui.LazyDocumentListener;
|
||||||
@ -297,8 +298,8 @@ class BindingDialog extends JDialog {
|
|||||||
mediaInfo.close();
|
mediaInfo.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (LinkageError e) {
|
} catch (MediaInfoException e) {
|
||||||
UILogger.log(Level.SEVERE, "Unable to load native library 'mediainfo'", e);
|
UILogger.log(Level.SEVERE, e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
// could not retrieve media info
|
// could not retrieve media info
|
||||||
|
@ -150,9 +150,6 @@ public class SublightSubtitleClient implements SubtitleProvider, VideoHashSubtit
|
|||||||
});
|
});
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Logger.getLogger(SublightSubtitleClient.class.getName()).log(Level.WARNING, "Error computing video hash: " + e.getMessage());
|
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);
|
requests.add(i, request);
|
||||||
|
@ -15,6 +15,7 @@ import java.util.Formatter;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
import net.sourceforge.filebot.mediainfo.MediaInfo;
|
||||||
|
import net.sourceforge.filebot.mediainfo.MediaInfoException;
|
||||||
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
||||||
|
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ import net.sourceforge.filebot.mediainfo.MediaInfo.StreamKind;
|
|||||||
*/
|
*/
|
||||||
public final class SublightVideoHasher {
|
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][];
|
byte[][] hash = new byte[4][];
|
||||||
|
|
||||||
// 1 byte = 0 (reserved)
|
// 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();
|
MediaInfo mediaInfo = new MediaInfo();
|
||||||
|
|
||||||
if (!mediaInfo.open(file))
|
if (!mediaInfo.open(file))
|
||||||
|
Loading…
Reference in New Issue
Block a user