diff --git a/filters/f_auto_filters.c b/filters/f_auto_filters.c index d0bab83d2c..944fe89eab 100644 --- a/filters/f_auto_filters.c +++ b/filters/f_auto_filters.c @@ -68,6 +68,7 @@ static void deint_process(struct mp_filter *f) return; } + bool has_filter = true; if (img->imgfmt == IMGFMT_VDPAU) { char *args[] = {"deint", "yes", NULL}; p->sub.filter = @@ -80,6 +81,13 @@ static void deint_process(struct mp_filter *f) p->sub.filter = mp_create_user_filter(f, MP_OUTPUT_CHAIN_VIDEO, "yadif_cuda", args); } else { + has_filter = false; + } + + if (!p->sub.filter) { + if (has_filter) + MP_ERR(f, "creating deinterlacer failed\n"); + struct mp_filter *subf = mp_bidir_dummy_filter_create(f); struct mp_filter *filters[2] = {0}; @@ -106,9 +114,6 @@ static void deint_process(struct mp_filter *f) p->sub.filter = subf; } - if (!p->sub.filter) - MP_ERR(f, "creating deinterlacer failed\n"); - mp_subfilter_continue(&p->sub); }