/** * Gets a parameter value. * * @param destParameter pre-defined dest parameter * @return a parameter value as a string */ public String getParameterValue(DestContextParameters destParameter) { return getParameterValue(destParameter.getName()); }
@Override protected void doBuildDestContext() { DestTemplateParameterContext destContext = contextProvider.getDestContext(); // set interlaced to false if not specified String interlaced = destContext.getParameterValue(INTERLACED); destContext.addParameter(INTERLACED, interlaced == null ? Boolean.FALSE.toString() : interlaced); // define is dar provided destContext.addParameter(DEST_PARAM_VIDEO_IS_DAR_SPECIFIED, Boolean.toString(destContext.getParameterValue(DAR) != null)); // set frame rate for interlaced scan // for ffmpeg iFrameRate=frameRate*2 // for prenc iFrameRate=frameRate BigFraction iFrameRate = ConversionHelper.parseEditRate(destContext.getParameterValue(FRAME_RATE)); if (!SystemUtils.IS_OS_MAC_OSX) { iFrameRate = iFrameRate.multiply(2); } destContext.addParameter(DEST_PARAM_VIDEO_IFRAME_RATE, ConversionHelper.toREditRate(iFrameRate)); }
private void buildDestContext() { logger.debug("Building Dest context..."); DestTemplateParameterContext destContext = contextProvider.getDestContext(); destContext.setDestContextMap(destContextMap); // build format-specific dest parameters doBuildDestContext(); logger.debug("Built Dest context: OK\n"); }
@Test public void testAddDestParameter() throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithDestContext( new DestContextTypeMap()); contextProvider.getDestContext() .addParameter(DestContextParameters.ASPECT_RATIO, "16/9") .addParameter("dest1", "dest1Value") .addParameter("dest2", "dest2Value"); assertEquals(3, contextProvider.getDestContext().getAllParameters().size()); assertEquals("16/9", contextProvider.getDestContext().getParameterValue(DestContextParameters.ASPECT_RATIO)); assertEquals("dest1Value", contextProvider.getDestContext().getParameterValue("dest1")); assertEquals("dest2Value", contextProvider.getDestContext().getParameterValue("dest2")); }
/** * Adds a dest parameter value. * * @param destParam enum defining the parameter name. * @param paramValue parameter value * @return this dest parameter context. */ public DestTemplateParameterContext addParameter(DestContextParameters destParam, String paramValue) { return addParameter(destParam.getName(), paramValue); }
private ITemplateParameterContext createContext(TemplateParameterContext context) { switch (context) { case TMP: return new TmpTemplateParameterContext(conversionProvider.getFormat()); case TOOL: return new ToolTemplateParameterContext(configProvider.getConfig()); case DYNAMIC: return new DynamicTemplateParameterContext(this); case SEGMENT: return new SegmentTemplateParameterContext(); case SEQUENCE: return new SequenceTemplateParameterContext(); case RESOURCE: return new ResourceTemplateParameterContext(); case DEST: return new DestTemplateParameterContext(); default: /// nothing } return null; }
/** * Gets a parameter value. * * @param templateParameterName parameter name * @return a parameter value as a string */ public String getParameterValue(String templateParameterName) { return getParameterValue(new TemplateParameter(TemplateParameterContext.DEST, templateParameterName)); }
public static TemplateParameterContextProvider createDefaultContextProviderWithCplAndDestContext( DestContextTypeMap destContextMap, int segmentCount, int seqCount, int resourceCount, EnumSet<SequenceType> sequenceTypes) throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProviderWithCPLContext( segmentCount, seqCount, resourceCount, sequenceTypes); contextProvider.getDestContext().setDestContextMap(destContextMap); return contextProvider; }
private String getDestinationValue(ConversionParameterNameType conversionParam, ResourceContextParameters resourceParam) { String value = null; if (conversionParam != null) { value = contextProvider.getDestContext().getParameterValue(conversionParam.value()); } if (resourceParam != null && StringUtils.isBlank(value)) { value = contextProvider.getDestContext().getParameterValue(resourceParam.getName()); } return value; }
public static TemplateParameterContextProvider createDefaultContextProviderWithDestContext( DestContextTypeMap destContextMap) throws Exception { TemplateParameterContextProvider contextProvider = createDefaultContextProvider(); contextProvider.getDestContext().setDestContextMap(destContextMap); return contextProvider; }
/** * Get dest context aspect ratio and convert to fraction. * * @return fraction corresponds to destination aspect ratio */ private BigFraction getDestAspectRatio() { DestTemplateParameterContext destContext = contextProvider.getDestContext(); return ConversionHelper.parseAspectRatio(destContext.getParameterValue(ASPECT_RATIO)); } }
public static void initEmptyDestContext(TemplateParameterContextProvider contextProvider) { DestContextTypeMap map = new DestContextTypeMap(); map.setName("test"); contextProvider.getDestContext().setDestContextMap(map); }
private long getDestStartTime() { // composition timecode as specified in CPL String cplStartTime = getCompositionTimecodeStart(); BigFraction cplRate = getCompositionTimecodeRate(); // start time as specified in conversion.xml (destination parameter). DestTemplateParameterContext destContext = contextProvider.getDestContext(); String destStartTime = destContext.getParameterValue(DestContextParameters.START_TIME); String destRateStr = destContext.getParameterValue(DestContextParameters.FRAME_RATE); BigFraction destRate = StringUtils.isEmpty(destRateStr) ? null : ConversionHelper.parseEditRate(destRateStr); // values from conversion.xml has higher priority String startTime = StringUtils.isEmpty(destStartTime) ? cplStartTime : destStartTime; BigFraction rate = destRate == null ? cplRate : destRate; // convert to milliseconds if (!StringUtils.isEmpty(startTime) && (rate != null)) { return ConversionHelper.smpteTimecodeToMilliSeconds(startTime, rate); } // default fallback 00:00:00:00 return 0L; }
private static void fillDest(TemplateParameterContextProvider contextProvider) { DestContextTypeMap map = new DestContextTypeMap(); map.setName("test"); putDestContextValue("dest1", "destValue1", map); putDestContextValue("dest2", "destValue2", map); DestTemplateParameterContext dest = contextProvider.getDestContext(); dest.setDestContextMap(map); }
@Override public String resolveTemplateParameter(TemplateParameter templateParameter, ContextInfo contextInfo) { if (!destContextMap.getMap().containsKey(templateParameter.getName())) { throw new TemplateParameterNotFoundException( templateParameter.toString(), "Conversion.xml doesn't contain '%s' dest parameter."); } return getParameterValue(templateParameter); }
@Test public void testStartTimeFromDestContext() throws Exception { TemplateParameterContextProvider contextProvider = TemplateParameterContextCreator.createDefaultContextProvider(); DestContextTypeMap map = new DestContextTypeMap(); map.setName("test"); putDestContextValue(DestContextParameters.FRAME_RATE.getName(), "25 1", map); putDestContextValue(DestContextParameters.START_TIME.getName(), "09:50:30:05", map); DestTemplateParameterContext dest = contextProvider.getDestContext(); dest.setDestContextMap(map); AssetMap assetMap = new AssetMapParser().parse(ImpUtils.getImpFolder(), ImpUtils.getCorrectAssetmap()); CplContextBuilder cplContextBuilder = new CplContextBuilder(contextProvider, assetMap, ImpUtils.getCorrectCpl()); cplContextBuilder.build(); cplContextBuilder.buildPostDestContext(); doTestOffset(contextProvider, 35430200); }
private ITunesPackageType resolvePackageType() { ITunesPackageType packageType = iTunesInputParameters.getCmdLineArgs().getPackageType(); if (packageType == null) { packageType = ITunesPackageType.fromName(contextProvider.getDestContext().getParameterValue(DEST_PARAM_VIDEO_SPECIFIED_FOR)); } return packageType != null ? packageType : ITunesPackageType.film; }
/** * Check that total duration specified in Metadata.xml is less than total duration of the output file. * Otherwise conversion will abort at the very last step (BMX). It may make the user unhappy after a long conversion. */ private void checkTotalDuration() { String metadataTotalDurationTc = metadataXmlProvider.getDpp().getTechnical().getTimecodes().getTotalProgrammeDuration().getValue(); if (StringUtils.isEmpty(metadataTotalDurationTc)) { return; } String destFps = contextProvider.getDestContext().getParameterValue(DestContextParameters.FRAME_RATE); if (destFps == null) { destFps = MetadataXmlProvider.DEST_FRAME_RATE; } BigFraction fps = ConversionHelper.parseEditRate(destFps); long metadataTotalDurationMs = ConversionHelper.smpteTimecodeToMilliSeconds( metadataTotalDurationTc, fps); long cplTotalDurationMs = getCplTotalDurationMs(); // BMX accepts any total duration if zero timecode is specified in metadata.xml if (metadataTotalDurationMs == 0) { return; } if (metadataTotalDurationMs > cplTotalDurationMs) { throw new ConversionException( String.format("A total programme duration as specified in metadata.xml (%s, %s ms) exceeds a " + "total duration of the output as defined by the CPL (%s, %s ms) ", metadataTotalDurationTc, String.valueOf(metadataTotalDurationMs), ConversionHelper.msToSmpteTimecode(cplTotalDurationMs, fps), String.valueOf(cplTotalDurationMs))); } }
private void resolveSameFpsParameter() { ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.VIDEO) .setSequenceUuid(getVideoSequenceUUID()) .build(); BigFraction seqFrameRate = ConversionHelper.parseEditRate(contextProvider.getSequenceContext().getParameterValue( SequenceContextParameters.FRAME_RATE, contextInfo)); BigFraction destFrameRate = ConversionHelper.parseEditRate(contextProvider.getDestContext().getParameterValue( DestContextParameters.FRAME_RATE)); DynamicTemplateParameterContext dynamicContext = contextProvider.getDynamicContext(); dynamicContext.addParameter(DYNAMIC_PARAM_SAME_FPS, Boolean.toString(seqFrameRate.equals(destFrameRate))); }
private void resolveSameFpsParameter() { ContextInfo contextInfo = new ContextInfoBuilder() .setSequenceType(SequenceType.VIDEO) .setSequenceUuid(getVideoSequenceUUID()) .build(); BigFraction seqFrameRate = ConversionHelper.parseEditRate(contextProvider.getSequenceContext().getParameterValue( SequenceContextParameters.FRAME_RATE, contextInfo)); BigFraction destFrameRate = ConversionHelper.parseEditRate(contextProvider.getDestContext().getParameterValue( DestContextParameters.FRAME_RATE)); DynamicTemplateParameterContext dynamicContext = contextProvider.getDynamicContext(); dynamicContext.addParameter(DYNAMIC_PARAM_SAME_FPS, Boolean.toString(seqFrameRate.equals(destFrameRate))); }