mirror of https://github.com/thesofproject/sof.git
Audio: DRC: Change DRC to use lookup table based sine function
This change saves in TGL platform about 13 MPCS, from 83 to 70 MCPS. In MTL platform the saving is 12 MCPS, from 46 to 34 MCPS. The .bss RAM usage increases by 1 kB from selecting CONFIG_MATH_LUT_SINE_FIXED. Signed-off-by: Seppo Ingalsuo <seppo.ingalsuo@linux.intel.com>
This commit is contained in:
parent
3a1cdedf01
commit
8d2fb32fa5
|
@ -3,6 +3,7 @@
|
|||
config COMP_DRC
|
||||
bool "Dynamic Range Compressor component"
|
||||
select CORDIC_FIXED
|
||||
select MATH_LUT_SINE_FIXED
|
||||
select NUMBERS_NORM
|
||||
select MATH_EXP
|
||||
select COMP_BLOB
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <stdint.h>
|
||||
#include <sof/audio/format.h>
|
||||
#include <sof/math/numbers.h>
|
||||
#include <sof/math/lut_trig.h>
|
||||
#include <sof/math/trig.h>
|
||||
|
||||
#include "drc_plat_conf.h"
|
||||
|
@ -60,9 +61,8 @@ static inline int32_t drc_sin_fixed(int32_t x)
|
|||
{
|
||||
const int32_t lshift = drc_get_lshift(30, 30, 28);
|
||||
int32_t denorm_x = drc_mult_lshift(x, PI_OVER_TWO_Q30, lshift);
|
||||
int32_t sin_val = sin_fixed_16b(denorm_x);
|
||||
|
||||
return sin_val << 16;
|
||||
return sofm_lut_sin_fixed_16b(denorm_x) << 16;
|
||||
}
|
||||
|
||||
#ifdef DRC_USE_CORDIC_ASIN
|
||||
|
@ -88,9 +88,8 @@ static inline int32_t drc_asin_fixed(int32_t x)
|
|||
static inline int32_t drc_sin_fixed(int32_t x)
|
||||
{
|
||||
const int32_t PI_OVER_TWO = Q_CONVERT_FLOAT(1.57079632679489661923, 30);
|
||||
int32_t sin_val = sin_fixed_16b(Q_MULTSR_32X32((int64_t)x, PI_OVER_TWO, 30, 30, 28));
|
||||
|
||||
return sin_val << 16;
|
||||
return sofm_lut_sin_fixed_16b(Q_MULTSR_32X32((int64_t)x, PI_OVER_TWO, 30, 30, 28)) << 16;
|
||||
}
|
||||
|
||||
#ifdef DRC_USE_CORDIC_ASIN
|
||||
|
|
Loading…
Reference in New Issue