Support for FragmentRepeat attribute on StreamFragmentElement?

Topics: Windows Phone 8
Sep 11, 2013 at 4:11 AM
I have a content provider that is including the FragmentRepeat element in their manifest for certain streams and this seems to cause problems for the current WinPhone 8 player..

The behavior I am seeing is that the audio tracks for the title are getting 404 responses because the Player seems to not understand the repeat modifier on the element. So the behavior is that the audio track appears to be offset by one. This causes the player to generate a 404 on that particular Audio track fragment.

That is about the best I can describe what is happening. I am not entirely sure that I am correct in my assumption that the FargmentRepeat (r=) value is the problem but it seems likely.

Can anyone shed some light on if this element is supported by the player? If not is there a workaround to allow my assets to playback correctly?

Sep 11, 2013 at 7:14 PM
This post appears to explain the problem in more detail

Basically the player appears to be ignoring the r= (repeat) attribute in the manifest. This makes the player try to request the fragment as a regular fragment instead of making the repeated requests. This causes the audio tracks to be requested incorrectly (thus causing the 404)

This bug is really hampering a major update of a very high profile Windows Phone 8 application (one of the highest reviewed in the store). We would love to get some feedback or update on what can be done to fix this issue.

Sep 12, 2013 at 11:38 PM
Have you tried duplicating this with just a SmoothStreamingMediaElement by itself (just to rule out the player framework)?
Also, have you tried to duplicate it on any other platforms (e.g. Silverlight for the web or Win8)?

Note: it is unlikely that I'll be able to answer this question - it is probably one for the smooth streaming team. However, the questions above might help gather a little more info about the problem first.
Sep 18, 2013 at 7:02 PM
Hi Tim, I am not sure I understand your question. This is in the context of Windows Phone 8. Is there a way to bypass the player framework in WP8 and use a SmoothStreaingMediaElement object directly? If so I wasn't aware of that. I will give that a shot.

As an aside, in XBox and Win8 these same assets appear to work fine. We are using the MMPF player in XBox and this PlayerFramework in Win8.

If this is a Smooth Streaming Team issue how can I get in touch with them to escalate? You can contact me off list if you can provide that contact information.


Brad Cunningham
Sep 18, 2013 at 8:08 PM
Yes, you can bypass the player framework and use the SmoothStreamingMediaElement directly. It is just like a standard MeidaElement control but supports smooth streaming. Note: this is what the player framework uses internally to support smooth streaming.

To try it out, just add to your xaml:

<ssme:SmoothStreamingMediaElement SmoothStreamingSource="[url goes here]"/>
Sep 25, 2013 at 5:20 PM
Just to follow up on this thread. We got confirmation from other MSFT source that version 2.2 of the Smooth Streaming spec (and specifically for this issue) the FragmentRepeat attribute is not supported in the WP8 SmoothStreaming SDK yet.

The current path we are taking to try a work around is to use these methods (no idea if this will work yet or not)

Here is what I think might be possible:
  1. Grab the mainfest before the player parses it.
  2. Inspect the manifest to see if it contains the FragmentRepeat attribute. (Just parse the XML ourselves...?)
  3. If it does we would then be able to modify the manifest somehow....?
    a. Maybe we just create our own "manifest" file and replace the FragmentRepeat attrs with "unrolled" or unrepeated chunks?
    b. Then I suppose we can "cache" this "corrected" mainfest on the device or something?
  4. Assuming some solution to step 3, then I assume we can serve the "fixed" manifest from "cache" to the player?
    a. Therefore tricking the player into thinking the manifest came form the provider without the FragmentRepeat attribute in it?
No idea if this will work or not just wanted to put there here for anyone else who might get this problem in the future.