SWS_SINC |
SWS_SPLINE |
SWS_BICUBLIN);
- if (!i || (i & (i - 1))) {
- av_log(c, AV_LOG_ERROR, "Exactly one scaler algorithm must be chosen, got %X\n", i);
+
+ /* provide a default scaler if not set by caller */
+ if (!i) {
+ if (dstW < srcW && dstH < srcH)
- flags |= SWS_GAUSS;
++ flags |= SWS_BICUBIC;
+ else if (dstW > srcW && dstH > srcH)
- flags |= SWS_SINC;
++ flags |= SWS_BICUBIC;
+ else
- flags |= SWS_LANCZOS;
++ flags |= SWS_BICUBIC;
+ c->flags = flags;
+ } else if (i & (i - 1)) {
+ av_log(c, AV_LOG_ERROR,
- "Exactly one scaler algorithm must be chosen\n");
++ "Exactly one scaler algorithm must be chosen, got %X\n", i);
return AVERROR(EINVAL);
}
/* sanity check */