private Stream<ContextInfo> segmentStream(ContextInfo contextInfo) { return contextProvider.getSegmentContext().getUuids().stream() .map(segUuid -> new ContextInfoBuilder() .setSequenceType(contextInfo.getSequenceType()) .setSequenceUuid(contextInfo.getSequenceUuid()) .setSegmentUuid(segUuid) .build()); }
@Override public void execute() throws IOException { for (SegmentUUID segmentUuid : contextProvider.getSegmentContext().getUuids()) { this.currentSegmentUuid = segmentUuid; for (Object operation : execEachSegm.getPipeOrExecOnceOrExecEachSequence()) { if (operation instanceof PipeSegmentType) { execPipe((PipeSegmentType) operation); } else if (operation instanceof ExecOnceType) { execOnce((ExecOnceType) operation); } else if (operation instanceof ExecEachSequenceType) { execSequence((ExecEachSequenceType) operation); } else if (operation instanceof DynamicParameterConcatType) { addDynamicParameter((DynamicParameterConcatType) operation); } else { throw new ConversionException(String.format("Unknown Conversion Operation type: %s", operation.toString())); } } } }
for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, SequenceType.AUDIO))) {
/** * Gets a total duration of the given virtual track in edit units (frames or samples). * * @param contextProvider a context provider * @param seqType a sequence (virtual track) type * @param seqUuid a sequence (virtual track) UUID * @return a total duration of a virtual track in edit units (frames or samples). */ public static BigInteger getVirtualTrackDurationEU(TemplateParameterContextProvider contextProvider, SequenceType seqType, SequenceUUID seqUuid) { SegmentTemplateParameterContext segmentContext = contextProvider.getSegmentContext(); ResourceTemplateParameterContext resourceContext = contextProvider.getResourceContext(); BigInteger sequenceDuration = BigInteger.ZERO; for (SegmentUUID segmUuid : segmentContext.getUuids()) { for (ResourceUUID resUuid : resourceContext.getUuids(ResourceKey.create(segmUuid, seqUuid, seqType))) { ContextInfo contextInfo = new ContextInfoBuilder() .setResourceUuid(resUuid) .setSegmentUuid(segmUuid) .setSequenceUuid(seqUuid) .setSequenceType(seqType) .build(); sequenceDuration = sequenceDuration.add(getResourceDurationEU(contextProvider, contextInfo)); } } return sequenceDuration; }
for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(seqType)) { long offsetMs = destStartTimeMs; for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { ResourceKey resourceKey = ResourceKey.create(segmUuid, seqUuid, seqType); for (ResourceUUID resUuid : resourceContext.getUuids(resourceKey)) {
for (SequenceType seqType : contextProvider.getSequenceContext().getSequenceTypes()) { for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(seqType)) { for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { ResourceKey resourceKey = ResourceKey.create(segmUuid, seqUuid, seqType); for (ResourceUUID resUuid : resourceContext.getUuids(resourceKey)) {
SequenceType seqType = SequenceType.VIDEO; for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(SequenceType.VIDEO)) { for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { ResourceKey resourceKey = ResourceKey.create(segmUuid, seqUuid, seqType); for (ResourceUUID resUuid : resourceContext.getUuids(resourceKey)) { for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { ResourceKey resourceKey = ResourceKey.create(segmUuid, seqUuid, seqType); for (ResourceUUID resUuid : resourceContext.getUuids(resourceKey)) {
for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) {
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++; } } } }
for (SequenceUUID seqUuid : sequenceContext.getUuids(seqType)) { VirtualTrackInfo prevVirtualTrack = null; for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, seqType))) {
/** * Gets a total duration of the given virtual track in milliseconds. * * @param contextProvider a context provider * @param seqType a sequence (virtual track) type * @param seqUuid a sequence (virtual track) UUID * @return a total duration of a virtual track in milliseconds */ public static long getVirtualTrackDurationMS(TemplateParameterContextProvider contextProvider, SequenceType seqType, SequenceUUID seqUuid) { SegmentTemplateParameterContext segmentContext = contextProvider.getSegmentContext(); ResourceTemplateParameterContext resourceContext = contextProvider.getResourceContext(); long sequenceDuration = 0L; for (SegmentUUID segmUuid : segmentContext.getUuids()) { for (ResourceUUID resUuid : resourceContext.getUuids(ResourceKey.create(segmUuid, seqUuid, seqType))) { ContextInfo contextInfo = new ContextInfoBuilder() .setResourceUuid(resUuid) .setSegmentUuid(segmUuid) .setSequenceUuid(seqUuid) .setSequenceType(seqType) .build(); sequenceDuration += getResourceDurationMS(contextProvider, contextInfo); } } return sequenceDuration; }
for (SequenceUUID seqUuid : contextProvider.getSequenceContext().getUuids(SequenceType.AUDIO)) { String channelLayout = null; for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, SequenceType.AUDIO))) {
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 testAddSegmentParametersInitsSegment() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getSegmentContext().addSegmentParameter( SegmentUUID.create("urn:uuid:3333"), SegmentContextParameters.NUM, "5"); assertEquals(1, contextProvider.getSegmentContext().getSegmentsNum()); assertArrayEquals( new SegmentUUID[]{SegmentUUID.create("urn:uuid:3333")}, contextProvider.getSegmentContext().getUuids().toArray()); assertDefaultSegmentParameters(contextProvider, 5, SegmentUUID.create("urn:uuid:3333")); }
for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) {
@Test public void testSegmentContextCreatedCorrectly() throws Exception { TemplateParameterContextProvider contextProvider = TemplateParameterContextCreator.createDefaultContextProvider(); AssetMap assetMap = new AssetMapParser().parse(ImpUtils.getImpFolder(), ImpUtils.getCorrectAssetmap()); new CplContextBuilder(contextProvider, assetMap, ImpUtils.getCorrectCpl()).build(); SegmentTemplateParameterContext segmentContext = contextProvider.getSegmentContext(); assertEquals(2, segmentContext.getSegmentsNum()); // UUIDs as defined in CPL.xml assertArrayEquals( new SegmentUUID[]{ SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16"), SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17") }, segmentContext.getUuids().toArray(new SegmentUUID[]{})); ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .build(); assertEquals("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16", segmentContext.getParameterValue(SegmentContextParameters.UUID, contextInfo)); assertEquals("0", segmentContext.getParameterValue(SegmentContextParameters.NUM, contextInfo)); contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .build(); assertEquals("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17", segmentContext.getParameterValue(SegmentContextParameters.UUID, contextInfo)); assertEquals("1", segmentContext.getParameterValue(SegmentContextParameters.NUM, contextInfo)); }
for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, seqType))) {
for (SegmentUUID segmUuid : contextProvider.getSegmentContext().getUuids()) { for (ResourceUUID resUuid : contextProvider.getResourceContext() .getUuids(ResourceKey.create(segmUuid, seqUuid, SequenceType.AUDIO))) {
@Test public void testInitSegmentsOrder() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:3333")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:1111")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:2222")); assertEquals(3, contextProvider.getSegmentContext().getSegmentsNum()); assertArrayEquals( new SegmentUUID[]{ SegmentUUID.create("urn:uuid:3333"), SegmentUUID.create("urn:uuid:1111"), SegmentUUID.create("urn:uuid:2222")}, contextProvider.getSegmentContext().getUuids().toArray()); }
@Test public void testInitSegmentsNoDuplicate() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:3333")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:1111")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:2222")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:3333")); contextProvider.getSegmentContext().initSegment(SegmentUUID.create("urn:uuid:1111")); assertEquals(3, contextProvider.getSegmentContext().getSegmentsNum()); assertArrayEquals( new SegmentUUID[]{ SegmentUUID.create("urn:uuid:3333"), SegmentUUID.create("urn:uuid:1111"), SegmentUUID.create("urn:uuid:2222")}, contextProvider.getSegmentContext().getUuids().toArray()); }