GNOME Bugzilla – Bug 745937
multiqueue: enters the buffering state when the use-buffering property is set
Last modified: 2015-04-10 14:13:22 UTC
When the 'use-buffering' property is set on a multiqueue, the internal mq->buffering variable is set to TRUE, which causes the element to enter the buffering state, and begin emitting buffering messages, regardless of buffer levels. decodebin sets the use-buffering property when making a decode group active. So, an effect of the current multiqueue behaviour is that playback may pause unnecessarily when a decode group becomes active (the multiqueue max-size-time property is also reduced when a decode group is made active, so this bad behaviour is only seen when the current buffer level is smaller than the new max-size-time value). There is no reason I can see to set mq->buffering = TRUE when use_buffering is set; the code here also calls update_buffering(), which will set mq->buffering = TRUE if this is warranted because of low buffer levels.
Makes sense, can you provide a patch?
Created attachment 301243 [details] [review] Don't automatically enter the buffering state when use-buffering is set. Sorry, thought I'd attached it when I raised the issue. Here it is - applies to 1.4.5 and master.
Review of attachment 301243 [details] [review]: commit 0ad06434daae08fea343741de1fa8fc386f52808 Author: Duncan Palmer <dpalmer@digisoft.tv> Date: Tue Mar 10 12:57:44 2015 +1000 multiqueue: Don't automatically enter the buffering state when use-buffering is set. There is no reason I can see to set mq->buffering = TRUE when use_buffering is set; the code here also calls update_buffering(), which will set mq->buffering = TRUE if this is warranted because of low buffer levels. https://bugzilla.gnome.org/show_bug.cgi?id=745937
And also pushed for 1.4 branch. commit 197b1d509c85df89ee22c03916c13cd10f8323a4 Author: Duncan Palmer <dpalmer@digisoft.tv> Date: Tue Mar 10 12:57:44 2015 +1000 multiqueue: Don't automatically enter the buffering state when use-buffering is set. There is no reason I can see to set mq->buffering = TRUE when use_buffering is set; the code here also calls update_buffering(), which will set mq->buffering = TRUE if this is warranted because of low buffer levels. https://bugzilla.gnome.org/show_bug.cgi?id=745937