<div dir="ltr">Hi all,<div><br></div><div>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.</div>
<div><br></div><div>Consider the following example (gstreamer 1.2.0/ ubuntu saucy)</div><div><br></div><div><div># construct a raw video stream</div><div>gst-launch-1.0 -e videotestsrc ! video/x-raw, format=BGR, width=640, height=480, framerate=20/1 ! avimux ! filesink location=raw.avi</div>
<div> </div><div># compress that stream with h264</div><div>gst-launch-1.0 -e filesrc location=raw.avi ! avidemux ! videoconvert ! x264enc ! matroskamux ! filesink location=compress.mkv</div><div> </div><div> # now subtract the 2 streams and visualise the result. This does not work, but instead gives the following error.</div>
<div>gst-launch-1.0 -e frei0r-mixer-subtract name=subtract ! videoconvert ! xvimagesink \</div><div>filesrc location=raw.avi ! decodebin ! videoconvert ! subtract. \</div><div>filesrc location=compress.mkv ! decodebin ! videoconvert ! subtract.</div>
<div><br></div><div>Setting pipeline to PAUSED ...</div><div>Pipeline is PREROLLING ...</div><div>Redistribute latency...</div><div>ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin1/GstMatroskaDemux:matroskademux0: GStreamer encountered a general stream error.</div>
<div>Additional debug info:</div><div>matroska-demux.c(4665): gst_matroska_demux_loop (): /GstPipeline:pipeline0/GstDecodeBin:decodebin1/GstMatroskaDemux:matroskademux0:</div><div>stream stopped, reason not-negotiated</div>
<div>ERROR: pipeline doesn't want to preroll.</div><div>Setting pipeline to NULL ...</div><div>Freeing pipeline ..</div><div><br></div><div># when omitting the decodebins by manually entering the decode elements, it now errors on avidemux instead of matroskademux, but still at the loop function</div>
<div>gst-launch-1.0 -e frei0r-mixer-subtract name=subtract ! videoconvert ! xvimagesink \</div><div>filesrc location=raw.avi ! avidemux ! videoconvert ! subtract. \</div><div>filesrc location=compress.mkv ! matroskademux ! avdec_h264 ! videoconvert ! subtract.</div>
<div><br></div><div>Setting pipeline to PAUSED ...</div><div>Pipeline is PREROLLING ...</div><div>Redistribute latency...</div><div>ERROR: from element /GstPipeline:pipeline0/GstAviDemux:avidemux0: Internal data stream error.</div>
<div>Additional debug info:</div><div>gstavidemux.c(5383): gst_avi_demux_loop (): /GstPipeline:pipeline0/GstAviDemux:avidemux0:</div><div>streaming stopped, reason not-negotiated</div><div>ERROR: pipeline doesn't want to preroll.</div>
<div>Setting pipeline to NULL ...</div><div>Freeing pipeline ...</div><div><br></div></div><div>Am I missing something obvious here? Or can someone point me towards a starting point for finding a solution?</div><div><br>
</div>
<div>Thanks,</div><div>-Dirk</div><div><br></div><div><br><div><br></div><div><br></div></div></div>