diff --git a/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java b/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java index e1c2d30a92da9012f5d8bf4acd60c313a93c0e46..f1835645211cb93785ec20c4e84f92c340eb1287 100644 --- a/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java +++ b/java/org/slub/rosetta/dps/repository/plugin/SLUBTechnicalMetadataExtractorMediaConchPlugin.java @@ -68,6 +68,23 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract private boolean isDifferentProfile = true; private final Map<String,String> attributes = new HashMap<>(); //static final ExLogger log = ExLogger.getExLogger(SLUBTechnicalMetadataExtractorMediaConchPlugin.class, ExLogger.VALIDATIONSTACK); + private final static ArrayList<String> dnxPropertiesTypeNumber = new ArrayList<String>() {{ + // HINT: based on FL 7.1100 mappings for mediainfo (https://github.com/rosetta-format-library/RosettaFormatLibrary/releases/tag/7.1100) + add("audio.duration"); + add("audio.sampling_rate"); + add("audio.stream_size"); + add("general.audio_count"); + add("general.menu_count"); + add("general.other_count"); + add("general.stream_size"); + add("general.text_count"); + add("general.video_count"); + add("video.bit_rate"); + add("video.display_aspect_ratio"); + add("video.duration"); + add("video.extra.max_slices_count"); + add("video.frame_count"); + }}; /** constructor */ public SLUBTechnicalMetadataExtractorMediaConchPlugin() { @@ -357,16 +374,11 @@ public class SLUBTechnicalMetadataExtractorMediaConchPlugin implements MDExtract if (attributes.containsKey(attribute)) { return attributes.get(attribute); } - /* workaround for no-match, because - Rosetta expects NUMBER value if key ends with "Count", example: - mediainfo.track.General.MenuCount - mediainfo.track.General.OtherCount - mediainfo.track.General.TextCount - */ - if (attribute.endsWith("Count")) { - return "0"; + // HINT: Rosetta expects a number of specific DNX properties instead of text + if (dnxPropertiesTypeNumber.contains( attribute.toString() )) { + return "0"; // type NUMBER } - return "not found"; + return "not found"; // type TEXT & STRING } @Override