diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst index 24bf3fc0c2..c0ec882719 100644 --- a/DOCS/interface-changes.rst +++ b/DOCS/interface-changes.rst @@ -72,6 +72,9 @@ Interface changes will probably stall. - deprecate the OpenGL cocoa backend, option choice --gpu-context=cocoa when used with --gpu-api=opengl (use --vo=opengl-cb) + - make --deinterlace=yes always deinterlace, instead of trying to check + certain unreliable video metadata. Also flip the defaults of all builtin + HW deinterlace filters to always deinterlace. --- mpv 0.28.0 --- - rename --hwdec=mediacodec option to mediacodec-copy, to reflect conventions followed by other hardware video decoding APIs diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst index c12453ae5f..e51f564490 100644 --- a/DOCS/man/options.rst +++ b/DOCS/man/options.rst @@ -1036,6 +1036,8 @@ Video ``--deinterlace=auto`` was removed, which used to mean that the default interlacing option of possibly inserted video filters was used.) + Note that this will make video look worse if it's not actually interlaced. + ``--frames=`` Play/convert only first ```` video frames, then quit. diff --git a/DOCS/man/vf.rst b/DOCS/man/vf.rst index 9537b09597..17df70f920 100644 --- a/DOCS/man/vf.rst +++ b/DOCS/man/vf.rst @@ -488,8 +488,8 @@ Available mpv-only filters are: mpv bugs. ```` - :no: Deinterlace all frames. - :yes: Only deinterlace frames marked as interlaced (default). + :no: Deinterlace all frames (default). + :yes: Only deinterlace frames marked as interlaced. ``reversal-bug=`` :no: Use the API as it was interpreted by older Mesa drivers. While @@ -544,7 +544,7 @@ Available mpv-only filters are: Try to apply inverse telecine, needs motion adaptive temporal deinterlacing. ``interlaced-only=`` - If ``yes`` (default), only deinterlace frames marked as interlaced. + If ``yes``, only deinterlace frames marked as interlaced (default: no). ``hqscaling=<0-9>`` 0 Use default VDPAU scaling (default). @@ -558,7 +558,7 @@ Available mpv-only filters are: ``deint=`` Whether deinterlacing is enabled (default: no). ``interlaced-only=`` - If ``yes`` (default), only deinterlace frames marked as interlaced. + If ``yes``, only deinterlace frames marked as interlaced (default: no). ``mode=`` Tries to select a video processor with the given processing capability. If a video processor supports multiple capabilities, it is not clear diff --git a/filters/f_auto_filters.c b/filters/f_auto_filters.c index b9f32026d5..08a0320560 100644 --- a/filters/f_auto_filters.c +++ b/filters/f_auto_filters.c @@ -76,7 +76,7 @@ static void deint_process(struct mp_filter *f) p->sub.filter = mp_create_user_filter(f, MP_OUTPUT_CHAIN_VIDEO, "d3d11vpp", NULL); } else if (mp_sws_supports_input(img->imgfmt)) { - char *args[] = {"mode", "send_field", "deint", "interlaced", NULL}; + char *args[] = {"mode", "send_field", NULL}; p->sub.filter = mp_create_user_filter(f, MP_OUTPUT_CHAIN_VIDEO, "yadif", args); } else { diff --git a/video/filter/vf_d3d11vpp.c b/video/filter/vf_d3d11vpp.c index fb96a44e65..6ba1996da3 100644 --- a/video/filter/vf_d3d11vpp.c +++ b/video/filter/vf_d3d11vpp.c @@ -532,7 +532,7 @@ const struct mp_user_filter_entry vf_d3d11vpp = { .priv_size = sizeof(OPT_BASE_STRUCT), .priv_defaults = &(const OPT_BASE_STRUCT) { .deint_enabled = 1, - .interlaced_only = 1, + .interlaced_only = 0, .mode = D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB, }, .options = vf_opts_fields, diff --git a/video/filter/vf_vavpp.c b/video/filter/vf_vavpp.c index 608f1eea6f..598997ca24 100644 --- a/video/filter/vf_vavpp.c +++ b/video/filter/vf_vavpp.c @@ -475,7 +475,7 @@ const struct mp_user_filter_entry vf_vavpp = { .priv_size = sizeof(OPT_BASE_STRUCT), .priv_defaults = &(const OPT_BASE_STRUCT){ .deint_type = 2, - .interlaced_only = 1, + .interlaced_only = 0, .reversal_bug = 1, }, .options = vf_opts_fields, diff --git a/video/filter/vf_vdpaupp.c b/video/filter/vf_vdpaupp.c index 3b10e13421..fe3a903558 100644 --- a/video/filter/vf_vdpaupp.c +++ b/video/filter/vf_vdpaupp.c @@ -180,7 +180,7 @@ static const m_option_t vf_opts_fields[] = { OPT_FLOATRANGE("denoise", opts.denoise, 0, 0, 1), OPT_FLOATRANGE("sharpen", opts.sharpen, 0, -1, 1), OPT_INTRANGE("hqscaling", opts.hqscaling, 0, 0, 9), - OPT_FLAG("interlaced-only", interlaced_only, 0, OPTDEF_INT(1)), + OPT_FLAG("interlaced-only", interlaced_only, 0), {0} };