qtmux method gst_qt_mux_send_buffer call to gst_pad_push returns GST_FLOW_ERROR under load

declan harrison harrison.declan at gmail.com
Thu Jan 26 15:20:35 PST 2012


I have built and using GStreamer 0.10 on RHEL6.

I have recently written an application using the API.  This
application creates a pipeline that takes an MP4 input stream (over
HTTP), demuxes, decodes, re-encodes the content and then muxes (qtmux)
the video and audio content and send it to a client.  This works very
well most conditions, however under load the pipeline occasionally
(10% of the time) freezes mid-stream for many seconds mid-stream after
the call  gst_pad_push returns GST_FLOW_ERROR in method

So the load test uses approximately 10 different MP4 videos and the
load test cycles through these.  The pipeline normally processes each
file without issue.  This issue when it occurs can happen on anyone
individual videos so it isn't related to any specific content.

I have instrumented the Input source and sink and I log each I/O
request. What I see is the application performs many reads and writes
and then at some non deterministic point the call to gst_pad_push in
st_qt_mux_send_buffer returns GST_FLOW_ERROR, which is returned to the
caller.  At this point the pipeline freezes and no I/O is performed
for many seconds ranging from 7-11 seconds before it requests any I/O.

This problem only occurs under load of about 50- 60 concurrent
pipelines.  Enabling diagnostics makes this very difficult to trace an
individual transaction through the diagnostics under load.  I did pass
a transaction Id down to the muxer and added some additional
diagnostic to the source code to enable me to trace an individual
transaction under load.  From this I was able to see this error being

So if anyone can help me determine what can cause the qtmux call to
gst_pad_push to return GST_FLOW_ERROR under load, with content that
under non load conditions does return an error?  Is there any
diagnostics I could enable to help pin point this issue.  Any load
issues in the muxer or gst_pad_push method resolved in later versions
of the muxer.


More information about the gstreamer-devel mailing list