Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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
...
@@ -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
...
@@ -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
...
@@ -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
...
@@ -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
...
@@ -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
\
...
...
libavcodec/acelp_pitch_delay.c
View file @
dafcbfe4
...
@@ -25,7 +25,6 @@
...
@@ -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,
...
@@ -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
);
...
...
libavcodec/acelp_vectors.c
View file @
dafcbfe4
...
@@ -24,8 +24,8 @@
...
@@ -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,
...
@@ -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,
...
@@ -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
++
)
...
...
libavcodec/amrnbdec.c
View file @
dafcbfe4
...
@@ -44,8 +44,8 @@
...
@@ -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,
...
@@ -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
,
float
energy
=
ff_
scalarproduct_float_c
(
excitation
,
excitation
,
AMR_SUBFRAME_SIZE
);
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)
...
@@ -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
);
rh0
=
ff_
scalarproduct_float_c
(
hf
,
hf
,
AMR_TILT_RESPONSE
);
rh1
=
ff_
dot_productf
(
hf
,
hf
+
1
,
AMR_TILT_RESPONSE
-
1
);
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)
...
@@ -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
,
float
speech_gain
=
ff_
scalarproduct_float_c
(
samples
,
samples
,
AMR_SUBFRAME_SIZE
);
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,
...
@@ -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
,
ff_scalarproduct_float_c
(
p
->
fixed_vector
,
AMR_SUBFRAME_SIZE
)
/
AMR_SUBFRAME_SIZE
,
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
);
...
...
libavcodec/amrwbdec.c
View file @
dafcbfe4
...
@@ -28,8 +28,8 @@
...
@@ -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)
...
@@ -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
,
double
p_ener
=
(
double
)
ff_scalarproduct_float_c
(
p_vector
,
p_vector
,
AMRWB_SFR_SIZE
)
*
p_gain
*
p_gain
;
AMRWB_SFR_SIZE
)
*
double
f_ener
=
(
double
)
ff_dot_productf
(
f_vector
,
f_vector
,
p_gain
*
p_gain
;
AMRWB_SFR_SIZE
)
*
f_gain
*
f_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,
...
@@ -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
,
float
energy
=
ff_
scalarproduct_float_c
(
excitation
,
excitation
,
AMRWB_SFR_SIZE
);
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)
...
@@ -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
],
out
[
i
]
=
ff_scalarproduct_float_c
(
in0
+
int_part
,
UPS_MEM_SIZE
);
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,
...
@@ -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
.
0
f
/
(
1
<<
14
));
return
qua_hb_gain
[
hb_idx
]
*
(
1
.
0
f
/
(
1
<<
14
));
tilt
=
ff_
dot_productf
(
synth
,
synth
+
1
,
AMRWB_SFR_SIZE
-
1
)
/
tilt
=
ff_
scalarproduct_float_c
(
synth
,
synth
+
1
,
AMRWB_SFR_SIZE
-
1
)
/
ff_
dot_productf
(
synth
,
synth
,
AMRWB_SFR_SIZE
);
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,
...
@@ -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,
...
@@ -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
,
ff_scalarproduct_float_c
(
ctx
->
fixed_vector
,
AMRWB_SFR_SIZE
)
/
AMRWB_SFR_SIZE
,
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
);
...
...
libavcodec/celp_math.c
View file @
dafcbfe4
...
@@ -86,14 +86,3 @@ int ff_log2(uint32_t value)
...
@@ -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
;
}
libavcodec/celp_math.h
View file @
dafcbfe4
...
@@ -55,14 +55,4 @@ static inline int bidir_sal(int value, int offset)
...
@@ -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 */
libavcodec/dsputil.c
View file @
dafcbfe4
...
@@ -2424,7 +2424,7 @@ static void butterflies_float_interleave_c(float *dst, const float *src0,
...
@@ -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)
...
@@ -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
;
...
...
libavcodec/dsputil.h
View file @
dafcbfe4
...
@@ -549,6 +549,17 @@ void ff_dsputil_init(DSPContext* p, AVCodecContext *avctx);
...
@@ -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
...
...
libavcodec/lsp.c
View file @
dafcbfe4
...
@@ -27,7 +27,6 @@
...
@@ -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
)
{
{
...
...
libavcodec/qcelpdec.c
View file @
dafcbfe4
...
@@ -32,10 +32,8 @@
...
@@ -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)
...
@@ -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
,
ff_scalarproduct_float_c
(
v_ref
+
i
,
v_ref
+
i
,
40
),
v_ref
+
i
,
40
),
40
);
40
);
}
}
...
@@ -678,8 +677,8 @@ static void postfilter(QCELPContext *q, float *samples, float *lpc)
...
@@ -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
,
ff_
scalarproduct_float_c
(
q
->
formant_mem
+
10
,
q
->
formant_mem
+
10
,
160
),
q
->
formant_mem
+
10
,
160
),
160
,
0
.
9375
,
&
q
->
postfilter_agc_mem
);
160
,
0
.
9375
,
&
q
->
postfilter_agc_mem
);
}
}
...
...
libavcodec/ra288.c
View file @
dafcbfe4
...
@@ -25,7 +25,6 @@
...
@@ -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)
...
@@ -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)
...
@@ -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
);
...
...
libavcodec/sipr.c
View file @
dafcbfe4
...
@@ -32,7 +32,6 @@
...
@@ -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,
...
@@ -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,
...
@@ -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
,
float
energy
=
ff_
scalarproduct_float_c
(
ctx
->
postfilter_syn5k0
+
LP_FILTER_ORDER
+
i
*
SUBFR_SIZE
,
ctx
->
postfilter_syn5k0
+
LP_FILTER_ORDER
+
i
*
SUBFR_SIZE
,
ctx
->
postfilter_syn5k0
+
LP_FILTER_ORDER
+
i
*
SUBFR_SIZE
,
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
);
...
...
libavcodec/sipr16k.c
View file @
dafcbfe4
...
@@ -26,8 +26,9 @@
...
@@ -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,
...
@@ -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
;
}
}
...
...
libavcodec/wmavoice.c
View file @
dafcbfe4
...
@@ -28,11 +28,12 @@
...
@@ -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,
...
@@ -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,
...
@@ -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)
...
@@ -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
);
rh0
=
1
.
0
+
ff_
scalarproduct_float_c
(
lpcs
,
lpcs
,
n_lpcs
);
rh1
=
lpcs
[
0
]
+
ff_
dot_productf
(
lpcs
,
&
lpcs
[
1
],
n_lpcs
-
1
);
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,
...
@@ -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,
...
@@ -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
],
...
...
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