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;