diff options
| author | Zeeshan Ali <zeenix@gmail.com> | 2004-01-14 00:37:17 +0000 | 
|---|---|---|
| committer | Zeeshan Ali <zeenix@gmail.com> | 2004-01-14 00:37:17 +0000 | 
| commit | f4c6604e6c4295d1c580860386f7e69ea50dcdaa (patch) | |
| tree | b961f270f3f3df89347fce38da24524b685c708a | |
| parent | 6796f7f2d1dfe97f55b7640ff24748edf75a1ed8 (diff) | |
The mask issue (which was'nt really an issue) is resolved. Translation of libcaca events to object signals would be d...
Original commit message from CVS:
The mask issue (which was'nt really an issue) is resolved. Translation of libcaca events to object signals would be done tomorrow.
| -rw-r--r-- | ext/libcaca/gstcacasink.c | 41 | 
1 files changed, 24 insertions, 17 deletions
diff --git a/ext/libcaca/gstcacasink.c b/ext/libcaca/gstcacasink.c index 058c3527..1cd674e5 100644 --- a/ext/libcaca/gstcacasink.c +++ b/ext/libcaca/gstcacasink.c @@ -54,8 +54,8 @@ GST_STATIC_PAD_TEMPLATE (    "sink",    GST_PAD_SINK,    GST_PAD_ALWAYS, -  //GST_STATIC_CAPS (GST_VIDEO_RGB_PAD_TEMPLATE_CAPS_24)); -  GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB)); +  GST_STATIC_CAPS (GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_RGB_16 ";" GST_VIDEO_CAPS_RGB_15) +);  static void gst_cacasink_base_init (gpointer g_class);  static void gst_cacasink_class_init (GstCACASinkClass *klass); @@ -251,35 +251,42 @@ gst_cacasink_sinkconnect (GstPad *pad, const GstCaps *caps)    gst_structure_get_int (structure, "green_mask", &cacasink->green_mask);    gst_structure_get_int (structure, "blue_mask", &cacasink->blue_mask); +  if (cacasink->bpp == 24) { +    cacasink->red_mask   = GUINT32_FROM_BE (cacasink->red_mask) >> 8; +    cacasink->green_mask = GUINT32_FROM_BE (cacasink->green_mask) >> 8; +    cacasink->blue_mask  = GUINT32_FROM_BE (cacasink->blue_mask) >> 8; +  } + +  else if (cacasink->bpp == 32) { +    cacasink->red_mask   = GUINT32_FROM_BE (cacasink->red_mask); +    cacasink->green_mask = GUINT32_FROM_BE (cacasink->green_mask); +    cacasink->blue_mask  = GUINT32_FROM_BE (cacasink->blue_mask); +  } + +  else if (cacasink->bpp == 16 || cacasink->bpp == 15) { +    cacasink->red_mask   = GUINT16_FROM_BE (cacasink->red_mask); +    cacasink->green_mask = GUINT16_FROM_BE (cacasink->green_mask); +    cacasink->blue_mask  = GUINT16_FROM_BE (cacasink->blue_mask); +  } +    if (cacasink->bitmap) {      caca_free_bitmap (cacasink->bitmap);    }    cacasink->bitmap = caca_create_bitmap (  			cacasink->bpp,  -			//32,   			GST_VIDEOSINK_WIDTH (cacasink),   			GST_VIDEOSINK_HEIGHT (cacasink),  -			//GST_VIDEOSINK_WIDTH (cacasink) * cacasink->bpp/8,  -			((GST_VIDEOSINK_WIDTH (cacasink) + 15) & ~15)  -			* cacasink->bpp/8,  -			0x000000ff,  -			0x0000ff00,  -			0x00ff0000,  -			//cacasink->red_mask,  -			//cacasink->green_mask,  -			//cacasink->blue_mask, +			GST_VIDEOSINK_WIDTH (cacasink) * cacasink->bpp/8,  +			cacasink->red_mask,  +			cacasink->green_mask,  +			cacasink->blue_mask,  			0); -  //g_print ("Bpp: %u, width: %u, height: %u\n", cacasink->bpp, GST_VIDEOSINK_WIDTH (cacasink), GST_VIDEOSINK_HEIGHT (cacasink)); -  g_print ("red: %x, green: %x, blue: %x\n", cacasink->red_mask, cacasink->green_mask, cacasink->blue_mask); -    if (!cacasink->bitmap) {       return GST_PAD_LINK_DELAYED;    } -  //gst_video_sink_got_video_size (GST_VIDEOSINK (cacasink), GST_VIDEOSINK_WIDTH (cacasink), GST_VIDEOSINK_HEIGHT (cacasink)); -    return GST_PAD_LINK_OK;  }  | 
