[gst-devel] What's wrong with my getcaps() function?
Corentin BARON
corentin.baron at inrialpes.fr
Wed Jun 7 11:30:24 CEST 2006
Hello,
I'm building a video plugin and have problems with rgb output, it
seems there's a problem with my getcaps() function but I can't figure
it out. Here's my function:
> static GstCaps *
> gst_blinkysrc_getcaps(GstPad *pad)
> {
> GstCaps *capslist;
> GstBlinkySrc *filter = GST_BLINKYSRC(gst_pad_get_parent(pad));
>
> g_print("getcaps()\n");
>
> capslist = gst_caps_new_empty();
>
> // Are we connected to a device ?
> if (filter->handler != NULL && filter->buffer.image != NULL) {
> // In this case we know the width/height of our video
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 16,
> "bpp", G_TYPE_INT, 16,
> "endianness", G_TYPE_INT, G_BIG_ENDIAN,
> "red_mask", G_TYPE_INT, 63488,
> "green_mask", G_TYPE_INT, 2016,
> "blue_mask", G_TYPE_INT, 31,
> "width", G_TYPE_INT, filter->buffer.header.width,
> "height", G_TYPE_INT, filter->buffer.header.height,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 24,
> "bpp", G_TYPE_INT, 24,
> "endianness", G_TYPE_INT, G_BIG_ENDIAN,
> "red_mask", G_TYPE_INT, 0xff0000,
> "green_mask", G_TYPE_INT, 0x00ff00,
> "blue_mask", G_TYPE_INT, 0x0000ff,
> "width", G_TYPE_INT, filter->buffer.header.width,
> "height", G_TYPE_INT, filter->buffer.header.height,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 16,
> "bpp", G_TYPE_INT, 16,
> "endianness", G_TYPE_INT, G_BYTE_ORDER,
> "red_mask", G_TYPE_INT, 63488,
> "green_mask", G_TYPE_INT, 2016,
> "blue_mask", G_TYPE_INT, 31,
> "width", G_TYPE_INT, filter->buffer.header.width,
> "height", G_TYPE_INT, filter->buffer.header.height,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 24,
> "bpp", G_TYPE_INT, 24,
> "endianness", G_TYPE_INT, G_BYTE_ORDER,
> "red_mask", G_TYPE_INT, 0xff0000,
> "green_mask", G_TYPE_INT, 0x00ff00,
> "blue_mask", G_TYPE_INT, 0x0000ff,
> "width", G_TYPE_INT, filter->buffer.header.width,
> "height", G_TYPE_INT, filter->buffer.header.height,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-yuv",
> "format", GST_TYPE_FOURCC, formats[FORMAT_YUV],
> "width", G_TYPE_INT, filter->buffer.header.width,
> "height", G_TYPE_INT, filter->buffer.header.height,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> g_print("| given caps:\n%s\n", gst_caps_to_string(capslist));
>
> return capslist;
> }
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 16,
> "bpp", G_TYPE_INT, 16,
> "endianess", G_TYPE_INT, G_BIG_ENDIAN,
> "red_mask", G_TYPE_INT, 63488,
> "green_mask", G_TYPE_INT, 2016,
> "blue_mask", G_TYPE_INT, 31,
> "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 16,
> "bpp", G_TYPE_INT, 16,
> "endianess", G_TYPE_INT, G_BYTE_ORDER,
> "red_mask", G_TYPE_INT, 63488,
> "green_mask", G_TYPE_INT, 2016,
> "blue_mask", G_TYPE_INT, 31,
> "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-yuv",
> "format", GST_TYPE_FOURCC, formats[FORMAT_YUV],
> "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 24,
> "bpp", G_TYPE_INT, 24,
> "endianess", G_TYPE_INT, G_BIG_ENDIAN,
> "red_mask", G_TYPE_INT, 16711680,
> "green_mask", G_TYPE_INT, 65280,
> "blue_mask", G_TYPE_INT, 255,
> "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> gst_caps_append_structure(capslist,
> gst_structure_new("video/x-raw-rgb",
> "depth", G_TYPE_INT, 24,
> "bpp", G_TYPE_INT, 24,
> "endianess", G_TYPE_INT, G_BYTE_ORDER,
> "red_mask", G_TYPE_INT, 16711680,
> "green_mask", G_TYPE_INT, 65280,
> "blue_mask", G_TYPE_INT, 255,
> "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
> "framerate", GST_TYPE_DOUBLE_RANGE, 1.0, 100.0,
> NULL));
>
> g_print("| given caps:\n%s\n", gst_caps_to_string(capslist));
>
> return capslist;
> }
I'm working on GStreamer 0.8.10 on Fedora Core 4 and Maemo (Nokia 770
tablet).
Thx for yourt help,
Corentin.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: corentinbaron.gpgkey
Type: application/octet-stream
Size: 916 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20060607/43dfed4a/attachment.obj>
-------------- next part --------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: Ceci est une signature ?lectronique PGP
URL: <http://lists.freedesktop.org/archives/gstreamer-devel/attachments/20060607/43dfed4a/attachment.pgp>
More information about the gstreamer-devel
mailing list