public static TemplateParameterContextProvider createDefaultContextProviderWithCPLContext( int segmentCount, int seqCount, int resourceCount, int repeatCountForResource, EnumSet<SequenceType> sequenceTypes) throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, segmentCount, seqCount, resourceCount, repeatCountForResource, sequenceTypes); return contextProvider; }
public static void addResourceContextParameter(TemplateParameterContextProvider contextProvider, int segm, int seq, SequenceType seqType, int res, int repeat, ResourceContextParameters param, String paramValue) { contextProvider.getResourceContext().addResourceParameter( ResourceKey.create(getSegmentUuid(segm), getSequenceUuid(seq, seqType), seqType), getResourceUuid(segm, seq, seqType, res, repeat), param, paramValue); }
public static File getWorkingDir() { return new File(TemplateParameterContextCreator.getCurrentTmpDir(), WORKING_DIR); }
TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( 4, 1, 1, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)); addResourceContextParameter(contextProvider, 0, 0, SequenceType.AUDIO, 0, // essence1 for first audio segment ResourceContextParameters.ESSENCE, "essence1"); addResourceContextParameter(contextProvider, 0, 0, SequenceType.AUDIO, 0, ResourceContextParameters.TRACK_FILE_ID, "essence1Id"); addResourceContextParameter(contextProvider, 1, 0, SequenceType.AUDIO, 0, // essence1 for second audio segment ResourceContextParameters.ESSENCE, "essence1"); addResourceContextParameter(contextProvider, 1, 0, SequenceType.AUDIO, 0, ResourceContextParameters.TRACK_FILE_ID, "essence1Id"); addResourceContextParameter(contextProvider, 2, 0, SequenceType.AUDIO, 0, // essence2 for third audio segment ResourceContextParameters.ESSENCE, "essence2"); addResourceContextParameter(contextProvider, 2, 0, SequenceType.AUDIO, 0, ResourceContextParameters.TRACK_FILE_ID, "essence2Id"); addResourceContextParameter(contextProvider, 3, 0, SequenceType.AUDIO, 0, // essence3 for fourth audio segment ResourceContextParameters.ESSENCE, "essence3"); addResourceContextParameter(contextProvider, 3, 0, SequenceType.AUDIO, 0, ResourceContextParameters.TRACK_FILE_ID, "essence3Id"); addResourceContextParameter(contextProvider, 0, 0, SequenceType.VIDEO, 0, // essence1 for first video segment ResourceContextParameters.ESSENCE, "essence1"); addResourceContextParameter(contextProvider, 0, 0, SequenceType.VIDEO, 0, ResourceContextParameters.TRACK_FILE_ID, "essence1Id"); addResourceContextParameter(contextProvider, 1, 0, SequenceType.VIDEO, 0, // essence2 for second video segment
@Test public void okAudioParameterNotSpecifiedInDestinationParams() throws Exception { // 1. create context with sample rate not specified DestContextTypeMap destContextMap = new DestContextMapBuilder() .setSampleRate(null) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 2. create config disallow mismatched sample rate ConfigType config = new ConfigBuilder() .setSampleRate(false) .build(); // 3. create context with sample rate specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.AUDIO), SequenceType.AUDIO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.SAMPLE_RATE, "96000"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void testAppendDynamicParameterWithParamsInNameAndValue() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2); contextProvider.getDynamicContext().appendParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); contextProvider.getDynamicContext().appendParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", "_%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{tmp.tmpParamSimple}", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 0, SequenceType.AUDIO, 0, 0)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals(DEFAULT_PARAMETERS_COUNT + 1, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals("0-0-audio-0-tmpParamSimple_0-0-audio-0-tmpParamSimple", contextProvider.getDynamicContext().getParameterValueAsString("name-0-0-audio-0-tmpParamSimple")); }
public static TemplateParameterContextProvider createDefaultContextProviderWithDestContext( DestContextTypeMap destContextMap) throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getDestContext().setDestContextMap(destContextMap); return contextProvider; }
private static void assertChannelEquals(Pair<SequenceUUID, Integer> channel, Integer audioSeqNum, Integer channelsNum) { SequenceUUID seqUuid = getSequenceUuid(audioSeqNum, SequenceType.AUDIO); assertEquals(seqUuid, channel.getLeft()); assertEquals(channelsNum, channel.getRight()); }
@BeforeClass public static void setupAll() throws IOException { // create both working directory and logs folder. FileUtils.deleteDirectory(TemplateParameterContextCreator.getWorkingDir()); File workingDir = TemplateParameterContextCreator.getWorkingDir(); if (!workingDir.mkdir()) { throw new RuntimeException("Could not create a working dir within tmp folder"); } }
for (int res = 0; res < RESOURCE_COUNT; res++) { for (int repeat = 0; repeat < REPEAT_COUNT; repeat++) { ResourceUUID resourceUuid = getResourceUuid(segm, seq, seqType, res, repeat); ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(segm)) .setSequenceUuid(getSequenceUuid(seq, seqType)) .setSequenceType(seqType) .setResourceUuid(resourceUuid) assertEquals(String.valueOf(repeat), resolvedRepeat); assertResourceParameter(resolvedEssence, resourceUuid, ResourceContextParameters.ESSENCE); assertResourceParameter(resolvedStartTimeTC, resourceUuid, ResourceContextParameters.START_TIME_TIMECODE); assertResourceParameter(resolvedDurationTC, resourceUuid, ResourceContextParameters.DURATION_TIMECODE); assertResourceParameter(resolvedStartTimeEU, resourceUuid, ResourceContextParameters.START_TIME_EDIT_UNIT); assertResourceParameter(resolvedDurationEU, resourceUuid, ResourceContextParameters.DURATION_EDIT_UNIT); assertResourceParameter(resolvedStartTimeFrame, resourceUuid, ResourceContextParameters.START_TIME_FRAME_EDIT_UNIT); assertResourceParameter(resolvedDurationFrame, resourceUuid, ResourceContextParameters.DURATION_FRAME_EDIT_UNIT);
@Test public void testFillResourceContext() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( 2, 2, 2, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)); for (int seq = 0; seq < 2; seq++) { ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(segm)) .setSequenceUuid(getSequenceUuid(seq, SequenceType.AUDIO)) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(getResourceUuid(segm, seq, SequenceType.AUDIO, 0, 0)) .build(); assertEquals("48000", resourceContext.getParameterValue(ResourceContextParameters.SAMPLE_RATE, contextInfo)); .setSegmentUuid(getSegmentUuid(segm)) .setSequenceUuid(getSequenceUuid(seq, SequenceType.AUDIO)) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(getResourceUuid(segm, seq, SequenceType.AUDIO, 1, 0)) .build(); assertEquals("96000", resourceContext.getParameterValue(ResourceContextParameters.SAMPLE_RATE, contextInfo)); for (int seq = 0; seq < 2; seq++) { ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(segm)) .setSequenceUuid(getSequenceUuid(seq, SequenceType.VIDEO)) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(getResourceUuid(segm, seq, SequenceType.VIDEO, 0, 0)) .build(); assertEquals("4096", resourceContext.getParameterValue(ResourceContextParameters.WIDTH, contextInfo));
@Test public void testDefaultDynamicParameters() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); assertEquals(DEFAULT_PARAMETERS_COUNT, contextProvider.getDynamicContext().getAllParametersAsString().size()); assertEquals(getWorkingDir().getAbsolutePath(), contextProvider.getDynamicContext().getParameterValueAsString(DynamicContextParameters.WORKING_DIR)); assertEquals("errors.xml", contextProvider.getDynamicContext().getParameterValueAsString(DynamicContextParameters.OUTPUT_VALIDATION_FILE)); }
@Test public void testFillSequenceContext() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( 2, 2, 2, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)); new TestMediaInfoContextBuilder(contextProvider).build(); SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); // the values as defined in mediaInfoAudio.xml and mediaInfoVideo.xml // first audio track ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.AUDIO) .setSequenceUuid(getSequenceUuid(0, SequenceType.AUDIO)) .build(); assertEquals("2", sequenceContext.getParameterValue(SequenceContextParameters.CHANNELS_NUM, contextInfo)); // second audio track contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.AUDIO) .setSequenceUuid(getSequenceUuid(1, SequenceType.AUDIO)) .build(); assertEquals("2", sequenceContext.getParameterValue(SequenceContextParameters.CHANNELS_NUM, contextInfo)); // first video track contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.VIDEO) .setSequenceUuid(getSequenceUuid(0, SequenceType.VIDEO)) .build(); assertEquals("50/1", sequenceContext.getParameterValue(SequenceContextParameters.FRAME_RATE, contextInfo)); }
public static void fillCPLContext(TemplateParameterContextProvider contextProvider, int segmentCount, int seqCount, int resourceCount) { fillCPLContext(contextProvider, segmentCount, seqCount, resourceCount, 1, EnumSet.allOf(SequenceType.class)); }
public static TemplateParameterContextProvider createDefaultContextProvider() throws Exception { ConfigXmlProvider configProvider = new ConfigXmlProvider(ConfigUtils.getCorrectConfigXml(), ConfigUtils.getCorrectConfigXmlPath()); ConversionXmlProvider conversionProvider = new ConversionXmlProvider(ConversionUtils.getCorrectConversionXml(), ConversionUtils.getCorrectConversionXmlPath(), new FakeFormat()); TemplateParameterContextProvider contextProvider = new TemplateParameterContextProvider(configProvider, conversionProvider, getWorkingDir()); initEmptyDestContext(contextProvider); return contextProvider; }
public TestMediaInfoContextBuilder(File videoMediaInfoXml, File audioMediaInfoXml) throws Exception { this(createDefaultContextProviderWithCPLContext( 2, 2, 2, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)), new TestExecutorLogger(), videoMediaInfoXml, audioMediaInfoXml); }
@Test public void testDynamicContextMediaInfoOutput() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( 2, 2, 2, EnumSet.of(SequenceType.VIDEO, SequenceType.AUDIO)); new TestMediaInfoContextBuilder(contextProvider).build(); createResourceContextInfo(0, 0, SequenceType.AUDIO, 0, 0)); String essenceAudio2 = resourceContext.getParameterValue(ResourceContextParameters.ESSENCE, createResourceContextInfo(1, 1, SequenceType.AUDIO, 1, 0)); String essenceVideo1 = resourceContext.getParameterValue(ResourceContextParameters.ESSENCE, createResourceContextInfo(0, 0, SequenceType.VIDEO, 0, 0)); String essenceVideo2 = resourceContext.getParameterValue(ResourceContextParameters.ESSENCE, createResourceContextInfo(1, 1, SequenceType.VIDEO, 1, 0));
public static void addResourceContextParameter(TemplateParameterContextProvider contextProvider, int segm, int seq, SequenceType seqType, int res, ResourceContextParameters param, String paramValue) { addResourceContextParameter(contextProvider, segm, seq, seqType, res, 0, param, paramValue); }
@Test public void okVideoParameterNotSpecifiedInDestinationParams() throws Exception { // 1. create context with bit depth not specified DestContextTypeMap destContextMap = new DestContextMapBuilder() .setBitDepth(null) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 2. create config disallow mismatched bit depth ConfigType config = new ConfigBuilder() .setBitDepth(false) .setNonNullAudio(true) .setNonNullVideo(true) .build(); // 3. create context with bit depth specified TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCplAndDestContext( destContextMap, 2, 2, 2, EnumSet.allOf(SequenceType.class)); ResourceKey resourceKey = ResourceKey.create(getSegmentUuid(0), getSequenceUuid(0, SequenceType.VIDEO), SequenceType.VIDEO); ResourceUUID resourceUuid = getResourceUuid(0, 0, SequenceType.VIDEO, 0, 0); contextProvider.getResourceContext() .addResourceParameter( resourceKey, resourceUuid, ResourceContextParameters.BIT_DEPTH, "8"); // 4. init checker SilentConversionChecker checker = new SilentConversionChecker(contextProvider, config); // 5. check. no exception expected checker.check(); }
@Test public void testAddDynamicParameterWithParamsInName() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); fillCPLContext(contextProvider, 2, 2, 2, 2); contextProvider.getDynamicContext().addParameter( "name-%{tmp.tmpParamSimple}", "value1", ContextInfo.EMPTY); contextProvider.getDynamicContext().addParameter( "name-%{segm.num}-%{seq.num}-%{seq.type}-%{resource.num}-%{resource.repeat}-%{tmp.tmpParamSimple}", "value2", new ContextInfoBuilder() .setSegmentUuid(getSegmentUuid(0)) .setSequenceUuid(getSequenceUuid(1, SequenceType.AUDIO)) .setResourceUuid(getResourceUuid(0, 1, SequenceType.AUDIO, 1, 1)) .setSequenceType(SequenceType.AUDIO).build()); assertEquals("value1", contextProvider.getDynamicContext().getParameterValueAsString("name-tmpParamSimple")); assertEquals("value2", contextProvider.getDynamicContext().getParameterValueAsString("name-0-1-audio-3-1-tmpParamSimple")); }