This has driven me nuts.  I&#39;m using Ubuntu 10.04 64-bit with all patches current as of this morning with their distribution gstreamer.<br>
<br><br>I set up three dynamically built pipelines using gst_element_link_filtered() with the pipelines in the READY state, and gray caps as the end point for appsink and starting point for the appsrc elements.  All linked without errors but when the pipeline runs:<br>
<br>on_new_buffer_from_source() Callback entered, Got buffer.<br>Buffer caps: video/x-raw-gray, width=(int)640, height=(int)480, framerate=(fraction)30000/1001, bpp=(int)8, depth=(int)8<br>obus Error: Internal data flow error.<br>
Recording Pipeline Error: Internal data flow error.  GStreamer error: negotiation problem.  Please file a bug at <a href="http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer">http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer</a><br>
ibus: Video input End of stream.<br>Returned, stopping playback<br>Deleting pipelines<br><br>My caps are:<br>    // setup linking with filtered caps<br>    caps = gst_caps_new_simple (&quot;video/x-raw-yuv&quot;,<br>            &quot;format&quot;, GST_TYPE_FOURCC, GST_MAKE_FOURCC (&#39;I&#39;, &#39;4&#39;, &#39;2&#39;, &#39;0&#39;),<br>
          &quot;width&quot;, G_TYPE_INT, 640,<br>          &quot;height&quot;, G_TYPE_INT, 480,<br>          &quot;framerate&quot;, GST_TYPE_FRACTION, 30000, 1001,<br>          NULL);<br>  <br>    caps_gray = gst_caps_new_simple (&quot;video/x-raw-gray&quot;,<br>
          &quot;width&quot;, G_TYPE_INT, 640,<br>          &quot;height&quot;, G_TYPE_INT, 480,<br>          &quot;framerate&quot;, GST_TYPE_FRACTION, 30000, 1001,<br>          NULL);<br><br>    gst_app_sink_set_caps(GST_APP_SINK(app-&gt;appsink), caps_gray);<br>
    gst_app_src_set_caps(GST_APP_SRC(app-&gt;vappsrc), caps_gray);<br>    gst_app_src_set_caps(GST_APP_SRC(app-&gt;rappsrc), caps_gray);<br><br><br><br>But changing only the caps on the appsink and appsrc elements and final/initial element_link_filtered() calls<br>
<br>    gst_app_sink_set_caps(GST_APP_SINK(app-&gt;appsink), caps);<br>    gst_app_src_set_caps(GST_APP_SRC(app-&gt;vappsrc), caps);<br>    gst_app_src_set_caps(GST_APP_SRC(app-&gt;rappsrc), caps);<br><br>Everything seems to work fine and I get a recorded mp4 file that plays fine in gstreamer (totem) and avidemux2 with working seeks.  Remaining issue is the default ffenc_mpeg4 encoder setting produce a rather &quot;blocky&quot; video.  Any good suggestions for changing the mpeg4 encoder defaults to get a better quality encoding?<br>
<br>If I use x264enc instead, I get a quality that is probably good enough but seeking in totem gives video mosaic break up and avidemux2 throws up a waring about H262 and possible crashes, but seems to handle it OK when I ignore the warning.<br>
<br>The appsink pipeline is built dynamically to work around a v4l2/gstreamer bug where one of my (the most important one right now) capture devices negotiates a format the ends up with a black bar in the middle of the image.  The details and seeds of the work around are here:<br>
<a href="http://gstreamer-devel.966125.n4.nabble.com/What-is-the-point-of-gst-element-link-filtered-td3603886.html">http://gstreamer-devel.966125.n4.nabble.com/What-is-the-point-of-gst-element-link-filtered-td3603886.html</a><br>
<br><br><br>