pass MIME type and seekable flag to DLNA players
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user