From 0062c98dfffcb667b9d0cd739abc107e0145df63 Mon Sep 17 00:00:00 2001 From: "Avi Halachmi (:avih)" Date: Mon, 10 Aug 2015 03:57:53 +0300 Subject: vo_opengl: fancy-downscaling: enable also for anamorphic clips --- DOCS/man/vo.rst | 6 +++--- video/out/opengl/video.c | 13 +++++++++---- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/DOCS/man/vo.rst b/DOCS/man/vo.rst index 0dc633494e..a02c827d0d 100644 --- a/DOCS/man/vo.rst +++ b/DOCS/man/vo.rst @@ -545,9 +545,9 @@ Available video output drivers are: When using convolution based filters, extend the filter size when downscaling. Trades quality for reduced downscaling performance. - This is automatically disabled for anamorphic video, because this - feature doesn't work correctly with different scale factors in - different directions. + This will perform slightly sub-optimally for anamorphic video (but still + better than without it) since it will extend the size to match only the + milder of the scale factors between the axes. ``prescale=`` This option provides non-convolution-based filters for upscaling. These diff --git a/video/out/opengl/video.c b/video/out/opengl/video.c index d69d58f5e3..55f0e70476 100644 --- a/video/out/opengl/video.c +++ b/video/out/opengl/video.c @@ -1592,11 +1592,16 @@ static void pass_scale_main(struct gl_video *p) scaler = &p->scaler[1]; } - double f = MPMIN(xy[0], xy[1]); - if (p->opts.fancy_downscaling && f < 1.0 && - fabs(xy[0] - f) < 0.01 && fabs(xy[1] - f) < 0.01) + // When requesting fancy-downscaling and the clip is anamorphic, and because + // only a single fancy scale factor is used for both axes, enable fancy only + // when both axes are downscaled, and use the milder of the factors to not + // end up with too much blur on one axis (even if we end up with sub-optimal + // fancy factor on the other axis). + // This is better than not respecting fancy at all for anamorphic clips. + double f = MPMAX(xy[0], xy[1]); + if (p->opts.fancy_downscaling && f < 1.0) { - scale_factor = FFMAX(1.0, 1.0 / f); + scale_factor = 1.0 / f; } // Pre-conversion, like linear light/sigmoidization -- cgit v1.2.3