OSDN Git Service

pngdec: Implement 2bpp
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 6 Sep 2011 13:48:01 +0000 (15:48 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 6 Sep 2011 13:48:01 +0000 (15:48 +0200)
Fixes Ticket433

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/pngdec.c

index 7ac20ae..4fe2884 100644 (file)
@@ -579,6 +579,19 @@ static int decode_frame(AVCodecContext *avctx,
     }
  exit_loop:
 
+    if(s->bits_per_pixel == 2){
+        int i, j;
+        uint8_t *pd = s->current_picture->data[0];
+        for(j=0; j < s->height; j++) {
+            for(i=s->width/4-1; i>=0; i--) {
+                pd[4*i+3]=  pd[i]    &3;
+                pd[4*i+2]= (pd[i]>>2)&3;
+                pd[4*i+1]= (pd[i]>>4)&3;
+                pd[4*i+0]=  pd[i]>>6;
+            }
+            pd += s->image_linesize;
+        }
+    }
     if(s->bits_per_pixel == 4){
         int i, j;
         uint8_t *pd = s->current_picture->data[0];