Multiple buffer management issues stop playback
Created by: davemevans
When testing with high(ish) bitrate (8Mb/s) content on decent bandwidth connections, we are coming across some interesting effects caused by (I think) the user agent running the MSE Coded Frame Eviction Algorithm because the player is buffering far in the future. Note when I say user agent, I have only tested Chrome.
The first issue is when high bitrate media is being appended very far into the future. What we see is that the bottom of the buffer is occasionally trimmed to just ahead of the playhead as new media is appended to the front of the buffer. Play then stops because there is no data for the rest of the segment. Nudging the play position to the next segment boundary resumes playback.
The second issue is connected to the first but a little more subtle. The eviction algorithm appears to be run on the buffered range to which the new media is being appended. This can lead to a particular corner case where some segments can be evicted if they were received out of order and the algorithm runs before all requests have returned. When they subsequently arrive, there is a hole in the buffer and playback stalls when it reaches that time.
The manifest we are testing is http://rdmedia.bbc.co.uk/dash/ondemand/testcard/1/client_manifest-events.mpd.
Whilst they could be classed as user agent issues, I think the player should be monitoring changes in the buffer and not buffering new data far in the future if the bottom of the buffer is very near to the play head, or it should be proactively managing its own buffer levels such that the user agent does not need to intervene.
I can take some logging captures if that would help.