gst/bayer/gstbayer2rgb.c: Fix color offset calculation for 24bpp. Fixes bug #566613.
Original commit message from CVS: Patch by: Sascha Hauer <s dot hauer at pengutronix dot de> Luotao Fu <l dot fu at pengutronix dot de> * gst/bayer/gstbayer2rgb.c: (get_pix_offset), (gst_bayer2rgb_set_caps): Fix color offset calculation for 24bpp. Fixes bug #566613.
This commit is contained in:
parent
751555b5c3
commit
9ebb543b50
@ -1,3 +1,12 @@
|
|||||||
|
2009-01-05 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||||
|
|
||||||
|
Patch by: Sascha Hauer <s dot hauer at pengutronix dot de>
|
||||||
|
Luotao Fu <l dot fu at pengutronix dot de>
|
||||||
|
|
||||||
|
* gst/bayer/gstbayer2rgb.c: (get_pix_offset),
|
||||||
|
(gst_bayer2rgb_set_caps):
|
||||||
|
Fix color offset calculation for 24bpp. Fixes bug #566613.
|
||||||
|
|
||||||
2009-01-05 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
2009-01-05 Sebastian Dröge <sebastian.droege@collabora.co.uk>
|
||||||
|
|
||||||
Patch by: vanista <vanista at gmail dot com>
|
Patch by: vanista <vanista at gmail dot com>
|
||||||
|
@ -231,19 +231,21 @@ gst_bayer2rgb_get_property (GObject * object, guint prop_id,
|
|||||||
|
|
||||||
/* Routine to convert colormask value into relative byte offset */
|
/* Routine to convert colormask value into relative byte offset */
|
||||||
static int
|
static int
|
||||||
get_pix_offset (int offset)
|
get_pix_offset (int mask, int bpp)
|
||||||
{
|
{
|
||||||
switch (offset) {
|
int bpp32 = (bpp / 8) - 3;
|
||||||
|
|
||||||
|
switch (mask) {
|
||||||
case 255:
|
case 255:
|
||||||
return 3;
|
return 2 + bpp32;
|
||||||
case 65280:
|
case 65280:
|
||||||
return 2;
|
return 1 + bpp32;
|
||||||
case 16711680:
|
case 16711680:
|
||||||
return 1;
|
return 0 + bpp32;
|
||||||
case -16777216:
|
case -16777216:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
GST_ERROR ("Invalid color mask 0x%08x", offset);
|
GST_ERROR ("Invalid color mask 0x%08x", mask);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -254,7 +256,7 @@ gst_bayer2rgb_set_caps (GstBaseTransform * base, GstCaps * incaps,
|
|||||||
{
|
{
|
||||||
GstBayer2RGB *filter = GST_BAYER2RGB (base);
|
GstBayer2RGB *filter = GST_BAYER2RGB (base);
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
int val;
|
int val, bpp;
|
||||||
|
|
||||||
GST_DEBUG ("in caps %" GST_PTR_FORMAT " out caps %" GST_PTR_FORMAT, incaps,
|
GST_DEBUG ("in caps %" GST_PTR_FORMAT " out caps %" GST_PTR_FORMAT, incaps,
|
||||||
outcaps);
|
outcaps);
|
||||||
@ -267,14 +269,14 @@ gst_bayer2rgb_set_caps (GstBaseTransform * base, GstCaps * incaps,
|
|||||||
|
|
||||||
/* To cater for different RGB formats, we need to set params for later */
|
/* To cater for different RGB formats, we need to set params for later */
|
||||||
structure = gst_caps_get_structure (outcaps, 0);
|
structure = gst_caps_get_structure (outcaps, 0);
|
||||||
gst_structure_get_int (structure, "bpp", &val);
|
gst_structure_get_int (structure, "bpp", &bpp);
|
||||||
filter->pixsize = val / 8;
|
filter->pixsize = bpp / 8;
|
||||||
gst_structure_get_int (structure, "red_mask", &val);
|
gst_structure_get_int (structure, "red_mask", &val);
|
||||||
filter->r_off = get_pix_offset (val);
|
filter->r_off = get_pix_offset (val, bpp);
|
||||||
gst_structure_get_int (structure, "green_mask", &val);
|
gst_structure_get_int (structure, "green_mask", &val);
|
||||||
filter->g_off = get_pix_offset (val);
|
filter->g_off = get_pix_offset (val, bpp);
|
||||||
gst_structure_get_int (structure, "blue_mask", &val);
|
gst_structure_get_int (structure, "blue_mask", &val);
|
||||||
filter->b_off = get_pix_offset (val);
|
filter->b_off = get_pix_offset (val, bpp);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -516,6 +518,7 @@ corner (uint8_t * input, uint8_t * output, int x, int y,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_corners (uint8_t * input, uint8_t * output, GstBayer2RGB * filter)
|
do_corners (uint8_t * input, uint8_t * output, GstBayer2RGB * filter)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user