vo_opengl: fancy-downscaling: enable also for anamorphic clips

This commit is contained in:
Avi Halachmi (:avih) 2015-08-10 03:57:53 +03:00 committed by wm4
parent 6bbb1e4cf9
commit 0062c98dff
2 changed files with 12 additions and 7 deletions

View File

@ -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=<filter>``
This option provides non-convolution-based filters for upscaling. These

View File

@ -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