General stream error using fre0r-mixer-subtract

Dirk Van Haerenborgh vhdirk at gmail.com
Thu Jan 16 01:25:31 PST 2014


Hi all,

I am trying to subtract a decoded stream from the original uncompressed
stream to evaluate compression artifacts. For subtracting frames I am using
the frei0r-mixer-subtract element, but I keep getting not-negotiated
errors, though there seems to be no clear indication (in the logs) why that
is happening.

Consider the following example (gstreamer 1.2.0/ ubuntu saucy)

# construct a raw video stream
gst-launch-1.0 -e videotestsrc ! video/x-raw, format=BGR, width=640,
height=480, framerate=20/1 ! avimux ! filesink location=raw.avi

# compress that stream with h264
gst-launch-1.0 -e filesrc location=raw.avi ! avidemux ! videoconvert !
x264enc ! matroskamux ! filesink location=compress.mkv

 # now subtract the 2 streams and visualise the result. This does not work,
but instead gives the following error.
gst-launch-1.0 -e frei0r-mixer-subtract name=subtract ! videoconvert !
xvimagesink \
filesrc location=raw.avi ! decodebin ! videoconvert ! subtract. \
filesrc location=compress.mkv ! decodebin ! videoconvert ! subtract.

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
ERROR: from element
/GstPipeline:pipeline0/GstDecodeBin:decodebin1/GstMatroskaDemux:matroskademux0:
GStreamer encountered a general stream error.
Additional debug info:
matroska-demux.c(4665): gst_matroska_demux_loop ():
/GstPipeline:pipeline0/GstDecodeBin:decodebin1/GstMatroskaDemux:matroskademux0:
stream stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ..

# when omitting the decodebins by manually entering the decode elements, it
now errors on avidemux instead of matroskademux, but still at the loop
function
gst-launch-1.0 -e frei0r-mixer-subtract name=subtract ! videoconvert !
xvimagesink \
filesrc location=raw.avi ! avidemux ! videoconvert ! subtract. \
filesrc location=compress.mkv ! matroskademux ! avdec_h264 ! videoconvert !
subtract.

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstAviDemux:avidemux0: Internal
data stream error.
Additional debug info:
gstavidemux.c(5383): gst_avi_demux_loop ():
/GstPipeline:pipeline0/GstAviDemux:avidemux0:
streaming stopped, reason not-negotiated
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...

Am I missing something obvious here? Or can someone point me towards a
starting point for finding a solution?

Thanks,
-Dirk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20140116/adef1385/attachment.html>


More information about the gstreamer-devel mailing list