Commit 4aed35ca authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[media] v4l2-tpg: don't clamp XV601/709 to lim range



The XV601/709 encodings are special: they signal limited range, but use the full range
to encode a larger gamut with R', G' and B' values outside the [0-1] range.

So don't clamp to limited range for these two encodings.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 86c7eb41
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -927,7 +927,14 @@ static void precalculate_color(struct tpg_data *tpg, int k)
		y >>= 4;
		cb >>= 4;
		cr >>= 4;
		if (tpg->real_quantization == V4L2_QUANTIZATION_LIM_RANGE) {
		/*
		 * XV601/709 use the header/footer margins to encode R', G'
		 * and B' values outside the range [0-1]. So do not clamp
		 * XV601/709 values.
		 */
		if (tpg->real_quantization == V4L2_QUANTIZATION_LIM_RANGE &&
		    tpg->real_ycbcr_enc != V4L2_YCBCR_ENC_XV601 &&
		    tpg->real_ycbcr_enc != V4L2_YCBCR_ENC_XV709) {
			y = clamp(y, 16, 235);
			cb = clamp(cb, 16, 240);
			cr = clamp(cr, 16, 240);