changeset 29298:fb99e3db8f8b

Switch to avcodec_decode_video2 to allow a hack that makes PNG decode correctly again instead of in CorePNG delta mode.
author reimar
date Mon, 01 Jun 2009 22:25:10 +0000
parents dbc412fcde45
children 24954ec81529
files libmpcodecs/vd_ffmpeg.c
diffstat 1 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libmpcodecs/vd_ffmpeg.c	Mon Jun 01 10:43:41 2009 +0000
+++ b/libmpcodecs/vd_ffmpeg.c	Mon Jun 01 22:25:10 2009 +0000
@@ -758,6 +758,7 @@
     AVCodecContext *avctx = ctx->avctx;
     mp_image_t *mpi=NULL;
     int dr1= ctx->do_dr1;
+    AVPacket pkt;
 
     if(len<=0) return NULL; // skipped frame
 
@@ -778,8 +779,12 @@
 
     mp_msg(MSGT_DECVIDEO, MSGL_DBG2, "vd_ffmpeg data: %04x, %04x, %04x, %04x\n",
            ((int *)data)[0], ((int *)data)[1], ((int *)data)[2], ((int *)data)[3]);
-    ret = avcodec_decode_video(avctx, pic,
-             &got_picture, data, len);
+    av_init_packet(&pkt);
+    pkt.data = data;
+    pkt.size = len;
+    // HACK: make PNGs decode normally instead of as CorePNG delta frames
+    pkt.flags = PKT_FLAG_KEY;
+    ret = avcodec_decode_video2(avctx, pic, &got_picture, &pkt);
 
     dr1= ctx->do_dr1;
     if(ret<0) mp_msg(MSGT_DECVIDEO, MSGL_WARN, "Error while decoding frame!\n");