Support decoding of Lagarith frame type FRAME_SOLID_COLOR.
authorCarl Eugen Hoyos <cehoyos@ag.or.at>
Mon, 6 May 2013 20:40:38 +0000 (22:40 +0200)
committerCarl Eugen Hoyos <cehoyos@ag.or.at>
Tue, 7 May 2013 09:46:35 +0000 (11:46 +0200)
Fixes bug 459.

libavcodec/lagarith.c

index 8599784..4285644 100644 (file)
@@ -556,6 +556,28 @@ static int lag_decode_frame(AVCodecContext *avctx,
             }
         }
         break;
+    case FRAME_SOLID_COLOR:
+        if (avctx->bits_per_coded_sample == 24) {
+            avctx->pix_fmt = AV_PIX_FMT_RGB24;
+        } else {
+            avctx->pix_fmt = AV_PIX_FMT_RGB32;
+            offset_gu |= 0xFFU << 24;
+        }
+
+        if ((ret = ff_thread_get_buffer(avctx, &frame,0)) < 0)
+            return ret;
+
+        dst = p->data[0];
+        for (j = 0; j < avctx->height; j++) {
+            for (i = 0; i < avctx->width; i++)
+                if (avctx->bits_per_coded_sample == 24) {
+                    AV_WB24(dst + i * 3, offset_gu);
+                } else {
+                    AV_WN32(dst + i * 4, offset_gu);
+                }
+            dst += p->linesize[0];
+        }
+        break;
     case FRAME_ARITH_RGBA:
         avctx->pix_fmt = AV_PIX_FMT_RGB32;
         planes = 4;