Apply clut changes only to one table.
authorJULIAN GARDNER <joolzg@btinternet.com>
Wed, 4 Sep 2013 21:51:34 +0000 (22:51 +0100)
committerReimar Döffinger <Reimar.Doeffinger@gmx.de>
Sat, 21 Sep 2013 07:51:09 +0000 (09:51 +0200)
The specification does not allow multiple bits to be set,
but some encoders do it anyway.
Applying it only to the first seems to give better results.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
libavcodec/dvbsubdec.c

index 955925a..faa510a 100644 (file)
@@ -1015,9 +1015,9 @@ static void dvbsub_parse_clut_segment(AVCodecContext *avctx,
 
         if (depth & 0x80)
             clut->clut4[entry_id] = RGBA(r,g,b,255 - alpha);
-        if (depth & 0x40)
+        else if (depth & 0x40)
             clut->clut16[entry_id] = RGBA(r,g,b,255 - alpha);
-        if (depth & 0x20)
+        else if (depth & 0x20)
             clut->clut256[entry_id] = RGBA(r,g,b,255 - alpha);
     }
     }