GNOME Bugzilla – Bug 740693
decodebin: Analyze source pad before setting to PAUSED for 'tag demuxers'
Last modified: 2014-11-26 18:44:45 UTC
Before we were setting them to PAUSED and (much) later connecting to their source pad caps notify signal. There was a race where that demuxer was pushing a caps and later a buffer on its source pad when we were not even connected to its source pad caps notify signal leading to decodebin missing the information and not keeping on building the pipeline on CAPS event thus the demuxer was posting an ERROR (not linked) message on the bus. This need to be done for 'tag demuxers' because those have one ALWAYS source pad, not like usual demuxers that have several dynamic source pads.
Created attachment 291472 [details] [review] decodebin: Analyze source pad before setting to PAUSED for 'tag demuxers'
Can't we just connect to the signals earlier? Or instead of making this conditional to "Tag" demuxers, make it conditional to demuxers that have at least one always srcpad?
Created attachment 291481 [details] [review] decodebin: Analyze source pad before setting to PAUSED for 'simple demuxers' Before we were setting them to PAUSED and (much) later connecting to their source pad caps notify signal. There was a race where that demuxer was pushing a caps and later a buffer on its source pad when we were not even connected to its source pad caps notify signal leading to decodebin missing the information and not keeping on building the pipeline on CAPS event thus the demuxer was posting an ERROR (not linked) message on the bus. This need to be done for 'simple demuxers' because those have one ALWAYS source pad, not like usual demuxers that have several dynamic source pads. A "simple demuxer" is a demuxer that has one and only one ALWAYS source pad.
Author: Thibault Saunier <tsaunier@gnome.org> Date: Tue Nov 25 13:39:07 2014 +0100 decodebin: Analyze source pad before setting to PAUSED for 'simple demuxers' Before we were setting them to PAUSED and (much) later connecting to their source pad caps notify signal. There was a race where that demuxer was pushing a caps and later a buffer on its source pad when we were not even connected to its source pad caps notify signal leading to decodebin missing the information and not keeping on building the pipeline on CAPS event thus the demuxer was posting an ERROR (not linked) message on the bus. This need to be done for 'simple demuxers' because those have one ALWAYS source pad, not like usual demuxers that have several dynamic source pads. A "simple demuxer" is a demuxer that has one and only one ALWAYS source pad. https://bugzilla.gnome.org/show_bug.cgi?id=740693
Review of attachment 291481 [details] [review]: commited