From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id E47D94D70D for ; Sun, 23 Feb 2025 22:07:39 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E0F4068CAB3; Mon, 24 Feb 2025 00:06:56 +0200 (EET) Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0216D68CA8A for ; Mon, 24 Feb 2025 00:06:49 +0200 (EET) Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2fcff77ff9bso2995964a91.0 for ; Sun, 23 Feb 2025 14:06:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740348406; x=1740953206; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lggO7Zq7JZtftm6o1Ye2aQW5YEidG5wEf4ONCYTzkT4=; b=B8TwwGtat4/RwXzPkHVighOjlpzpIpFK+GdPWcsMIKXqsl7LXtZyjqtdAVDwez31Zy 3OSPb5fXN8iQj/iMTgrfSS/qBZPQWQ5+qaSpgjvqDo27zOgMUV7pEG4LdpA4wqud00XY jE7GJ6wZnWvD3pKx+RbS8Zv5zUIqBX171EFjZSmKda0TtXxKzVMqzWb4B7QcUFBvTc8f Ya48o5Jab5nfUcnET9VC19BKTRaIs8zmz211ohaLdfM0HDK9XVAQis4WQIqwoygC6DPs qpH6hU4v/r+6VqU7pU/amwaiqEH0PfdqT14v8ji8ewm/JUNkIEf1uujWliVo4QeYY/Xd gV0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740348406; x=1740953206; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lggO7Zq7JZtftm6o1Ye2aQW5YEidG5wEf4ONCYTzkT4=; b=OshQueBHwYhwZoUGQyovOIYD/9KPlVbJTJ/ZFDzXBEnNjpJdhHwU4r+xORnmb+q4Jn WfX0fB5qQaDDD1+pt6OZXxacO+xXMV/vyeMBGiZvC8gFsS8d8TtsW/xOLFNJbopkVNNe UW2ovwOu8iptTykGaQRZy5IqfR8NKbmt17XXa7RB0Y0WG1F1JRucibf+PCGF+eb1BYbJ OOUlQKux7kKHRB0LXAv/s0T3dwjyR5b4pIjTh9LLwCEbp0iQ4bBtmaudTbfxz4kwa2Sv HI8W6hFMl1xTWrsHZsirO29XUcDIMgItOtGW9Kfxq61YuBe73rse5J1uON/2o+R+mNdW Wyug== X-Gm-Message-State: AOJu0YwrWsYJbP+7nRYSrcy9J5+8JBUBkbcrW9tGtS9W2QEB/+JY9XWq 60+8ZBU6VBvaCOTr2OPM68uMfZNaPfu8M/9xyaSvO6+pKIOHaL5krdSTw96/ X-Gm-Gg: ASbGncvEFDWnoKMn4KI7C90BxBW7s1GV8cCR4DtIL0VrzQusfyPfkvZpq9puKUG837h bRn/mYqnHLsIMqiLTuiwNVaobtumuSUn2eyLcdo1sOeq9hL2VVw1k7OmIrQnm0E08cY69lWMHw5 GLVr1yc5T52NfhhjQ+UmKp0usFN8x5b9Bx1ZokGJHn97nCL4B2Z0WQDlcWXTXLNyLIVAAC+i2Yj MgQ6KUHPSXpXwaE92Z794nK6PxuLW4mNbpME5KW4DxHv/EASatpJua/4Pc+pFaDreq3eXuZlPlE UFXKfGOqdbXsnfyIE/lI3WDaby1S1MtOVBRlLz10UA== X-Google-Smtp-Source: AGHT+IFCkFU2QSfbHOugnfx7fb0LXFqbg3dbBhiHBZsnjiduTg+KMW6gOmv6Qu/g/6Q3nYQwOELWpw== X-Received: by 2002:a17:90b:528b:b0:2ee:fdf3:390d with SMTP id 98e67ed59e1d1-2fce7b27e1emr17677083a91.31.1740348406334; Sun, 23 Feb 2025 14:06:46 -0800 (PST) Received: from localhost.localdomain ([2800:2121:b040:c:b49d:85a5:a7d1:4da6]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2fceb04bf70sm5091848a91.16.2025.02.23.14.06.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 23 Feb 2025 14:06:45 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 Feb 2025 19:06:04 -0300 Message-ID: <20250223220630.18756-5-jamrial@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250223220630.18756-1-jamrial@gmail.com> References: <20250223220630.18756-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/30] avcodec: remove deprecated FF_API_AVFFT X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Deprecated since 2023-09-01. Signed-off-by: James Almer --- 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 -#include - -#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 _______________________________________________ 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".