Mercurial > mplayer.hg
changeset 36327:797bbffdd112
vo png: Switch to avcodec_encode_video2
The older function is deprecated and the newer function seems to not
have the minimum buffer size limitation.
Patch by Jiang Jiang >gzjjgod at gmail com<
author | al |
---|---|
date | Wed, 14 Aug 2013 10:16:46 +0000 |
parents | 0b2364deb6a1 |
children | 9af6f39eab61 |
files | libvo/vo_png.c |
diffstat | 1 files changed, 7 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_png.c Tue Aug 13 20:45:51 2013 +0000 +++ b/libvo/vo_png.c Wed Aug 14 10:16:46 2013 +0000 @@ -146,9 +146,10 @@ static uint32_t draw_image(mp_image_t* mpi){ AVFrame pic; int buffersize; - int res; + int res, got_pkt; char buf[100]; FILE *outfile; + AVPacket pkt; // if -dr or -slices then do nothing: if(mpi->flags&(MP_IMGFLAG_DIRECT|MP_IMGFLAG_DRAW_CALLBACK)) return VO_TRUE; @@ -170,7 +171,10 @@ outbuffer = av_malloc(buffersize); outbuffer_size = buffersize; } - res = avcodec_encode_video(avctx, outbuffer, outbuffer_size, &pic); + av_init_packet(&pkt); + pkt.data = outbuffer; + pkt.size = outbuffer_size; + res = avcodec_encode_video2(avctx, &pkt, &pic, &got_pkt); if(res < 0){ mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorInCreatePng); @@ -178,7 +182,7 @@ return 1; } - fwrite(outbuffer, res, 1, outfile); + fwrite(outbuffer, pkt.size, 1, outfile); fclose(outfile); return VO_TRUE;