public void addChannels(SequenceUUID uuid, FFmpegAudioChannels[] channels) throws InvalidAudioChannelAssignmentException { for (int i = 0; i < channels.length; i++) { FFmpegAudioChannels channel = channels[i]; if (channelsMap.containsKey(channel)) { throw new InvalidAudioChannelAssignmentException("A soundfield group must contain different channels"); } channelsMap.put(channel, ImmutablePair.of(uuid, i + 1)); } }
private AudioMapType processR482A() throws InvalidAudioChannelAssignmentException { AudioMapType audioMap = new AudioMapType(); List<SoundfieldGroupInfo> foundStereo = findInputForChannelGroup(STEREO_LAYOUT); // use the first found stereo pair if (foundStereo.isEmpty()) { throw new InvalidAudioChannelAssignmentException( String.format("Expected at least one stereo for %s", EBU_R_48_2_A.value())); } addStereo(audioMap, 1, foundStereo.get(0)); addStereoSilence(audioMap, 3); return audioMap; }
private AudioMapType processR1234B4C() throws InvalidAudioChannelAssignmentException { AudioMapType audioMap = new AudioMapType(); List<SoundfieldGroupInfo> foundStereo = findInputForChannelGroup(STEREO_LAYOUT); // we expect one or two stereo if (foundStereo.isEmpty() || foundStereo.size() > 2) { throw new InvalidAudioChannelAssignmentException( String.format("Expected one or two stereo for %s and %s", EBU_R_123_4_B.value(), EBU_R_123_4_C.value())); } addStereo(audioMap, 1, foundStereo.get(0)); // final stereo if (foundStereo.size() == 2) { addStereo(audioMap, 3, foundStereo.get(1)); // M&E stereo } else { addStereoSilence(audioMap, 3); } return audioMap; }
private AudioMapType processR12316C() throws InvalidAudioChannelAssignmentException { AudioMapType audioMap = new AudioMapType(); List<SoundfieldGroupInfo> foundStereo = findInputForChannelGroup(STEREO_LAYOUT); List<SoundfieldGroupInfo> found51 = findInputForChannelGroup(SURROUND_5_1_LAYOUT); // we expect one or two stereo and one 5.1 if (foundStereo.isEmpty() || foundStereo.size() > 2) { throw new InvalidAudioChannelAssignmentException( String.format("Expected one or two stereo for %s", EBU_R_123_16_C.value())); } if (found51.isEmpty() || found51.size() > 2) { throw new InvalidAudioChannelAssignmentException( String.format("Expected one or two 5.1 for %s", EBU_R_123_16_C.value())); } addStereo(audioMap, 1, foundStereo.get(0)); // final stereo if (foundStereo.size() == 2 && found51.size() == 2) { addStereo(audioMap, 3, foundStereo.get(1)); // M&E stereo } else { addStereoSilence(audioMap, 3); } add51(audioMap, 5, found51.get(0)); // final 51 if (foundStereo.size() == 2 && found51.size() == 2) { add51(audioMap, 11, found51.get(1)); // M&E 5.1 } else { add51Silence(audioMap, 11); } return audioMap; }
private AudioMapType processR12316D() throws InvalidAudioChannelAssignmentException { AudioMapType audioMap = new AudioMapType(); List<SoundfieldGroupInfo> found51 = findInputForChannelGroup(SURROUND_5_1_LAYOUT); // we expect exactly two 5.1 with different languages if (found51.size() != 2) { throw new InvalidAudioChannelAssignmentException( String.format("Expected exactly two 5.1 for %s", EBU_R_123_16_D.value())); } // get languages (all sequences from a soundfield group must have the same language): SoundfieldGroupInfo first51 = found51.get(0); SoundfieldGroupInfo second51 = found51.get(1); String firstLanguage = getLanguage(first51); String secondLanguage = getLanguage(second51); // languages must be different if (firstLanguage == null || secondLanguage == null || firstLanguage.equals(secondLanguage)) { throw new InvalidAudioChannelAssignmentException( String.format("Expected two 5.1 with different languages for %s", EBU_R_123_16_D.value())); } add51(audioMap, 1, first51); // 5.1 first language addStereoSilence(audioMap, 7); add51(audioMap, 9, second51); // 5.1 second language addStereoSilence(audioMap, 15); return audioMap; }
throw new InvalidAudioChannelAssignmentException( String.format("Expected exactly three stereo for %s", EBU_R_123_16_F.value())); throw new InvalidAudioChannelAssignmentException( String.format("Expected three stereo with different languages for %s", EBU_R_123_16_F.value()));
ResourceContextParameters.CHANNELS_LAYOUT, contextInfo)) { throw new InvalidAudioChannelAssignmentException( "All resources within a sequence must have a channel layout set in the Essence Descriptor."); if (StringUtils.isEmpty(nextChannelLayout)) { throw new InvalidAudioChannelAssignmentException( "All resources within a sequence must have a channel layout set in the Essence Descriptor."); throw new InvalidAudioChannelAssignmentException( "All resources within a sequence must have the same channel layout."); ResourceContextParameters.CHANNELS_NUM, contextInfo)) { throw new InvalidAudioChannelAssignmentException( "All resources within a sequence must have a channels number set."); throw new InvalidAudioChannelAssignmentException( String.format( "A number of channels in channel layout (%s) must match real number of channels (%d)",