summaryrefslogtreecommitdiff
path: root/apps/codecs/lib/codeclib_misc.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/codecs/lib/codeclib_misc.h')
-rw-r--r--apps/codecs/lib/codeclib_misc.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/codecs/lib/codeclib_misc.h b/apps/codecs/lib/codeclib_misc.h
index f3ec209..f3b1805 100644
--- a/apps/codecs/lib/codeclib_misc.h
+++ b/apps/codecs/lib/codeclib_misc.h
@@ -65,6 +65,7 @@ static inline int32_t MULT32(int32_t x, int32_t y) {
magic.whole = (int64_t)x * y;
return magic.halves.hi;
}
+
static inline int32_t MULT31(int32_t x, int32_t y) {
return MULT32(x,y)<<1;
}
@@ -75,6 +76,12 @@ static inline int32_t MULT31_SHIFT15(int32_t x, int32_t y) {
return ((uint32_t)(magic.halves.lo)>>15) | ((magic.halves.hi)<<17);
}
+static inline int32_t MULT31_SHIFT16(int32_t x, int32_t y) {
+ union magic magic;
+ magic.whole = (int64_t)x * y;
+ return ((uint32_t)(magic.halves.lo)>>16) | ((magic.halves.hi)<<16);
+}
+
#else
/* 32 bit multiply, more portable but less accurate */