@@ -84,11 +84,11 @@ OBJS-$(CONFIG_ALAC_DECODER) += alac.o | |||||
OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o | OBJS-$(CONFIG_ALAC_ENCODER) += alacenc.o | ||||
OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o mpeg4audio.o | OBJS-$(CONFIG_ALS_DECODER) += alsdec.o bgmc.o mpeg4audio.o | ||||
OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o celp_filters.o \ | OBJS-$(CONFIG_AMRNB_DECODER) += amrnbdec.o celp_filters.o \ | ||||
celp_math.o acelp_filters.o \ | |||||
acelp_filters.o \ | |||||
acelp_vectors.o \ | acelp_vectors.o \ | ||||
acelp_pitch_delay.o | acelp_pitch_delay.o | ||||
OBJS-$(CONFIG_AMRWB_DECODER) += amrwbdec.o celp_filters.o \ | OBJS-$(CONFIG_AMRWB_DECODER) += amrwbdec.o celp_filters.o \ | ||||
celp_math.o acelp_filters.o \ | |||||
acelp_filters.o \ | |||||
acelp_vectors.o \ | acelp_vectors.o \ | ||||
acelp_pitch_delay.o | acelp_pitch_delay.o | ||||
OBJS-$(CONFIG_AMV_DECODER) += sp5xdec.o mjpegdec.o mjpeg.o | OBJS-$(CONFIG_AMV_DECODER) += sp5xdec.o mjpegdec.o mjpeg.o | ||||
@@ -298,7 +298,7 @@ OBJS-$(CONFIG_PPM_ENCODER) += pnmenc.o pnm.o | |||||
OBJS-$(CONFIG_PRORES_DECODER) += proresdec.o proresdata.o proresdsp.o | OBJS-$(CONFIG_PRORES_DECODER) += proresdec.o proresdata.o proresdsp.o | ||||
OBJS-$(CONFIG_PRORES_ENCODER) += proresenc.o proresdata.o proresdsp.o | OBJS-$(CONFIG_PRORES_ENCODER) += proresenc.o proresdata.o proresdsp.o | ||||
OBJS-$(CONFIG_PTX_DECODER) += ptx.o | OBJS-$(CONFIG_PTX_DECODER) += ptx.o | ||||
OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o celp_math.o \ | |||||
OBJS-$(CONFIG_QCELP_DECODER) += qcelpdec.o \ | |||||
celp_filters.o acelp_vectors.o \ | celp_filters.o acelp_vectors.o \ | ||||
acelp_filters.o | acelp_filters.o | ||||
OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o | OBJS-$(CONFIG_QDM2_DECODER) += qdm2.o | ||||
@@ -311,7 +311,7 @@ OBJS-$(CONFIG_R210_DECODER) += r210dec.o | |||||
OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o | OBJS-$(CONFIG_RA_144_DECODER) += ra144dec.o ra144.o celp_filters.o | ||||
OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o \ | OBJS-$(CONFIG_RA_144_ENCODER) += ra144enc.o ra144.o celp_filters.o \ | ||||
audio_frame_queue.o | audio_frame_queue.o | ||||
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_math.o celp_filters.o | |||||
OBJS-$(CONFIG_RA_288_DECODER) += ra288.o celp_filters.o | |||||
OBJS-$(CONFIG_RALF_DECODER) += ralf.o | OBJS-$(CONFIG_RALF_DECODER) += ralf.o | ||||
OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o | OBJS-$(CONFIG_RAWVIDEO_DECODER) += rawdec.o | ||||
OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o | OBJS-$(CONFIG_RAWVIDEO_ENCODER) += rawenc.o | ||||
@@ -332,7 +332,7 @@ OBJS-$(CONFIG_SGI_DECODER) += sgidec.o | |||||
OBJS-$(CONFIG_SGI_ENCODER) += sgienc.o rle.o | OBJS-$(CONFIG_SGI_ENCODER) += sgienc.o rle.o | ||||
OBJS-$(CONFIG_SHORTEN_DECODER) += shorten.o | OBJS-$(CONFIG_SHORTEN_DECODER) += shorten.o | ||||
OBJS-$(CONFIG_SIPR_DECODER) += sipr.o acelp_pitch_delay.o \ | OBJS-$(CONFIG_SIPR_DECODER) += sipr.o acelp_pitch_delay.o \ | ||||
celp_math.o acelp_vectors.o \ | |||||
acelp_vectors.o \ | |||||
acelp_filters.o celp_filters.o \ | acelp_filters.o celp_filters.o \ | ||||
sipr16k.o | sipr16k.o | ||||
OBJS-$(CONFIG_SMACKAUD_DECODER) += smacker.o | OBJS-$(CONFIG_SMACKAUD_DECODER) += smacker.o | ||||
@@ -408,7 +408,7 @@ OBJS-$(CONFIG_WMAV1_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o | |||||
OBJS-$(CONFIG_WMAV2_DECODER) += wmadec.o wma.o wma_common.o aactab.o | OBJS-$(CONFIG_WMAV2_DECODER) += wmadec.o wma.o wma_common.o aactab.o | ||||
OBJS-$(CONFIG_WMAV2_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o | OBJS-$(CONFIG_WMAV2_ENCODER) += wmaenc.o wma.o wma_common.o aactab.o | ||||
OBJS-$(CONFIG_WMAVOICE_DECODER) += wmavoice.o \ | OBJS-$(CONFIG_WMAVOICE_DECODER) += wmavoice.o \ | ||||
celp_math.o celp_filters.o \ | |||||
celp_filters.o \ | |||||
acelp_vectors.o acelp_filters.o | acelp_vectors.o acelp_filters.o | ||||
OBJS-$(CONFIG_WMV1_DECODER) += msmpeg4.o msmpeg4data.o | OBJS-$(CONFIG_WMV1_DECODER) += msmpeg4.o msmpeg4data.o | ||||
OBJS-$(CONFIG_WMV2_DECODER) += wmv2dec.o wmv2.o \ | OBJS-$(CONFIG_WMV2_DECODER) += wmv2dec.o wmv2.o \ | ||||
@@ -25,7 +25,6 @@ | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#include "acelp_pitch_delay.h" | #include "acelp_pitch_delay.h" | ||||
#include "celp_math.h" | |||||
int ff_acelp_decode_8bit_to_1st_delay3(int ac_index) | int ff_acelp_decode_8bit_to_1st_delay3(int ac_index) | ||||
{ | { | ||||
@@ -120,7 +119,7 @@ float ff_amr_set_fixed_gain(float fixed_gain_factor, float fixed_mean_energy, | |||||
// Note 10^(0.05 * -10log(average x2)) = 1/sqrt((average x2)). | // Note 10^(0.05 * -10log(average x2)) = 1/sqrt((average x2)). | ||||
float val = fixed_gain_factor * | float val = fixed_gain_factor * | ||||
exp2f(M_LOG2_10 * 0.05 * | exp2f(M_LOG2_10 * 0.05 * | ||||
(ff_dot_productf(pred_table, prediction_error, 4) + | |||||
(ff_scalarproduct_float_c(pred_table, prediction_error, 4) + | |||||
energy_mean)) / | energy_mean)) / | ||||
sqrtf(fixed_mean_energy); | sqrtf(fixed_mean_energy); | ||||
@@ -24,8 +24,8 @@ | |||||
#include "libavutil/common.h" | #include "libavutil/common.h" | ||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | |||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
#include "celp_math.h" | |||||
const uint8_t ff_fc_2pulses_9bits_track1[16] = | const uint8_t ff_fc_2pulses_9bits_track1[16] = | ||||
{ | { | ||||
@@ -183,7 +183,7 @@ void ff_adaptive_gain_control(float *out, const float *in, float speech_energ, | |||||
int size, float alpha, float *gain_mem) | int size, float alpha, float *gain_mem) | ||||
{ | { | ||||
int i; | int i; | ||||
float postfilter_energ = ff_dot_productf(in, in, size); | |||||
float postfilter_energ = ff_scalarproduct_float_c(in, in, size); | |||||
float gain_scale_factor = 1.0; | float gain_scale_factor = 1.0; | ||||
float mem = *gain_mem; | float mem = *gain_mem; | ||||
@@ -204,7 +204,7 @@ void ff_scale_vector_to_given_sum_of_squares(float *out, const float *in, | |||||
float sum_of_squares, const int n) | float sum_of_squares, const int n) | ||||
{ | { | ||||
int i; | int i; | ||||
float scalefactor = ff_dot_productf(in, in, n); | |||||
float scalefactor = ff_scalarproduct_float_c(in, in, n); | |||||
if (scalefactor) | if (scalefactor) | ||||
scalefactor = sqrt(sum_of_squares / scalefactor); | scalefactor = sqrt(sum_of_squares / scalefactor); | ||||
for (i = 0; i < n; i++) | for (i = 0; i < n; i++) | ||||
@@ -44,8 +44,8 @@ | |||||
#include <math.h> | #include <math.h> | ||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | |||||
#include "libavutil/common.h" | #include "libavutil/common.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | #include "celp_filters.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
@@ -784,8 +784,8 @@ static int synthesis(AMRContext *p, float *lpc, | |||||
// emphasize pitch vector contribution | // emphasize pitch vector contribution | ||||
if (p->pitch_gain[4] > 0.5 && !overflow) { | if (p->pitch_gain[4] > 0.5 && !overflow) { | ||||
float energy = ff_dot_productf(excitation, excitation, | |||||
AMR_SUBFRAME_SIZE); | |||||
float energy = ff_scalarproduct_float_c(excitation, excitation, | |||||
AMR_SUBFRAME_SIZE); | |||||
float pitch_factor = | float pitch_factor = | ||||
p->pitch_gain[4] * | p->pitch_gain[4] * | ||||
(p->cur_frame_mode == MODE_12k2 ? | (p->cur_frame_mode == MODE_12k2 ? | ||||
@@ -861,8 +861,8 @@ static float tilt_factor(float *lpc_n, float *lpc_d) | |||||
ff_celp_lp_synthesis_filterf(hf, lpc_d, hf, AMR_TILT_RESPONSE, | ff_celp_lp_synthesis_filterf(hf, lpc_d, hf, AMR_TILT_RESPONSE, | ||||
LP_FILTER_ORDER); | LP_FILTER_ORDER); | ||||
rh0 = ff_dot_productf(hf, hf, AMR_TILT_RESPONSE); | |||||
rh1 = ff_dot_productf(hf, hf + 1, AMR_TILT_RESPONSE - 1); | |||||
rh0 = ff_scalarproduct_float_c(hf, hf, AMR_TILT_RESPONSE); | |||||
rh1 = ff_scalarproduct_float_c(hf, hf + 1, AMR_TILT_RESPONSE - 1); | |||||
// The spec only specifies this check for 12.2 and 10.2 kbit/s | // The spec only specifies this check for 12.2 and 10.2 kbit/s | ||||
// modes. But in the ref source the tilt is always non-negative. | // modes. But in the ref source the tilt is always non-negative. | ||||
@@ -882,8 +882,8 @@ static void postfilter(AMRContext *p, float *lpc, float *buf_out) | |||||
int i; | int i; | ||||
float *samples = p->samples_in + LP_FILTER_ORDER; // Start of input | float *samples = p->samples_in + LP_FILTER_ORDER; // Start of input | ||||
float speech_gain = ff_dot_productf(samples, samples, | |||||
AMR_SUBFRAME_SIZE); | |||||
float speech_gain = ff_scalarproduct_float_c(samples, samples, | |||||
AMR_SUBFRAME_SIZE); | |||||
float pole_out[AMR_SUBFRAME_SIZE + LP_FILTER_ORDER]; // Output of pole filter | float pole_out[AMR_SUBFRAME_SIZE + LP_FILTER_ORDER]; // Output of pole filter | ||||
const float *gamma_n, *gamma_d; // Formant filter factor table | const float *gamma_n, *gamma_d; // Formant filter factor table | ||||
@@ -988,8 +988,10 @@ static int amrnb_decode_frame(AVCodecContext *avctx, void *data, | |||||
p->fixed_gain[4] = | p->fixed_gain[4] = | ||||
ff_amr_set_fixed_gain(fixed_gain_factor, | ff_amr_set_fixed_gain(fixed_gain_factor, | ||||
ff_dot_productf(p->fixed_vector, p->fixed_vector, | |||||
AMR_SUBFRAME_SIZE)/AMR_SUBFRAME_SIZE, | |||||
ff_scalarproduct_float_c(p->fixed_vector, | |||||
p->fixed_vector, | |||||
AMR_SUBFRAME_SIZE) / | |||||
AMR_SUBFRAME_SIZE, | |||||
p->prediction_error, | p->prediction_error, | ||||
energy_mean[p->cur_frame_mode], energy_pred_fac); | energy_mean[p->cur_frame_mode], energy_pred_fac); | ||||
@@ -28,8 +28,8 @@ | |||||
#include "libavutil/lfg.h" | #include "libavutil/lfg.h" | ||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "dsputil.h" | |||||
#include "lsp.h" | #include "lsp.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | #include "celp_filters.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
@@ -585,10 +585,12 @@ static void pitch_sharpening(AMRWBContext *ctx, float *fixed_vector) | |||||
static float voice_factor(float *p_vector, float p_gain, | static float voice_factor(float *p_vector, float p_gain, | ||||
float *f_vector, float f_gain) | float *f_vector, float f_gain) | ||||
{ | { | ||||
double p_ener = (double) ff_dot_productf(p_vector, p_vector, | |||||
AMRWB_SFR_SIZE) * p_gain * p_gain; | |||||
double f_ener = (double) ff_dot_productf(f_vector, f_vector, | |||||
AMRWB_SFR_SIZE) * f_gain * f_gain; | |||||
double p_ener = (double) ff_scalarproduct_float_c(p_vector, p_vector, | |||||
AMRWB_SFR_SIZE) * | |||||
p_gain * p_gain; | |||||
double f_ener = (double) ff_scalarproduct_float_c(f_vector, f_vector, | |||||
AMRWB_SFR_SIZE) * | |||||
f_gain * f_gain; | |||||
return (p_ener - f_ener) / (p_ener + f_ener); | return (p_ener - f_ener) / (p_ener + f_ener); | ||||
} | } | ||||
@@ -756,8 +758,8 @@ static void synthesis(AMRWBContext *ctx, float *lpc, float *excitation, | |||||
/* emphasize pitch vector contribution in low bitrate modes */ | /* emphasize pitch vector contribution in low bitrate modes */ | ||||
if (ctx->pitch_gain[0] > 0.5 && ctx->fr_cur_mode <= MODE_8k85) { | if (ctx->pitch_gain[0] > 0.5 && ctx->fr_cur_mode <= MODE_8k85) { | ||||
int i; | int i; | ||||
float energy = ff_dot_productf(excitation, excitation, | |||||
AMRWB_SFR_SIZE); | |||||
float energy = ff_scalarproduct_float_c(excitation, excitation, | |||||
AMRWB_SFR_SIZE); | |||||
// XXX: Weird part in both ref code and spec. A unknown parameter | // XXX: Weird part in both ref code and spec. A unknown parameter | ||||
// {beta} seems to be identical to the current pitch gain | // {beta} seems to be identical to the current pitch gain | ||||
@@ -816,8 +818,9 @@ static void upsample_5_4(float *out, const float *in, int o_size) | |||||
i++; | i++; | ||||
for (k = 1; k < 5; k++) { | for (k = 1; k < 5; k++) { | ||||
out[i] = ff_dot_productf(in0 + int_part, upsample_fir[4 - frac_part], | |||||
UPS_MEM_SIZE); | |||||
out[i] = ff_scalarproduct_float_c(in0 + int_part, | |||||
upsample_fir[4 - frac_part], | |||||
UPS_MEM_SIZE); | |||||
int_part++; | int_part++; | ||||
frac_part--; | frac_part--; | ||||
i++; | i++; | ||||
@@ -843,8 +846,8 @@ static float find_hb_gain(AMRWBContext *ctx, const float *synth, | |||||
if (ctx->fr_cur_mode == MODE_23k85) | if (ctx->fr_cur_mode == MODE_23k85) | ||||
return qua_hb_gain[hb_idx] * (1.0f / (1 << 14)); | return qua_hb_gain[hb_idx] * (1.0f / (1 << 14)); | ||||
tilt = ff_dot_productf(synth, synth + 1, AMRWB_SFR_SIZE - 1) / | |||||
ff_dot_productf(synth, synth, AMRWB_SFR_SIZE); | |||||
tilt = ff_scalarproduct_float_c(synth, synth + 1, AMRWB_SFR_SIZE - 1) / | |||||
ff_scalarproduct_float_c(synth, synth, AMRWB_SFR_SIZE); | |||||
/* return gain bounded by [0.1, 1.0] */ | /* return gain bounded by [0.1, 1.0] */ | ||||
return av_clipf((1.0 - FFMAX(0.0, tilt)) * (1.25 - 0.25 * wsp), 0.1, 1.0); | return av_clipf((1.0 - FFMAX(0.0, tilt)) * (1.25 - 0.25 * wsp), 0.1, 1.0); | ||||
@@ -863,7 +866,7 @@ static void scaled_hb_excitation(AMRWBContext *ctx, float *hb_exc, | |||||
const float *synth_exc, float hb_gain) | const float *synth_exc, float hb_gain) | ||||
{ | { | ||||
int i; | int i; | ||||
float energy = ff_dot_productf(synth_exc, synth_exc, AMRWB_SFR_SIZE); | |||||
float energy = ff_scalarproduct_float_c(synth_exc, synth_exc, AMRWB_SFR_SIZE); | |||||
/* Generate a white-noise excitation */ | /* Generate a white-noise excitation */ | ||||
for (i = 0; i < AMRWB_SFR_SIZE_16k; i++) | for (i = 0; i < AMRWB_SFR_SIZE_16k; i++) | ||||
@@ -1156,8 +1159,10 @@ static int amrwb_decode_frame(AVCodecContext *avctx, void *data, | |||||
ctx->fixed_gain[0] = | ctx->fixed_gain[0] = | ||||
ff_amr_set_fixed_gain(fixed_gain_factor, | ff_amr_set_fixed_gain(fixed_gain_factor, | ||||
ff_dot_productf(ctx->fixed_vector, ctx->fixed_vector, | |||||
AMRWB_SFR_SIZE) / AMRWB_SFR_SIZE, | |||||
ff_scalarproduct_float_c(ctx->fixed_vector, | |||||
ctx->fixed_vector, | |||||
AMRWB_SFR_SIZE) / | |||||
AMRWB_SFR_SIZE, | |||||
ctx->prediction_error, | ctx->prediction_error, | ||||
ENERGY_MEAN, energy_pred_fac); | ENERGY_MEAN, energy_pred_fac); | ||||
@@ -86,14 +86,3 @@ int ff_log2(uint32_t value) | |||||
return (power_int << 15) + value; | return (power_int << 15) + value; | ||||
} | } | ||||
float ff_dot_productf(const float* a, const float* b, int length) | |||||
{ | |||||
float sum = 0; | |||||
int i; | |||||
for(i=0; i<length; i++) | |||||
sum += a[i] * b[i]; | |||||
return sum; | |||||
} |
@@ -55,14 +55,4 @@ static inline int bidir_sal(int value, int offset) | |||||
else return value << offset; | else return value << offset; | ||||
} | } | ||||
/** | |||||
* Return the dot product. | |||||
* @param a input data array | |||||
* @param b input data array | |||||
* @param length number of elements | |||||
* | |||||
* @return dot product = sum of elementwise products | |||||
*/ | |||||
float ff_dot_productf(const float* a, const float* b, int length); | |||||
#endif /* AVCODEC_CELP_MATH_H */ | #endif /* AVCODEC_CELP_MATH_H */ |
@@ -2424,7 +2424,7 @@ static void butterflies_float_interleave_c(float *dst, const float *src0, | |||||
} | } | ||||
} | } | ||||
static float scalarproduct_float_c(const float *v1, const float *v2, int len) | |||||
float ff_scalarproduct_float_c(const float *v1, const float *v2, int len) | |||||
{ | { | ||||
float p = 0.0; | float p = 0.0; | ||||
int i; | int i; | ||||
@@ -2877,7 +2877,7 @@ av_cold void ff_dsputil_init(DSPContext* c, AVCodecContext *avctx) | |||||
c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; | c->scalarproduct_and_madd_int16 = scalarproduct_and_madd_int16_c; | ||||
c->apply_window_int16 = apply_window_int16_c; | c->apply_window_int16 = apply_window_int16_c; | ||||
c->vector_clip_int32 = vector_clip_int32_c; | c->vector_clip_int32 = vector_clip_int32_c; | ||||
c->scalarproduct_float = scalarproduct_float_c; | |||||
c->scalarproduct_float = ff_scalarproduct_float_c; | |||||
c->butterflies_float = butterflies_float_c; | c->butterflies_float = butterflies_float_c; | ||||
c->butterflies_float_interleave = butterflies_float_interleave_c; | c->butterflies_float_interleave = butterflies_float_interleave_c; | ||||
c->vector_fmul_scalar = vector_fmul_scalar_c; | c->vector_fmul_scalar = vector_fmul_scalar_c; | ||||
@@ -549,6 +549,17 @@ void ff_dsputil_init(DSPContext* p, AVCodecContext *avctx); | |||||
int ff_check_alignment(void); | int ff_check_alignment(void); | ||||
/** | |||||
* Return the scalar product of two vectors. | |||||
* | |||||
* @param v1 first input vector | |||||
* @param v2 first input vector | |||||
* @param len number of elements | |||||
* | |||||
* @return sum of elementwise products | |||||
*/ | |||||
float ff_scalarproduct_float_c(const float *v1, const float *v2, int len); | |||||
/** | /** | ||||
* permute block according to permuatation. | * permute block according to permuatation. | ||||
* @param last last non zero element in scantable order | * @param last last non zero element in scantable order | ||||
@@ -27,7 +27,6 @@ | |||||
#define FRAC_BITS 14 | #define FRAC_BITS 14 | ||||
#include "mathops.h" | #include "mathops.h" | ||||
#include "lsp.h" | #include "lsp.h" | ||||
#include "celp_math.h" | |||||
void ff_acelp_reorder_lsf(int16_t* lsfq, int lsfq_min_distance, int lsfq_min, int lsfq_max, int lp_order) | void ff_acelp_reorder_lsf(int16_t* lsfq, int lsfq_min_distance, int lsfq_min, int lsfq_max, int lp_order) | ||||
{ | { | ||||
@@ -32,10 +32,8 @@ | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "internal.h" | #include "internal.h" | ||||
#include "get_bits.h" | #include "get_bits.h" | ||||
#include "dsputil.h" | |||||
#include "qcelpdata.h" | #include "qcelpdata.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | #include "celp_filters.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
@@ -401,8 +399,9 @@ static void apply_gain_ctrl(float *v_out, const float *v_ref, const float *v_in) | |||||
for (i = 0; i < 160; i += 40) | for (i = 0; i < 160; i += 40) | ||||
ff_scale_vector_to_given_sum_of_squares(v_out + i, v_in + i, | ff_scale_vector_to_given_sum_of_squares(v_out + i, v_in + i, | ||||
ff_dot_productf(v_ref + i, | |||||
v_ref + i, 40), | |||||
ff_scalarproduct_float_c(v_ref + i, | |||||
v_ref + i, | |||||
40), | |||||
40); | 40); | ||||
} | } | ||||
@@ -678,8 +677,8 @@ static void postfilter(QCELPContext *q, float *samples, float *lpc) | |||||
ff_tilt_compensation(&q->postfilter_tilt_mem, 0.3, pole_out + 10, 160); | ff_tilt_compensation(&q->postfilter_tilt_mem, 0.3, pole_out + 10, 160); | ||||
ff_adaptive_gain_control(samples, pole_out + 10, | ff_adaptive_gain_control(samples, pole_out + 10, | ||||
ff_dot_productf(q->formant_mem + 10, | |||||
q->formant_mem + 10, 160), | |||||
ff_scalarproduct_float_c(q->formant_mem + 10, | |||||
q->formant_mem + 10, 160), | |||||
160, 0.9375, &q->postfilter_agc_mem); | 160, 0.9375, &q->postfilter_agc_mem); | ||||
} | } | ||||
@@ -25,7 +25,6 @@ | |||||
#include "get_bits.h" | #include "get_bits.h" | ||||
#include "ra288.h" | #include "ra288.h" | ||||
#include "lpc.h" | #include "lpc.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | #include "celp_filters.h" | ||||
#define MAX_BACKWARD_FILTER_ORDER 36 | #define MAX_BACKWARD_FILTER_ORDER 36 | ||||
@@ -74,7 +73,7 @@ static av_cold int ra288_decode_init(AVCodecContext *avctx) | |||||
static void convolve(float *tgt, const float *src, int len, int n) | static void convolve(float *tgt, const float *src, int len, int n) | ||||
{ | { | ||||
for (; n >= 0; n--) | for (; n >= 0; n--) | ||||
tgt[n] = ff_dot_productf(src, src - n, len); | |||||
tgt[n] = ff_scalarproduct_float_c(src, src - n, len); | |||||
} | } | ||||
@@ -103,7 +102,7 @@ static void decode(RA288Context *ractx, float gain, int cb_coef) | |||||
for (i=0; i < 5; i++) | for (i=0; i < 5; i++) | ||||
buffer[i] = codetable[cb_coef][i] * sumsum; | buffer[i] = codetable[cb_coef][i] * sumsum; | ||||
sum = ff_dot_productf(buffer, buffer, 5) * ((1<<24)/5.); | |||||
sum = ff_scalarproduct_float_c(buffer, buffer, 5) * ((1 << 24) / 5.); | |||||
sum = FFMAX(sum, 1); | sum = FFMAX(sum, 1); | ||||
@@ -32,7 +32,6 @@ | |||||
#include "dsputil.h" | #include "dsputil.h" | ||||
#include "lsp.h" | #include "lsp.h" | ||||
#include "celp_math.h" | |||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
#include "acelp_pitch_delay.h" | #include "acelp_pitch_delay.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
@@ -411,7 +410,7 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params, | |||||
SUBFR_SIZE); | SUBFR_SIZE); | ||||
avg_energy = | avg_energy = | ||||
(0.01 + ff_dot_productf(fixed_vector, fixed_vector, SUBFR_SIZE))/ | |||||
(0.01 + ff_scalarproduct_float_c(fixed_vector, fixed_vector, SUBFR_SIZE)) / | |||||
SUBFR_SIZE; | SUBFR_SIZE; | ||||
ctx->past_pitch_gain = pitch_gain = gain_cb[params->gc_index[i]][0]; | ctx->past_pitch_gain = pitch_gain = gain_cb[params->gc_index[i]][0]; | ||||
@@ -453,9 +452,9 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params, | |||||
if (ctx->mode == MODE_5k0) { | if (ctx->mode == MODE_5k0) { | ||||
for (i = 0; i < subframe_count; i++) { | for (i = 0; i < subframe_count; i++) { | ||||
float energy = ff_dot_productf(ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i*SUBFR_SIZE, | |||||
ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i*SUBFR_SIZE, | |||||
SUBFR_SIZE); | |||||
float energy = ff_scalarproduct_float_c(ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i * SUBFR_SIZE, | |||||
ctx->postfilter_syn5k0 + LP_FILTER_ORDER + i * SUBFR_SIZE, | |||||
SUBFR_SIZE); | |||||
ff_adaptive_gain_control(&synth[i * SUBFR_SIZE], | ff_adaptive_gain_control(&synth[i * SUBFR_SIZE], | ||||
&synth[i * SUBFR_SIZE], energy, | &synth[i * SUBFR_SIZE], energy, | ||||
SUBFR_SIZE, 0.9, &ctx->postfilter_agc); | SUBFR_SIZE, 0.9, &ctx->postfilter_agc); | ||||
@@ -26,8 +26,9 @@ | |||||
#include "sipr.h" | #include "sipr.h" | ||||
#include "libavutil/common.h" | #include "libavutil/common.h" | ||||
#include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||
#include "dsputil.h" | |||||
#include "lsp.h" | #include "lsp.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | |||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
#include "acelp_pitch_delay.h" | #include "acelp_pitch_delay.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
@@ -163,10 +164,10 @@ static float acelp_decode_gain_codef(float gain_corr_factor, const float *fc_v, | |||||
int subframe_size, int ma_pred_order) | int subframe_size, int ma_pred_order) | ||||
{ | { | ||||
mr_energy += | mr_energy += | ||||
ff_dot_productf(quant_energy, ma_prediction_coeff, ma_pred_order); | |||||
ff_scalarproduct_float_c(quant_energy, ma_prediction_coeff, ma_pred_order); | |||||
mr_energy = gain_corr_factor * exp(M_LN10 / 20. * mr_energy) / | mr_energy = gain_corr_factor * exp(M_LN10 / 20. * mr_energy) / | ||||
sqrt((0.01 + ff_dot_productf(fc_v, fc_v, subframe_size))); | |||||
sqrt((0.01 + ff_scalarproduct_float_c(fc_v, fc_v, subframe_size))); | |||||
return mr_energy; | return mr_energy; | ||||
} | } | ||||
@@ -28,11 +28,12 @@ | |||||
#define UNCHECKED_BITSTREAM_READER 1 | #define UNCHECKED_BITSTREAM_READER 1 | ||||
#include <math.h> | #include <math.h> | ||||
#include "dsputil.h" | |||||
#include "avcodec.h" | #include "avcodec.h" | ||||
#include "get_bits.h" | #include "get_bits.h" | ||||
#include "put_bits.h" | #include "put_bits.h" | ||||
#include "wmavoice_data.h" | #include "wmavoice_data.h" | ||||
#include "celp_math.h" | |||||
#include "celp_filters.h" | #include "celp_filters.h" | ||||
#include "acelp_vectors.h" | #include "acelp_vectors.h" | ||||
#include "acelp_filters.h" | #include "acelp_filters.h" | ||||
@@ -518,7 +519,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch, | |||||
/* find best fitting point in history */ | /* find best fitting point in history */ | ||||
do { | do { | ||||
dot = ff_dot_productf(in, ptr, size); | |||||
dot = ff_scalarproduct_float_c(in, ptr, size); | |||||
if (dot > optimal_gain) { | if (dot > optimal_gain) { | ||||
optimal_gain = dot; | optimal_gain = dot; | ||||
best_hist_ptr = ptr; | best_hist_ptr = ptr; | ||||
@@ -527,7 +528,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch, | |||||
if (optimal_gain <= 0) | if (optimal_gain <= 0) | ||||
return -1; | return -1; | ||||
dot = ff_dot_productf(best_hist_ptr, best_hist_ptr, size); | |||||
dot = ff_scalarproduct_float_c(best_hist_ptr, best_hist_ptr, size); | |||||
if (dot <= 0) // would be 1.0 | if (dot <= 0) // would be 1.0 | ||||
return -1; | return -1; | ||||
@@ -557,8 +558,8 @@ static float tilt_factor(const float *lpcs, int n_lpcs) | |||||
{ | { | ||||
float rh0, rh1; | float rh0, rh1; | ||||
rh0 = 1.0 + ff_dot_productf(lpcs, lpcs, n_lpcs); | |||||
rh1 = lpcs[0] + ff_dot_productf(lpcs, &lpcs[1], n_lpcs - 1); | |||||
rh0 = 1.0 + ff_scalarproduct_float_c(lpcs, lpcs, n_lpcs); | |||||
rh1 = lpcs[0] + ff_scalarproduct_float_c(lpcs, &lpcs[1], n_lpcs - 1); | |||||
return rh1 / rh0; | return rh1 / rh0; | ||||
} | } | ||||
@@ -651,7 +652,7 @@ static void calc_input_response(WMAVoiceContext *s, float *lpcs, | |||||
-1.8 * tilt_factor(coeffs, remainder - 1), | -1.8 * tilt_factor(coeffs, remainder - 1), | ||||
coeffs, remainder); | coeffs, remainder); | ||||
} | } | ||||
sq = (1.0 / 64.0) * sqrtf(1 / ff_dot_productf(coeffs, coeffs, remainder)); | |||||
sq = (1.0 / 64.0) * sqrtf(1 / ff_scalarproduct_float_c(coeffs, coeffs, remainder)); | |||||
for (n = 0; n < remainder; n++) | for (n = 0; n < remainder; n++) | ||||
coeffs[n] *= sq; | coeffs[n] *= sq; | ||||
} | } | ||||
@@ -1315,7 +1316,7 @@ static void synth_block_fcb_acb(WMAVoiceContext *s, GetBitContext *gb, | |||||
/* Calculate gain for adaptive & fixed codebook signal. | /* Calculate gain for adaptive & fixed codebook signal. | ||||
* see ff_amr_set_fixed_gain(). */ | * see ff_amr_set_fixed_gain(). */ | ||||
idx = get_bits(gb, 7); | idx = get_bits(gb, 7); | ||||
fcb_gain = expf(ff_dot_productf(s->gain_pred_err, gain_coeff, 6) - | |||||
fcb_gain = expf(ff_scalarproduct_float_c(s->gain_pred_err, gain_coeff, 6) - | |||||
5.2409161640 + wmavoice_gain_codebook_fcb[idx]); | 5.2409161640 + wmavoice_gain_codebook_fcb[idx]); | ||||
acb_gain = wmavoice_gain_codebook_acb[idx]; | acb_gain = wmavoice_gain_codebook_acb[idx]; | ||||
pred_err = av_clipf(wmavoice_gain_codebook_fcb[idx], | pred_err = av_clipf(wmavoice_gain_codebook_fcb[idx], | ||||