/** * Generates a default audiomap basis on information of CPL virtual tracks. * * @return audiomap. */ private AudioMapType generateDefaultAudioMap(String locale) { AudioMapType audioMap = new AudioMapType(); audioMap.setMainAudio(new MainAudioType()); audioMap.getMainAudio().setLocale(locale); audioMap.getMainAudio().setName("main-audio.mov"); if (!fillDefaultAudioMapFromDescriptor(audioMap)) { setAudioMapDefaultOptions(audioMap); } return audioMap; }
private boolean fillDefaultAudioMapFromDescriptor(AudioMapType audioMap) { String mainLang = audioMap.getMainAudio().getLocale(); List<Pair<SequenceUUID, Integer>> mainChannels = channelMapper.guessMainAudio(mainLang); if (mainChannels.isEmpty()) { return false; } if (mainChannels.size() == 8) { audioMap.getMainAudio().setOption3(createXmlOption3(mainChannels)); } else if (mainChannels.size() == 2) { audioMap.getMainAudio().setOption6(createXmlOption6(mainChannels)); } else { return false; } channelMapper.guessAlternatives(mainLang).entrySet().forEach(entry -> { AlternativeAudioType audio = new AlternativeAudioType(); audio.setLocale(entry.getKey()); audio.setName(String.format("audio_%s.mov", entry.getKey().replace("-", "_").toUpperCase())); audio.setOption6(createXmlOption6(entry.getValue())); audioMap.getAlternativeAudio().add(audio); }); return true; }
AudioMapType audioMap = new AudioMapType(); audioMap.setMainAudio(new MainAudioType()); audioMap.getAlternativeAudio().add(new AlternativeAudioType()); MainAudioType mainAudio = audioMap.getMainAudio(); mainAudio.setLocale("en-US"); mainAudio.setName("main-audio.mov"); rt.setCPLVirtualTrackChannel(2); AlternativeAudioType alt = audioMap.getAlternativeAudio().get(0); alt.setLocale("de"); alt.setName("audio_DE.mov");
private void setAudioMapDefaultOptions(AudioMapType audioMap) { if (sequencedTrackChannelNumbers.size() < 6) { audioMap.getMainAudio().setOption6(new Option6Type()); } else { audioMap.getMainAudio().setOption3(new Option3Type()); } }
/** * Create an instance of {@link AudioMapType } * */ public AudioMapType createAudioMapType() { return new AudioMapType(); }
/** * Gets array of additional audio from parsed XML type. * * @param audioMap parsed audio map * @return array of additional audio from parsed XML type */ private ArrayList<AudioOption> getAlternativeAudios(AudioMapType audioMap) { ArrayList<AudioOption> options = new ArrayList<>(); if (audioMap.getAlternativeAudio() == null) { return options; } audioMap.getAlternativeAudio().forEach((altAudio) -> { AudioOption option; Object xmlOpt = getXmlAlternativeAudioOption(altAudio); verifyOption(xmlOpt); option = audioOptionFromXmlOption(xmlOpt, altAudio.getLocale(), false); if (option != null) { option.setFileName(altAudio.getName()); option.setLocale(altAudio.getLocale()); options.add(option); } }); return options; }
@Override public void setLocale(Locale locale) { audioMap.getMainAudio().setLocale(LocaleHelper.toITunesLocale(locale)); }
/** * Create an instance of {@link AudioMapType } * */ public AudioMapType createAudioMapType() { return new AudioMapType(); }
Option6Type deOption = provider.getAudioMap().getAlternativeAudio().get(0).getOption6(); deOption.setTrack1(new Option6Type.Track1()); ChannelType deLeft = new ChannelType();
/** * Gets mapper options that contains expected layout for all audiomap opts, which aren't linked to related track explicitly. * * @return list of all options that aren't linked to related tracks */ private List<Pair<LayoutType, String>> getMapperLayoutOptions() { List<Pair<LayoutType, String>> options = new ArrayList<>(); MainAudioType mainAudio = audioMap.getMainAudio(); Object mainOption = getXmlMainAudioOption(mainAudio); verifyOption(mainOption); if (isOptionEmpty(mainOption)) { options.add(getMapperLayoutOption(mainOption, mainAudio.getLocale())); } audioMap.getAlternativeAudio().forEach(altAudio -> { Object altOption = getXmlAlternativeAudioOption(altAudio); verifyOption(altOption); if (isOptionEmpty(altOption)) { options.add(getMapperLayoutOption(altOption, altAudio.getLocale())); } }); return options; }
@Override public Locale getLocale() { return LocaleHelper.fromITunesLocale(audioMap.getMainAudio().getLocale()); }
MainAudioType mainAudio = audioMap.getMainAudio(); assertEquals("main-audio.mov", mainAudio.getName()); assertEquals("en-US", mainAudio.getLocale()); assertTrue(audioMap.getAlternativeAudio().isEmpty());
/** * Gets mainAudio as AudioOption from parsed XML type. * * @param audioMap parsed audio map * @return mainAudio as AudioOption from parsed XML type */ private AudioOption getMainAudio(AudioMapType audioMap) { AudioOption option; Object xmlOpt = getXmlMainAudioOption(audioMap.getMainAudio()); verifyOption(xmlOpt); option = audioOptionFromXmlOption(xmlOpt, audioMap.getMainAudio().getLocale(), true); option.setFileName(audioMap.getMainAudio().getName()); option.setLocale(audioMap.getMainAudio().getLocale()); return option; }
Option3Type opt3 = audioMap.getMainAudio().getOption3(); assertEquals(2, opt3.getTrack2().getRt().getCPLVirtualTrackChannel()); Option6Type opt6 = audioMap.getAlternativeAudio().get(0).getOption6();
@Test public void testUpdateLocale() throws Exception { /* PREPARATION */ String seq1 = "urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711"; TemplateParameterContextProvider contextProvider = TemplateParameterContextCreator.createDefaultContextProvider(); prepareCplVirtualTracksWithChannels(contextProvider, trackChannels(seq1, 1)); /* EXECUTION */ AudioMapXmlProvider provider = createAndInitProvider(contextProvider); provider.setLocale(Locale.CANADA_FRENCH); /* VALIDATION */ assertEquals("fr-CA", provider.getAudioMap().getMainAudio().getLocale()); }
Option3Type opt3 = audioMap.getMainAudio().getOption3(); assertEquals(2, opt3.getTrack2().getRt().getCPLVirtualTrackChannel()); Option6Type opt6 = audioMap.getAlternativeAudio().get(0).getOption6();
MainAudioType mainAudio = audioMap.getMainAudio(); assertEquals("main-audio.mov", mainAudio.getName()); assertEquals("en-US", mainAudio.getLocale()); assertEquals(1, audioMap.getAlternativeAudio().size()); AlternativeAudioType deAudio = audioMap.getAlternativeAudio().get(0); assertEquals("audio_DE.mov", deAudio.getName()); assertEquals("de", deAudio.getLocale());