MSS1 and MSS2: set final pixel format after common stuff has been initialised
authorAlberto Delmás <adelmas@gmail.com>
Fri, 31 Aug 2012 05:59:36 +0000 (07:59 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Fri, 31 Aug 2012 06:08:43 +0000 (08:08 +0200)
This way it won't interfere with WMV9 initialisation inside MSS2 decoder and
avplay will play it fine.

Signed-off-by: Kostya Shishkov <kostya.shishkov@gmail.com>
libavcodec/mss1.c
libavcodec/mss12.c
libavcodec/mss2.c

index ada479e..caf0328 100644 (file)
@@ -189,11 +189,16 @@ static int mss1_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
 static av_cold int mss1_decode_init(AVCodecContext *avctx)
 {
     MSS1Context * const c = avctx->priv_data;
+    int ret;
 
     c->ctx.avctx       = avctx;
     avctx->coded_frame = &c->pic;
 
-    return ff_mss12_decode_init(&c->ctx, 0);
+    ret = ff_mss12_decode_init(&c->ctx, 0);
+
+    avctx->pix_fmt = PIX_FMT_PAL8;
+
+    return ret;
 }
 
 static av_cold int mss1_decode_end(AVCodecContext *avctx)
index f0f23c0..18f2f28 100644 (file)
@@ -690,10 +690,6 @@ av_cold int ff_mss12_decode_init(MSS12Context *c, int version)
         return AVERROR(ENOMEM);
     }
 
-    avctx->pix_fmt = version ? c->free_colours == 127 ? PIX_FMT_RGB555
-                                                      : PIX_FMT_RGB24
-                             : PIX_FMT_PAL8;
-
     codec_init(c, version);
 
     return 0;
index c0c47dc..2a0bf47 100644 (file)
@@ -844,6 +844,10 @@ static av_cold int mss2_decode_init(AVCodecContext *avctx)
         return ret;
     }
     ff_mss2dsp_init(&ctx->dsp);
+
+    avctx->pix_fmt = c->free_colours == 127 ? PIX_FMT_RGB555
+                                            : PIX_FMT_RGB24;
+
     return 0;
 }