GNOME Bugzilla – Bug 632433
[basesink] hangs/drops going to PLAYING following flushing step in PAUSED
Last modified: 2010-10-20 16:48:00 UTC
Created attachment 172588 [details] [review]
basesink: recompute running time for buffer ending flushing step
That is, play some (e.g. video only) clip, and then:
* go to PAUSED
* perform a flushing step of say 10s
* go to PLAYING
Then there will be a delay/hang of about 10s, and then about 10s worth of data will be dropped as it is too late.
Reason is: the last buffer that completes the step has its running and stream time computed first, then the step is "rounded-up" which includes manipulating the segment so as to "drop 10s of running time" (to account for the flushed data). Going to playing, the last buffer will be synced (rendered) on the computed running time, which is then still 10s more (= the hang). When it is then rendered, 10s of subsequent data will arrive too late.
Good catch and the patch works perfectly for me. Can we get this in?
Author: Mark Nauwelaerts <email@example.com>
Date: Mon Oct 18 10:46:59 2010 +0200
basesink: recompute correct running time for buffer ending flushing step
Prevents delaying/hanging when resuming PLAYING.