From 035180901de9bbea873001b82d96dd2b7a45d76a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= <Reimar.Doeffinger@gmx.de>
Date: Sat, 27 Dec 2014 22:49:39 +0100
Subject: [PATCH] r210enc.c: Simplify and never store more than 10 bits.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The r10k and avrp decoders would previously store 12 bit precision
for the blue channel, which is inconsistent and probably not a
desirable behaviour.
Now the 2 unused extra bits are set to 0.
This is possibly not ideal either as RGBA1010102 format has the same
layout but stores alpha in these bits, thus explicitly setting them
to 1 might be preferable.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
---
 libavcodec/r210enc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/r210enc.c b/libavcodec/r210enc.c
index d61cd757e89..07dfc50bf0c 100644
--- a/libavcodec/r210enc.c
+++ b/libavcodec/r210enc.c
@@ -58,11 +58,11 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt,
             uint32_t pixel;
             uint16_t r = *src++ >> 6;
             uint16_t g = *src++ >> 6;
-            uint16_t b = *src++ >> 4;
+            uint16_t b = *src++ >> 6;
             if (avctx->codec_id == AV_CODEC_ID_R210)
-                pixel = (r << 20) | (g << 10) | b >> 2;
+                pixel = (r << 20) | (g << 10) | b;
             else
-                pixel = (r << 22) | (g << 12) | b;
+                pixel = (r << 22) | (g << 12) | (b << 2);
             if (avctx->codec_id == AV_CODEC_ID_AVRP)
                 bytestream_put_le32(&dst, pixel);
             else
-- 
GitLab