GNOME Bugzilla – Bug 579912
[decodebin2] multiqueue is too small in time (interleave issues)
Last modified: 2009-04-23 09:56:00 UTC
Now that totem uses playbin2 (and decodebin2), an issue I never noticed has just popped up. In decodebin2, during preroll (filling up the stream groups) the max-size-time of the multiqueue is 5s, allowing pretty much every heavily interleaved file to be prerolled correctly... ... but then when that group is exposed, the max-size-time is set back to 2s ... which makes all files with an interleave greater than 2s screw up massively (read: qos kicks in, stuttery playback with low bandwith/cpu-usage but high interleave files/streams). The max-size-time limit is too low for most files. My proposal is, when exposing the gruops, to *not* modify the max-size-time (i.e. leaving it at the 5s initial value) but still reduce the max-size-buffer/max-size-bytes sizes. With that modification, the 100+ files I tested which have that regression now work fine. I'm marking this as a blocker, otherwise we're going to have a *really* bad experience with playbin2 (and totem now it supports it) for the next 3 months. This doesn't prevent us from doing the *proper* fix which is for demuxers to output GST_EVENT_BUFFER_SIZE events with their interleave parameters and multiqueue taking them into account for its limits (i.e. ending up with the perfect multiqueue limits).
Created attachment 133163 [details] [review] Leave the multiqueue max-size-time untouched when exposing groups. Proposed patch. I forgot to mention that since we still reduce the max-size-buffers/max-size-bytes limit we stay as memory efficient as before.
commit 71a372c8473d9126c0b7661c30991f83fd14eb9a Author: Edward Hervey <bilboed@bilboed.com> Date: Thu Apr 23 08:41:19 2009 +0200 decodebin2: Don't reduce max-size-time of exposed groups. Fixes #579912 The 2s limit is way too small for a lot of files (which have an interleave in time of between 3 and 5s). Instead, leave it to the initial 5s value and reduce the other limits (allowing us to stay memory-efficient).