[FFmpeg-cvslog] swscale: Allow the max filter size to be set at compile time

Derek Buitenhuis git at videolan.org
Fri Jun 13 15:50:28 CEST 2014


ffmpeg | branch: master | Derek Buitenhuis <derek.buitenhuis at gmail.com> | Wed Jun 11 17:51:49 2014 +0100| [a4bd4733c0af333f2907f6be276b5094891903a0] | committer: Derek Buitenhuis

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 at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a4bd4733c0af333f2907f6be276b5094891903a0
---

 configure                     |    6 ++++++
 libswscale/swscale_internal.h |    2 +-
 libswscale/utils.c            |    2 +-
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/configure b/configure
index 7ad9d11..f6f93c7 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 42a17e5..8cf4317 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 92b2ac4..7274153 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;
     }



More information about the ffmpeg-cvslog mailing list