Commit 6b3ff6f9 authored by Vittorio Giovara's avatar Vittorio Giovara Committed by Luca Barbato

swscale: provide a default scaler if none is set

Lanczos for general case, sinc for upscaling, Gaussian for
downscaling. According to current literature these scalers
should be the best quality-wise algorithms for each case.

Inspired from a patch by wm4 <nfxjfg@googlemail.com>
Signed-off-by: 's avatarLuca Barbato <lu_zero@gentoo.org>
parent 258414d0
......@@ -914,7 +914,17 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
SWS_SINC |
SWS_SPLINE |
SWS_BICUBLIN);
if (!i || (i & (i - 1))) {
/* provide a default scaler if not set by caller */
if (!i) {
if (dstW < srcW && dstH < srcH)
flags |= SWS_GAUSS;
else if (dstW > srcW && dstH > srcH)
flags |= SWS_SINC;
else
flags |= SWS_LANCZOS;
c->flags = flags;
} else if (i & (i - 1)) {
av_log(c, AV_LOG_ERROR,
"Exactly one scaler algorithm must be chosen\n");
return AVERROR(EINVAL);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment