title: Gstreamer: Why do I need a videoconvert before displaying some filter?
body: <p>I am writing a very basic pipeline on GStreamer 1.0 and I would like to understand why I need a videoconvert before displaying the stream.</p>
  
  <pre><code>gst-launch-1.0 videotestsrc ! vertigotv ! videoconvert ! autovideosink
  </code></pre>
  
  <p>If I remove the videoconvert from the pipeline then I get an error and the stream does not play:</p>
  
  <pre><code>Setting pipeline to PAUSED ...
  Pipeline is PREROLLING ...
  ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error.
  Additional debug info:
  gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
  streaming task paused, reason not-negotiated (-4)
  ERROR: pipeline doesn't want to preroll.
  Setting pipeline to NULL ...
  Freeing pipeline ...
  </code></pre>
  
  <p>I don't get why the caps can't be automatically negotiated.</p>
  
  <p>Here are the capabilities template of the sink pad of vertigo:</p>
  
  <pre><code>Capabilities:
    video/x-raw
               format: { RGBx, BGRx }
                width: [ 1, 2147483647 ]
               height: [ 1, 2147483647 ]
            framerate: [ 0/1, 2147483647/1 ]
  </code></pre>
  
  <p>Here is the capabilities template of the src pad of autovideosink:</p>
  
  <pre><code>Capabilities:
    ANY
  </code></pre>
  
  <p>Can someone explain me why this element is necessary to play the pipeline. Why do I need to switch colorspace before displaying the pipeline? Is there a way not to use this element (maybe using caps)?</p>