GNOME Bugzilla – Bug 738198
multiqueue: Does not wake up not-linked streams on EOS
Last modified: 2014-10-24 19:39:16 UTC
Created attachment 288092 [details] [review] patch GST_DEBUG=uridecodebin:5 gst-launch playbin uri=... flags=1 EOS from audio not handled => chain not drained.
Why is there no EOS event for the audio part of the decode chain though? Downstream should return not-linked here, which should cause it to continue sending buffers and then EOS in the end. Seems like a bug in some other element to me. Do you have a debug log you could attach or some further information?
GST_DEBUG=uridecodebin:5 gst-launch playbin uri=file:///home/andy/Videos/Havana_Lover.avi log: ================================================== ... Конвейер подготовлен (PREROLLED)… Установка конвейера в состояние PLAYING… New clock: GstPulseSinkClock 0:00:00.222932379 14957 gsturidecodebin.c:1114:decoded_pad_event_probe:<decodebin0:src_0> found bitrate 6778720 0:00:00.223237573 14957 gsturidecodebin.c:1069:configure_stream_buffering:<uridecodebin0> overall bitrate 6781820 0:00:09.982328529 14957 gsturidecodebin.c:1780:proxy_drained_signal:<uridecodebin0> drained signaled !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Получен маркер EOS («конец потока») от элемента «playbin0». Execution ended after 0:00:10.010184526 ... ================================================== disable audio with flags=1 GST_DEBUG=uridecodebin:5 gst-launch playbin uri=file:///home/andy/Videos/Havana_Lover.avi flags=1 log: ================================================== Конвейер подготовлен (PREROLLED)… Установка конвейера в состояние PLAYING… New clock: GstSystemClock 0:00:00.180728769 15059 gsturidecodebin.c:1114:decoded_pad_event_probe:<decodebin0:src_0> found bitrate 6778720 0:00:00.180763336 15059 gsturidecodebin.c:1069:configure_stream_buffering:<uridecodebin0> overall bitrate 6781820 Получен маркер EOS («конец потока») от элемента «playbin0». Execution ended after 0:00:09.979593098 ==================================================
Why exactly does this happen though? What is the flow-return of the disabled audio chains, and why don't they get an EOS?
Created attachment 288100 [details] graph
see GstTee/audiotee in attachment graph
Yeah, so you would get not-linked there... but nonetheless the audio chain should get an EOS event.
gstplaybin2.c 'setup_next_source' function does not work in '3636:drained_cb' next group in paused state.
Created attachment 288636 [details] [review] patch When the last linked stream ends, but remains non-linked stream, the hightime is not updated, and this non-linked stream will not wake up
commit ee93c807e1caa1701fb173f2e26da80913e6fd9d Author: Andrei Sarakeev <sarakusha@gmail.com> Date: Thu Oct 16 10:13:14 2014 +0400 multiqueue: Wake up any waiting streams if the current one goes EOS Otherwise we might have unlinked streams waiting. https://bugzilla.gnome.org/show_bug.cgi?id=738198
I've added locks around that code as required, otherwise merged as is. Thanks for the patch and debugging this!