From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH 00/31] Major library soname bump Date: Sat, 15 Mar 2025 22:50:54 +0100 Message-ID: <AS8P250MB0744A24D36BCFCD66D774F728FDD2@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM> (raw) In-Reply-To: <20250223220630.18756-1-jamrial@gmail.com> [-- Attachment #1: Type: text/plain, Size: 148 bytes --] James Almer: > It's been a year since the last bump, so lets get rid of old deprecated API > in time for ffmpeg 8.0 > Two more patches. - Andreas [-- Attachment #2: 0001-avutil-dict-Unavpriv-avpriv_dict_set_timestamp.patch --] [-- Type: text/x-patch, Size: 10115 bytes --] From 1c0532d20ce6f56902c94913dc6d8b5d7a714de9 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Sat, 15 Mar 2025 22:10:44 +0100 Subject: [PATCH 1/2] avutil/dict: Unavpriv avpriv_dict_set_timestamp() And move it to lavf, its only user. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- libavformat/flvdec.c | 3 +-- libavformat/ifv.c | 3 +-- libavformat/internal.h | 11 +++++++++++ libavformat/matroskadec.c | 3 +-- libavformat/mov.c | 3 +-- libavformat/mux_utils.c | 3 +-- libavformat/mxfdec.c | 3 +-- libavformat/utils.c | 19 +++++++++++++++++++ libavutil/dict.c | 18 ------------------ libavutil/dict_internal.h | 37 ------------------------------------- 10 files changed, 36 insertions(+), 67 deletions(-) delete mode 100644 libavutil/dict_internal.h diff --git a/libavformat/flvdec.c b/libavformat/flvdec.c index c51f64a588..b90ed34b1c 100644 --- a/libavformat/flvdec.c +++ b/libavformat/flvdec.c @@ -28,7 +28,6 @@ #include "libavutil/avstring.h" #include "libavutil/channel_layout.h" #include "libavutil/dict.h" -#include "libavutil/dict_internal.h" #include "libavutil/mem.h" #include "libavutil/opt.h" #include "libavutil/internal.h" @@ -826,7 +825,7 @@ static int amf_parse_object(AVFormatContext *s, AVStream *astream, ) { // timezone is ignored, since there is no easy way to offset the UTC // timestamp into the specified timezone - avpriv_dict_set_timestamp(&s->metadata, key, 1000 * (int64_t)date.milliseconds); + ff_dict_set_timestamp(&s->metadata, key, 1000 * (int64_t)date.milliseconds); } } diff --git a/libavformat/ifv.c b/libavformat/ifv.c index 0cfd2763a9..f0263ed3b4 100644 --- a/libavformat/ifv.c +++ b/libavformat/ifv.c @@ -21,7 +21,6 @@ */ #include "libavutil/channel_layout.h" -#include "libavutil/dict_internal.h" #include "avformat.h" #include "demux.h" #include "internal.h" @@ -96,7 +95,7 @@ static int parse_header(AVFormatContext *s) uint32_t vid_magic; avio_skip(s->pb, 0x34); - avpriv_dict_set_timestamp(&s->metadata, "creation_time", avio_rl32(s->pb) * 1000000LL); + ff_dict_set_timestamp(&s->metadata, "creation_time", avio_rl32(s->pb) * 1000000LL); avio_skip(s->pb, 0x24); ifv->width = avio_rl16(s->pb); diff --git a/libavformat/internal.h b/libavformat/internal.h index b909adf209..1cf162c2bd 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -651,4 +651,15 @@ int ff_match_url_ext(const char *url, const char *extensions); int ff_get_frame_filename(char *buf, int buf_size, const char *path, int64_t number, int flags); +/** + * Set a dictionary value to an ISO-8601 compliant timestamp string. + * + * @param dict pointer to a pointer to a dictionary struct. If *dict is NULL + * a dictionary struct is allocated and put in *dict. + * @param key metadata key + * @param timestamp unix timestamp in microseconds + * @return <0 on error + */ +int ff_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp); + #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index efa3e44c85..d4b7ae112c 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -38,7 +38,6 @@ #include "libavutil/base64.h" #include "libavutil/bprint.h" #include "libavutil/dict.h" -#include "libavutil/dict_internal.h" #include "libavutil/display.h" #include "libavutil/hdr_dynamic_metadata.h" #include "libavutil/intfloat.h" @@ -2137,7 +2136,7 @@ static int matroska_aac_sri(int samplerate) static void matroska_metadata_creation_time(AVDictionary **metadata, int64_t date_utc) { /* Convert to seconds and adjust by number of seconds between 2001-01-01 and Epoch */ - avpriv_dict_set_timestamp(metadata, "creation_time", date_utc / 1000 + 978307200000000LL); + ff_dict_set_timestamp(metadata, "creation_time", date_utc / 1000 + 978307200000000LL); } static int matroska_parse_flac(AVFormatContext *s, diff --git a/libavformat/mov.c b/libavformat/mov.c index 57d9364ea2..cb96521e81 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -32,7 +32,6 @@ #include "libavutil/attributes.h" #include "libavutil/bprint.h" #include "libavutil/channel_layout.h" -#include "libavutil/dict_internal.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/intfloat.h" @@ -1858,7 +1857,7 @@ static void mov_metadata_creation_time(MOVContext *c, AVIOContext *pb, AVDiction return; } - avpriv_dict_set_timestamp(metadata, "creation_time", time * 1000000); + ff_dict_set_timestamp(metadata, "creation_time", time * 1000000); } } diff --git a/libavformat/mux_utils.c b/libavformat/mux_utils.c index ed1242a6a2..86d333dbe7 100644 --- a/libavformat/mux_utils.c +++ b/libavformat/mux_utils.c @@ -20,7 +20,6 @@ */ #include "libavutil/dict.h" -#include "libavutil/dict_internal.h" #include "libavutil/internal.h" #include "libavutil/log.h" #include "libavutil/mem.h" @@ -157,6 +156,6 @@ int ff_standardize_creation_time(AVFormatContext *s) int64_t timestamp; int ret = ff_parse_creation_time_metadata(s, ×tamp, 0); if (ret == 1) - return avpriv_dict_set_timestamp(&s->metadata, "creation_time", timestamp); + return ff_dict_set_timestamp(&s->metadata, "creation_time", timestamp); return ret; } diff --git a/libavformat/mxfdec.c b/libavformat/mxfdec.c index 3b87063c3f..1978b2cec5 100644 --- a/libavformat/mxfdec.c +++ b/libavformat/mxfdec.c @@ -56,7 +56,6 @@ #include "libavcodec/defs.h" #include "libavcodec/internal.h" #include "libavutil/channel_layout.h" -#include "libavutil/dict_internal.h" #include "libavutil/intreadwrite.h" #include "libavutil/parseutils.h" #include "libavutil/timecode.h" @@ -3207,7 +3206,7 @@ static int64_t mxf_timestamp_to_int64(uint64_t timestamp) #define SET_TS_METADATA(pb, name, var, str) do { \ var = avio_rb64(pb); \ - if (var && (ret = avpriv_dict_set_timestamp(&s->metadata, name, mxf_timestamp_to_int64(var))) < 0) \ + if (var && (ret = ff_dict_set_timestamp(&s->metadata, name, mxf_timestamp_to_int64(var))) < 0) \ return ret; \ } while (0) diff --git a/libavformat/utils.c b/libavformat/utils.c index e892e8bde7..eee7b9e0e3 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -20,14 +20,17 @@ */ #include <stdint.h> +#include <time.h> #include "config.h" #include "libavutil/avstring.h" #include "libavutil/bprint.h" +#include "libavutil/dict.h" #include "libavutil/internal.h" #include "libavutil/mem.h" #include "libavutil/time.h" +#include "libavutil/time_internal.h" #include "libavcodec/internal.h" @@ -596,3 +599,19 @@ int ff_bprint_to_codecpar_extradata(AVCodecParameters *par, struct AVBPrint *buf par->extradata_size = buf->len; return 0; } + +int ff_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp) +{ + time_t seconds = timestamp / 1000000; + struct tm *ptm, tmbuf; + ptm = gmtime_r(&seconds, &tmbuf); + if (ptm) { + char buf[32]; + if (!strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", ptm)) + return AVERROR_EXTERNAL; + av_strlcatf(buf, sizeof(buf), ".%06dZ", (int)(timestamp % 1000000)); + return av_dict_set(dict, key, buf, 0); + } else { + return AVERROR_EXTERNAL; + } +} diff --git a/libavutil/dict.c b/libavutil/dict.c index 6fb09399ba..a5fa2d3bfa 100644 --- a/libavutil/dict.c +++ b/libavutil/dict.c @@ -25,10 +25,8 @@ #include "avassert.h" #include "avstring.h" #include "dict.h" -#include "dict_internal.h" #include "error.h" #include "mem.h" -#include "time_internal.h" #include "bprint.h" struct AVDictionary { @@ -274,19 +272,3 @@ int av_dict_get_string(const AVDictionary *m, char **buffer, } return av_bprint_finalize(&bprint, buffer); } - -int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp) -{ - time_t seconds = timestamp / 1000000; - struct tm *ptm, tmbuf; - ptm = gmtime_r(&seconds, &tmbuf); - if (ptm) { - char buf[32]; - if (!strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%S", ptm)) - return AVERROR_EXTERNAL; - av_strlcatf(buf, sizeof(buf), ".%06dZ", (int)(timestamp % 1000000)); - return av_dict_set(dict, key, buf, 0); - } else { - return AVERROR_EXTERNAL; - } -} diff --git a/libavutil/dict_internal.h b/libavutil/dict_internal.h deleted file mode 100644 index 6d5b0dc2b0..0000000000 --- a/libavutil/dict_internal.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * 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 - */ - -#ifndef AVUTIL_DICT_INTERNAL_H -#define AVUTIL_DICT_INTERNAL_H - -#include <stdint.h> - -#include "dict.h" - -/** - * Set a dictionary value to an ISO-8601 compliant timestamp string. - * - * @param dict pointer to a pointer to a dictionary struct. If *dict is NULL - * a dictionary struct is allocated and put in *dict. - * @param key metadata key - * @param timestamp unix timestamp in microseconds - * @return <0 on error - */ -int avpriv_dict_set_timestamp(AVDictionary **dict, const char *key, int64_t timestamp); - -#endif /* AVUTIL_DICT_INTERNAL_H */ -- 2.45.2 [-- Attachment #3: 0002-avutil-float_dsp-Unavpriv-avpriv_scalarproduct_float.patch --] [-- Type: text/x-patch, Size: 15438 bytes --] From 09ebb5dbefcfa588f4021269438674fab631a60b Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> Date: Sat, 15 Mar 2025 22:26:26 +0100 Subject: [PATCH 2/2] avutil/float_dsp: Unavpriv avpriv_scalarproduct_float_c() Not worth the overhead of exporting it. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com> --- 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 | 33 ++++++++++++++++++++++++++++++++ 13 files changed, 83 insertions(+), 40 deletions(-) create mode 100644 libavcodec/float_scalarproduct.c create mode 100644 libavutil/float_scalarproduct.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 3c7043a617..3c2c614f1a 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -64,7 +64,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 a1f89aeb76..e89a5c2bfb 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 b7ed339ab3..a5a92ea5f7 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -139,6 +139,7 @@ OBJS = adler32.o \ file.o \ file_open.o \ float_dsp.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..c7b3b72852 --- /dev/null +++ b/libavutil/float_scalarproduct.c @@ -0,0 +1,33 @@ +/* + * 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; +} + -- 2.45.2 [-- Attachment #4: Type: text/plain, Size: 251 bytes --] _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
prev parent reply other threads:[~2025-03-15 21:51 UTC|newest] Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top 2025-02-23 22:06 James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 01/30] avcodec: remove deprecated FF_API_SUBFRAMES James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 02/30] avcodec: remove deprecated FF_API_TICKS_PER_FRAME James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 03/30] avcodec: remove deprecated FF_API_DROPCHANGED James Almer 2025-02-24 9:44 ` Gyan Doshi 2025-03-15 13:51 ` Gyan Doshi 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 04/30] avcodec: remove deprecated FF_API_AVFFT James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 05/30] avcodec: remove deprecated FF_API_FF_PROFILE_LEVEL James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 06/30] avcodec: remove deprecated FF_API_AVCODEC_CLOSE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 07/30] avcodec: remove deprecated FF_API_BUFFER_MIN_SIZE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 08/30] avcodec: remove deprecated FF_API_VDPAU_ALLOC_GET_SET James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 09/30] avcodec: remove deprecated FF_API_QUALITY_FACTOR James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 10/30] avcodec/version_major: postpone some deprecations until the next bump James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 11/30] avdevice: remove deprecated FF_API_BKTR_DEVICE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 12/30] avdevice: remove deprecated FF_API_OPENGL_DEVICE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 13/30] avdevice: remove deprecated FF_API_SDL2_DEVICE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 14/30] avdevice/version_major: postpone some deprecations until the next bump James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 15/30] avformat: remove deprecated FF_API_LAVF_SHORTEST James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 16/30] avformat: remove deprecated FF_API_ALLOW_FLUSH James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 17/30] avformat: remove deprecated FF_API_AVSTREAM_SIDE_DATA James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 18/30] avformat: remove deprecated FF_API_GET_DUR_ESTIMATE_METHOD James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 19/30] avformat/version_major: postpone some deprecations until the next bump James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 20/30] avfilter: remove deprecated FF_API_LINK_PUBLIC James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 21/30] avfilter/version_major: postpone some deprecations until the next bump James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 22/30] avutil: remove deprecated FF_API_HDR_VIVID_THREE_SPLINE James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 23/30] avutil: remove deprecated FF_API_FRAME_PKT James Almer 2025-03-01 17:29 ` Marton Balint 2025-03-02 0:48 ` James Almer 2025-03-02 18:27 ` Marton Balint 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 24/30] avutil: remove deprecated FF_API_INTERLACED_FRAME James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 25/30] avutil: remove deprecated FF_API_FRAME_KEY James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 26/30] avutil: remove deprecated FF_API_PALETTE_HAS_CHANGED James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 27/30] avutil: remove deprecated FF_API_VULKAN_CONTIGUOUS_MEMORY James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 28/30] avutil: remove deprecated FF_API_H274_FILM_GRAIN_VCS James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 29/30] avutil/version_major: postpone some deprecations until the next bump James Almer 2025-02-23 22:06 ` [FFmpeg-devel] [PATCH 30/30] libs: bump major version for all libraries James Almer 2025-02-25 12:29 ` [FFmpeg-devel] [PATCH] avutil/frame: Port AVFrame.private_ref to RefStruct API Andreas Rheinhardt 2025-02-25 14:31 ` James Almer 2025-03-15 21:50 ` Andreas Rheinhardt [this message]
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=AS8P250MB0744A24D36BCFCD66D774F728FDD2@AS8P250MB0744.EURP250.PROD.OUTLOOK.COM \ --to=andreas.rheinhardt@outlook.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git