hzeller / gmrender-resurrect

Resource efficient UPnP/DLNA renderer, optimal for Raspberry Pi, CuBox or a general MediaServer. Fork of GMediaRenderer to add some features to make it usable.
GNU General Public License v2.0
842 stars 204 forks source link

Stubbornly plays single song at a time from Win8.1 Music app #79

Open bstreiff opened 9 years ago

bstreiff commented 9 years ago

I modified the render_device struct in upnp_renderer.c to have:

.manufacturer = "Microsoft SDK Customer",
.model_name = "Digital Media Player",

This is so Windows 8.1 would treat it as a "Certified" DLNA device and therefore allow my device to be a supported target for "Play To" (as per the instructions noted here, the combination above comes preset with IsLegacyDMR=1.)

After doing this, I tried to play songs using the Windows Xbox Music app. The first song plays successfully, but if I try to change tracks, the Music app shows the new track info but the old song continues playing. I have to disconnect/reconnect to play something else.

A log can be found here: http://pastebin.com/jWKj9hH6

Version is: gmediarender 0.0.7-git; 2014-03-01_61f5a8f (built from source) Client is Windows 8.1, Music app version 2.6.672.0

bstreiff commented 9 years ago

I'm also able to observe similar behavior if I use the right-click Play To menu in Windows Explorer on several files at a time; the "Windows Digital Media Controller Application" will itself advance to the next track when hitting the "Next track" button, but playback of the old track continues for quite some time. (looking at logs, 35 seconds later it gets:

INFO  [2015-03-21 20:02:00.821387 | transport] RelativeTimePosition: 0:00:45
ERROR [2015-03-21 20:02:01.331344 | gstreamer] source: Error: Service Unavailable (Debug: gstsouphttpsrc.c(1193): gst_soup_http_src_parse_status (): /GstPlayBin:play/GstURIDecodeBin:uridecodebin1/GstSoupHTTPSrc:source:
Service Unavailable (503), URL: http://192.168.1.166:10246/MDEServer/0DE16188-B94B-4C5E-882C-7DD01CE573D4/1000.mp3)
ERROR [2015-03-21 20:02:01.335842 | gstreamer] source: Error: Internal data flow error. (Debug: gstbasesrc.c(2865): gst_base_src_loop (): /GstPlayBin:play/GstURIDecodeBin:uridecodebin1/GstSoupHTTPSrc:source:
streaming task paused, reason error (-5))
INFO  [2015-03-21 20:02:01.828668 | transport] RelativeTimePosition: 0:00:46
INFO  [2015-03-21 20:02:02.836696 | transport] RelativeTimePosition: 0:00:47
INFO  [2015-03-21 20:02:03.423268 | gstreamer] about-to-finish cb: setting uri (null)
INFO  [2015-03-21 20:02:03.843205 | transport] RelativeTimePosition: 0:00:48
INFO  [2015-03-21 20:02:04.849877 | transport] RelativeTimePosition: 0:00:49
INFO  [2015-03-21 20:02:04.873024 | gstreamer] play: End-of-stream

Looks like perhaps in this case gmediarender is only advancing to the next track because Windows has yanked the stream out from under it?