Merge branch 'main' into feature/shuffle
This commit is contained in:
@@ -105,7 +105,6 @@ type playbackEngine struct {
|
||||
onPaused []func()
|
||||
onStopped []func()
|
||||
onPlaying []func()
|
||||
onPlayerChange []func()
|
||||
onQueueChange []func()
|
||||
}
|
||||
|
||||
@@ -174,10 +173,6 @@ func (p *playbackEngine) unregisterPlayerCallbacks(pl player.BasePlayer) {
|
||||
}
|
||||
|
||||
func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error {
|
||||
// even if we don't successfully change players,
|
||||
// make sure UI updates if needed (eg enabling cast button)
|
||||
defer p.invokeNoArgCallbacks(p.onPlayerChange)
|
||||
|
||||
needToUnpause := false
|
||||
|
||||
stat := p.CurrentPlayer().GetStatus()
|
||||
@@ -212,7 +207,6 @@ func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error {
|
||||
p.playTrackAt(p.nowPlayingIdx, p.pendingPlayerChangeStatus.TimePos)
|
||||
p.pendingPlayerChange = false
|
||||
}
|
||||
p.invokeNoArgCallbacks(p.onPlayerChange)
|
||||
vol := pl.GetVolume()
|
||||
if oldVol != vol {
|
||||
for _, cb := range p.onVolumeChange {
|
||||
|
||||
@@ -37,6 +37,7 @@ type PlaybackManager struct {
|
||||
currentRemotePlayer *RemotePlaybackDevice
|
||||
|
||||
onWaveformImgUpdate []func(*WaveformImage)
|
||||
onPlayerChange []func()
|
||||
|
||||
lastPlayTime float64
|
||||
lastPlayingID string
|
||||
@@ -252,6 +253,14 @@ func (p *PlaybackManager) CurrentRemotePlayer() *RemotePlaybackDevice {
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) SetRemotePlayer(rp *RemotePlaybackDevice) error {
|
||||
// Even in case of failure, call onPlayerChange callbacks to update UI
|
||||
// (such as enabling/disabling cast button)
|
||||
defer func() {
|
||||
for _, cb := range p.onPlayerChange {
|
||||
cb()
|
||||
}
|
||||
}()
|
||||
|
||||
p.cmdQueue.Clear()
|
||||
if rp == nil {
|
||||
if err := p.engine.SetPlayer(p.localPlayer); err != nil {
|
||||
@@ -278,7 +287,7 @@ func (p *PlaybackManager) CurrentPlayer() player.BasePlayer {
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) OnPlayerChange(cb func()) {
|
||||
p.engine.onPlayerChange = append(p.engine.onPlayerChange, cb)
|
||||
p.onPlayerChange = append(p.onPlayerChange, cb)
|
||||
}
|
||||
|
||||
func (p *PlaybackManager) OnWaveformImgUpdate(cb func(*WaveformImage)) {
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
@@ -503,23 +504,19 @@ func (p *Player) setState(s player.State) {
|
||||
}
|
||||
|
||||
func (p *Player) setAF() error {
|
||||
af := ""
|
||||
var filters []string
|
||||
if p.peaksEnabled {
|
||||
af = "@astats:astats=metadata=1:reset=1:measure_overall=none"
|
||||
filters = append(filters, "@astats:astats=metadata=1:reset=1:measure_overall=none")
|
||||
}
|
||||
eq := p.equalizer
|
||||
if eq == nil || !eq.IsEnabled() {
|
||||
return p.mpv.SetPropertyString("af", af)
|
||||
} else if p.peaksEnabled {
|
||||
af = af + ","
|
||||
if eq := p.equalizer; eq != nil && eq.IsEnabled() {
|
||||
if math.Abs(eq.Preamp()) > 0.01 {
|
||||
filters = append(filters, fmt.Sprintf("volume=volume=%0.1fdB", eq.Preamp()))
|
||||
}
|
||||
if eqAF := eq.Curve().String(); eqAF != "" {
|
||||
filters = append(filters, eqAF)
|
||||
}
|
||||
}
|
||||
if math.Abs(eq.Preamp()) > 0.01 {
|
||||
af = fmt.Sprintf("%svolume=volume=%0.1fdB", af, eq.Preamp())
|
||||
}
|
||||
if eqAF := eq.Curve().String(); eqAF != "" {
|
||||
af = fmt.Sprintf("%s,%s", af, eqAF)
|
||||
}
|
||||
return p.mpv.SetPropertyString("af", af)
|
||||
return p.mpv.SetPropertyString("af", strings.Join(filters, ","))
|
||||
}
|
||||
|
||||
func (p *Player) eventHandler(ctx context.Context) {
|
||||
|
||||
Reference in New Issue
Block a user