@Override public long getIdentifier() { return track.getUserData(Long.class); }
public QueuedTrack(AudioTrack track, long owner) { this.track = track; this.track.setUserData(owner); }
@Override public String toString() { return "RemoteExec " + executorId + ", " + track.getIdentifier(); } }
@Override public void playlistLoaded(AudioPlaylist playlist) { AudioTrack firstTrack = playlist.getSelectedTrack(); if (firstTrack == null) { firstTrack = playlist.getTracks().get(0); } sendMessageToChannel(channel, "Adding to queue " + firstTrack.getInfo().title + " (first track of playlist " + playlist.getName() + ")"); play(channel.getGuild(), musicManager, firstTrack); }
private long parseAudioTrackDuration(AudioTrack track) { if (track == null || track.getInfo().isStream) { return 0L; } return track.getDuration(); }
@Override public String toString() { return "`[" + FormatUtil.formatTime(track.getDuration()) + "]` **" + track.getInfo().title + "** - <@" + track.getUserData(Long.class) + ">"; } }
@Override public void trackLoaded(AudioTrack track) { sendMessageToChannel(channel, "Adding to queue " + track.getInfo().title); play(channel.getGuild(), musicManager, track); }
/** * Send the specified exception as an event to the active state listener. * @param exception Exception to send */ public void dispatchException(FriendlyException exception) { TrackStateListener currentListener = activeListener; ExceptionTools.log(log, exception, track.getIdentifier()); if (currentListener != null) { trackException = exception; currentListener.onTrackException(track, exception); } }
public boolean isTooLong(AudioTrack track) { if(maxSeconds<=0) return false; return Math.round(track.getDuration()/1000.0) > maxSeconds; } }
@Override public long getDuration() { if (delegate != null) { return delegate.getDuration(); } else { synchronized (this) { if (delegate != null) { return delegate.getDuration(); } else { return super.getDuration(); } } } } }
private boolean provideShadowFrame(MutableAudioFrame targetFrame) { InternalAudioTrack shadow = shadowTrack; if (shadow != null && shadow.provide(targetFrame)) { if (targetFrame.isTerminator()) { shadowTrack = null; return false; } return true; } return false; }
/** * Set a new track position marker. * @param marker Marker * @param currentTimecode Current timecode of the track when this marker is set */ public void set(TrackMarker marker, long currentTimecode) { TrackMarker previous = current.getAndSet(marker); if (previous != null) { previous.handler.handle(marker != null ? OVERWRITTEN : REMOVED); } if (marker != null && currentTimecode >= marker.timecode) { trigger(marker, LATE); } }
/** * Detach the currently active listener, so no useless reference would be kept and no events would be sent there. */ public void detach() { activeListener = null; markerTracker.trigger(ENDED); }
@Override public void setPosition(long timecode) { position = timecode; markerTracker.checkSeekTimecode(timecode); }
/** * @param trackInfo Information of the track this executor is used with */ public PrimordialAudioTrackExecutor(AudioTrackInfo trackInfo) { this.trackInfo = trackInfo; this.markerTracker = new TrackMarkerTracker(); }
@Override public void setMarker(TrackMarker marker) { markerTracker.set(marker, position); }
@Override public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) { AudioTrackExecutor executor = ((InternalAudioTrack) track).getActiveExecutor(); if (endReason != AudioTrackEndReason.FINISHED && executor instanceof RemoteAudioTrackExecutor) { for (RemoteNodeProcessor processor : activeProcessors) { processor.trackEnded((RemoteAudioTrackExecutor) executor, true); } } }
private void notifyTrackStuck() { if (player instanceof TrackStateListener) { ((TrackStateListener) player).onTrackStuck(player.getPlayingTrack(), timeout); } } }
public long getRequester() { if(audioPlayer.getPlayingTrack()==null || audioPlayer.getPlayingTrack().getUserData(Long.class)==null) return 0; return audioPlayer.getPlayingTrack().getUserData(Long.class); }
/** * Check a timecode which was reached by seeking, trigger BYPASSED if necessary. * @param timecode Timecode which was reached by seeking. */ public void checkSeekTimecode(long timecode) { TrackMarker marker = current.get(); if (marker != null && timecode >= marker.timecode) { trigger(marker, BYPASSED); } }