<br><br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">You can set v4l2src to READY and then query the caps, this should give you all caps supported by the device.<br>

<br>
If you link elements in the READY state, it will check the real 
supported formats of the device and linking will fail when no format is 
possible. Linking in the NULL state will just do some basic checks but 
since the device is not opened, it will not be able to check the device 
capabilities.<br></blockquote><div> </div><div>Thanks for the tip, all the sample code I&#39;ve seen shows 
changing the pipeline state happens after the elements have been added 
and linked.  Changing the state to READY after the gst_bin_add_many() 
function and then linking the elements individually lets the 
gst_element_link_filtered() fail so I can go to &quot;plan B&quot; for building 
the pipeline.  This makes the work-around I was attempting work now.<br>
<br> Pehaps  <a name="section-caps-filter">section 8.3.2.&quot; Creating capabilities for filtering&quot;  of the manual should be updated to point out that <br></a><pre class="programlisting"><font size="4"><span style="font-family: arial,helvetica,sans-serif;">link_ok = gst_element_link_filtered()</span></font><br>
</pre><a name="section-caps-filter"></a></div><div>will only fail if the pipeline is in the READY state and will always succeed in the NULL state.<br><br><br> </div><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">

If you want to get a gray format from the sink you would do:<br>
<br>
v4l2src ! ffmpegcolorspace ! video/x-raw-gray ! appsink<br>
<br>
it is important to specify at little as possible in the filter to let 
the device choose what it can do. In this case, we change the format so 
we need an ffmpegcolorspace to make convert in case v4l2src doesn&#39;t 
support gray.<br></blockquote><div><br>I&#39;m afraid you&#39;ve misunderstood my problem.  The v4l2src is accepting a caps that the Sensory device doesn&#39;t actually support.  Up to getting this device I could just link the source un-filtered and all the capture devices worked fine with ffmpegcolorspace doing the conversion.  Ideal situation, in theory, until you get a driver-v4l2-gstreamer bug (don&#39;t much matter who&#39;s bug it is!) that accepts an invalid caps.<br>
<br>But now I need to try to set gray caps first and if it works I&#39;m done.  If not fall back and try the unfiltered caps as before.<br>I&#39;m not sure if this will be robust against the next v4l2 capture device I try or not.<br>
<br>I think this whole &quot;query and figure out if it can do what I need&quot; is bass-ackward, what should be happening is I say &quot;set mode whatever&quot; and I get either no error and proceed or trap the error and try &quot;plan B&quot; if one is possible.<br>
<br>All the other stuff you mention was basically being done, as my caps filter has the 680x480 frame size and frame rate stuff in it and there is a videoscale in the pipeline (that I left out for clarity) as one of my capture devices can only do 720x480 or higher and videoscale seems smart enough to be a noop if scaling is not required.<br>
<br><br></div>