avfilter/src_movie: Check that the pixel format hasnt changed
authorMichael Niedermayer <michaelni@gmx.at>
Tue, 18 Mar 2014 02:57:41 +0000 (03:57 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Tue, 18 Mar 2014 02:59:20 +0000 (03:59 +0100)
Fixes assertion failure

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavfilter/src_movie.c

index a1bb843..82bcc56 100644 (file)
@@ -540,6 +540,16 @@ static int movie_push_frame(AVFilterContext *ctx, unsigned out_id)
     av_dlog(ctx, "movie_push_frame(): file:'%s' %s\n", movie->file_name,
             describe_frame_to_str((char[1024]){0}, 1024, movie->frame, frame_type, outlink));
 
+    if (st->st->codec->codec_type == AVMEDIA_TYPE_VIDEO) {
+        if (movie->frame->format != outlink->format) {
+            av_log(ctx, AV_LOG_ERROR, "Format changed %s -> %s, discarding frame\n",
+                av_get_pix_fmt_name(outlink->format),
+                av_get_pix_fmt_name(movie->frame->format)
+                );
+            av_frame_free(&movie->frame);
+            return 0;
+        }
+    }
     ret = ff_filter_frame(outlink, movie->frame);
     movie->frame = NULL;