summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerek Buitenhuis <derek.buitenhuis@gmail.com>2014-06-11 17:51:49 +0100
committerDerek Buitenhuis <derek.buitenhuis@gmail.com>2014-06-13 14:49:59 +0100
commita4bd4733c0af333f2907f6be276b5094891903a0 (patch)
tree41e365a6809354261b5bc028bf94266704160f32
parent681868cbbe8a596860c454d34f259941e0c44d73 (diff)
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-xconfigure6
-rw-r--r--libswscale/swscale_internal.h2
-rw-r--r--libswscale/utils.c2
3 files changed, 8 insertions, 2 deletions
diff --git a/configure b/configure
index 7ad9d119cd..f6f93c798e 100755
--- a/configure
+++ b/configure
@@ -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;
}