private void buildSilenceExprParameters() { contextProvider.getSequenceContext().getUuids(SequenceType.AUDIO).forEach(this::buildSilenceExprParameter); }
private SequenceUUID getVideoSequenceUUID() { return contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).stream() .findFirst() .orElseThrow(() -> new ConversionException("Source must have at least one video sequence")); }
private SequenceUUID getSequenceUUID() { return contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).stream() .findFirst() .orElseThrow(() -> new ConversionException("Source must have at least one video sequence")); } }
private SequenceUUID getSequenceUUID() { return contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).stream() .findFirst() .orElseThrow(() -> new ConversionException("Source must have at least one video sequence")); }
private SequenceUUID getVideoSequenceUUID() { return contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).stream() .findFirst() .orElseThrow(() -> new ConversionException("Source must have at least one video sequence")); }
private long getCplTotalDurationMs() { // bmx uses the smallest video/audio duration as a total duration when it's not equal long result = Long.MAX_VALUE; SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); for (SequenceType seqType : sequenceContext.getSequenceTypes()) { for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { long trackDuration = CplHelper.getVirtualTrackDurationMS(contextProvider, seqType, seqUuid); result = Math.min(result, trackDuration); } } return result; }
private String resolveContextLocale() { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); return sequenceContext.getUuids(SequenceType.AUDIO).stream() .map(uuid -> new ContextInfoBuilder() .setSequenceType(SequenceType.AUDIO) .setSequenceUuid(uuid) .build()) .findFirst() .filter(contextInfo -> sequenceContext.hasSequenceParameter(LANGUAGE, contextInfo)) .map(contextInfo -> sequenceContext.getParameterValue(LANGUAGE, contextInfo)) .orElse(null); }
/** * Prepare channels layout by order. */ private void prepareChannelsByOrder() { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); channelsByOrder.clear(); for (SequenceUUID seqUuid : sequenceContext.getUuids(SequenceType.AUDIO)) { ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.AUDIO) .setSequenceUuid(seqUuid) .build(); String channelsNum = sequenceContext.getParameterValue(SequenceContextParameters.CHANNELS_NUM, contextInfo); IntStream.rangeClosed(1, Integer.parseInt(channelsNum)) .mapToObj(i -> Pair.of(seqUuid, i)) .forEachOrdered(channelsByOrder::add); } }
private LinkedHashMap<String, Integer> getChannelsForTracks() { LinkedHashMap<String, Integer> result = new LinkedHashMap<>(); SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); for (SequenceUUID uuid : sequenceContext.getUuids(SequenceType.AUDIO)) { String channelsNum = sequenceContext.getParameterValue( SequenceContextParameters.CHANNELS_NUM, new ContextInfoBuilder().setSequenceType(SequenceType.AUDIO).setSequenceUuid(uuid).build()); result.put(uuid.getUuid(), Integer.valueOf(channelsNum)); } return result; }
/** * Gets map of CPL virtual track UUID to virtual track channels number by order. * * @return map of CPL virtual track UUID to virtual track channels number by order */ private LinkedHashMap<String, Integer> getVirtualTrackChannels() { LinkedHashMap<String, Integer> result = new LinkedHashMap<>(); SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); for (SequenceUUID uuid : sequenceContext.getUuids(SequenceType.AUDIO)) { String channelsNum = sequenceContext.getParameterValue( SequenceContextParameters.CHANNELS_NUM, new ContextInfoBuilder().setSequenceType(SequenceType.AUDIO).setSequenceUuid(uuid).build()); result.put(uuid.getUuid(), Integer.valueOf(channelsNum)); } return result; }
@Override public void execute() throws IOException { for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(seqType)) { this.currentSeqUuid = seqUuid; for (Object operation : execEachSeq.getPipeOrExecOnceOrExecEachSegment()) { if (operation instanceof PipeSequenceType) { execPipe((PipeSequenceType) operation); } else if (operation instanceof ExecOnceType) { execOnce((ExecOnceType) operation); } else if (operation instanceof ExecEachSegmentType) { execSegment((ExecEachSegmentType) operation); } else if (operation instanceof DynamicParameterConcatType) { addDynamicParameter((DynamicParameterConcatType) operation); } else { throw new ConversionException(String.format("Unknown Conversion Operation type: %s", operation.toString())); } } } }
private void buildDefaultSequenceLanguages() { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); for (SequenceType seqType : sequenceContext.getSequenceTypes()) { for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { String language = getDefaultCplLanguage(); ContextInfo contextInfo = new ContextInfoBuilder().setSequenceType(seqType).setSequenceUuid(seqUuid).build(); if (language != null && !sequenceContext.hasSequenceParameter(SequenceContextParameters.LANGUAGE, contextInfo)) { sequenceContext.addSequenceParameter(seqType, seqUuid, SequenceContextParameters.LANGUAGE, language); } } } }
@Parameters public static Collection<Object[]> data() throws Exception { setUpAll(); Collection<Object[]> data = new ArrayList<>(); for (SequenceType seqType : sequenceContext.getSequenceTypes()) { for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(seqType) .setSequenceUuid(seqUuid) .build(); data.add(new Object[]{contextInfo}); } } return data; }
@Parameters public static Collection<Object[]> data() throws Exception { setUpAll(); Collection<Object[]> data = new ArrayList<>(); for (SequenceType seqType : sequenceContext.getSequenceTypes()) { for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(seqType) .setSequenceUuid(seqUuid) .build(); data.add(new Object[]{contextInfo}); } } return data; }
@Test public void testVideoSequenceContext() throws Exception { assertEquals(1, sequenceContext.getSequenceCount(SequenceType.VIDEO)); // UUIDs as defined in CPL.xml assertArrayEquals( new SequenceUUID[]{SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")}, sequenceContext.getUuids(SequenceType.VIDEO).toArray(new SequenceUUID[]{})); ContextInfo contextInfo = new ContextInfoBuilder().setSequenceType(SequenceType.VIDEO) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")).build(); assertEquals("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d", sequenceContext.getParameterValue(SequenceContextParameters.UUID, contextInfo)); assertEquals("0", sequenceContext.getParameterValue(SequenceContextParameters.NUM, contextInfo)); assertEquals("video", sequenceContext.getParameterValue(SequenceContextParameters.TYPE, contextInfo)); }
private static void fillVideoResourceParameters() { ResourceTemplateParameterContext resourceContext = contextProvider.getResourceContext(); SequenceType seqType = SequenceType.VIDEO; int i = 0; for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(seqType)) { for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { ResourceKey resKey = ResourceKey.create(segmUuid, seqUuid, seqType); for (ResourceUUID resUuid : resourceContext.getUuids(resKey)) { resourceContext.addResourceParameter(resKey, resUuid, ResourceContextParameters.WIDTH, String.valueOf(widths[i])); resourceContext.addResourceParameter(resKey, resUuid, ResourceContextParameters.HEIGHT, String.valueOf(heights[i])); resourceContext.addResourceParameter(resKey, resUuid, ResourceContextParameters.FRAME_RATE, frameRates[i]); i++; } } } }
@Test public void testAudioSequenceContext() throws Exception { assertEquals(2, sequenceContext.getSequenceCount(SequenceType.AUDIO)); // UUIDs as defined in CPL.xml assertArrayEquals( new SequenceUUID[]{ SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711"), SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712")}, sequenceContext.getUuids(SequenceType.AUDIO).toArray(new SequenceUUID[]{})); ContextInfo contextInfo = new ContextInfoBuilder().setSequenceType(SequenceType.AUDIO) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711")).build(); assertEquals("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711", sequenceContext.getParameterValue(SequenceContextParameters.UUID, contextInfo)); assertEquals("0", sequenceContext.getParameterValue(SequenceContextParameters.NUM, contextInfo)); assertEquals("audio", sequenceContext.getParameterValue(SequenceContextParameters.TYPE, contextInfo)); contextInfo = new ContextInfoBuilder().setSequenceType(SequenceType.AUDIO) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712")).build(); assertEquals("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712", sequenceContext.getParameterValue(SequenceContextParameters.UUID, contextInfo)); assertEquals("1", sequenceContext.getParameterValue(SequenceContextParameters.NUM, contextInfo)); assertEquals("audio", sequenceContext.getParameterValue(SequenceContextParameters.TYPE, contextInfo)); }
public void build() { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); for (SequenceType seqType : sequenceContext.getSequenceTypes()) { for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, seqType))) { ContextInfo contextInfo = new ContextInfoBuilder() .setResourceUuid(resUuid) .setSegmentUuid(segmUuid) .setSequenceUuid(seqUuid) .setSequenceType(seqType).build(); doBuild(contextInfo); } } } } }
@Test public void testAddSequenceParameterInitsSequence() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getSequenceContext().addSequenceParameter(SequenceType.VIDEO, SequenceUUID.create("urn:uuid:3333"), SequenceContextParameters.NUM, "5"); assertEquals(1, contextProvider.getSequenceContext().getSequenceCount(SequenceType.VIDEO)); assertArrayEquals( new SequenceUUID[]{SequenceUUID.create("urn:uuid:3333")}, contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).toArray()); assertDefaultSequenceParameters(contextProvider, 5, SequenceUUID.create("urn:uuid:3333"), SequenceType.VIDEO); }
@Test public void testInitSequenceOrder() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getSequenceContext().initSequence(SequenceType.VIDEO, SequenceUUID.create("urn:uuid:3333")); contextProvider.getSequenceContext().initSequence(SequenceType.VIDEO, SequenceUUID.create("urn:uuid:1111")); contextProvider.getSequenceContext().initSequence(SequenceType.VIDEO, SequenceUUID.create("urn:uuid:2222")); contextProvider.getSequenceContext().initSequence(SequenceType.AUDIO, SequenceUUID.create("urn:uuid:2222")); contextProvider.getSequenceContext().initSequence(SequenceType.AUDIO, SequenceUUID.create("urn:uuid:3333")); contextProvider.getSequenceContext().initSequence(SequenceType.AUDIO, SequenceUUID.create("urn:uuid:1111")); contextProvider.getSequenceContext().initSequence(SequenceType.AUDIO, SequenceUUID.create("urn:uuid:4444")); assertEquals(3, contextProvider.getSequenceContext().getSequenceCount(SequenceType.VIDEO)); assertArrayEquals( new SequenceUUID[]{ SequenceUUID.create("urn:uuid:3333"), SequenceUUID.create("urn:uuid:1111"), SequenceUUID.create("urn:uuid:2222")}, contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO).toArray()); assertEquals(4, contextProvider.getSequenceContext().getSequenceCount(SequenceType.AUDIO)); assertArrayEquals( new SequenceUUID[]{ SequenceUUID.create("urn:uuid:2222"), SequenceUUID.create("urn:uuid:3333"), SequenceUUID.create("urn:uuid:1111"), SequenceUUID.create("urn:uuid:4444")}, contextProvider.getSequenceContext().getUuids(SequenceType.AUDIO).toArray()); }