@Override public void process(LocalAudioTrackExecutor localExecutor) { localExecutor.executeProcessingLoop(() -> { execute(localExecutor); }, null); }
@Override public void process(LocalAudioTrackExecutor localExecutor) throws Exception { AdtsStreamProvider provider = new AdtsStreamProvider(inputStream, localExecutor.getProcessingContext()); try { log.debug("Starting to play ADTS stream {}", getIdentifier()); localExecutor.executeProcessingLoop(provider::provideFrames, null); } finally { provider.close(); } } }
@Override public void process(LocalAudioTrackExecutor localExecutor) throws Exception { Mp3TrackProvider provider = new Mp3TrackProvider(localExecutor.getProcessingContext(), inputStream); try { provider.parseHeaders(); log.debug("Starting to play MP3 track {}", getIdentifier()); localExecutor.executeProcessingLoop(provider::provideFrames, provider::seekToTimecode); } finally { provider.close(); } } }
@Override public void process(LocalAudioTrackExecutor localExecutor) throws Exception { WavTrackProvider trackProvider = new WavFileLoader(inputStream).loadTrack(localExecutor.getProcessingContext()); try { log.debug("Starting to play WAV track {}", getIdentifier()); localExecutor.executeProcessingLoop(trackProvider::provideFrames, trackProvider::seekToTimecode); } finally { trackProvider.close(); } } }
@Override public void process(LocalAudioTrackExecutor localExecutor) throws Exception { FlacFileLoader file = new FlacFileLoader(inputStream); FlacTrackProvider trackProvider = file.loadTrack(localExecutor.getProcessingContext()); try { log.debug("Starting to play FLAC track {}", getIdentifier()); localExecutor.executeProcessingLoop(trackProvider::provideFrames, trackProvider::seekToTimecode); } finally { trackProvider.close(); } } }
@Override public void process(final LocalAudioTrackExecutor localExecutor) { OggPacketInputStream packetInputStream = new OggPacketInputStream(inputStream); log.debug("Starting to play an OGG stream track {}", getIdentifier()); localExecutor.executeProcessingLoop(() -> { try { processTrackLoop(packetInputStream, localExecutor.getProcessingContext()); } catch (IOException e) { throw new FriendlyException("Stream broke when playing OGG track.", SUSPICIOUS, e); } }, null); }
@Override public void process(LocalAudioTrackExecutor localExecutor) { MpegFileLoader file = new MpegFileLoader(inputStream); file.parseHeaders(); MpegTrackConsumer trackConsumer = loadAudioTrack(file, localExecutor.getProcessingContext()); try { MpegFileTrackProvider fileReader = file.loadReader(trackConsumer); if (fileReader == null) { throw new FriendlyException("Unknown MP4 format.", SUSPICIOUS, null); } accurateDuration.set(fileReader.getDuration()); localExecutor.executeProcessingLoop(fileReader::provideFrames, fileReader::seekToTimecode); } finally { trackConsumer.close(); } }
@Override public void process(LocalAudioTrackExecutor localExecutor) { MatroskaStreamingFile file = loadMatroskaFile(); MatroskaTrackConsumer trackConsumer = loadAudioTrack(file, localExecutor.getProcessingContext()); try { localExecutor.executeProcessingLoop(() -> { file.provideFrames(trackConsumer); }, position -> { file.seekToTimecode(trackConsumer.getTrack().index, position); }); } finally { trackConsumer.close(); } }