From a82c6238ae286c12318e5ad512107b86ec337369 Mon Sep 17 00:00:00 2001 From: Mohamed Naufal Basheer Date: Thu, 17 Mar 2011 23:56:48 +0100 Subject: Add dot_product function for use by the G.723.1 decoder --- libavcodec/celp_math.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'libavcodec/celp_math.c') diff --git a/libavcodec/celp_math.c b/libavcodec/celp_math.c index 09111da819..b78edd1ebd 100644 --- a/libavcodec/celp_math.c +++ b/libavcodec/celp_math.c @@ -25,6 +25,7 @@ #include #include "avcodec.h" +#include "mathops.h" #include "celp_math.h" #ifdef G729_BITEXACT @@ -196,6 +197,17 @@ int ff_log2(uint32_t value) return (power_int << 15) + value; } +int ff_dot_product(const int16_t *a, const int16_t *b, int length, int shift) +{ + int i, sum = 0; + + for (i = 0; i < length; i++) { + int64_t prod = av_clipl_int32(MUL64(a[i], b[i]) << shift); + sum = av_clipl_int32(sum + prod); + } + return sum; +} + float ff_dot_productf(const float* a, const float* b, int length) { float sum = 0; -- cgit v1.2.3