Thank you!

Apr 22, 2013 at 10:43 PM
Appreciate all of your code and knowledge on writing this amazing project.
Could you explain which places require rework (you've mentioned some buffer management etc) so other developers can help you.
Coordinator
Apr 24, 2013 at 6:12 AM
Edited Apr 24, 2013 at 8:15 AM
Thanks.

As for adding more in the way of explanation, I have been meaning to...

I've answered a number of private emails to folks along the same lines, each time telling myself that I should just edit them together and put them on the Documentation tab. Unfortunately, I haven't had a great deal of time available to do so and it has always degenerated into a perpetual, "ok, I'll get around too it soon."

I think the primary eyesore is the state of TsMediaManager/TsMediaStreamSource/TsMediaParser. I went through an iterative, "huh, that doesn't work, I'll have to try something else," process while trying to figure out how to implement a MediaStreamSource without causing MediaElement to fall over. Until I figured out that WP7 sometimes goes into a mode where keeps returning error 3100 whenever one tries to play media until one reboots (I think it is only when one stops the debugger while MediaElement is playing something), some of the, "something else," tries got creatively desperate.

The media play start and stop dance needs cleanup. It is far too complicated.

There are plenty of other things: Places that await need to be reviewed for missing .ConfigureAwait() calls. The retry code would probably be cleaner with a static method that takes a parameter argument instead of the way it is now. The seek handling should probably return the nearest time that it found rather than waiting for the MediaElement to discard samples until it reaches the requested time. The MP3 frame splitter may have issues since I sometimes heard distortion while playing web radio. I'm not sure the server fallback works properly as it is, and it does not keep state so it will always try the servers in the order listed (IIRC).

The main functionality that is missing is some sane way to select the bitrate. An AAC frame splitter would be useful to complement the MP3 frame splitter.

...that's off the top of my head...
Apr 24, 2013 at 6:20 AM
Thank you, Henric!
Let me look at the places you've mentioned.
Would be great if you can also provide a list of test media urls/files you use to test the app.
Coordinator
Apr 24, 2013 at 8:17 AM
Come to think of it: there is something goofy with the NuGet setup. I've had multiple people report problems getting the package restore to work. Some of the <HintPath>s changed in my last update, so perhaps things are better now...?
Apr 24, 2013 at 8:23 AM
From what I understand, it's related to the fact that Bcl.Async is now released and old nuget just don't work. Few clicks in Nuget window in VS helped me to update all references to release and it worked.

Interesting that just few days ago PlayerFramework 1.2 released.
Coordinator
Apr 24, 2013 at 9:03 AM
The more interesting streams are ones that folks have sent in private.

Here are some:

NASA's live stream (what's already in the tree):
http://www.nasa.gov/multimedia/nasatv/NTV-Public-IPS.m3u8
Apple has some here:

http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-DontLinkElementID_28

http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8

A Google search can turn up all sorts of things. For example, try:
.m3u8 site:.akamaihd.net
One can also scrape websites. Having the browser use an iPhone's User-Agent can help. E.g., I've played some stuff from Swedish TV that way (svt.se).