Jukebox cleanup (#2554)

* Fixing typo FFmpegPath -> MPVPath

* Fixing panic by applying afontenot patch

* Using mpv audio-device flag and naming for config and playback
This commit is contained in:
Matthias Schmidt
2023-10-18 00:12:48 +02:00
committed by GitHub
parent 2cd4358172
commit 59f0c487e7
4 changed files with 45 additions and 21 deletions
+7 -9
View File
@@ -24,7 +24,6 @@ type PlaybackDevice struct {
Default bool
User string
Name string
Method string
DeviceName string
PlaybackQueue *Queue
Gain float32
@@ -60,12 +59,11 @@ func (pd *PlaybackDevice) getStatus() DeviceStatus {
// NewPlaybackDevice creates a new playback device which implements all the basic Jukebox mode commands defined here:
// http://www.subsonic.org/pages/api.jsp#jukeboxControl
// Starts the trackSwitcher goroutine for the device.
func NewPlaybackDevice(playbackServer PlaybackServer, name string, method string, deviceName string) *PlaybackDevice {
func NewPlaybackDevice(playbackServer PlaybackServer, name string, deviceName string) *PlaybackDevice {
return &PlaybackDevice{
ParentPlaybackServer: playbackServer,
User: "",
Name: name,
Method: method,
DeviceName: deviceName,
Gain: DefaultGain,
PlaybackQueue: NewQueue(),
@@ -146,12 +144,12 @@ func (pd *PlaybackDevice) Skip(ctx context.Context, index int, offset int) (Devi
pd.ActiveTrack.Pause()
}
if index != pd.PlaybackQueue.Index {
if pd.ActiveTrack != nil {
pd.ActiveTrack.Close()
pd.ActiveTrack = nil
}
if index != pd.PlaybackQueue.Index && pd.ActiveTrack != nil {
pd.ActiveTrack.Close()
pd.ActiveTrack = nil
}
if pd.ActiveTrack == nil {
err := pd.switchActiveTrackByIndex(index)
if err != nil {
return pd.getStatus(), err
@@ -278,7 +276,7 @@ func (pd *PlaybackDevice) switchActiveTrackByIndex(index int) error {
return fmt.Errorf("could not get current track")
}
track, err := mpv.NewTrack(pd.PlaybackDone, *currentTrack)
track, err := mpv.NewTrack(pd.PlaybackDone, pd.DeviceName, *currentTrack)
if err != nil {
return err
}