mirror of https://git.ffmpeg.org/ffmpeg.git
ffplay: flush video filters on seek
Actually we just re-create the filters, since there is no way to flush them. Fixes hangup with yadif filter on seeking forward caused by a filtered frame with a pts before the seek. Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
1427c6842d
commit
f65e57124f
5
ffplay.c
5
ffplay.c
|
@ -1810,6 +1810,7 @@ static int video_thread(void *arg)
|
||||||
int last_w = 0;
|
int last_w = 0;
|
||||||
int last_h = 0;
|
int last_h = 0;
|
||||||
enum AVPixelFormat last_format = -2;
|
enum AVPixelFormat last_format = -2;
|
||||||
|
int last_serial = -1;
|
||||||
|
|
||||||
if (codec->codec->capabilities & CODEC_CAP_DR1) {
|
if (codec->codec->capabilities & CODEC_CAP_DR1) {
|
||||||
is->use_dr1 = 1;
|
is->use_dr1 = 1;
|
||||||
|
@ -1840,7 +1841,8 @@ static int video_thread(void *arg)
|
||||||
#if CONFIG_AVFILTER
|
#if CONFIG_AVFILTER
|
||||||
if ( last_w != frame->width
|
if ( last_w != frame->width
|
||||||
|| last_h != frame->height
|
|| last_h != frame->height
|
||||||
|| last_format != frame->format) {
|
|| last_format != frame->format
|
||||||
|
|| last_serial != serial) {
|
||||||
av_log(NULL, AV_LOG_INFO, "Frame changed from size:%dx%d to size:%dx%d\n",
|
av_log(NULL, AV_LOG_INFO, "Frame changed from size:%dx%d to size:%dx%d\n",
|
||||||
last_w, last_h, frame->width, frame->height);
|
last_w, last_h, frame->width, frame->height);
|
||||||
avfilter_graph_free(&graph);
|
avfilter_graph_free(&graph);
|
||||||
|
@ -1858,6 +1860,7 @@ static int video_thread(void *arg)
|
||||||
last_w = frame->width;
|
last_w = frame->width;
|
||||||
last_h = frame->height;
|
last_h = frame->height;
|
||||||
last_format = frame->format;
|
last_format = frame->format;
|
||||||
|
last_serial = serial;
|
||||||
}
|
}
|
||||||
|
|
||||||
frame->pts = pts_int;
|
frame->pts = pts_int;
|
||||||
|
|
Loading…
Reference in New Issue