summaryrefslogtreecommitdiffstats
path: root/ext/libcaca
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 /ext/libcaca
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.
Diffstat (limited to 'ext/libcaca')
-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;
}