mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-28 10:22:10 +00:00
Add dot_product function for use by the G.723.1 decoder
This commit is contained in:
parent
bcc67dffa0
commit
a82c6238ae
@ -25,6 +25,7 @@
|
||||
#include <assert.h>
|
||||
|
||||
#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;
|
||||
|
@ -63,6 +63,17 @@ static inline int bidir_sal(int value, int offset)
|
||||
else return value << offset;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns the dot product of 2 int16_t vectors.
|
||||
* @param a input data array
|
||||
* @param b input data array
|
||||
* @param length number of elements
|
||||
* @param shift the result is scaled by 2^shift
|
||||
*
|
||||
* @return dot product = sum of elementwise products
|
||||
*/
|
||||
int ff_dot_product(const int16_t *a, const int16_t *b, int length, int shift);
|
||||
|
||||
/**
|
||||
* returns the dot product.
|
||||
* @param a input data array
|
||||
|
Loading…
Reference in New Issue
Block a user