splitmuxsink in a dynamic pipeline deadlocks

Jesper Larsen knorr.jesper at gmail.com
Mon Sep 21 03:43:16 PDT 2015


Hello All,

I was wondering if anybody has had any success using splitmuxsink in a
dynamic pipeline?

When I insert a splitmuxsink into a running pipeline I seem to be getting a
deadlock. This is with version 1.5.91.

The pipeline starts in this configuration

videotestsrc ! x264enc ! h264parse !
video/x-h264,alignment=au,stream-format=avc ! queue ! fakesink
audiotestsrc ! faac ! aacparse ! audio/mpeg,stream-format=raw ! queue !
fakesink

After ~10s I change the fakesinks to splitmuxsink doing:

1. Blocking both queue src pads
2. Remove fakesinks, and set their state to NULL
3. Create a new splitmuxsink, add it and link the queues to the `video` and
`audio_0` pads on the mux
4. Set the splitmuxsink state to PLAYING
5. Unblock the queue src pads

The source can be seen here http://pastebin.com/3KJdYvkT

The video pad will accept some amount of data, until it receives an
allocation query which blocks. For testing, I tried discarding queries
going into the muxsink, and that causes the video queue to keep getting
data.
The audio pad is stuck waiting for a GOP completion, eventhough multiple
GOPs are queued in the muxsink.

If I start the pipeline with the splitmuxsink instead of the fakesinks, the
pipeline runs just fine.

Should I be able to insert the splitmuxsink element in a running pipeline
like this? Does it sound like a bug in the element?
If it does sound like a bug, I'll create a bug report with some more
details.

Best Regards
Jesper Larsen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20150921/5bcf2342/attachment-0001.html>


More information about the gstreamer-devel mailing list