diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-06-01 22:25:10 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-06-01 22:25:10 +0000 |
commit | d90d9d3d22bc67ee240f3065a34ce148c0b70215 (patch) | |
tree | a011eff1251856916d7dd0df08b0dd9109b07d9e | |
parent | 31f9de2546a43d5cf60ed0c4b9ebb4a5947a0979 (diff) |
Switch to avcodec_decode_video2 to allow a hack that makes PNG decode correctly
again instead of in CorePNG delta mode.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29340 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libmpcodecs/vd_ffmpeg.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index f499e8e424..244e6495b3 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -758,6 +758,7 @@ static mp_image_t *decode(sh_video_t *sh, void *data, int len, int flags){ 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 @@ static mp_image_t *decode(sh_video_t *sh, void *data, int len, int flags){ 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"); |