[FFmpeg-cvslog] avutil/float_dsp: Unavpriv avpriv_scalarproduct_float_c()
Andreas Rheinhardt
git at videolan.org
Fri Mar 28 19:46:04 EET 2025
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Sat Mar 15 22:26:26 2025 +0100| [0ccf385e130377e3796c6abc82d51a913296ebc4] | committer: James Almer
avutil/float_dsp: Unavpriv avpriv_scalarproduct_float_c()
Not worth the overhead of exporting it.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0ccf385e130377e3796c6abc82d51a913296ebc4
---
libavcodec/Makefile | 3 ++-
libavcodec/acelp_pitch_delay.c | 2 +-
libavcodec/acelp_vectors.c | 4 ++--
libavcodec/float_scalarproduct.c | 19 +++++++++++++++++++
libavcodec/qcelpdec.c | 8 ++++----
libavcodec/ra288.c | 4 ++--
libavcodec/sipr.c | 12 ++++++------
libavcodec/sipr16k.c | 6 +++---
libavcodec/wmavoice.c | 16 ++++++++--------
libavutil/Makefile | 1 +
libavutil/float_dsp.c | 13 +------------
libavutil/float_dsp.h | 2 +-
libavutil/float_scalarproduct.c | 32 ++++++++++++++++++++++++++++++++
13 files changed, 82 insertions(+), 40 deletions(-)
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 40309f05de..b24201b1af 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -61,7 +61,8 @@ OBJS = ac3_parser.o \
vorbis_parser.o \
xiph.o \
-SHLIBOBJS = timecode_internal.o \
+SHLIBOBJS = float_scalarproduct.o \
+ timecode_internal.o \
# subsystems
include $(SRC_PATH)/libavcodec/aac/Makefile
diff --git a/libavcodec/acelp_pitch_delay.c b/libavcodec/acelp_pitch_delay.c
index 6cf880e4ac..65f659cb2e 100644
--- a/libavcodec/acelp_pitch_delay.c
+++ b/libavcodec/acelp_pitch_delay.c
@@ -90,7 +90,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 *
ff_exp10(0.05 *
- (avpriv_scalarproduct_float_c(pred_table, prediction_error, 4) +
+ (ff_scalarproduct_float_c(pred_table, prediction_error, 4) +
energy_mean)) /
sqrtf(fixed_mean_energy ? fixed_mean_energy : 1.0);
diff --git a/libavcodec/acelp_vectors.c b/libavcodec/acelp_vectors.c
index 04cbffd79f..f47da40008 100644
--- a/libavcodec/acelp_vectors.c
+++ b/libavcodec/acelp_vectors.c
@@ -193,7 +193,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 = avpriv_scalarproduct_float_c(in, in, size);
+ float postfilter_energ = ff_scalarproduct_float_c(in, in, size);
float gain_scale_factor = 1.0;
float mem = *gain_mem;
@@ -214,7 +214,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 = avpriv_scalarproduct_float_c(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++)
diff --git a/libavcodec/float_scalarproduct.c b/libavcodec/float_scalarproduct.c
new file mode 100644
index 0000000000..647f0ec72d
--- /dev/null
+++ b/libavcodec/float_scalarproduct.c
@@ -0,0 +1,19 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libavutil/float_scalarproduct.c"
diff --git a/libavcodec/qcelpdec.c b/libavcodec/qcelpdec.c
index 1435fecc2e..7d23a11102 100644
--- a/libavcodec/qcelpdec.c
+++ b/libavcodec/qcelpdec.c
@@ -397,7 +397,7 @@ static void apply_gain_ctrl(float *v_out, const float *v_ref, const float *v_in)
int i;
for (i = 0; i < 160; i += 40) {
- float res = avpriv_scalarproduct_float_c(v_ref + i, v_ref + i, 40);
+ float res = ff_scalarproduct_float_c(v_ref + i, v_ref + i, 40);
ff_scale_vector_to_given_sum_of_squares(v_out + i, v_in + i, res, 40);
}
}
@@ -676,9 +676,9 @@ 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,
- avpriv_scalarproduct_float_c(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);
}
diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c
index 5b186a7a3d..aa499506b7 100644
--- a/libavcodec/ra288.c
+++ b/libavcodec/ra288.c
@@ -90,7 +90,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] = avpriv_scalarproduct_float_c(src, src - n, len);
+ tgt[n] = ff_scalarproduct_float_c(src, src - n, len);
}
@@ -119,7 +119,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 = avpriv_scalarproduct_float_c(buffer, buffer, 5);
+ sum = ff_scalarproduct_float_c(buffer, buffer, 5);
sum = FFMAX(sum, 5.0 / (1<<24));
diff --git a/libavcodec/sipr.c b/libavcodec/sipr.c
index 3ddc579f09..ebd7dab03c 100644
--- a/libavcodec/sipr.c
+++ b/libavcodec/sipr.c
@@ -412,9 +412,9 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params,
convolute_with_sparse(fixed_vector, &fixed_cb, impulse_response,
SUBFR_SIZE);
- avg_energy = (0.01 + avpriv_scalarproduct_float_c(fixed_vector,
- fixed_vector,
- SUBFR_SIZE)) /
+ avg_energy = (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];
@@ -456,9 +456,9 @@ static void decode_frame(SiprContext *ctx, SiprParameters *params,
if (ctx->mode == MODE_5k0) {
for (i = 0; i < subframe_count; i++) {
- float energy = avpriv_scalarproduct_float_c(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);
diff --git a/libavcodec/sipr16k.c b/libavcodec/sipr16k.c
index 9c8f684003..ab892d0547 100644
--- a/libavcodec/sipr16k.c
+++ b/libavcodec/sipr16k.c
@@ -163,11 +163,11 @@ static float acelp_decode_gain_codef(float gain_corr_factor, const float *fc_v,
const float *ma_prediction_coeff,
int subframe_size, int ma_pred_order)
{
- mr_energy += avpriv_scalarproduct_float_c(quant_energy, ma_prediction_coeff,
- ma_pred_order);
+ mr_energy += 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 + avpriv_scalarproduct_float_c(fc_v, fc_v, subframe_size)));
+ sqrt((0.01 + ff_scalarproduct_float_c(fc_v, fc_v, subframe_size)));
return mr_energy;
}
diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c
index a1d230a768..7fc735ad1d 100644
--- a/libavcodec/wmavoice.c
+++ b/libavcodec/wmavoice.c
@@ -559,7 +559,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch,
/* find best fitting point in history */
do {
- dot = avpriv_scalarproduct_float_c(in, ptr, size);
+ dot = ff_scalarproduct_float_c(in, ptr, size);
if (dot > optimal_gain) {
optimal_gain = dot;
best_hist_ptr = ptr;
@@ -568,7 +568,7 @@ static int kalman_smoothen(WMAVoiceContext *s, int pitch,
if (optimal_gain <= 0)
return -1;
- dot = avpriv_scalarproduct_float_c(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;
@@ -598,8 +598,8 @@ static float tilt_factor(const float *lpcs, int n_lpcs)
{
float rh0, rh1;
- rh0 = 1.0 + avpriv_scalarproduct_float_c(lpcs, lpcs, n_lpcs);
- rh1 = lpcs[0] + avpriv_scalarproduct_float_c(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;
}
@@ -699,8 +699,8 @@ static void calc_input_response(WMAVoiceContext *s, float *lpcs_src,
-1.8 * tilt_factor(coeffs_dst, remainder - 1),
coeffs_dst, remainder);
}
- sq = (1.0 / 64.0) * sqrtf(1 / avpriv_scalarproduct_float_c(coeffs_dst, coeffs_dst,
- remainder));
+ sq = (1.0 / 64.0) * sqrtf(1 / ff_scalarproduct_float_c(coeffs_dst, coeffs_dst,
+ remainder));
for (n = 0; n < remainder; n++)
coeffs_dst[n] *= sq;
}
@@ -1378,8 +1378,8 @@ 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(avpriv_scalarproduct_float_c(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],
diff --git a/libavutil/Makefile b/libavutil/Makefile
index b03c50444f..6fe92aa1c9 100644
--- a/libavutil/Makefile
+++ b/libavutil/Makefile
@@ -140,6 +140,7 @@ OBJS = adler32.o \
file_open.o \
float_dsp.o \
float2half.o \
+ float_scalarproduct.o \
film_grain_params.o \
fixed_dsp.o \
frame.o \
diff --git a/libavutil/float_dsp.c b/libavutil/float_dsp.c
index 08bbc85e3e..f38ad565cf 100644
--- a/libavutil/float_dsp.c
+++ b/libavutil/float_dsp.c
@@ -121,17 +121,6 @@ static void butterflies_float_c(float *restrict v1, float *restrict v2,
}
}
-float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len)
-{
- float p = 0.0;
- int i;
-
- for (i = 0; i < len; i++)
- p += v1[i] * v2[i];
-
- return p;
-}
-
double ff_scalarproduct_double_c(const double *v1, const double *v2,
size_t len)
{
@@ -159,7 +148,7 @@ av_cold AVFloatDSPContext *avpriv_float_dsp_alloc(int bit_exact)
fdsp->vector_fmul_add = vector_fmul_add_c;
fdsp->vector_fmul_reverse = vector_fmul_reverse_c;
fdsp->butterflies_float = butterflies_float_c;
- fdsp->scalarproduct_float = avpriv_scalarproduct_float_c;
+ fdsp->scalarproduct_float = ff_scalarproduct_float_c;
fdsp->scalarproduct_double = ff_scalarproduct_double_c;
#if ARCH_AARCH64
diff --git a/libavutil/float_dsp.h b/libavutil/float_dsp.h
index a99edc39bb..ab34277c20 100644
--- a/libavutil/float_dsp.h
+++ b/libavutil/float_dsp.h
@@ -215,7 +215,7 @@ typedef struct AVFloatDSPContext {
*
* @return sum of elementwise products
*/
-float avpriv_scalarproduct_float_c(const float *v1, const float *v2, int len);
+float ff_scalarproduct_float_c(const float *v1, const float *v2, int len);
/**
* Return the scalar product of two vectors of doubles.
diff --git a/libavutil/float_scalarproduct.c b/libavutil/float_scalarproduct.c
new file mode 100644
index 0000000000..e95e67fde1
--- /dev/null
+++ b/libavutil/float_scalarproduct.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005 Balatoni Denes
+ * Copyright 2006 Loren Merritt
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "float_dsp.h"
+
+float ff_scalarproduct_float_c(const float *v1, const float *v2, int len)
+{
+ float p = 0.0;
+
+ for (int i = 0; i < len; i++)
+ p += v1[i] * v2[i];
+
+ return p;
+}
More information about the ffmpeg-cvslog
mailing list