<div dir="ltr">Just for grins, what about linking directly with xvimagesink, if that fails then link videoconvert? Seems easy enough.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 10, 2014 at 6:45 PM, Patrick Doyle <span dir="ltr"><<a href="mailto:wpdster@gmail.com" target="_blank">wpdster@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello Francisco,<br>
Sorry, I misread ximagesink as xvimagesink.  The<br>
--gst-debug=GST_CAPS:6 capability is a feature of the gstreamer<br>
infrastructure, not of individual plugins.  When I run:<br>
<br>
$ gst-launch-1.0 --gst-debug=GST_CAPS:6 videotestsrc ! ximagesink<br>
<br>
I see<br>
...<br>
0:00:00.078848852 45175       0xda99e0 DEBUG               GST_CAPS<br>
gstutils.c:2807:gst_pad_peer_query_caps:<videotestsrc0:src> get pad<br>
peer caps with filter video/x-raw, format=(string){ I420, YV12, YUY2,<br>
UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR,<br>
Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV24, GRAY8,<br>
GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420,<br>
RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE,<br>
I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE },<br>
width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ],<br>
framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-bayer,<br>
format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647<br>
], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1,<br>
2147483647/1 ]<br>
0:00:00.078892620 45175       0xda99e0 DEBUG               GST_CAPS<br>
gstutils.c:2814:gst_pad_peer_query_caps:<videotestsrc0:src> peer query<br>
returned video/x-raw, format=(string)BGRx, width=(int)[ 1, 2147483647<br>
], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1,<br>
2147483647/1 ], pixel-aspect-ratio=(fraction)1/1<br>
...<br>
So, (please keep in mind, I am not an expert at all in gstreamer), it<br>
looks to me like videotestsrc proposed a whole slew of formats to<br>
ximagesink and ximagesink replied "I would like BGRx".  That makes<br>
sense, since  ximagesink is "A standard X based videosink".  If you<br>
hand it BGRx data, it probably just needs to blast the pixels into the<br>
framebuffer without changing them.  (It might blast them one component<br>
at a time, if the frame buffer is 24 bits deep, or it could blast them<br>
32 bits at a time into a BGRx framebuffer).<br>
<br>
Anything more than this is beyond my limited understanding.  I would<br>
encourage you to take a peek at the source code.<br>
<br>
--wpd<br>
<br>
<br>
videotestsrc pr<br>
<div class="HOEnZb"><div class="h5"><br>
On Mon, Nov 10, 2014 at 2:46 PM, Francisco Velázquez<br>
<<a href="mailto:francisco.javier@me.com">francisco.javier@me.com</a>> wrote:<br>
> Hi Patrick<br>
><br>
> In my installation I use ximagesink instead of xvimagesink. I assume that the CAPS category for debugging is declared inside the xvimagesink, because I do not get any debugging output with that option when using ximagesink. Anyway, the option “-v” of gst-launch-1.0 also shows the negotiated format between elements.<br>
><br>
> Yes, the negotiation process selects the first capability that matches between two linked elements. In the case of video formats, a solution is to insert a videoconvert element to ensure that capabilities match. This solution, however, introduces an overhead that sometimes is unnecessary. Therefore I would like to find out how to know what are the supported formats by elements even when their description does not state it. That is the case of the ximagesink element.<br>
><br>
> Some output snippets:<br>
><br>
> $gst-inspect-1.0 ximagesink<br>
> …<br>
> Pad Templates:<br>
>   SINK template: 'sink'<br>
>     Availability: Always<br>
>     Capabilities:<br>
>       video/x-raw<br>
>               framerate: [ 0/1, 2147483647/1 ]<br>
>                   width: [ 1, 2147483647 ]<br>
>                  height: [ 1, 2147483647 ]<br>
> …<br>
><br>
><br>
><br>
> $gst-launch-1.0 -v videotestsrc ! opencvtextoverlay text="Hello" ! videoconvert ! ximagesink<br>
> …<br>
> /GstPipeline:pipeline0/GstOpencvTextOverlay:opencvtextoverlay0.GstPad:src: caps = "video/x-raw\,\ format\=\(string\)RGB\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive"<br>
> /GstPipeline:pipeline0/GstVideoConvert:videoconvert0.GstPad:src: caps = "video/x-raw\,\ width\=\(int\)320\,\ height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive\,\ format\=\(string\)BGRx”<br>
> …<br>
> Note that the videoconverter changes the format from RGB to BGRx. Otherwise:<br>
><br>
> $ gst-launch-1.0 -v videotestsrc ! opencvtextoverlay text="Hello" ! ximagesink<br>
> Setting pipeline to PAUSED ...<br>
> Pipeline is PREROLLING ...<br>
> ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error.<br>
> Additional debug info:<br>
> gstbasesrc.c(2933): void gst_base_src_loop(GstPad *) (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:<br>
> streaming task paused, reason not-negotiated (-4)<br>
> …<br>
><br>
> How to know what are the supported formats by ximagesink?<br>
><br>
> Thank you.<br>
><br>
> Francisco<br>
><br>
>> On 10 Nov 2014, at 15:25, Patrick Doyle <<a href="mailto:wpdster@gmail.com">wpdster@gmail.com</a>> wrote:<br>
>><br>
>> When I run 'gst-inspect-1.0 ximagesink', I see the following:<br>
>> ...<br>
>> Pad Templates:<br>
>>  SINK template: 'sink'<br>
>>    Availability: Always<br>
>>    Capabilities:<br>
>>      video/x-raw<br>
>>              framerate: [ 0/1, <a href="tel:2147483647" value="+12147483647">2147483647</a>/1 ]<br>
>>                  width: [ 1, 2147483647 ]<br>
>>                 height: [ 1, 2147483647 ]<br>
>> ...<br>
>><br>
>> This tells me that xvimagesink takes video/x-raw frames at<br>
>> (effectively) any frame rate and framesize.  But (as you note) that<br>
>> doesn't tell me what specific image formats are support.  So I have<br>
>> learned to do somthing like:<br>
>><br>
>> $ gst-launch-1.0 --gst-debug=CAPS:6 videotestsrc ! xvimagesink<br>
>><br>
>> When I look through the debug output produced by that, I see that<br>
>> xvimagesink reports same set of capabilities (not surprisingly) and<br>
>> that it doesn't restrict the image formats (which is what I learned<br>
>> from gst-inspect-1.0).  Continuing through the debug output, I see<br>
>> that videotestsrc and xvimagesink negotiate a UVYV format.  My<br>
>> (limited) understanding of this negotiation process is that each side<br>
>> is free to suggest the formats it supports and to choose from the<br>
>> other side's list the format it would prefer to see.<br>
>><br>
>> --wpd<br>
>><br>
>><br>
>> On Mon, Nov 10, 2014 at 9:02 AM, Francisco Velázquez<br>
>> <<a href="mailto:francisco.javier@me.com">francisco.javier@me.com</a>> wrote:<br>
>>> Dear GStreamer community,<br>
>>><br>
>>> I am trying to figure out how to know what are the supported formats of<br>
>>> ximagesink.<br>
>>><br>
>>> I have GStreamer 1.4.3 in Mac OS X 10.10.<br>
>>><br>
>>> `gst-inspect-1.0 ximagesink` shows no format information.<br>
>>><br>
>>> You can see that<br>
>>> <a href="http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/sys/ximage/ximagesink.c:931" target="_blank">http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/sys/ximage/ximagesink.c:931</a><br>
>>> does have a "format" descriptor, but that “format descriptor” is missing in<br>
>>> <a href="http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/docs/plugins/inspect/plugin-ximagesink.xml" target="_blank">http://cgit.freedesktop.org/gstreamer/gst-plugins-base/tree/docs/plugins/inspect/plugin-ximagesink.xml</a>.<br>
>>><br>
>>> Is the lack of format in the XML file intentional?<br>
>>><br>
>>> How can one determine what are the supported formats of ximagesink without<br>
>>> such description?<br>
>>><br>
>>> Thank you,<br>
>>><br>
>>> Francisco<br>
>>><br>
>>><br>
>>> _______________________________________________<br>
>>> gstreamer-devel mailing list<br>
>>> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
>>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
>>><br>
>> _______________________________________________<br>
>> gstreamer-devel mailing list<br>
>> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
>> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
><br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>