/** * Gets a duration of the given resource within a segment and sequence in edit units (frames or samples). * * @param contextProvider a context provider * @param contextInfo a context info defining a resource (all fields must be set). * @return a duration of the given resource within a segment and sequence in edit units (frames or samples) */ private static BigInteger getResourceDurationEU(TemplateParameterContextProvider contextProvider, ContextInfo contextInfo) { return new BigInteger(contextProvider.getResourceContext() .getParameterValue(ResourceContextParameters.DURATION_EDIT_UNIT, contextInfo)); }
private <T> T getResourceParameterValue(ContextInfo contextInfo, ResourceContextParameters parameter, Function<String, T> parser) { String value = contextProvider.getResourceContext().getParameterValue(parameter, contextInfo); return parser.apply(value); }
/** * Gets a duration of the given resource within a segment and sequence in milliseconds. * * @param contextProvider a context provider * @param contextInfo a context info defining a resource (all fields must be set). * @return a duration of the given resource within a segment and sequence in milliseconds. */ private static long getResourceDurationMS(TemplateParameterContextProvider contextProvider, ContextInfo contextInfo) { return new BigInteger(contextProvider.getResourceContext() .getParameterValue(ResourceContextParameters.DURATION_MS, contextInfo)).longValue(); }
private void doBuild(ContextInfo contextInfo) { String essenceDescId = contextProvider.getResourceContext().getParameterValue( ResourceContextParameters.ESSENCE_DESC_ID, contextInfo); List<? extends Object> subDescriptors = essenceDescriptors.get(essenceDescId); if (subDescriptors == null) { return; } for (Object subDescriptor : subDescriptors) { if (subDescriptor instanceof WAVEPCMDescriptor) { audioEssenceDescriptorProcessor.process((WAVEPCMDescriptor) subDescriptor, contextInfo); } } }
/** * Gets resolved parameter value as a string. Never null. * * @param resourceParameter a enum defining the parameter name. * @param contextInfo a context info. Must contain information about segment, sequence and resource. * @return resolved parameter value as a string. Never null. */ public String getParameterValue(ResourceContextParameters resourceParameter, ContextInfo contextInfo) { return getParameterValue( new TemplateParameter(TemplateParameterContext.RESOURCE, resourceParameter.getName()), resourceParameter, contextInfo); }
private void checkParameter(ResourceContextParameters param, ConversionParameterNameType conversionParam, ContextInfo contextInfo, BiPredicate<String, String> equality) throws ConversionNotAllowedException { String destinationParamValue = getDestinationValue(conversionParam, param); if (destinationParamValue == null || destinationParamValue.isEmpty()) { return; } if (contextProvider.getResourceContext().hasResourceParameter(param, contextInfo)) { String paramValue = contextProvider.getResourceContext().getParameterValue(param, contextInfo); if (!equality.test(paramValue, destinationParamValue)) { throw new ConversionNotAllowedException(param.getName(), paramValue, destinationParamValue, contextInfo.getSequenceUuid()); } } }
/** * Resolves the given parameter. * The returned value is never null. * A runtime exception is thrown if parameter can not be resolved. * * @param templateParameter the template parameter to be resolved. * @param contextInfo a context info. Must contain information about segment, sequence and resource. * @return resolved parameter value as a string. Never null. */ @Override public String resolveTemplateParameter(TemplateParameter templateParameter, ContextInfo contextInfo) { ResourceContextParameters resourceParameter = ResourceContextParameters.fromName(templateParameter.getName()); if (resourceParameter == null) { throw new UnknownTemplateParameterNameException( templateParameter.toString(), String.format("Unknown Resource Template Parameter Name '%s'. Supported Resource Parameter Names: %s'", templateParameter.getName(), ResourceContextParameters.getSupportedContextParameters())); } return getParameterValue(templateParameter, resourceParameter, contextInfo); }
@Test public void testEndTime_NoEntryPoint_SourceDuration() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("300", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:06.000", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_TIMECODE, contextInfo)); assertEquals("6000", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_MS, contextInfo)); }
@Test public void testStartTime_NoEntryPoint_NoEditRate() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("0", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:00.000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_TIMECODE, contextInfo)); assertEquals("0", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_MS, contextInfo)); }
@Test public void testEndTime_EntryPoint_NoSourceDuration() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711")) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(ResourceUUID.create("urn:uuid:895820ef-e379-4021-a69e-8a898b0a9094", 0)) .build(); assertEquals("1629120", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:33.940", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_TIMECODE, contextInfo)); assertEquals("33940", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_MS, contextInfo)); }
@Test public void testStartTime_EntryPoint_NoEditRate() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("600", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:12.000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_TIMECODE, contextInfo)); assertEquals("12000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_MS, contextInfo)); }
@Test public void testDuration_SourceDuration() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1eb", 0)) .build(); assertEquals("150", resourceContext.getParameterValue(ResourceContextParameters.DURATION_EDIT_UNIT, contextInfo)); assertEquals("00:00:03.000", resourceContext.getParameterValue(ResourceContextParameters.DURATION_TIMECODE, contextInfo)); assertEquals("3000", resourceContext.getParameterValue(ResourceContextParameters.DURATION_MS, contextInfo)); }
@Test public void testEndTime_EntryPoint_SourceDuration() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1eb", 0)) .build(); assertEquals("450", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:09.000", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_TIMECODE, contextInfo)); assertEquals("9000", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_MS, contextInfo)); }
@Test public void testStartTime_EntryPoint_EditRate() throws Exception { // UUIDs as defined in CPL.xmlo ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1eb", 0)) .build(); assertEquals("300", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:06.000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_TIMECODE, contextInfo)); assertEquals("6000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_MS, contextInfo)); }
@Test public void testStartTime_NoEntryPoint_EditRate() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad16")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("0", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:00.000", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_TIMECODE, contextInfo)); assertEquals("0", resourceContext.getParameterValue(ResourceContextParameters.START_TIME_MS, contextInfo)); }
@Test public void testDuration_NoSourceDuration_EntryPoint() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("1097", resourceContext.getParameterValue(ResourceContextParameters.DURATION_EDIT_UNIT, contextInfo)); assertEquals("00:00:21.940", resourceContext.getParameterValue(ResourceContextParameters.DURATION_TIMECODE, contextInfo)); assertEquals("21940", resourceContext.getParameterValue(ResourceContextParameters.DURATION_MS, contextInfo)); }
@Test public void testDuration_NoSourceDuration_NoEntryPoint() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712")) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(ResourceUUID.create("urn:uuid:895820ef-e379-4021-a69e-8a898b0a9097", 0)) .build(); assertEquals("1629120", resourceContext.getParameterValue(ResourceContextParameters.DURATION_EDIT_UNIT, contextInfo)); assertEquals("00:00:33.940", resourceContext.getParameterValue(ResourceContextParameters.DURATION_TIMECODE, contextInfo)); assertEquals("33940", resourceContext.getParameterValue(ResourceContextParameters.DURATION_MS, contextInfo)); }
@Test public void testEndTime_NoEntryPoint_NoSourceDuration() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712")) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(ResourceUUID.create("urn:uuid:895820ef-e379-4021-a69e-8a898b0a9097", 0)) .build(); assertEquals("1629120", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_EDIT_UNIT, contextInfo)); assertEquals("00:00:33.940", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_TIMECODE, contextInfo)); assertEquals("33940", resourceContext.getParameterValue(ResourceContextParameters.END_TIME_MS, contextInfo)); }
@Test public void testEditRate_NoEditRate() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d")) .setSequenceType(SequenceType.VIDEO) .setResourceUuid(ResourceUUID.create("urn:uuid:2404d06b-4d65-4511-9cac-42d41196a1ea", 0)) .build(); assertEquals("50 1", resourceContext.getParameterValue(ResourceContextParameters.EDIT_RATE, contextInfo)); }
@Test public void testEditRate() throws Exception { // UUIDs as defined in CPL.xml ContextInfo contextInfo = new ContextInfoBuilder() .setSegmentUuid(SegmentUUID.create("urn:uuid:20544b5c-be3c-4274-8633-249ee8a5ad17")) .setSequenceUuid(SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd712")) .setSequenceType(SequenceType.AUDIO) .setResourceUuid(ResourceUUID.create("urn:uuid:895820ef-e379-4021-a69e-8a898b0a9097", 0)) .build(); assertEquals("48000 1", resourceContext.getParameterValue(ResourceContextParameters.EDIT_RATE, contextInfo)); }