@Override public long getPosition() { return getActiveExecutor().getPosition(); }
@Override public AudioTrackState getState() { return getActiveExecutor().getState(); }
@Override public boolean provide(MutableAudioFrame targetFrame, long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { return getActiveExecutor().provide(targetFrame, timeout, unit); }
/** * Apply the position and loop state that had been set on this executor to an actual executor. * @param executor The executor to apply the state to */ public void applyStateToExecutor(AudioTrackExecutor executor) { if (position != 0) { executor.setPosition(position); } executor.setMarker(markerTracker.remove()); } }
@Override public void setMarker(TrackMarker marker) { getActiveExecutor().setMarker(marker); }
@Override public void stop() { getActiveExecutor().stop(); }
@Override public void setPosition(long position) { getActiveExecutor().setPosition(position); }
/** * Executes an audio track with the given player and volume. * @param listener A listener for track state events * @param track The audio track to execute * @param configuration The audio configuration to use for executing * @param playerOptions Options of the audio player */ public void executeTrack(TrackStateListener listener, InternalAudioTrack track, AudioConfiguration configuration, AudioPlayerOptions playerOptions) { final AudioTrackExecutor executor = createExecutorForTrack(track, configuration, playerOptions); track.assignExecutor(executor, true); trackPlaybackExecutorService.execute(() -> executor.execute(listener)); }
private void handleTerminator(InternalAudioTrack track) { synchronized (trackSwitchLock) { if (activeTrack == track) { activeTrack = null; dispatchEvent(new TrackEndEvent(this, track, track.getActiveExecutor().failedBeforeLoad() ? LOAD_FAILED : FINISHED)); } } }
@Override public boolean provide(MutableAudioFrame targetFrame) { return getActiveExecutor().provide(targetFrame); }
@Override public AudioFrame provide() { return getActiveExecutor().provide(); }
@Override public AudioFrame provide(long timeout, TimeUnit unit) throws TimeoutException, InterruptedException { return getActiveExecutor().provide(timeout, unit); }