avplay: Don't free video filters string until the end of decoding.
authorAlex Converse <alex.converse@gmail.com>
Wed, 11 Apr 2012 01:18:53 +0000 (18:18 -0700)
committerAlex Converse <alex.converse@gmail.com>
Wed, 11 Apr 2012 17:24:01 +0000 (10:24 -0700)
av_freep()ing inside configure_video_filters() leaves a dangling
reference in the calling code, and the filter string is needed again when
reconfiguring video filters for a size change.

avplay.c

index d1cf53d..488d0fc 100644 (file)
--- a/avplay.c
+++ b/avplay.c
@@ -1731,7 +1731,6 @@ static int configure_video_filters(AVFilterGraph *graph, VideoState *is, const c
 
         if ((ret = avfilter_graph_parse(graph, vfilters, inputs, outputs, NULL)) < 0)
             return ret;
-        av_freep(&vfilters);
     } else {
         if ((ret = avfilter_link(filt_src, 0, filt_out, 0)) < 0)
             return ret;
@@ -1831,6 +1830,7 @@ static int video_thread(void *arg)
     }
  the_end:
 #if CONFIG_AVFILTER
+    av_freep(&vfilters);
     avfilter_graph_free(&graph);
 #endif
     av_free(frame);