From 91df8ebfda3373fd5ce9706228ba96cf330fa2b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Thu, 11 Apr 2024 09:57:45 +0200 Subject: [PATCH] FFT cleanup --- Common/Common.vcxproj | 4 +- Common/Common.vcxproj.filters | 8 +- ext/at3_standalone/atrac3.c | 2 +- ext/at3_standalone/avcodec.c | 34 -- ext/at3_standalone/avcodec.h | 3 - ext/at3_standalone/bytestream.h | 84 ----- ext/at3_standalone/channel_layout.c | 2 + ext/at3_standalone/compat.h | 9 + ext/at3_standalone/{fft_template.c => fft.c} | 42 +-- ext/at3_standalone/fft.h | 22 +- ext/at3_standalone/get_bits.c | 5 - ext/at3_standalone/get_bits.h | 67 +++- ext/at3_standalone/intfloat.h | 77 ---- ext/at3_standalone/log.h | 363 ------------------- ext/at3_standalone/mathematics.h | 1 - ext/at3_standalone/mdct_template.c | 26 +- 16 files changed, 99 insertions(+), 650 deletions(-) delete mode 100644 ext/at3_standalone/bytestream.h rename ext/at3_standalone/{fft_template.c => fft.c} (91%) delete mode 100644 ext/at3_standalone/intfloat.h delete mode 100644 ext/at3_standalone/log.h diff --git a/Common/Common.vcxproj b/Common/Common.vcxproj index 51862eb690..2b258e8440 100644 --- a/Common/Common.vcxproj +++ b/Common/Common.vcxproj @@ -391,13 +391,11 @@ - - @@ -611,7 +609,7 @@ - + diff --git a/Common/Common.vcxproj.filters b/Common/Common.vcxproj.filters index 8f29b89bd7..d255b9e331 100644 --- a/Common/Common.vcxproj.filters +++ b/Common/Common.vcxproj.filters @@ -542,9 +542,6 @@ ext\at3_standalone - - ext\at3_standalone - ext\at3_standalone @@ -560,9 +557,6 @@ ext\at3_standalone - - ext\at3_standalone - ext\at3_standalone @@ -1074,7 +1068,7 @@ ext\at3_standalone - + ext\at3_standalone diff --git a/ext/at3_standalone/atrac3.c b/ext/at3_standalone/atrac3.c index 4baaeda1fa..f78e1784dd 100644 --- a/ext/at3_standalone/atrac3.c +++ b/ext/at3_standalone/atrac3.c @@ -36,9 +36,9 @@ #include #include #include +#include #include "float_dsp.h" -#include "bytestream.h" #include "fft.h" #include "compat.h" #include "get_bits.h" diff --git a/ext/at3_standalone/avcodec.c b/ext/at3_standalone/avcodec.c index 01e3f53037..19cf6a2b3f 100644 --- a/ext/at3_standalone/avcodec.c +++ b/ext/at3_standalone/avcodec.c @@ -28,9 +28,7 @@ #include "compat.h" #include "channel_layout.h" #include "compat.h" -#include "mathematics.h" #include "avcodec.h" -#include "bytestream.h" #include "mem.h" #include @@ -39,11 +37,6 @@ #include #include -static const AVClass av_codec_context_class = { - .class_name = "AVCodecContext", - .category = AV_CLASS_CATEGORY_DECODER, -}; - AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) { AVCodecContext *avctx = av_mallocz(sizeof(AVCodecContext)); @@ -52,8 +45,6 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) int flags = 0; memset(avctx, 0, sizeof(AVCodecContext)); - avctx->av_class = &av_codec_context_class; - if (codec) { avctx->codec = codec; avctx->codec_id = codec->id; @@ -66,9 +57,6 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec) return NULL; } } - if (codec->priv_class) { - *(const AVClass**)avctx->priv_data = codec->priv_class; - } } return avctx; } @@ -88,17 +76,6 @@ void avcodec_free_context(AVCodecContext **pavctx) int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, void **options) { - if ((codec && avctx->codec && codec != avctx->codec)) { - av_log(avctx, AV_LOG_ERROR, "This AVCodecContext was allocated for %s, " - "but %s passed to avcodec_open2()\n", avctx->codec->name, codec->name); - return AVERROR(EINVAL); - } - if (!codec) - codec = avctx->codec; - - if (avctx->extradata_size < 0 || avctx->extradata_size >= FF_MAX_EXTRADATA_SIZE) - return AVERROR(EINVAL); - int ret = 0; if (codec->priv_data_size > 0) { @@ -108,19 +85,11 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code ret = AVERROR(ENOMEM); goto end; } - if (codec->priv_class) { - *(const AVClass **)avctx->priv_data = codec->priv_class; - } } } else { avctx->priv_data = NULL; } - if (avctx->channels > FF_SANE_NB_CHANNELS) { - ret = AVERROR(EINVAL); - goto free_and_end; - } - avctx->codec = codec; avctx->codec_id = codec->id; @@ -154,9 +123,6 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code ret = AVERROR(EINVAL); goto free_and_end; } - if (codec->priv_data_size > 0 && avctx->priv_data && codec->priv_class) { - av_assert0(*(const AVClass **)avctx->priv_data == codec->priv_class); - } end: diff --git a/ext/at3_standalone/avcodec.h b/ext/at3_standalone/avcodec.h index a2caa92db7..330e3209b0 100644 --- a/ext/at3_standalone/avcodec.h +++ b/ext/at3_standalone/avcodec.h @@ -31,7 +31,6 @@ #include "compat.h" #include "channel_layout.h" #include "mem.h" -#include "log.h" /** * @defgroup libavc Encoding/Decoding Library @@ -294,7 +293,6 @@ typedef struct AVCodecContext { * information on struct for av_log * - set by avcodec_alloc_context3 */ - const AVClass *av_class; const struct AVCodec *codec; #if FF_API_CODEC_NAME /** @@ -488,7 +486,6 @@ typedef struct AVCodec { */ const char *name; enum AVCodecID id; - const AVClass *priv_class; ///< AVClass for the private context /***************************************************************** * No fields below this line are part of the public API. They diff --git a/ext/at3_standalone/bytestream.h b/ext/at3_standalone/bytestream.h deleted file mode 100644 index c1c3348379..0000000000 --- a/ext/at3_standalone/bytestream.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Bytestream functions - * copyright (c) 2006 Baptiste Coudurier - * Copyright (c) 2012 Aneesh Dogra (lionaneesh) - * - * 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_BYTESTREAM_H -#define AVCODEC_BYTESTREAM_H - -#include -#include - -#include "compat.h" -#include "intreadwrite.h" - -typedef struct GetByteContext { - const uint8_t *buffer, *buffer_end, *buffer_start; -} GetByteContext; - -#define DEF(type, name, bytes, read, write) \ -static inline type bytestream_get_ ## name(const uint8_t **b) \ -{ \ - (*b) += bytes; \ - return read(*b - bytes); \ -} \ -static inline type bytestream2_get_ ## name ## u(GetByteContext *g) \ -{ \ - return bytestream_get_ ## name(&g->buffer); \ -} \ -static inline type bytestream2_get_ ## name(GetByteContext *g) \ -{ \ - if (g->buffer_end - g->buffer < bytes) { \ - g->buffer = g->buffer_end; \ - return 0; \ - } \ - return bytestream2_get_ ## name ## u(g); \ -} \ -static inline type bytestream2_peek_ ## name(GetByteContext *g) \ -{ \ - if (g->buffer_end - g->buffer < bytes) \ - return 0; \ - return read(g->buffer); \ -} - -DEF(uint64_t, le64, 8, AV_RL64, AV_WL64) -DEF(unsigned int, le32, 4, AV_RL32, AV_WL32) -DEF(unsigned int, le24, 3, AV_RL24, AV_WL24) -DEF(unsigned int, le16, 2, AV_RL16, AV_WL16) -DEF(uint64_t, be64, 8, AV_RB64, AV_WB64) -DEF(unsigned int, be32, 4, AV_RB32, AV_WB32) -DEF(unsigned int, be24, 3, AV_RB24, AV_WB24) -DEF(unsigned int, be16, 2, AV_RB16, AV_WB16) -DEF(unsigned int, byte, 1, AV_RB8 , AV_WB8) - -# define bytestream2_get_ne16 bytestream2_get_le16 -# define bytestream2_get_ne24 bytestream2_get_le24 -# define bytestream2_get_ne32 bytestream2_get_le32 -# define bytestream2_get_ne64 bytestream2_get_le64 -# define bytestream2_get_ne16u bytestream2_get_le16u -# define bytestream2_get_ne24u bytestream2_get_le24u -# define bytestream2_get_ne32u bytestream2_get_le32u -# define bytestream2_get_ne64u bytestream2_get_le64u -# define bytestream2_peek_ne16 bytestream2_peek_le16 -# define bytestream2_peek_ne24 bytestream2_peek_le24 -# define bytestream2_peek_ne32 bytestream2_peek_le32 -# define bytestream2_peek_ne64 bytestream2_peek_le64 - -#endif /* AVCODEC_BYTESTREAM_H */ diff --git a/ext/at3_standalone/channel_layout.c b/ext/at3_standalone/channel_layout.c index e925e89c6c..f35dbf50f2 100644 --- a/ext/at3_standalone/channel_layout.c +++ b/ext/at3_standalone/channel_layout.c @@ -24,6 +24,8 @@ */ #include +#include +#include #include #include diff --git a/ext/at3_standalone/compat.h b/ext/at3_standalone/compat.h index fb8d4d8798..64217744e3 100644 --- a/ext/at3_standalone/compat.h +++ b/ext/at3_standalone/compat.h @@ -51,6 +51,15 @@ #define FF_SANE_NB_CHANNELS 64U +#define AV_LOG_ERROR 16 +#define AV_LOG_WARNING 24 +#define AV_LOG_INFO 32 +#define AV_LOG_VERBOSE 40 +#define AV_LOG_DEBUG 48 +#define AV_LOG_TRACE 56 + +void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); + /** * Maximum size in bytes of extradata. * This value was chosen such that every bit of the buffer is diff --git a/ext/at3_standalone/fft_template.c b/ext/at3_standalone/fft.c similarity index 91% rename from ext/at3_standalone/fft_template.c rename to ext/at3_standalone/fft.c index 94118d4880..128de80f83 100644 --- a/ext/at3_standalone/fft_template.c +++ b/ext/at3_standalone/fft.c @@ -40,9 +40,9 @@ y = a + b; \ } while (0) -#define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c) -#define ff_imdct_half_c FFT_NAME(ff_imdct_half_c) -#define ff_mdct_calc_c FFT_NAME(ff_mdct_calc_c) +#define ff_imdct_calc_c ff_imdct_calc_c +#define ff_imdct_half_c ff_imdct_half_c +#define ff_mdct_calc_c ff_mdct_calc_c void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); @@ -64,21 +64,21 @@ COSTABLE(16384); COSTABLE(32768); COSTABLE(65536); #endif -COSTABLE_CONST FFTSample * const FFT_NAME(ff_cos_tabs)[] = { +FFTSample * const ff_cos_tabs[] = { NULL, NULL, NULL, NULL, - FFT_NAME(ff_cos_16), - FFT_NAME(ff_cos_32), - FFT_NAME(ff_cos_64), - FFT_NAME(ff_cos_128), - FFT_NAME(ff_cos_256), - FFT_NAME(ff_cos_512), - FFT_NAME(ff_cos_1024), - FFT_NAME(ff_cos_2048), - FFT_NAME(ff_cos_4096), - FFT_NAME(ff_cos_8192), - FFT_NAME(ff_cos_16384), - FFT_NAME(ff_cos_32768), - FFT_NAME(ff_cos_65536), + ff_cos_16, + ff_cos_32, + ff_cos_64, + ff_cos_128, + ff_cos_256, + ff_cos_512, + ff_cos_1024, + ff_cos_2048, + ff_cos_4096, + ff_cos_8192, + ff_cos_16384, + ff_cos_32768, + ff_cos_65536, }; static void fft_permute_c(FFTContext *s, FFTComplex *z); @@ -101,7 +101,7 @@ void ff_init_ff_cos_tabs(int index) int i; int m = 1< +#include "compat.h" + typedef float FFTSample; typedef struct FFTComplex { @@ -47,8 +49,6 @@ typedef struct FFTComplex { typedef struct FFTContext FFTContext; -#define FFT_NAME(x) x - typedef float FFTDouble; typedef struct FFTDComplex { @@ -88,14 +88,8 @@ struct FFTContext { enum mdct_permutation_type mdct_permutation; }; -#if CONFIG_HARDCODED_TABLES -#define COSTABLE_CONST const -#else -#define COSTABLE_CONST -#endif - #define COSTABLE(size) \ - COSTABLE_CONST DECLARE_ALIGNED(32, FFTSample, FFT_NAME(ff_cos_##size))[size/2] + DECLARE_ALIGNED(32, FFTSample, ff_cos_##size)[size/2] extern COSTABLE(16); extern COSTABLE(32); @@ -110,9 +104,7 @@ extern COSTABLE(8192); extern COSTABLE(16384); extern COSTABLE(32768); extern COSTABLE(65536); -extern COSTABLE_CONST FFTSample* const FFT_NAME(ff_cos_tabs)[17]; - -#define ff_init_ff_cos_tabs FFT_NAME(ff_init_ff_cos_tabs) +extern FFTSample* const ff_cos_tabs[17]; /** * Initialize the cosine table in ff_cos_tabs[index] @@ -120,9 +112,6 @@ extern COSTABLE_CONST FFTSample* const FFT_NAME(ff_cos_tabs)[17]; */ void ff_init_ff_cos_tabs(int index); -#define ff_fft_init FFT_NAME(ff_fft_init) -#define ff_fft_end FFT_NAME(ff_fft_end) - /** * Set up a complex FFT. * @param nbits log2 of the length of the input array @@ -132,9 +121,6 @@ int ff_fft_init(FFTContext *s, int nbits, int inverse); void ff_fft_end(FFTContext *s); -#define ff_mdct_init FFT_NAME(ff_mdct_init) -#define ff_mdct_end FFT_NAME(ff_mdct_end) - int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); void ff_mdct_end(FFTContext *s); diff --git a/ext/at3_standalone/get_bits.c b/ext/at3_standalone/get_bits.c index 40edf40d26..34b8a3fd5b 100644 --- a/ext/at3_standalone/get_bits.c +++ b/ext/at3_standalone/get_bits.c @@ -140,7 +140,6 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, if (table_nb_bits > 30) return -1; table_index = alloc_table(vlc, table_size, flags & INIT_VLC_USE_NEW_STATIC); - ff_dlog(NULL, "new table index=%d size=%d\n", table_index, table_size); if (table_index < 0) return table_index; table = (volatile VLC_TYPE (*)[2])&vlc->table[table_index]; @@ -150,7 +149,6 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, n = codes[i].bits; code = codes[i].code; symbol = codes[i].symbol; - ff_dlog(NULL, "i=%d n=%d code=0x%x\n", i, n, code); if (n <= table_nb_bits) { /* no need to add another table */ j = code >> (32 - table_nb_bits); @@ -162,7 +160,6 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, } for (k = 0; k < nb; k++) { int bits = table[j][1]; - ff_dlog(NULL, "%4x: code=%d n=%d\n", j, i, n); if (bits != 0 && bits != n) { av_log(NULL, AV_LOG_ERROR, "incorrect codes\n"); return AVERROR_INVALIDDATA; @@ -192,8 +189,6 @@ static int build_table(VLC *vlc, int table_nb_bits, int nb_codes, subtable_bits = FFMIN(subtable_bits, table_nb_bits); j = (flags & INIT_VLC_LE) ? bitswap_32(code_prefix) >> (32 - table_nb_bits) : code_prefix; table[j][1] = -subtable_bits; - ff_dlog(NULL, "%4x: n=%d (subtable)\n", - j, codes[i].bits + table_nb_bits); index = build_table(vlc, subtable_bits, k-i, codes+i, flags); if (index < 0) return index; diff --git a/ext/at3_standalone/get_bits.h b/ext/at3_standalone/get_bits.h index f7eab05f1a..0a4b581785 100644 --- a/ext/at3_standalone/get_bits.h +++ b/ext/at3_standalone/get_bits.h @@ -18,23 +18,12 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -/** - * @file - * bitstream reader API header. - */ - -#ifndef AVCODEC_GET_BITS_H -#define AVCODEC_GET_BITS_H - +#pragma once #include #include "compat.h" #include "intreadwrite.h" #include "mathematics.h" - /* -#include "libavutil/log.h" -#include "libavutil/avassert.h" -*/ /* * Safe bitstream reading: @@ -474,4 +463,56 @@ static inline int get_bits_left(GetBitContext *gb) return gb->size_in_bits - get_bits_count(gb); } -#endif /* AVCODEC_GET_BITS_H */ +#include "intreadwrite.h" + +typedef struct GetByteContext { + const uint8_t *buffer, *buffer_end, *buffer_start; +} GetByteContext; + +#define DEF(type, name, bytes, read, write) \ +static inline type bytestream_get_ ## name(const uint8_t **b) \ +{ \ + (*b) += bytes; \ + return read(*b - bytes); \ +} \ +static inline type bytestream2_get_ ## name ## u(GetByteContext *g) \ +{ \ + return bytestream_get_ ## name(&g->buffer); \ +} \ +static inline type bytestream2_get_ ## name(GetByteContext *g) \ +{ \ + if (g->buffer_end - g->buffer < bytes) { \ + g->buffer = g->buffer_end; \ + return 0; \ + } \ + return bytestream2_get_ ## name ## u(g); \ +} \ +static inline type bytestream2_peek_ ## name(GetByteContext *g) \ +{ \ + if (g->buffer_end - g->buffer < bytes) \ + return 0; \ + return read(g->buffer); \ +} + +DEF(uint64_t, le64, 8, AV_RL64, AV_WL64) +DEF(unsigned int, le32, 4, AV_RL32, AV_WL32) +DEF(unsigned int, le24, 3, AV_RL24, AV_WL24) +DEF(unsigned int, le16, 2, AV_RL16, AV_WL16) +DEF(uint64_t, be64, 8, AV_RB64, AV_WB64) +DEF(unsigned int, be32, 4, AV_RB32, AV_WB32) +DEF(unsigned int, be24, 3, AV_RB24, AV_WB24) +DEF(unsigned int, be16, 2, AV_RB16, AV_WB16) +DEF(unsigned int, byte, 1, AV_RB8, AV_WB8) + +# define bytestream2_get_ne16 bytestream2_get_le16 +# define bytestream2_get_ne24 bytestream2_get_le24 +# define bytestream2_get_ne32 bytestream2_get_le32 +# define bytestream2_get_ne64 bytestream2_get_le64 +# define bytestream2_get_ne16u bytestream2_get_le16u +# define bytestream2_get_ne24u bytestream2_get_le24u +# define bytestream2_get_ne32u bytestream2_get_le32u +# define bytestream2_get_ne64u bytestream2_get_le64u +# define bytestream2_peek_ne16 bytestream2_peek_le16 +# define bytestream2_peek_ne24 bytestream2_peek_le24 +# define bytestream2_peek_ne32 bytestream2_peek_le32 +# define bytestream2_peek_ne64 bytestream2_peek_le64 diff --git a/ext/at3_standalone/intfloat.h b/ext/at3_standalone/intfloat.h deleted file mode 100644 index 744abec421..0000000000 --- a/ext/at3_standalone/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * 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_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include -#include "compat.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/ext/at3_standalone/log.h b/ext/at3_standalone/log.h deleted file mode 100644 index 9c90097b32..0000000000 --- a/ext/at3_standalone/log.h +++ /dev/null @@ -1,363 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer - * - * 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_LOG_H -#define AVUTIL_LOG_H - -#include -#include "compat.h" - -typedef enum { - AV_CLASS_CATEGORY_NA = 0, - AV_CLASS_CATEGORY_INPUT, - AV_CLASS_CATEGORY_OUTPUT, - AV_CLASS_CATEGORY_MUXER, - AV_CLASS_CATEGORY_DEMUXER, - AV_CLASS_CATEGORY_ENCODER, - AV_CLASS_CATEGORY_DECODER, - AV_CLASS_CATEGORY_FILTER, - AV_CLASS_CATEGORY_BITSTREAM_FILTER, - AV_CLASS_CATEGORY_SWSCALER, - AV_CLASS_CATEGORY_SWRESAMPLER, - AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40, - AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT, - AV_CLASS_CATEGORY_DEVICE_OUTPUT, - AV_CLASS_CATEGORY_DEVICE_INPUT, - AV_CLASS_CATEGORY_NB, ///< not part of ABI/API -}AVClassCategory; - -#define AV_IS_INPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT)) - -#define AV_IS_OUTPUT_DEVICE(category) \ - (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \ - ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT)) - -struct AVOptionRanges; - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * a pointer to the first option specified in the class if any or NULL - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added without requiring major - * version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where log_level_offset is stored. - * 0 means there is no such variable - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an av_log() implementation - * could then leverage to display the parent context. - * The offset can be NULL. - */ - int parent_log_context_offset; - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Return an AVClass corresponding to the next potential - * AVOptions-enabled child. - * - * The difference between child_next and this is that - * child_next iterates over _already existing_ objects, while - * child_class_next iterates over _all possible_ children. - */ - const struct AVClass* (*child_class_next)(const struct AVClass *prev); - - /** - * Category used for visualization (like color) - * This is only set if the category is equal for all objects using this class. - * available since version (51 << 16 | 56 << 8 | 100) - */ - AVClassCategory category; - - /** - * Callback to return the category. - * available since version (51 << 16 | 59 << 8 | 100) - */ - AVClassCategory (*get_category)(void* ctx); - - /** - * Callback to return the supported/allowed ranges. - * available since version (52.12) - */ - int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags); -} AVClass; - -/** - * @addtogroup lavu_log - * - * @{ - * - * @defgroup lavu_log_constants Logging Constants - * - * @{ - */ - -/** - * Print no output. - */ -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -/** - * Standard information. - */ -#define AV_LOG_INFO 32 - -/** - * Detailed information. - */ -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -/** - * Extremely verbose debugging, useful for libav* development. - */ -#define AV_LOG_TRACE 56 - -#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET) - -/** - * @} - */ - -/** - * Sets additional colors for extended debugging sessions. - * @code - av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); - @endcode - * Requires 256color terminal support. Uses outside debugging is not - * recommended. - */ -#define AV_LOG_C(x) ((x) << 8) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct or NULL if general log. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_vlog(void *avcl, int level, const char *fmt, va_list vl); - -/** - * Get the current log level - * - * @see lavu_log_constants - * - * @return Current log level - */ -int av_log_get_level(void); - -/** - * Set the log level - * - * @see lavu_log_constants - * - * @param level Logging level - */ -void av_log_set_level(int level); - -/** - * Set the logging callback - * - * @note The callback must be thread safe, even if the application does not use - * threads itself as some codecs are multithreaded. - * - * @see av_log_default_callback - * - * @param callback A logging function with a compatible signature. - */ -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); - -/** - * Default logging callback - * - * It prints the message to stderr, optionally colorizing it. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_log_default_callback(void *avcl, int level, const char *fmt, - va_list vl); - -/** - * Return the context name - * - * @param ctx The AVClass context - * - * @return The AVClass class_name - */ -const char* av_default_item_name(void* ctx); -AVClassCategory av_default_get_category(void *ptr); - -/** - * Format a line of log the same way as the default callback. - * @param line buffer to receive the formatted line - * @param line_size size of the buffer - * @param print_prefix used to store whether the prefix must be printed; - * must point to a persistent integer initially set to 1 - */ -void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, - char *line, int line_size, int *print_prefix); - -#if FF_API_DLOG -/** - * av_dlog macros - * @deprecated unused - * Useful to print debug messages that shouldn't get compiled in normally. - */ - -#ifdef DEBUG -# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define av_dlog(pctx, ...) do { if (0) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0) -#endif -#endif /* FF_API_DLOG */ - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 - -/** - * Include the log severity in messages originating from codecs. - * - * Results in messages such as: - * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts - */ -#define AV_LOG_PRINT_LEVEL 2 - -void av_log_set_flags(int arg); -int av_log_get_flags(void); - -#ifdef DEBUG -# define ff_dlog(ctx, ...) av_log(ctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define ff_dlog(ctx, ...) do { if (0) av_log(ctx, AV_LOG_DEBUG, __VA_ARGS__); } while (0) -#endif - -/** - * @} - */ - -#endif /* AVUTIL_LOG_H */ diff --git a/ext/at3_standalone/mathematics.h b/ext/at3_standalone/mathematics.h index f44d89d882..5fd4af7a2d 100644 --- a/ext/at3_standalone/mathematics.h +++ b/ext/at3_standalone/mathematics.h @@ -26,7 +26,6 @@ #include #include "compat.h" -#include "intfloat.h" extern const uint32_t ff_inverse[257]; extern const uint8_t ff_sqrt_tab[256]; diff --git a/ext/at3_standalone/mdct_template.c b/ext/at3_standalone/mdct_template.c index 02d4677655..f17dd1c118 100644 --- a/ext/at3_standalone/mdct_template.c +++ b/ext/at3_standalone/mdct_template.c @@ -21,24 +21,10 @@ #include #include -#include "common.h" + #include "mathematics.h" #include "fft.h" - -/** - * @file - * MDCT/IMDCT transforms. - */ - -#if FFT_FLOAT -# define RSCALE(x) (x) -#else -#if FFT_FIXED_32 -# define RSCALE(x) (((x) + 32) >> 6) -#else /* FFT_FIXED_32 */ -# define RSCALE(x) ((x) >> 1) -#endif /* FFT_FIXED_32 */ -#endif +#include "mem.h" /** * init MDCT or IMDCT computation. @@ -174,13 +160,13 @@ void ff_mdct_calc_c(FFTContext *s, FFTSample *out, const FFTSample *input) /* pre rotation */ for(i=0;i