[media] v4l2-tpg: ignore V4L2_DV_RGB_RANGE setting for YUV formats
authorHans Verkuil <hverkuil@xs4all.nl>
Tue, 28 Jun 2016 14:14:19 +0000 (11:14 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Fri, 8 Jul 2016 19:16:52 +0000 (16:16 -0300)
The V4L2_DV_RGB_RANGE_* settings are, as the name says, for RGB formats only.
So they should be ignored for non-RGB formats.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/common/v4l2-tpg/v4l2-tpg-core.c

index cf1dadd..3ec3ceb 100644 (file)
@@ -777,7 +777,7 @@ static void precalculate_color(struct tpg_data *tpg, int k)
         * Remember that r, g and b are still in the 0 - 0xff0 range.
         */
        if (tpg->real_rgb_range == V4L2_DV_RGB_RANGE_LIMITED &&
-           tpg->rgb_range == V4L2_DV_RGB_RANGE_FULL) {
+           tpg->rgb_range == V4L2_DV_RGB_RANGE_FULL && !tpg->is_yuv) {
                /*
                 * Convert from full range (which is what r, g and b are)
                 * to limited range (which is the 'real' RGB range), which
@@ -787,7 +787,7 @@ static void precalculate_color(struct tpg_data *tpg, int k)
                g = (g * 219) / 255 + (16 << 4);
                b = (b * 219) / 255 + (16 << 4);
        } else if (tpg->real_rgb_range != V4L2_DV_RGB_RANGE_LIMITED &&
-                  tpg->rgb_range == V4L2_DV_RGB_RANGE_LIMITED) {
+                  tpg->rgb_range == V4L2_DV_RGB_RANGE_LIMITED && !tpg->is_yuv) {
                /*
                 * Clamp r, g and b to the limited range and convert to full
                 * range since that's what we deliver.