/** * Create xml channel info form input pair. * * @param pair * @return xml ChannelType object */ private ChannelType createXmlChannel(Pair<SequenceUUID, Integer> pair) { ChannelType channel = new ChannelType(); channel.setCPLVirtualTrackId(pair.getLeft().getUuid()); channel.setCPLVirtualTrackChannel(pair.getRight()); return channel; }
public static SequenceUUID getSequenceUuid(int seq, SequenceType seqType) { return SequenceUUID.create( String.format(SEQUENCE_UUID_FORMAT, seqType.value(), seq)); }
public static SequenceUUID create(String uuid) { return new SequenceUUID(uuid); }
public ConversionNotAllowedException(String paramName, String sourceValue, String destinationValue, SequenceUUID seqUuid) { super(String.format( "Source %1$s (%2$s) in virtual track '%4$s' doesn't match destination %1$s (%3$s)." + " Conversion to destination value is disabled in config.xml.", paramName, sourceValue, destinationValue, seqUuid.toString())); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ResourceKey that = (ResourceKey) o; if (segmentUuid != null ? !segmentUuid.equals(that.segmentUuid) : that.segmentUuid != null) { return false; } if (sequenceUuid != null ? !sequenceUuid.equals(that.sequenceUuid) : that.sequenceUuid != null) { return false; } return sequenceType == that.sequenceType; }
@Override public int hashCode() { int result = segmentUuid != null ? segmentUuid.hashCode() : 0; result = 31 * result + (sequenceUuid != null ? sequenceUuid.hashCode() : 0); result = 31 * result + (sequenceType != null ? sequenceType.hashCode() : 0); return result; }
@Override public String toString() { return segmentUuid.toString() + "_" + sequenceUuid.toString() + "_" + sequenceType.value(); } }
@Test public void virtualTrackDurationEU() { // the values as specified in CPL.xml assertEquals(BigInteger.valueOf(1917120), CplHelper.getVirtualTrackDurationEU( contextProvider, SequenceType.AUDIO, SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711"))); assertEquals(BigInteger.valueOf(4191), CplHelper.getVirtualTrackDurationEU( contextProvider, SequenceType.VIDEO, SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d"))); }
private static String uuid(int seqNum) { return getSequenceUuid(seqNum, SequenceType.AUDIO).getUuid(); }
@Test public void virtualTrackDurationMS() { // the values as specified in CPL.xml assertEquals(39940L, CplHelper.getVirtualTrackDurationMS( contextProvider, SequenceType.AUDIO, SequenceUUID.create("urn:uuid:63b41d86-c5df-4169-b036-3a25024bd711"))); assertEquals(83820L, CplHelper.getVirtualTrackDurationMS( contextProvider, SequenceType.VIDEO, SequenceUUID.create("urn:uuid:a4f226e7-adac-45a4-adbf-83335cf02d0d"))); }
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; }
@Test public void testInitDefaultSequenceParameters() 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.AUDIO, SequenceUUID.create("urn:uuid:2222")); contextProvider.getSequenceContext().initSequence(SequenceType.AUDIO, SequenceUUID.create("urn:uuid:3333")); assertDefaultSequenceParameters(contextProvider, 0, SequenceUUID.create("urn:uuid:3333"), SequenceType.VIDEO); assertDefaultSequenceParameters(contextProvider, 1, SequenceUUID.create("urn:uuid:1111"), SequenceType.VIDEO); assertDefaultSequenceParameters(contextProvider, 0, SequenceUUID.create("urn:uuid:2222"), SequenceType.AUDIO); assertDefaultSequenceParameters(contextProvider, 1, SequenceUUID.create("urn:uuid:3333"), SequenceType.AUDIO); }
/** * Inits a sequence (virtual track) parameter defined by the given UUID. Defines default parameters * (such as Sequence UUID, type and number). * The method must be called for each sequence before adding another parameters. * * @param seqType sequence type * @param uuid sequence UUID. * @return this sequence template parameters context. */ public SequenceTemplateParameterContext initSequence(SequenceType seqType, SequenceUUID uuid) { if (!sequences.containsKey(seqType) || !sequences.get(seqType).contains(uuid)) { int seqNum = getSequenceCount(seqType); doAddParameter(seqType, uuid, SequenceContextParameters.UUID, uuid.getUuid()); doAddParameter(seqType, uuid, SequenceContextParameters.TYPE, seqType.value()); doAddParameter(seqType, uuid, SequenceContextParameters.NUM, String.valueOf(seqNum)); } return this; }
private void prepareCplVirtualTracksWithChannels(TemplateParameterContextProvider contextProvider, Map<String, Integer> channelsForTrack) { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); channelsForTrack.forEach( (uuid, channels) -> { sequenceContext.initSequence(SequenceType.AUDIO, SequenceUUID.create(uuid)); // as in test-audiomap.xml contextProvider.getSequenceContext().addSequenceParameter( SequenceType.AUDIO, SequenceUUID.create(uuid), SequenceContextParameters.CHANNELS_NUM, String.valueOf(channels)); } ); }
/** * 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; }
@SafeVarargs private final void prepareCplVirtualTracksWithChannels(TemplateParameterContextProvider contextProvider, SimpleEntry<String, Integer>... entries) { SequenceTemplateParameterContext sequenceContext = contextProvider.getSequenceContext(); Stream.of(entries).forEach((e) -> { sequenceContext.initSequence(SequenceType.AUDIO, SequenceUUID.create(e.getKey())); // as in test-audiomap.xml contextProvider.getSequenceContext().addSequenceParameter( SequenceType.AUDIO, SequenceUUID.create(e.getKey()), SequenceContextParameters.CHANNELS_NUM, String.valueOf(e.getValue())); } ); } }
.map(pair -> { ChannelType channel = new ChannelType(); channel.setCPLVirtualTrackId(pair.getLeft().getUuid()); channel.setCPLVirtualTrackChannel(pair.getRight()); return channel;
@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()); }
private void checkEBUTrack(AudioMapType audioMap, int trackNum, int audioSeqNum, Integer channelsNum) { assertEquals(trackNum + 1, audioMap.getEBUTrack().get(trackNum).getNumber()); assertEquals(getSequenceUuid(audioSeqNum, SequenceType.AUDIO).getUuid(), audioMap.getEBUTrack().get(trackNum).getCPLVirtualTrackId()); assertEquals(channelsNum, audioMap.getEBUTrack().get(trackNum).getCPLVirtualTrackChannel()); }
@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); }