This is a regression that was introduced in
cca2f555d14b5751f7f9d466b66127544dad5138 (yes, 9 years ago).
The only place where a demuxer streaming thread should be stopped is when the
sinkpad is deactivated from pull mode (i.e. PAUSED->READY).
Attempting to stop the task in this function would cause this to happen when a
FLUSH_STOP or STREAM_START event is received... which can cause deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3109>
gint i;
GST_DEBUG_OBJECT (qtdemux, "Resetting demux");
- gst_pad_stop_task (qtdemux->sinkpad);
if (hard || qtdemux->upstream_format_is_time) {
qtdemux->state = QTDEMUX_STATE_INITIAL;