[FFmpeg-devel] [PATCH 04/30] avcodec: remove deprecated FF_API_AVFFT
James Almer
jamrial at gmail.com
Mon Feb 24 00:06:04 EET 2025
Deprecated since 2023-09-01.
Signed-off-by: James Almer <jamrial at gmail.com>
---
libavcodec/Makefile | 2 -
libavcodec/avfft.c | 268 -------------------------------------
libavcodec/avfft.h | 149 ---------------------
libavcodec/version_major.h | 1 -
4 files changed, 420 deletions(-)
delete mode 100644 libavcodec/avfft.c
delete mode 100644 libavcodec/avfft.h
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 9630074205..9a6393d9a1 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -5,7 +5,6 @@ HEADERS = ac3_parser.h \
adts_parser.h \
avcodec.h \
avdct.h \
- avfft.h \
bsf.h \
codec.h \
codec_desc.h \
@@ -31,7 +30,6 @@ OBJS = ac3_parser.o \
allcodecs.o \
avcodec.o \
avdct.o \
- avfft.o \
packet.o \
bitstream.o \
bitstream_filters.o \
diff --git a/libavcodec/avfft.c b/libavcodec/avfft.c
deleted file mode 100644
index f6787937f6..0000000000
--- a/libavcodec/avfft.c
+++ /dev/null
@@ -1,268 +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
- */
-
-#include <stddef.h>
-#include <string.h>
-
-#include "libavutil/attributes.h"
-#include "libavutil/macros.h"
-#include "libavutil/mem.h"
-#include "libavutil/tx.h"
-#include "avfft.h"
-
-typedef struct AVTXWrapper {
- AVTXContext *ctx;
- av_tx_fn fn;
-
- AVTXContext *ctx2;
- av_tx_fn fn2;
-
- ptrdiff_t stride;
- int len;
- int inv;
-
- float *tmp;
- int out_of_place;
-} AVTXWrapper;
-
-/* FFT */
-
-FFTContext *av_fft_init(int nbits, int inverse)
-{
- int ret;
- float scale = 1.0f;
- AVTXWrapper *s = av_mallocz(sizeof(*s));
- if (!s)
- return NULL;
-
- ret = av_tx_init(&s->ctx, &s->fn, AV_TX_FLOAT_FFT, inverse, 1 << nbits,
- &scale, AV_TX_INPLACE);
- if (ret < 0) {
- av_free(s);
- return NULL;
- }
-
- return (FFTContext *)s;
-}
-
-void av_fft_permute(FFTContext *s, FFTComplex *z)
-{
- /* Empty */
-}
-
-void av_fft_calc(FFTContext *s, FFTComplex *z)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- w->fn(w->ctx, z, (void *)z, sizeof(AVComplexFloat));
-}
-
-av_cold void av_fft_end(FFTContext *s)
-{
- if (s) {
- AVTXWrapper *w = (AVTXWrapper *)s;
- av_tx_uninit(&w->ctx);
- av_tx_uninit(&w->ctx2);
- av_free(w);
- }
-}
-
-FFTContext *av_mdct_init(int nbits, int inverse, double scale)
-{
- int ret;
- float scale_f = scale;
- AVTXWrapper *s = av_mallocz(sizeof(*s));
- if (!s)
- return NULL;
-
- ret = av_tx_init(&s->ctx, &s->fn, AV_TX_FLOAT_MDCT, inverse, 1 << (nbits - 1), &scale_f, 0);
- if (ret < 0) {
- av_free(s);
- return NULL;
- }
-
- if (inverse) {
- ret = av_tx_init(&s->ctx2, &s->fn2, AV_TX_FLOAT_MDCT, inverse, 1 << (nbits - 1),
- &scale_f, AV_TX_FULL_IMDCT);
- if (ret < 0) {
- av_tx_uninit(&s->ctx);
- av_free(s);
- return NULL;
- }
- }
-
- return (FFTContext *)s;
-}
-
-void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- w->fn2(w->ctx2, output, (void *)input, sizeof(float));
-}
-
-void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- w->fn(w->ctx, output, (void *)input, sizeof(float));
-}
-
-void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- w->fn(w->ctx, output, (void *)input, sizeof(float));
-}
-
-av_cold void av_mdct_end(FFTContext *s)
-{
- if (s) {
- AVTXWrapper *w = (AVTXWrapper *)s;
- av_tx_uninit(&w->ctx2);
- av_tx_uninit(&w->ctx);
- av_free(w);
- }
-}
-
-RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans)
-{
- int ret;
- float scale = trans == IDFT_C2R ? 0.5f : 1.0f;
- AVTXWrapper *s;
-
- /* The other 2 modes are unconventional, do not form an orthogonal
- * transform, have never been useful, and so they're not implemented. */
- if (trans != IDFT_C2R && trans != DFT_R2C)
- return NULL;
-
- s = av_mallocz(sizeof(*s));
- if (!s)
- return NULL;
-
- ret = av_tx_init(&s->ctx, &s->fn, AV_TX_FLOAT_RDFT, trans == IDFT_C2R,
- 1 << nbits, &scale, 0x0);
- if (ret < 0) {
- av_free(s);
- return NULL;
- }
-
- s->stride = (trans == DFT_C2R) ? sizeof(AVComplexFloat) : sizeof(float);
- s->len = 1 << nbits;
- s->inv = trans == IDFT_C2R;
-
- s->tmp = av_malloc((s->len + 2)*sizeof(float));
- if (!s->tmp) {
- av_tx_uninit(&s->ctx);
- av_free(s);
- return NULL;
- }
-
- return (RDFTContext *)s;
-}
-
-void av_rdft_calc(RDFTContext *s, FFTSample *data)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- float *src = w->inv ? w->tmp : (float *)data;
- float *dst = w->inv ? (float *)data : w->tmp;
-
- if (w->inv) {
- memcpy(src, data, w->len*sizeof(float));
-
- src[w->len] = src[1];
- src[1] = 0.0f;
- }
-
- w->fn(w->ctx, dst, (void *)src, w->stride);
-
- if (!w->inv) {
- dst[1] = dst[w->len];
- memcpy(data, dst, w->len*sizeof(float));
- }
-}
-
-av_cold void av_rdft_end(RDFTContext *s)
-{
- if (s) {
- AVTXWrapper *w = (AVTXWrapper *)s;
- av_tx_uninit(&w->ctx);
- av_free(w->tmp);
- av_free(w);
- }
-}
-
-DCTContext *av_dct_init(int nbits, enum DCTTransformType inverse)
-{
- int ret;
- const float scale_map[] = {
- [DCT_II] = 0.5f,
- [DCT_III] = 1.0f / (1 << nbits),
- [DCT_I] = 0.5f,
- [DST_I] = 2.0f,
- };
- static const enum AVTXType type_map[] = {
- [DCT_II] = AV_TX_FLOAT_DCT,
- [DCT_III] = AV_TX_FLOAT_DCT,
- [DCT_I] = AV_TX_FLOAT_DCT_I,
- [DST_I] = AV_TX_FLOAT_DST_I,
- };
-
- AVTXWrapper *s = av_mallocz(sizeof(*s));
- if (!s)
- return NULL;
-
- s->len = (1 << nbits);
- s->out_of_place = (inverse == DCT_I) || (inverse == DST_I);
-
- ret = av_tx_init(&s->ctx, &s->fn, type_map[inverse],
- (inverse == DCT_III), 1 << (nbits - (inverse == DCT_III)),
- &scale_map[inverse], s->out_of_place ? 0 : AV_TX_INPLACE);
- if (ret < 0) {
- av_free(s);
- return NULL;
- }
-
- if (s->out_of_place) {
- s->tmp = av_malloc((1 << (nbits + 1))*sizeof(float));
- if (!s->tmp) {
- av_tx_uninit(&s->ctx);
- av_free(s);
- return NULL;
- }
- }
-
- return (DCTContext *)s;
-}
-
-void av_dct_calc(DCTContext *s, FFTSample *data)
-{
- AVTXWrapper *w = (AVTXWrapper *)s;
- if (w->out_of_place) {
- memcpy(w->tmp, data, w->len*sizeof(float));
- w->fn(w->ctx, (void *)data, w->tmp, sizeof(float));
- } else {
- w->fn(w->ctx, data, (void *)data, sizeof(float));
- }
-}
-
-av_cold void av_dct_end(DCTContext *s)
-{
- if (s) {
- AVTXWrapper *w = (AVTXWrapper *)s;
- av_tx_uninit(&w->ctx);
- av_free(w->tmp);
- av_free(w);
- }
-}
diff --git a/libavcodec/avfft.h b/libavcodec/avfft.h
deleted file mode 100644
index e3a0da1eb9..0000000000
--- a/libavcodec/avfft.h
+++ /dev/null
@@ -1,149 +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 AVCODEC_AVFFT_H
-#define AVCODEC_AVFFT_H
-
-#include "libavutil/attributes.h"
-#include "version_major.h"
-#if FF_API_AVFFT
-
-/**
- * @file
- * @ingroup lavc_fft
- * FFT functions
- */
-
-/**
- * @defgroup lavc_fft FFT functions
- * @ingroup lavc_misc
- *
- * @{
- */
-
-typedef float FFTSample;
-
-typedef struct FFTComplex {
- FFTSample re, im;
-} FFTComplex;
-
-typedef struct FFTContext FFTContext;
-
-/**
- * Set up a complex FFT.
- * @param nbits log2 of the length of the input array
- * @param inverse if 0 perform the forward transform, if 1 perform the inverse
- * @deprecated use av_tx_init from libavutil/tx.h with a type of AV_TX_FLOAT_FFT
- */
-attribute_deprecated
-FFTContext *av_fft_init(int nbits, int inverse);
-
-/**
- * Do the permutation needed BEFORE calling ff_fft_calc().
- * @deprecated without replacement
- */
-attribute_deprecated
-void av_fft_permute(FFTContext *s, FFTComplex *z);
-
-/**
- * Do a complex FFT with the parameters defined in av_fft_init(). The
- * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
- * @deprecated use the av_tx_fn value returned by av_tx_init, which also does permutation
- */
-attribute_deprecated
-void av_fft_calc(FFTContext *s, FFTComplex *z);
-
-attribute_deprecated
-void av_fft_end(FFTContext *s);
-
-/**
- * @deprecated use av_tx_init from libavutil/tx.h with a type of AV_TX_FLOAT_MDCT,
- * with a flag of AV_TX_FULL_IMDCT for a replacement to av_imdct_calc.
- */
-attribute_deprecated
-FFTContext *av_mdct_init(int nbits, int inverse, double scale);
-attribute_deprecated
-void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
-attribute_deprecated
-void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
-attribute_deprecated
-void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
-attribute_deprecated
-void av_mdct_end(FFTContext *s);
-
-/* Real Discrete Fourier Transform */
-
-enum RDFTransformType {
- DFT_R2C,
- IDFT_C2R,
- IDFT_R2C,
- DFT_C2R,
-};
-
-typedef struct RDFTContext RDFTContext;
-
-/**
- * Set up a real FFT.
- * @param nbits log2 of the length of the input array
- * @param trans the type of transform
- *
- * @deprecated use av_tx_init from libavutil/tx.h with a type of AV_TX_FLOAT_RDFT
- */
-attribute_deprecated
-RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
-attribute_deprecated
-void av_rdft_calc(RDFTContext *s, FFTSample *data);
-attribute_deprecated
-void av_rdft_end(RDFTContext *s);
-
-/* Discrete Cosine Transform */
-
-typedef struct DCTContext DCTContext;
-
-enum DCTTransformType {
- DCT_II = 0,
- DCT_III,
- DCT_I,
- DST_I,
-};
-
-/**
- * Set up DCT.
- *
- * @param nbits size of the input array:
- * (1 << nbits) for DCT-II, DCT-III and DST-I
- * (1 << nbits) + 1 for DCT-I
- * @param type the type of transform
- *
- * @note the first element of the input of DST-I is ignored
- *
- * @deprecated use av_tx_init from libavutil/tx.h with an appropriate type of AV_TX_FLOAT_DCT
- */
-attribute_deprecated
-DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
-attribute_deprecated
-void av_dct_calc(DCTContext *s, FFTSample *data);
-attribute_deprecated
-void av_dct_end (DCTContext *s);
-
-/**
- * @}
- */
-
-#endif /* FF_API_AVFFT */
-#endif /* AVCODEC_AVFFT_H */
diff --git a/libavcodec/version_major.h b/libavcodec/version_major.h
index ee3277cb76..dd92e1fbc5 100644
--- a/libavcodec/version_major.h
+++ b/libavcodec/version_major.h
@@ -39,7 +39,6 @@
#define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 62)
-#define FF_API_AVFFT (LIBAVCODEC_VERSION_MAJOR < 62)
#define FF_API_FF_PROFILE_LEVEL (LIBAVCODEC_VERSION_MAJOR < 62)
#define FF_API_AVCODEC_CLOSE (LIBAVCODEC_VERSION_MAJOR < 62)
#define FF_API_BUFFER_MIN_SIZE (LIBAVCODEC_VERSION_MAJOR < 62)
--
2.48.1
More information about the ffmpeg-devel
mailing list