summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZeeshan Ali <zeenix@gmail.com>2004-01-14 00:37:17 +0000
committerZeeshan Ali <zeenix@gmail.com>2004-01-14 00:37:17 +0000
commitf4c6604e6c4295d1c580860386f7e69ea50dcdaa (patch)
treeb961f270f3f3df89347fce38da24524b685c708a
parent6796f7f2d1dfe97f55b7640ff24748edf75a1ed8 (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.c41
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;
}