GNOME Bugzilla – Bug 711086
hlssink: doesn't have the sink flag set
Last modified: 2013-11-07 16:58:10 UTC
hlssink doesn't appear to handle EOS events properly so the host application expecting an EOS event upon the end of pipeline execution does not receive the event. Proof of concept application based on hello world app in C: http://paste.ubuntu.com/6325031/ However running the same pipeline under gst-launch works because gst-launch doesn't use the same callback method to receive the EOS event.
Running the app with debug level 6, grep -i eos: http://paste.ubuntu.com/6330121/
The problem here is that you're nesting two pipelines (pipeline0 inside hellodear) and that doesn't appear to work too well. The outer pipeline (hellodear) never reaches EOS because gstbin.c:is_eos always returns FALSE, since the function checks if all the sinks have emitted EOS and hellodear doesn't contain any sinks. If you get rid of the outer hellodear pipeline things works as expected.
What is the use case here for having nested pipelines? Maybe you wanted a bin inside a pipeline? This seems like a weird usecase. In any case, hlssink didn't have the SINK flag set on it and it was causing the failure. This commit 805e313cce90f69580704e3e604481ab416d209e fixes it, thanks for reporting this bug.
Yes it appears the nesting was unnecessary, there was no particular reason for it, I have just always done it like this (since 2010) and it has always worked. Removing the nesting and creating the initial bin with parse_launch worked around the problem.