diff options
author | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2014-06-11 17:51:49 +0100 |
---|---|---|
committer | Derek Buitenhuis <derek.buitenhuis@gmail.com> | 2014-06-13 14:49:59 +0100 |
commit | a4bd4733c0af333f2907f6be276b5094891903a0 (patch) | |
tree | 41e365a6809354261b5bc028bf94266704160f32 | |
parent | 681868cbbe8a596860c454d34f259941e0c44d73 (diff) | |
download | ffmpeg-a4bd4733c0af333f2907f6be276b5094891903a0.tar.gz |
swscale: Allow the max filter size to be set at compile time
This can help "extreme" resizes, e.g with some 4k stuff.
Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
-rwxr-xr-x | configure | 6 | ||||
-rw-r--r-- | libswscale/swscale_internal.h | 2 | ||||
-rw-r--r-- | libswscale/utils.c | 2 |
3 files changed, 8 insertions, 2 deletions
@@ -314,6 +314,7 @@ Advanced options (experts only): (faster, but may crash) --enable-memalign-hack emulate memalign, interferes with memory debuggers --enable-sram allow use of on-chip SRAM + --sws-max-filter-size=N the max filter size swscale uses [$sws_max_filter_size_default] Optimization options (experts only): --disable-asm disable all assembler optimizations @@ -1892,6 +1893,7 @@ CMDLINE_SET=" ranlib samples strip + sws_max_filter_size sysinclude sysroot target_exec @@ -2646,6 +2648,9 @@ enable safe_bitstream_reader enable static enable swscale_alpha +sws_max_filter_size_default=256 +set_default sws_max_filter_size + # Enable hwaccels by default. enable dxva2 vaapi vda vdpau xvmc enable xlib @@ -5451,6 +5456,7 @@ cat > $TMPH <<EOF #define BUILDSUF "$build_suffix" #define SLIBSUF "$SLIBSUF" #define HAVE_MMX2 HAVE_MMXEXT +#define SWS_MAX_FILTER_SIZE $sws_max_filter_size EOF test -n "$assert_level" && diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 42a17e551a..8cf431733a 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -39,7 +39,7 @@ #define YUVRGB_TABLE_HEADROOM 128 -#define MAX_FILTER_SIZE 256 +#define MAX_FILTER_SIZE SWS_MAX_FILTER_SIZE #define DITHER1XBPP diff --git a/libswscale/utils.c b/libswscale/utils.c index 92b2ac4f26..7274153453 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -582,7 +582,7 @@ static av_cold int initFilter(int16_t **outFilter, int32_t **filterPos, goto fail; if (filterSize >= MAX_FILTER_SIZE * 16 / ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16)) { - av_log(NULL, AV_LOG_ERROR, "sws: filterSize %d is too large, try less extreme scaling or increase MAX_FILTER_SIZE and recompile\n", + av_log(NULL, AV_LOG_ERROR, "sws: filterSize %d is too large, try less extreme scaling or set --sws-max-filter-size and recompile\n", FF_CEIL_RSHIFT((filterSize+1) * ((flags & SWS_ACCURATE_RND) ? APCK_SIZE : 16), 4)); goto fail; } |