diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2014-06-29 13:55:29 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-06-29 22:19:57 +0200 |
commit | c5a405c4f07066efa786b75865c2c9c8f2a399ed (patch) | |
tree | 38b007182d0213513ff7908aaf101f1bcaaf85c0 | |
parent | 7f5d75f95b65eb8499f6bf65535ce18a7c38ec5f (diff) | |
download | ffmpeg-c5a405c4f07066efa786b75865c2c9c8f2a399ed.tar.gz |
swresample/resample_template: flip order of operations in swri_resample_linear() for 32bit
Fixes integer overflow
Found-by: BBB
Reviewed-by: "Ronald S. Bultje" <rsbultje@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libswresample/resample_template.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libswresample/resample_template.c b/libswresample/resample_template.c index db208e3414..5983d46b79 100644 --- a/libswresample/resample_template.c +++ b/libswresample/resample_template.c @@ -62,7 +62,6 @@ # define DELEM int32_t # define FELEM int32_t # define FELEM2 int64_t -# define FELEML int64_t # define FELEM_MAX INT32_MAX # define FELEM_MIN INT32_MIN # define OUT(d, v) v = (v + (1<<(FILTER_SHIFT-1)))>>FILTER_SHIFT;\ @@ -174,7 +173,11 @@ int RENAME(swri_resample_linear)(ResampleContext *c, v2 += src[sample_index + i] * (FELEM2)filter[i + c->filter_alloc]; } #endif +#ifdef FELEML val += (v2 - val) * (FELEML) frac / c->src_incr; +#else + val += (v2 - val) / c->src_incr * frac; +#endif OUT(dst[dst_index], val); frac += c->dst_incr_mod; |