From 45528ef2123c633fa973cdd05e5178a3cd3cb1bc Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Fri, 15 Mar 2019 13:35:14 +0700 Subject: [PATCH] Factor in video resolution as well as bitrate --- source/net/filebot/media/VideoQuality.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/source/net/filebot/media/VideoQuality.java b/source/net/filebot/media/VideoQuality.java index 1a04a0ee..d12745c0 100644 --- a/source/net/filebot/media/VideoQuality.java +++ b/source/net/filebot/media/VideoQuality.java @@ -21,7 +21,7 @@ public class VideoQuality implements Comparator { return DESCENDING_ORDER.compare(f1, f2) < 0; } - private final Comparator chain = comparingInt(this::getRepack).thenComparingInt(this::getResolution).thenComparingLong(File::length); + private final Comparator chain = comparingInt(this::getRepack).thenComparingDouble(this::getScore).thenComparingLong(File::length); @Override public int compare(File f1, File f2) { @@ -34,15 +34,15 @@ public class VideoQuality implements Comparator { return find(f.getName(), repack) ? 1 : 0; } - private int getResolution(File f) { + private double getScore(File f) { // use primary video file when checking video resolution of subtitle files or disk folders f = new MediaBindingBean(f, f).getInferredMediaFile(); if (VIDEO_FILES.accept(f) && f.length() > ONE_MEGABYTE) { try (MediaCharacteristics mi = MediaCharacteristicsParser.DEFAULT.open(f)) { - return mi.getWidth() * mi.getHeight(); + return mi.getWidth() * mi.getHeight() * mi.getBitRate(); } catch (Exception e) { - debug.warning(message("Failed to read video resolution", e.getMessage())); + debug.warning(message("Failed to read video resolution or bitrate", e)); } }