pass MIME type and seekable flag to DLNA players

This commit is contained in:
Drew Weymouth
2025-03-30 14:39:27 -07:00
parent 9001dc296f
commit 6e7480f48a
3 changed files with 19 additions and 4 deletions
+2
View File
@@ -183,6 +183,7 @@ const (
type MediaItemMetadata struct { type MediaItemMetadata struct {
Type MediaItemType Type MediaItemType
MIMEType string
ID string ID string
Name string Name string
Artists []string Artists []string
@@ -204,6 +205,7 @@ func (t *Track) Metadata() MediaItemMetadata {
} }
return MediaItemMetadata{ return MediaItemMetadata{
Type: MediaItemTypeTrack, Type: MediaItemTypeTrack,
MIMEType: t.ContentType,
ID: t.ID, ID: t.ID,
Name: t.Title, Name: t.Title,
Artists: t.ArtistNames, Artists: t.ArtistNames,
+9
View File
@@ -140,6 +140,14 @@ func (p *playbackEngine) registerPlayerCallbacks(pl player.BasePlayer) {
}) })
} }
func (p *playbackEngine) unregisterPlayerCallbacks(pl player.BasePlayer) {
pl.OnPaused(nil)
pl.OnPlaying(nil)
pl.OnStopped(nil)
pl.OnSeek(nil)
pl.OnTrackChange(nil)
}
func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error { func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error {
// even if we don't successfully change players, // even if we don't successfully change players,
// make sure UI updates if needed (eg enabling cast button) // make sure UI updates if needed (eg enabling cast button)
@@ -162,6 +170,7 @@ func (p *playbackEngine) SetPlayer(pl player.BasePlayer) error {
p.pendingPlayerChangeTimePos = stat.TimePos p.pendingPlayerChangeTimePos = stat.TimePos
p.pendingPlayerChange = true p.pendingPlayerChange = true
} }
p.unregisterPlayerCallbacks(p.player)
if err := p.player.Stop(true); err != nil { if err := p.player.Stop(true); err != nil {
log.Printf("failed to stop player: %v", err) log.Printf("failed to stop player: %v", err)
} }
+4
View File
@@ -158,6 +158,8 @@ func (d *DLNAPlayer) PlayFile(urlstr string, meta mediaprovider.MediaItemMetadat
media := avtransport.MediaItem{ media := avtransport.MediaItem{
URL: d.urlForItem(key), URL: d.urlForItem(key),
Title: meta.Name, Title: meta.Name,
ContentType: meta.MIMEType,
Seekable: true,
} }
if err := d.playAVTransportMedia(&media); err != nil { if err := d.playAVTransportMedia(&media); err != nil {
@@ -225,7 +227,9 @@ func (d *DLNAPlayer) SetNextFile(url string, meta mediaprovider.MediaItemMetadat
key := d.addURLToProxy(url) key := d.addURLToProxy(url)
media = &avtransport.MediaItem{ media = &avtransport.MediaItem{
URL: d.urlForItem(key), URL: d.urlForItem(key),
ContentType: meta.MIMEType,
Title: meta.Name, Title: meta.Name,
Seekable: true,
} }
} }