Mercurial > libavcodec.hg
changeset 8201:c6e2ffef3797 libavcodec
Add shift argument to MULL() macro
This replaces use of FRAC_BITS in the MULL() definition with a third
argument specifying the shift amount. All uses of this macro are
updated to pass FRAC_BITS as third argument.
author | mru |
---|---|
date | Mon, 24 Nov 2008 09:28:55 +0000 |
parents | 843d82925adf |
children | 5af44bd71254 |
files | armv4l/mathops.h i386/mathops.h lsp.c mathops.h mpegaudiodec.c |
diffstat | 5 files changed, 18 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/armv4l/mathops.h Mon Nov 24 00:14:33 2008 +0000 +++ b/armv4l/mathops.h Mon Nov 24 09:28:55 2008 +0000 @@ -25,19 +25,17 @@ #include <stdint.h> #include "libavutil/common.h" -#ifdef FRAC_BITS # define MULL MULL -static inline av_const int MULL(int a, int b) +static inline av_const int MULL(int a, int b, unsigned shift) { int lo, hi; __asm__("smull %0, %1, %2, %3 \n\t" "mov %0, %0, lsr %4 \n\t" "add %1, %0, %1, lsl %5 \n\t" : "=&r"(lo), "=&r"(hi) - : "r"(b), "r"(a), "i"(FRAC_BITS), "i"(32-FRAC_BITS)); + : "r"(b), "r"(a), "i"(shift), "i"(32-shift)); return hi; } -#endif #define MULH MULH #ifdef HAVE_ARMV6
--- a/i386/mathops.h Mon Nov 24 00:14:33 2008 +0000 +++ b/i386/mathops.h Mon Nov 24 09:28:55 2008 +0000 @@ -22,15 +22,13 @@ #ifndef AVCODEC_I386_MATHOPS_H #define AVCODEC_I386_MATHOPS_H -#ifdef FRAC_BITS -# define MULL(ra, rb) \ +#define MULL(ra, rb, shift) \ ({ int rt, dummy; __asm__ (\ "imull %3 \n\t"\ "shrdl %4, %%edx, %%eax \n\t"\ : "=a"(rt), "=d"(dummy)\ - : "a" ((int)ra), "rm" ((int)rb), "i"(FRAC_BITS));\ + : "a" ((int)ra), "rm" ((int)rb), "i"(shift));\ rt; }) -#endif #define MULH(ra, rb) \ ({ int rt, dummy;\
--- a/lsp.c Mon Nov 24 00:14:33 2008 +0000 +++ b/lsp.c Mon Nov 24 09:28:55 2008 +0000 @@ -72,7 +72,7 @@ { f[i] = f[i-2]; for(j=i; j>1; j--) - f[j] -= MULL(f[j-1], lsp[2*i-2]) - f[j-2]; + f[j] -= MULL(f[j-1], lsp[2*i-2], FRAC_BITS) - f[j-2]; f[1] -= lsp[2*i-2] << 8; }
--- a/mathops.h Mon Nov 24 00:14:33 2008 +0000 +++ b/mathops.h Mon Nov 24 09:28:55 2008 +0000 @@ -45,7 +45,7 @@ /* generic implementation */ #ifndef MULL -# define MULL(a,b) (((int64_t)(a) * (int64_t)(b)) >> FRAC_BITS) +# define MULL(a,b,s) (((int64_t)(a) * (int64_t)(b)) >> (s)) #endif #ifndef MULH
--- a/mpegaudiodec.c Mon Nov 24 00:14:33 2008 +0000 +++ b/mpegaudiodec.c Mon Nov 24 09:28:55 2008 +0000 @@ -351,9 +351,9 @@ int n, norm; n = i + 2; norm = ((INT64_C(1) << n) * FRAC_ONE) / ((1 << n) - 1); - scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm); - scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm); - scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm); + scale_factor_mult[i][0] = MULL(FIXR(1.0 * 2.0), norm, FRAC_BITS); + scale_factor_mult[i][1] = MULL(FIXR(0.7937005259 * 2.0), norm, FRAC_BITS); + scale_factor_mult[i][2] = MULL(FIXR(0.6299605249 * 2.0), norm, FRAC_BITS); dprintf(avctx, "%d: norm=%x s=%x %x %x\n", i, norm, scale_factor_mult[i][0], @@ -1097,7 +1097,7 @@ t2 = tmp[i + 1]; t3 = tmp[i + 3]; s1 = MULH(2*(t3 + t2), icos36h[j]); - s3 = MULL(t3 - t2, icos36[8 - j]); + s3 = MULL(t3 - t2, icos36[8 - j], FRAC_BITS); t0 = s0 + s1; t1 = s0 - s1; @@ -1705,8 +1705,8 @@ v2 = is_tab[1][sf]; for(j=0;j<len;j++) { tmp0 = tab0[j]; - tab0[j] = MULL(tmp0, v1); - tab1[j] = MULL(tmp0, v2); + tab0[j] = MULL(tmp0, v1, FRAC_BITS); + tab1[j] = MULL(tmp0, v2, FRAC_BITS); } } else { found1: @@ -1716,8 +1716,8 @@ for(j=0;j<len;j++) { tmp0 = tab0[j]; tmp1 = tab1[j]; - tab0[j] = MULL(tmp0 + tmp1, ISQRT2); - tab1[j] = MULL(tmp0 - tmp1, ISQRT2); + tab0[j] = MULL(tmp0 + tmp1, ISQRT2, FRAC_BITS); + tab1[j] = MULL(tmp0 - tmp1, ISQRT2, FRAC_BITS); } } } @@ -1749,8 +1749,8 @@ v2 = is_tab[1][sf]; for(j=0;j<len;j++) { tmp0 = tab0[j]; - tab0[j] = MULL(tmp0, v1); - tab1[j] = MULL(tmp0, v2); + tab0[j] = MULL(tmp0, v1, FRAC_BITS); + tab1[j] = MULL(tmp0, v2, FRAC_BITS); } } else { found2: @@ -1760,8 +1760,8 @@ for(j=0;j<len;j++) { tmp0 = tab0[j]; tmp1 = tab1[j]; - tab0[j] = MULL(tmp0 + tmp1, ISQRT2); - tab1[j] = MULL(tmp0 - tmp1, ISQRT2); + tab0[j] = MULL(tmp0 + tmp1, ISQRT2, FRAC_BITS); + tab1[j] = MULL(tmp0 - tmp1, ISQRT2, FRAC_BITS); } } }