|
@@ -1755,6 +1755,8 @@ static int video_thread(void *arg)
|
|
|
AVFilterGraph *graph = avfilter_graph_alloc();
|
|
|
AVFilterContext *filt_out = NULL;
|
|
|
int64_t pos;
|
|
|
+ int last_w = is->video_st->codec->width;
|
|
|
+ int last_h = is->video_st->codec->height;
|
|
|
|
|
|
if ((ret = configure_video_filters(graph, is, vfilters)) < 0)
|
|
|
goto the_end;
|
|
@@ -1771,6 +1773,18 @@ static int video_thread(void *arg)
|
|
|
while (is->paused && !is->videoq.abort_request)
|
|
|
SDL_Delay(10);
|
|
|
#if CONFIG_AVFILTER
|
|
|
+ if ( last_w != is->video_st->codec->width
|
|
|
+ || last_h != is->video_st->codec->height) {
|
|
|
+ av_dlog(NULL, "Changing size %dx%d -> %dx%d\n", last_w, last_h,
|
|
|
+ is->video_st->codec->width, is->video_st->codec->height);
|
|
|
+ avfilter_graph_free(&graph);
|
|
|
+ graph = avfilter_graph_alloc();
|
|
|
+ if ((ret = configure_video_filters(graph, is, vfilters)) < 0)
|
|
|
+ goto the_end;
|
|
|
+ filt_out = is->out_video_filter;
|
|
|
+ last_w = is->video_st->codec->width;
|
|
|
+ last_h = is->video_st->codec->height;
|
|
|
+ }
|
|
|
ret = get_filtered_video_frame(filt_out, frame, &picref, &tb);
|
|
|
if (picref) {
|
|
|
pts_int = picref->pts;
|