[FFmpeg-cvslog] lavfi/gradfun: reduce up limit for threshold.

Clément Bœsch git at videolan.org
Wed Dec 19 03:18:28 CET 2012


ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Tue Dec 18 21:44:51 2012 +0100| [3bdd70fc661feaf915ae438e05f66cce75334673] | committer: Clément Bœsch

lavfi/gradfun: reduce up limit for threshold.

This will prevent an overflow in the SSSE3 and MMX filter_line code:
delta is expressed as an u16 being shifted by 2 to the left. If it
overflows, having a strength not above 64 will make sure that m is set
to 0 (making the m*m*delta >> 14 expression void).

A value above 64 should not make any sense unless gradfun is used as a
blur filter.

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

 doc/filters.texi         |    2 +-
 libavfilter/version.h    |    2 +-
 libavfilter/vf_gradfun.c |    2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index 827dcf3..2f50d65 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -2670,7 +2670,7 @@ The filter takes two optional parameters, separated by ':':
 
 @var{strength} is the maximum amount by which the filter will change
 any one pixel. Also the threshold for detecting nearly flat
-regions. Acceptable values range from .51 to 255, default value is
+regions. Acceptable values range from .51 to 64, default value is
 1.2, out-of-range values will be clipped to the valid range.
 
 @var{radius} is the neighborhood to fit the gradient to. A larger
diff --git a/libavfilter/version.h b/libavfilter/version.h
index 048cace..26b6645 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -30,7 +30,7 @@
 
 #define LIBAVFILTER_VERSION_MAJOR  3
 #define LIBAVFILTER_VERSION_MINOR  28
-#define LIBAVFILTER_VERSION_MICRO 100
+#define LIBAVFILTER_VERSION_MICRO 101
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
                                                LIBAVFILTER_VERSION_MINOR, \
diff --git a/libavfilter/vf_gradfun.c b/libavfilter/vf_gradfun.c
index 9255f61..6319bf7 100644
--- a/libavfilter/vf_gradfun.c
+++ b/libavfilter/vf_gradfun.c
@@ -128,7 +128,7 @@ static av_cold int init(AVFilterContext *ctx, const char *args)
     if (args)
         sscanf(args, "%f:%d", &thresh, &radius);
 
-    thresh = av_clipf(thresh, 0.51, 255);
+    thresh = av_clipf(thresh, 0.51, 64);
     gf->thresh = (1 << 15) / thresh;
     gf->radius = av_clip((radius + 1) & ~1, 4, 32);
 



More information about the ffmpeg-cvslog mailing list