mirror of
https://github.com/librempeg/librempeg
synced 2024-11-22 18:49:58 +00:00
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: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
258414d077
commit
6b3ff6f91a
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user