diff libvo/vo_png.c @ 36328:9af6f39eab61

vo png: Error handling and clean up Simplify error path; returning 1 is obfuscated and not different from returning VO_TRUE. We do not want to fatally error out anyway, so printing a warning should be enough and not different from the current behaviour. Use av_free_packet, it is the counter part for av_init_packet . It could e.g. potentially free side data. The buffer itself will not be freed as is intended for our custom buffer which we will try to re-use.
author al
date Wed, 14 Aug 2013 10:21:30 +0000
parents 797bbffdd112
children cd83754e4f3a
line wrap: on
line diff
--- a/libvo/vo_png.c	Wed Aug 14 10:16:46 2013 +0000
+++ b/libvo/vo_png.c	Wed Aug 14 10:21:30 2013 +0000
@@ -176,14 +176,14 @@
     pkt.size = outbuffer_size;
     res = avcodec_encode_video2(avctx, &pkt, &pic, &got_pkt);
 
-    if(res < 0){
+    if (res < 0 || !got_pkt) {
  	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorInCreatePng);
-            fclose(outfile);
-	    return 1;
+    } else {
+        fwrite(outbuffer, pkt.size, 1, outfile);
     }
 
-    fwrite(outbuffer, pkt.size, 1, outfile);
     fclose(outfile);
+    av_free_packet(&pkt);
 
     return VO_TRUE;
 }