From 04722d9279652c1731a1ab561411e2a9cda40dba Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Thu, 11 Dec 2025 01:25:08 +0100 Subject: [PATCH] Improve attribute processor --- .../mkvaudiosubtitlechanger/Main.java | 4 +- .../impl/kernel/AttributeUpdaterKernel.java | 21 +++++-- .../CoherentAttributeUpdaterKernel.java | 4 +- .../kernel/DefaultAttributeUpdaterKernel.java | 8 +-- .../impl/processors/AttributeProcessor.java | 44 +++++++------- .../config/fields/SetConfigParameterTest.java | 2 +- .../processors/AttributeProcessorTest.java | 57 ++++++++++--------- .../util/FileInfoTestUtil.java | 8 +-- 8 files changed, 79 insertions(+), 69 deletions(-) diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java index f487886..b5c7a9c 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java @@ -52,8 +52,8 @@ public class Main implements Runnable { InputConfig.setInstance(config); AttributeUpdaterKernel kernel = InputConfig.getInstance().getCoherent() != null - ? new CoherentAttributeUpdaterKernel(new CachedMkvFileProcessor()) - : new DefaultAttributeUpdaterKernel(new CachedMkvFileProcessor()); + ? new CoherentAttributeUpdaterKernel(config, new CachedMkvFileProcessor()) + : new DefaultAttributeUpdaterKernel(config, new CachedMkvFileProcessor()); kernel.execute(); } } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java index 8a3eb89..d55484b 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java @@ -26,12 +26,21 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @Slf4j -@RequiredArgsConstructor public abstract class AttributeUpdaterKernel { + protected final InputConfig config; protected final FileProcessor processor; + protected final AttributeProcessor attributeProcessor; protected final ResultStatistic statistic = ResultStatistic.getInstance(); - private final ExecutorService executor = Executors.newFixedThreadPool(InputConfig.getInstance().getThreads()); + + private final ExecutorService executor; + + public AttributeUpdaterKernel(InputConfig config, FileProcessor processor) { + this.config = config; + this.processor = processor; + this.attributeProcessor = new AttributeProcessor(config.getPreferredSubtitles().toArray(new String[0]), config.getForcedKeywords(), config.getCommentaryKeywords(), config.getHearingImpaired()); + this.executor = Executors.newFixedThreadPool(config.getThreads()); + } protected ProgressBarBuilder pbBuilder() { return new ProgressBarBuilder() @@ -80,10 +89,10 @@ public abstract class AttributeUpdaterKernel { return; } - AttributeProcessor.findDefaultMatchAndApplyChanges(fileInfo); - AttributeProcessor.findForcedTracksAndApplyChanges(fileInfo); - AttributeProcessor.findCommentaryTracksAndApplyChanges(fileInfo); - AttributeProcessor.findHearingImpairedTracksAndApplyChanges(fileInfo); + attributeProcessor.findDefaultMatchAndApplyChanges(fileInfo); + attributeProcessor.findForcedTracksAndApplyChanges(fileInfo, config.isOverwriteForced()); + attributeProcessor.findCommentaryTracksAndApplyChanges(fileInfo); + attributeProcessor.findHearingImpairedTracksAndApplyChanges(fileInfo); checkStatusAndUpdate(fileInfo); } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java index d92f5af..76c1ae3 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java @@ -14,8 +14,8 @@ import java.util.stream.Collectors; @Slf4j public class CoherentAttributeUpdaterKernel extends AttributeUpdaterKernel { - public CoherentAttributeUpdaterKernel(FileProcessor processor) { - super(processor); + public CoherentAttributeUpdaterKernel(InputConfig config, FileProcessor processor) { + super(config, processor); } @Override diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java index 119dd1b..ec1e884 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java @@ -5,15 +5,11 @@ import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.FileProcessor; import lombok.extern.slf4j.Slf4j; import me.tongfei.progressbar.ProgressBarBuilder; -import java.io.File; -import java.util.List; -import java.util.stream.Collectors; - @Slf4j public class DefaultAttributeUpdaterKernel extends AttributeUpdaterKernel { - public DefaultAttributeUpdaterKernel(FileProcessor processor) { - super(processor); + public DefaultAttributeUpdaterKernel(InputConfig config, FileProcessor processor) { + super(config, processor); } @Override diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessor.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessor.java index a677a3b..8a53fdd 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessor.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessor.java @@ -9,11 +9,19 @@ import java.util.function.Supplier; import java.util.stream.Stream; public class AttributeProcessor { - private static final SubtitleTrackComparator subtitleTrackComparator = - new SubtitleTrackComparator(InputConfig.getInstance().getPreferredSubtitles().toArray(new String[0])); + private final SubtitleTrackComparator subtitleTrackComparator; + private final Set commentaryKeywords; + private final Set hearingImpairedKeywords; + private final Set forcedKeywords; - private static List filterForPossibleDefaults(List tracks) { - InputConfig config = InputConfig.getInstance(); + public AttributeProcessor(String[] preferredSubtitles, Set forcedKeywords, Set commentaryKeywords, Set hearingImpairedKeywords) { + this.subtitleTrackComparator = new SubtitleTrackComparator(preferredSubtitles); + this.commentaryKeywords = commentaryKeywords; + this.hearingImpairedKeywords = hearingImpairedKeywords; + this.forcedKeywords = forcedKeywords; + } + + private List filterForPossibleDefaults(List tracks) { Stream attributes = tracks.stream(); if (true) { // TODO: config for including commentary @@ -21,7 +29,7 @@ public class AttributeProcessor { .filter(attr -> !attr.commentary()) .filter(attr -> { if (attr.trackName() == null) return true; - return config.getCommentaryKeywords().stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); + return commentaryKeywords.stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); }); } @@ -31,7 +39,7 @@ public class AttributeProcessor { .filter(attr -> !attr.hearingImpaired()) .filter(attr -> { if (attr.trackName() == null) return true; - return config.getHearingImpaired().stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); + return hearingImpairedKeywords.stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); });; } @@ -39,16 +47,12 @@ public class AttributeProcessor { .filter(attr -> !attr.forced()) .filter(attr -> { if (attr.trackName() == null) return true; - return config.getForcedKeywords().stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); + return forcedKeywords.stream().noneMatch(keyword -> keyword.compareToIgnoreCase(attr.trackName()) == 0); }) .toList(); } - public static void findDefaultMatchAndApplyChanges(FileInfo fileInfo) { - findDefaultMatchAndApplyChanges(fileInfo, InputConfig.getInstance().getAttributeConfig().toArray(new AttributeConfig[0])); - } - - public static void findDefaultMatchAndApplyChanges(FileInfo fileInfo, AttributeConfig... configs) { + public void findDefaultMatchAndApplyChanges(FileInfo fileInfo, AttributeConfig... configs) { Map> audiosByLanguage = new HashMap<>(fileInfo.getTracks().size()); Map> subsByLanguage = new HashMap<>(fileInfo.getTracks().size()); filterForPossibleDefaults(fileInfo.getTracks()).forEach(track -> { @@ -75,7 +79,7 @@ public class AttributeProcessor { () -> subsByLanguage.get(fileInfo.getMatchedConfig().getSubtitleLanguage()).stream().max(subtitleTrackComparator).get()); } - private static void applyDefaultChanges(FileInfo fileInfo, Function> tracks, String language, Supplier targetDefaultSupplier) { + private void applyDefaultChanges(FileInfo fileInfo, Function> tracks, String language, Supplier targetDefaultSupplier) { tracks.apply(fileInfo).stream() .filter(TrackAttributes::defaultt) .forEach(attr -> fileInfo.getChanges().getDefaultTrack().put(attr, false)); @@ -89,12 +93,12 @@ public class AttributeProcessor { } } - public static void findForcedTracksAndApplyChanges(FileInfo fileInfo) { + public void findForcedTracksAndApplyChanges(FileInfo fileInfo, boolean overwrite) { Stream forcedTracks = fileInfo.getTracks().stream() .filter(track -> track.trackName() != null) - .filter(track -> InputConfig.getInstance().getForcedKeywords().stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))); + .filter(track -> forcedKeywords.stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))); - if (InputConfig.getInstance().isOverwriteForced()) { + if (overwrite) { fileInfo.getTracks().stream().filter(TrackAttributes::forced).forEach(attr -> { fileInfo.getChanges().getForcedTrack().put(attr, false); }); @@ -107,21 +111,21 @@ public class AttributeProcessor { }); } - public static void findCommentaryTracksAndApplyChanges(FileInfo fileInfo) { + public void findCommentaryTracksAndApplyChanges(FileInfo fileInfo) { fileInfo.getTracks().stream() .filter(track -> !track.commentary()) .filter(track -> track.trackName() != null) - .filter(track -> InputConfig.getInstance().getCommentaryKeywords().stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))) + .filter(track -> commentaryKeywords.stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))) .forEach(attr -> { fileInfo.getChanges().getCommentaryTrack().put(attr, true); }); } - public static void findHearingImpairedTracksAndApplyChanges(FileInfo fileInfo) { + public void findHearingImpairedTracksAndApplyChanges(FileInfo fileInfo) { fileInfo.getTracks().stream() .filter(track -> !track.commentary()) .filter(track -> track.trackName() != null) - .filter(track -> InputConfig.getInstance().getHearingImpaired().stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))) + .filter(track -> hearingImpairedKeywords.stream().anyMatch(keyword -> track.trackName().toLowerCase().contains(keyword.toLowerCase(Locale.ROOT)))) .forEach(attr -> { fileInfo.getChanges().getHearingImpairedTrack().put(attr, true); }); diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/fields/SetConfigParameterTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/fields/SetConfigParameterTest.java index 2a7aab6..c898947 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/fields/SetConfigParameterTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/fields/SetConfigParameterTest.java @@ -22,7 +22,7 @@ class SetConfigParameterTest { return Stream.of( Arguments.of(args("--commentary-keywords", "test"), 1, (Function>) InputConfig::getCommentaryKeywords), Arguments.of(args("--commentary-keywords", "test", "test1", "test2", "test3", "test4"), 5, (Function>) InputConfig::getCommentaryKeywords), - Arguments.of(args(), 2, (Function>) InputConfig::getCommentaryKeywords), + Arguments.of(args(), 3, (Function>) InputConfig::getCommentaryKeywords), Arguments.of(args("--forced-keywords", "test"), 1, (Function>) InputConfig::getForcedKeywords), Arguments.of(args("--forced-keywords", "test", "test1", "test2", "test3", "test4"), 5, (Function>) InputConfig::getForcedKeywords), Arguments.of(args(), 3, (Function>) InputConfig::getForcedKeywords), diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessorTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessorTest.java index 7402657..ec423af 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessorTest.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/AttributeProcessorTest.java @@ -2,18 +2,15 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfo; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.InputConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.TrackAttributes; import org.apache.logging.log4j.util.Strings; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.*; import java.util.stream.Stream; import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.FileInfoTestUtil.*; @@ -70,13 +67,11 @@ class AttributeProcessorTest { @ParameterizedTest @MethodSource("attributeConfigMatching") void findDefaultMatchAndApplyChanges(List tracks, AttributeConfig[] config, String expectedConfig, Map changes) { - InputConfig.getInstance().setPreferredSubtitles(new HashSet<>()); - InputConfig.getInstance().setCommentaryKeywords(new HashSet<>()); - InputConfig.getInstance().setForcedKeywords(new HashSet<>()); + AttributeProcessor attributeProcessor = new AttributeProcessor(new String[]{}, Set.of(), Set.of(), Set.of()); FileInfo fileInfo = new FileInfo(null); fileInfo.addTracks(tracks); - AttributeProcessor.findDefaultMatchAndApplyChanges(fileInfo, config); + attributeProcessor.findDefaultMatchAndApplyChanges(fileInfo, config); assertEquals(Strings.isBlank(expectedConfig), fileInfo.getMatchedConfig() == null); assertEquals(expectedConfig, fileInfo.getMatchedConfig().toStringShort()); assertEquals(changes.size(), fileInfo.getChanges().getDefaultTrack().size()); @@ -105,14 +100,30 @@ class AttributeProcessorTest { private static Stream filterForPossibleDefaults() { return Stream.of( - + Arguments.of(List.of(AUDIO_GER, AUDIO_ENG, SUB_GER), Set.of(AUDIO_GER, AUDIO_ENG, SUB_GER)), + Arguments.of(List.of(AUDIO_GER, AUDIO_ENG, withName(AUDIO_GER, "forced"), SUB_GER), Set.of(AUDIO_GER, AUDIO_ENG, SUB_GER)), + Arguments.of(List.of(AUDIO_GER, AUDIO_ENG, withName(AUDIO_GER, "commentary"), SUB_GER), Set.of(AUDIO_GER, AUDIO_ENG, SUB_GER)), + Arguments.of(List.of(AUDIO_GER, AUDIO_ENG, withName(AUDIO_GER, "SHD"), SUB_GER), Set.of(AUDIO_GER, AUDIO_ENG, SUB_GER)), + Arguments.of(List.of(AUDIO_GER, AUDIO_ENG, SUB_GER, SUB_GER_FORCED, AUDIO_GER_COMMENTARY, AUDIO_GER_HEARING), Set.of(AUDIO_GER, AUDIO_ENG, SUB_GER)) ); } @ParameterizedTest @MethodSource("filterForPossibleDefaults") - void filterForPossibleDefaults(List tracks, Set expected) { + void filterForPossibleDefaults(List tracks, Set expected) throws InvocationTargetException, IllegalAccessException { + AttributeProcessor attributeProcessor = new AttributeProcessor(new String[]{}, Set.of("forced"), Set.of("commentary"), Set.of("SHD")); + Optional method = Arrays.stream(AttributeProcessor.class.getDeclaredMethods()) + .filter(m -> m.getName().equals("filterForPossibleDefaults")) + .findFirst(); + assertTrue(method.isPresent()); + Method underTest = method.get(); + underTest.setAccessible(true); + List result = (List) underTest.invoke(attributeProcessor, tracks); + assertEquals(expected.size(), result.size()); + for (TrackAttributes track : result) { + assertTrue(expected.contains(track)); + } } private static Stream findForcedTracksAndApplyChanges() { @@ -139,15 +150,11 @@ class AttributeProcessorTest { @ParameterizedTest @MethodSource("findForcedTracksAndApplyChanges") void findForcedTracksAndApplyChanges(List tracks, Set keywords, boolean overwrite, Map changes) { - InputConfig.getInstance().setPreferredSubtitles(new HashSet<>()); - InputConfig.getInstance().setCommentaryKeywords(new HashSet<>()); - InputConfig.getInstance().setHearingImpaired(new HashSet<>()); - InputConfig.getInstance().setForcedKeywords(keywords); - InputConfig.getInstance().setOverwriteForced(overwrite); + AttributeProcessor attributeProcessor = new AttributeProcessor(new String[]{}, keywords, Set.of(), Set.of()); FileInfo fileInfo = new FileInfo(null); fileInfo.addTracks(tracks); - AttributeProcessor.findForcedTracksAndApplyChanges(fileInfo); + attributeProcessor.findForcedTracksAndApplyChanges(fileInfo, overwrite); assertEquals(changes.size(), fileInfo.getChanges().getForcedTrack().size()); changes.forEach((key, value) -> { @@ -180,14 +187,11 @@ class AttributeProcessorTest { @ParameterizedTest @MethodSource("findCommentaryTracksAndApplyChanges") void findCommentaryTracksAndApplyChanges(List tracks, Set keywords, Map changes) { - InputConfig.getInstance().setPreferredSubtitles(new HashSet<>()); - InputConfig.getInstance().setCommentaryKeywords(keywords); - InputConfig.getInstance().setHearingImpaired(new HashSet<>()); - InputConfig.getInstance().setForcedKeywords(new HashSet<>()); + AttributeProcessor attributeProcessor = new AttributeProcessor(new String[]{}, Set.of(), keywords, Set.of()); FileInfo fileInfo = new FileInfo(null); fileInfo.addTracks(tracks); - AttributeProcessor.findCommentaryTracksAndApplyChanges(fileInfo); + attributeProcessor.findCommentaryTracksAndApplyChanges(fileInfo); assertEquals(changes.size(), fileInfo.getChanges().getCommentaryTrack().size()); changes.forEach((key, value) -> { @@ -220,14 +224,11 @@ class AttributeProcessorTest { @ParameterizedTest @MethodSource("findCommentaryTracksAndApplyChanges") void findHearingImpairedTracksAndApplyChanges(List tracks, Set keywords, Map changes) { - InputConfig.getInstance().setPreferredSubtitles(new HashSet<>()); - InputConfig.getInstance().setCommentaryKeywords(new HashSet<>()); - InputConfig.getInstance().setHearingImpaired(keywords); - InputConfig.getInstance().setForcedKeywords(new HashSet<>()); + AttributeProcessor attributeProcessor = new AttributeProcessor(new String[]{}, Set.of(), Set.of(), keywords); FileInfo fileInfo = new FileInfo(null); fileInfo.addTracks(tracks); - AttributeProcessor.findHearingImpairedTracksAndApplyChanges(fileInfo); + attributeProcessor.findHearingImpairedTracksAndApplyChanges(fileInfo); assertEquals(changes.size(), fileInfo.getChanges().getHearingImpairedTrack().size()); changes.forEach((key, value) -> { diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java index 303261b..36c1e3f 100644 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java +++ b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/FileInfoTestUtil.java @@ -4,10 +4,10 @@ import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.TrackAttributes; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.TrackType; public class FileInfoTestUtil { - public static final TrackAttributes AUDIO_GER_DEFAULT = new TrackAttributes(0, "ger", "", true, false, false, false, TrackType.AUDIO); - public static final TrackAttributes AUDIO_ENG_DEFAULT = new TrackAttributes(1, "eng", "", true, false, false, false, TrackType.AUDIO); public static final TrackAttributes AUDIO_GER = new TrackAttributes(0, "ger", "", false, false, false, false, TrackType.AUDIO); public static final TrackAttributes AUDIO_ENG = new TrackAttributes(1, "eng", "", false, false, false, false, TrackType.AUDIO); + public static final TrackAttributes AUDIO_GER_DEFAULT = new TrackAttributes(0, "ger", "", true, false, false, false, TrackType.AUDIO); + public static final TrackAttributes AUDIO_ENG_DEFAULT = new TrackAttributes(1, "eng", "", true, false, false, false, TrackType.AUDIO); public static final TrackAttributes AUDIO_GER_FORCED = new TrackAttributes(0, "ger", "", false, true, false, false, TrackType.AUDIO); public static final TrackAttributes AUDIO_ENG_FORCED = new TrackAttributes(1, "eng", "", false, true, false, false, TrackType.AUDIO); public static final TrackAttributes AUDIO_GER_COMMENTARY = new TrackAttributes(0, "ger", "", false, false, true, false, TrackType.AUDIO); @@ -15,10 +15,10 @@ public class FileInfoTestUtil { public static final TrackAttributes AUDIO_GER_HEARING = new TrackAttributes(0, "ger", "", false, false, false, true, TrackType.AUDIO); public static final TrackAttributes AUDIO_ENG_HEARING = new TrackAttributes(1, "ger", "", false, false, false, true, TrackType.AUDIO); - public static final TrackAttributes SUB_GER_DEFAULT = new TrackAttributes(0, "ger", "", true, false, false, false, TrackType.SUBTITLES); - public static final TrackAttributes SUB_ENG_DEFAULT = new TrackAttributes(1, "eng", "", true, false, false, false, TrackType.SUBTITLES); public static final TrackAttributes SUB_GER = new TrackAttributes(0, "ger", "", false, false, false, false, TrackType.SUBTITLES); public static final TrackAttributes SUB_ENG = new TrackAttributes(1, "eng", "", false, false, false, false, TrackType.SUBTITLES); + public static final TrackAttributes SUB_GER_DEFAULT = new TrackAttributes(0, "ger", "", true, false, false, false, TrackType.SUBTITLES); + public static final TrackAttributes SUB_ENG_DEFAULT = new TrackAttributes(1, "eng", "", true, false, false, false, TrackType.SUBTITLES); public static final TrackAttributes SUB_GER_FORCED = new TrackAttributes(0, "ger", "", false, true, false, false, TrackType.SUBTITLES); public static final TrackAttributes SUB_ENG_FORCED = new TrackAttributes(1, "eng", "", false, true, false, false, TrackType.SUBTITLES);