Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
dafcbfe4
Commit
dafcbfe4
authored
Aug 26, 2012
by
Diego Biurrun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
celp_math: Replace duplicate ff_dot_productf() by ff_scalarproduct_c()
parent
55498543
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
77 additions
and
83 deletions
+77
-83
Makefile
libavcodec/Makefile
+6
-6
acelp_pitch_delay.c
libavcodec/acelp_pitch_delay.c
+1
-2
acelp_vectors.c
libavcodec/acelp_vectors.c
+3
-3
amrnbdec.c
libavcodec/amrnbdec.c
+11
-9
amrwbdec.c
libavcodec/amrwbdec.c
+19
-14
celp_math.c
libavcodec/celp_math.c
+0
-11
celp_math.h
libavcodec/celp_math.h
+0
-10
dsputil.c
libavcodec/dsputil.c
+2
-2
dsputil.h
libavcodec/dsputil.h
+11
-0
lsp.c
libavcodec/lsp.c
+0
-1
qcelpdec.c
libavcodec/qcelpdec.c
+6
-7
ra288.c
libavcodec/ra288.c
+2
-3
sipr.c
libavcodec/sipr.c
+4
-5
sipr16k.c
libavcodec/sipr16k.c
+4
-3
wmavoice.c
libavcodec/wmavoice.c
+8
-7
No files found.
libavcodec/Makefile
View file @
dafcbfe4
...
...
@@ -84,11 +84,11 @@ OBJS-$(CONFIG_ALAC_DECODER) += alac.o
OBJS-$(CONFIG_ALAC_ENCODER)
+=
alacenc.o
OBJS-$(CONFIG_ALS_DECODER)
+=
alsdec.o
bgmc.o
mpeg4audio.o
OBJS-$(CONFIG_AMRNB_DECODER)
+=
amrnbdec.o
celp_filters.o
\
celp_math.o
acelp_filters.o
\
acelp_filters.o
\
acelp_vectors.o
\
acelp_pitch_delay.o
OBJS-$(CONFIG_AMRWB_DECODER)
+=
amrwbdec.o
celp_filters.o
\
celp_math.o
acelp_filters.o
\
acelp_filters.o
\
acelp_vectors.o
\
acelp_pitch_delay.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_ENCODER)
+=
proresenc.o
proresdata.o
proresdsp.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
\
acelp_filters.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_ENCODER)
+=
ra144enc.o
ra144.o
celp_filters.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_RAWVIDEO_DECODER)
+=
rawdec.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_SHORTEN_DECODER)
+=
shorten.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
\
sipr16k.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_ENCODER)
+=
wmaenc.o
wma.o
wma_common.o
aactab.o
OBJS-$(CONFIG_WMAVOICE_DECODER)
+=
wmavoice.o
\
celp_
math.o
celp_
filters.o
\
celp_filters.o
\
acelp_vectors.o
acelp_filters.o
OBJS-$(CONFIG_WMV1_DECODER)
+=
msmpeg4.o
msmpeg4data.o
OBJS-$(CONFIG_WMV2_DECODER)
+=
wmv2dec.o
wmv2.o
\
...
...
libavcodec/acelp_pitch_delay.c
View file @
dafcbfe4
...
...
@@ -25,7 +25,6 @@
#include "avcodec.h"
#include "dsputil.h"
#include "acelp_pitch_delay.h"
#include "celp_math.h"
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)).
float
val
=
fixed_gain_factor
*
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
))
/
sqrtf
(
fixed_mean_energy
);
...
...
libavcodec/acelp_vectors.c
View file @
dafcbfe4
...
...
@@ -24,8 +24,8 @@
#include "libavutil/common.h"
#include "avcodec.h"
#include "dsputil.h"
#include "acelp_vectors.h"
#include "celp_math.h"
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
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
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
)
{
int
i
;
float
scalefactor
=
ff_
dot_productf
(
in
,
in
,
n
);
float
scalefactor
=
ff_
scalarproduct_float_c
(
in
,
in
,
n
);
if
(
scalefactor
)
scalefactor
=
sqrt
(
sum_of_squares
/
scalefactor
);
for
(
i
=
0
;
i
<
n
;
i
++
)
...
...
libavcodec/amrnbdec.c
View file @
dafcbfe4
...
...
@@ -44,8 +44,8 @@
#include <math.h>
#include "avcodec.h"
#include "dsputil.h"
#include "libavutil/common.h"
#include "celp_math.h"
#include "celp_filters.h"
#include "acelp_filters.h"
#include "acelp_vectors.h"
...
...
@@ -784,8 +784,8 @@ static int synthesis(AMRContext *p, float *lpc,
// emphasize pitch vector contribution
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
=
p
->
pitch_gain
[
4
]
*
(
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
,
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
// 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
;
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
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
]
=
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
,
energy_mean
[
p
->
cur_frame_mode
],
energy_pred_fac
);
...
...
libavcodec/amrwbdec.c
View file @
dafcbfe4
...
...
@@ -28,8 +28,8 @@
#include "libavutil/lfg.h"
#include "avcodec.h"
#include "dsputil.h"
#include "lsp.h"
#include "celp_math.h"
#include "celp_filters.h"
#include "acelp_filters.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
,
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
);
}
...
...
@@ -756,8 +758,8 @@ static void synthesis(AMRWBContext *ctx, float *lpc, float *excitation,
/* emphasize pitch vector contribution in low bitrate modes */
if
(
ctx
->
pitch_gain
[
0
]
>
0
.
5
&&
ctx
->
fr_cur_mode
<=
MODE_8k85
)
{
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
// {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
++
;
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
++
;
frac_part
--
;
i
++
;
...
...
@@ -843,8 +846,8 @@ static float find_hb_gain(AMRWBContext *ctx, const float *synth,
if
(
ctx
->
fr_cur_mode
==
MODE_23k85
)
return
qua_hb_gain
[
hb_idx
]
*
(
1
.
0
f
/
(
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
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
)
{
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 */
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
]
=
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
,
ENERGY_MEAN
,
energy_pred_fac
);
...
...
libavcodec/celp_math.c
View file @
dafcbfe4
...
...
@@ -86,14 +86,3 @@ int ff_log2(uint32_t 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
;
}
libavcodec/celp_math.h
View file @
dafcbfe4
...
...
@@ -55,14 +55,4 @@ static inline int bidir_sal(int value, int 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 */
libavcodec/dsputil.c
View file @
dafcbfe4
...
...
@@ -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
;
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
->
apply_window_int16
=
apply_window_int16_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_interleave
=
butterflies_float_interleave_c
;
c
->
vector_fmul_scalar
=
vector_fmul_scalar_c
;
...
...
libavcodec/dsputil.h
View file @
dafcbfe4
...
...
@@ -549,6 +549,17 @@ void ff_dsputil_init(DSPContext* p, AVCodecContext *avctx);
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.
* @param last last non zero element in scantable order
...
...
libavcodec/lsp.c
View file @
dafcbfe4
...
...
@@ -27,7 +27,6 @@
#define FRAC_BITS 14
#include "mathops.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
)
{
...
...
libavcodec/qcelpdec.c
View file @
dafcbfe4
...
...
@@ -32,10 +32,8 @@
#include "avcodec.h"
#include "internal.h"
#include "get_bits.h"
#include "dsputil.h"
#include "qcelpdata.h"
#include "celp_math.h"
#include "celp_filters.h"
#include "acelp_filters.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
)
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
);
}
...
...
@@ -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_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
);
}
...
...
libavcodec/ra288.c
View file @
dafcbfe4
...
...
@@ -25,7 +25,6 @@
#include "get_bits.h"
#include "ra288.h"
#include "lpc.h"
#include "celp_math.h"
#include "celp_filters.h"
#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
)
{
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
++
)
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
);
...
...
libavcodec/sipr.c
View file @
dafcbfe4
...
...
@@ -32,7 +32,6 @@
#include "dsputil.h"
#include "lsp.h"
#include "celp_math.h"
#include "acelp_vectors.h"
#include "acelp_pitch_delay.h"
#include "acelp_filters.h"
...
...
@@ -411,7 +410,7 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params,
SUBFR_SIZE
);
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
;
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
)
{
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
],
&
synth
[
i
*
SUBFR_SIZE
],
energy
,
SUBFR_SIZE
,
0
.
9
,
&
ctx
->
postfilter_agc
);
...
...
libavcodec/sipr16k.c
View file @
dafcbfe4
...
...
@@ -26,8 +26,9 @@
#include "sipr.h"
#include "libavutil/common.h"
#include "libavutil/mathematics.h"
#include "dsputil.h"
#include "lsp.h"
#include "celp_
math
.h"
#include "celp_
filters
.h"
#include "acelp_vectors.h"
#include "acelp_pitch_delay.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
)
{
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
)
/
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
;
}
...
...
libavcodec/wmavoice.c
View file @
dafcbfe4
...
...
@@ -28,11 +28,12 @@
#define UNCHECKED_BITSTREAM_READER 1
#include <math.h>
#include "dsputil.h"
#include "avcodec.h"
#include "get_bits.h"
#include "put_bits.h"
#include "wmavoice_data.h"
#include "celp_math.h"
#include "celp_filters.h"
#include "acelp_vectors.h"
#include "acelp_filters.h"
...
...
@@ -518,7 +519,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch,
/* find best fitting point in history */
do
{
dot
=
ff_
dot_productf
(
in
,
ptr
,
size
);
dot
=
ff_
scalarproduct_float_c
(
in
,
ptr
,
size
);
if
(
dot
>
optimal_gain
)
{
optimal_gain
=
dot
;
best_hist_ptr
=
ptr
;
...
...
@@ -527,7 +528,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch,
if
(
optimal_gain
<=
0
)
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
return
-
1
;
...
...
@@ -557,8 +558,8 @@ static float tilt_factor(const float *lpcs, int n_lpcs)
{
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
;
}
...
...
@@ -651,7 +652,7 @@ static void calc_input_response(WMAVoiceContext *s, float *lpcs,
-
1
.
8
*
tilt_factor
(
coeffs
,
remainder
-
1
),
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
++
)
coeffs
[
n
]
*=
sq
;
}
...
...
@@ -1315,7 +1316,7 @@ static void synth_block_fcb_acb(WMAVoiceContext *s, GetBitContext *gb,
/* Calculate gain for adaptive & fixed codebook signal.
* see ff_amr_set_fixed_gain(). */
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
]);
acb_gain
=
wmavoice_gain_codebook_acb
[
idx
];
pred_err
=
av_clipf
(
wmavoice_gain_codebook_fcb
[
idx
],
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment