These windows do not really belong in fft/mdct files and were easily confused with the similarly named tables used by rdft. Signed-off-by: Mans Rullgard <mans@mansr.com>tags/n0.8
| @@ -957,6 +957,7 @@ CONFIG_LIST=" | |||||
| rtpdec | rtpdec | ||||
| runtime_cpudetect | runtime_cpudetect | ||||
| shared | shared | ||||
| sinewin | |||||
| small | small | ||||
| sram | sram | ||||
| static | static | ||||
| @@ -1234,8 +1235,8 @@ mdct_select="fft" | |||||
| rdft_select="fft" | rdft_select="fft" | ||||
| # decoders / encoders / hardware accelerators | # decoders / encoders / hardware accelerators | ||||
| aac_decoder_select="mdct rdft" | |||||
| aac_encoder_select="mdct" | |||||
| aac_decoder_select="mdct rdft sinewin" | |||||
| aac_encoder_select="mdct sinewin" | |||||
| aac_latm_decoder_select="aac_decoder aac_latm_parser" | aac_latm_decoder_select="aac_decoder aac_latm_parser" | ||||
| ac3_decoder_select="mdct ac3_parser" | ac3_decoder_select="mdct ac3_parser" | ||||
| ac3_encoder_select="mdct ac3dsp" | ac3_encoder_select="mdct ac3dsp" | ||||
| @@ -1243,12 +1244,12 @@ ac3_fixed_encoder_select="ac3dsp" | |||||
| alac_encoder_select="lpc" | alac_encoder_select="lpc" | ||||
| amrnb_decoder_select="lsp" | amrnb_decoder_select="lsp" | ||||
| amrwb_decoder_select="lsp" | amrwb_decoder_select="lsp" | ||||
| atrac1_decoder_select="mdct" | |||||
| atrac1_decoder_select="mdct sinewin" | |||||
| atrac3_decoder_select="mdct" | atrac3_decoder_select="mdct" | ||||
| binkaudio_dct_decoder_select="mdct rdft dct" | binkaudio_dct_decoder_select="mdct rdft dct" | ||||
| binkaudio_rdft_decoder_select="mdct rdft" | binkaudio_rdft_decoder_select="mdct rdft" | ||||
| cavs_decoder_select="golomb" | cavs_decoder_select="golomb" | ||||
| cook_decoder_select="mdct" | |||||
| cook_decoder_select="mdct sinewin" | |||||
| cscd_decoder_suggest="zlib" | cscd_decoder_suggest="zlib" | ||||
| dca_decoder_select="mdct" | dca_decoder_select="mdct" | ||||
| dnxhd_encoder_select="aandct" | dnxhd_encoder_select="aandct" | ||||
| @@ -1307,8 +1308,8 @@ msmpeg4v2_decoder_select="h263_decoder" | |||||
| msmpeg4v2_encoder_select="h263_encoder" | msmpeg4v2_encoder_select="h263_encoder" | ||||
| msmpeg4v3_decoder_select="h263_decoder" | msmpeg4v3_decoder_select="h263_decoder" | ||||
| msmpeg4v3_encoder_select="h263_encoder" | msmpeg4v3_encoder_select="h263_encoder" | ||||
| nellymoser_decoder_select="mdct" | |||||
| nellymoser_encoder_select="mdct" | |||||
| nellymoser_decoder_select="mdct sinewin" | |||||
| nellymoser_encoder_select="mdct sinewin" | |||||
| png_decoder_select="zlib" | png_decoder_select="zlib" | ||||
| png_encoder_select="zlib" | png_encoder_select="zlib" | ||||
| qcelp_decoder_select="lsp" | qcelp_decoder_select="lsp" | ||||
| @@ -1332,7 +1333,7 @@ tiff_decoder_suggest="zlib" | |||||
| tiff_encoder_suggest="zlib" | tiff_encoder_suggest="zlib" | ||||
| truehd_decoder_select="mlp_decoder" | truehd_decoder_select="mlp_decoder" | ||||
| tscc_decoder_select="zlib" | tscc_decoder_select="zlib" | ||||
| twinvq_decoder_select="mdct lsp" | |||||
| twinvq_decoder_select="mdct lsp sinewin" | |||||
| vc1_decoder_select="h263_decoder" | vc1_decoder_select="h263_decoder" | ||||
| vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" | vc1_dxva2_hwaccel_deps="dxva2api_h DXVA_PictureParameters_wDecodedPictureIndex" | ||||
| vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" | vc1_dxva2_hwaccel_select="dxva2 vc1_decoder" | ||||
| @@ -1344,12 +1345,12 @@ vp6_decoder_select="huffman" | |||||
| vp6a_decoder_select="vp6_decoder" | vp6a_decoder_select="vp6_decoder" | ||||
| vp6f_decoder_select="vp6_decoder" | vp6f_decoder_select="vp6_decoder" | ||||
| vp8_decoder_select="h264pred" | vp8_decoder_select="h264pred" | ||||
| wmapro_decoder_select="mdct" | |||||
| wmav1_decoder_select="mdct" | |||||
| wmav1_encoder_select="mdct" | |||||
| wmav2_decoder_select="mdct" | |||||
| wmav2_encoder_select="mdct" | |||||
| wmavoice_decoder_select="lsp rdft dct mdct" | |||||
| wmapro_decoder_select="mdct sinewin" | |||||
| wmav1_decoder_select="mdct sinewin" | |||||
| wmav1_encoder_select="mdct sinewin" | |||||
| wmav2_decoder_select="mdct sinewin" | |||||
| wmav2_encoder_select="mdct sinewin" | |||||
| wmavoice_decoder_select="lsp rdft dct mdct sinewin" | |||||
| wmv1_decoder_select="h263_decoder" | wmv1_decoder_select="h263_decoder" | ||||
| wmv1_encoder_select="h263_encoder" | wmv1_encoder_select="h263_encoder" | ||||
| wmv2_decoder_select="h263_decoder" | wmv2_decoder_select="h263_decoder" | ||||
| @@ -42,6 +42,7 @@ OBJS-$(CONFIG_LSP) += lsp.o | |||||
| OBJS-$(CONFIG_MDCT) += mdct.o | OBJS-$(CONFIG_MDCT) += mdct.o | ||||
| RDFT-OBJS-$(CONFIG_HARDCODED_TABLES) += sin_tables.o | RDFT-OBJS-$(CONFIG_HARDCODED_TABLES) += sin_tables.o | ||||
| OBJS-$(CONFIG_RDFT) += rdft.o $(RDFT-OBJS-yes) | OBJS-$(CONFIG_RDFT) += rdft.o $(RDFT-OBJS-yes) | ||||
| OBJS-$(CONFIG_SINEWIN) += sinewin.o | |||||
| OBJS-$(CONFIG_VAAPI) += vaapi.o | OBJS-$(CONFIG_VAAPI) += vaapi.o | ||||
| OBJS-$(CONFIG_VDPAU) += vdpau.o | OBJS-$(CONFIG_VDPAU) += vdpau.o | ||||
| @@ -690,7 +691,7 @@ $(SUBDIR)%_tablegen$(HOSTEXESUF): $(SUBDIR)%_tablegen.c $(SUBDIR)%_tablegen.h $( | |||||
| $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $(filter %.c,$^) $(HOSTLIBS) | $(HOSTCC) $(HOSTCFLAGS) $(HOSTLDFLAGS) -o $@ $(filter %.c,$^) $(HOSTLIBS) | ||||
| GEN_HEADERS = cbrt_tables.h aacps_tables.h aac_tables.h dv_tables.h \ | GEN_HEADERS = cbrt_tables.h aacps_tables.h aac_tables.h dv_tables.h \ | ||||
| mdct_tables.h mpegaudio_tables.h motionpixels_tables.h \ | |||||
| sinewin_tables.h mpegaudio_tables.h motionpixels_tables.h \ | |||||
| pcm_tables.h qdm2_tables.h | pcm_tables.h qdm2_tables.h | ||||
| GEN_HEADERS := $(addprefix $(SUBDIR), $(GEN_HEADERS)) | GEN_HEADERS := $(addprefix $(SUBDIR), $(GEN_HEADERS)) | ||||
| @@ -702,7 +703,7 @@ $(SUBDIR)aacdec.o: $(SUBDIR)cbrt_tables.h | |||||
| $(SUBDIR)aacps.o: $(SUBDIR)aacps_tables.h | $(SUBDIR)aacps.o: $(SUBDIR)aacps_tables.h | ||||
| $(SUBDIR)aactab.o: $(SUBDIR)aac_tables.h | $(SUBDIR)aactab.o: $(SUBDIR)aac_tables.h | ||||
| $(SUBDIR)dv.o: $(SUBDIR)dv_tables.h | $(SUBDIR)dv.o: $(SUBDIR)dv_tables.h | ||||
| $(SUBDIR)mdct.o: $(SUBDIR)mdct_tables.h | |||||
| $(SUBDIR)sinewin.o: $(SUBDIR)sinewin_tables.h | |||||
| $(SUBDIR)mpegaudiodec.o: $(SUBDIR)mpegaudio_tables.h | $(SUBDIR)mpegaudiodec.o: $(SUBDIR)mpegaudio_tables.h | ||||
| $(SUBDIR)mpegaudiodec_float.o: $(SUBDIR)mpegaudio_tables.h | $(SUBDIR)mpegaudiodec_float.o: $(SUBDIR)mpegaudio_tables.h | ||||
| $(SUBDIR)motionpixels.o: $(SUBDIR)motionpixels_tables.h | $(SUBDIR)motionpixels.o: $(SUBDIR)motionpixels_tables.h | ||||
| @@ -88,6 +88,7 @@ | |||||
| #include "fmtconvert.h" | #include "fmtconvert.h" | ||||
| #include "lpc.h" | #include "lpc.h" | ||||
| #include "kbdwin.h" | #include "kbdwin.h" | ||||
| #include "sinewin.h" | |||||
| #include "aac.h" | #include "aac.h" | ||||
| #include "aactab.h" | #include "aactab.h" | ||||
| @@ -35,6 +35,7 @@ | |||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "mpeg4audio.h" | #include "mpeg4audio.h" | ||||
| #include "kbdwin.h" | #include "kbdwin.h" | ||||
| #include "sinewin.h" | |||||
| #include "aac.h" | #include "aac.h" | ||||
| #include "aactab.h" | #include "aactab.h" | ||||
| @@ -36,6 +36,7 @@ | |||||
| #include "get_bits.h" | #include "get_bits.h" | ||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "sinewin.h" | |||||
| #include "atrac.h" | #include "atrac.h" | ||||
| #include "atrac1data.h" | #include "atrac1data.h" | ||||
| @@ -54,6 +54,7 @@ | |||||
| #include "bytestream.h" | #include "bytestream.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "libavutil/audioconvert.h" | #include "libavutil/audioconvert.h" | ||||
| #include "sinewin.h" | |||||
| #include "cookdata.h" | #include "cookdata.h" | ||||
| @@ -62,19 +62,16 @@ struct FFTContext { | |||||
| #if CONFIG_HARDCODED_TABLES | #if CONFIG_HARDCODED_TABLES | ||||
| #define COSTABLE_CONST const | #define COSTABLE_CONST const | ||||
| #define SINTABLE_CONST const | #define SINTABLE_CONST const | ||||
| #define SINETABLE_CONST const | |||||
| #else | #else | ||||
| #define COSTABLE_CONST | #define COSTABLE_CONST | ||||
| #define SINTABLE_CONST | #define SINTABLE_CONST | ||||
| #define SINETABLE_CONST | |||||
| #endif | #endif | ||||
| #define COSTABLE(size) \ | #define COSTABLE(size) \ | ||||
| COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2] | COSTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_cos_##size)[size/2] | ||||
| #define SINTABLE(size) \ | #define SINTABLE(size) \ | ||||
| SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2] | SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2] | ||||
| #define SINETABLE(size) \ | |||||
| SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size] | |||||
| extern COSTABLE(16); | extern COSTABLE(16); | ||||
| extern COSTABLE(32); | extern COSTABLE(32); | ||||
| extern COSTABLE(64); | extern COSTABLE(64); | ||||
| @@ -124,27 +121,6 @@ void ff_dct_init_mmx(DCTContext *s); | |||||
| void ff_fft_end(FFTContext *s); | void ff_fft_end(FFTContext *s); | ||||
| /** | |||||
| * Generate a sine window. | |||||
| * @param window pointer to half window | |||||
| * @param n size of half window | |||||
| */ | |||||
| void ff_sine_window_init(float *window, int n); | |||||
| /** | |||||
| * initialize the specified entry of ff_sine_windows | |||||
| */ | |||||
| void ff_init_ff_sine_windows(int index); | |||||
| extern SINETABLE( 32); | |||||
| extern SINETABLE( 64); | |||||
| extern SINETABLE( 128); | |||||
| extern SINETABLE( 256); | |||||
| extern SINETABLE( 512); | |||||
| extern SINETABLE(1024); | |||||
| extern SINETABLE(2048); | |||||
| extern SINETABLE(4096); | |||||
| extern SINETABLE_CONST float * const ff_sine_windows[13]; | |||||
| int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); | int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); | ||||
| void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); | void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); | ||||
| void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); | void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); | ||||
| @@ -41,6 +41,7 @@ | |||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "libavutil/audioconvert.h" | #include "libavutil/audioconvert.h" | ||||
| #include "sinewin.h" | |||||
| #include "imcdata.h" | #include "imcdata.h" | ||||
| @@ -30,8 +30,6 @@ | |||||
| * MDCT/IMDCT transforms. | * MDCT/IMDCT transforms. | ||||
| */ | */ | ||||
| #include "mdct_tablegen.h" | |||||
| /** | /** | ||||
| * init MDCT or IMDCT computation. | * init MDCT or IMDCT computation. | ||||
| */ | */ | ||||
| @@ -39,6 +39,7 @@ | |||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "fmtconvert.h" | #include "fmtconvert.h" | ||||
| #include "sinewin.h" | |||||
| #define ALT_BITSTREAM_READER_LE | #define ALT_BITSTREAM_READER_LE | ||||
| #include "get_bits.h" | #include "get_bits.h" | ||||
| @@ -39,6 +39,7 @@ | |||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "sinewin.h" | |||||
| #define BITSTREAM_WRITER_LE | #define BITSTREAM_WRITER_LE | ||||
| #include "put_bits.h" | #include "put_bits.h" | ||||
| @@ -0,0 +1,20 @@ | |||||
| /* | |||||
| * This file is part of Libav. | |||||
| * | |||||
| * Libav 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. | |||||
| * | |||||
| * Libav 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 Libav; if not, write to the Free Software | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
| */ | |||||
| #include "sinewin.h" | |||||
| #include "sinewin_tablegen.h" | |||||
| @@ -0,0 +1,59 @@ | |||||
| /* | |||||
| * Copyright (c) 2008 Robert Swain | |||||
| * | |||||
| * This file is part of Libav. | |||||
| * | |||||
| * Libav 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. | |||||
| * | |||||
| * Libav 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 Libav; if not, write to the Free Software | |||||
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | |||||
| */ | |||||
| #ifndef AVCODEC_SINEWIN_H | |||||
| #define AVCODEC_SINEWIN_H | |||||
| #include "config.h" | |||||
| #include "libavutil/mem.h" | |||||
| #if CONFIG_HARDCODED_TABLES | |||||
| # define SINETABLE_CONST const | |||||
| #else | |||||
| # define SINETABLE_CONST | |||||
| #endif | |||||
| #define SINETABLE(size) \ | |||||
| SINETABLE_CONST DECLARE_ALIGNED(16, float, ff_sine_##size)[size] | |||||
| /** | |||||
| * Generate a sine window. | |||||
| * @param window pointer to half window | |||||
| * @param n size of half window | |||||
| */ | |||||
| void ff_sine_window_init(float *window, int n); | |||||
| /** | |||||
| * initialize the specified entry of ff_sine_windows | |||||
| */ | |||||
| void ff_init_ff_sine_windows(int index); | |||||
| extern SINETABLE( 32); | |||||
| extern SINETABLE( 64); | |||||
| extern SINETABLE( 128); | |||||
| extern SINETABLE( 256); | |||||
| extern SINETABLE( 512); | |||||
| extern SINETABLE(1024); | |||||
| extern SINETABLE(2048); | |||||
| extern SINETABLE(4096); | |||||
| extern SINETABLE_CONST float * const ff_sine_windows[13]; | |||||
| #endif | |||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Generate a header file for hardcoded MDCT tables | |||||
| * Generate a header file for hardcoded sine windows | |||||
| * | * | ||||
| * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | ||||
| * | * | ||||
| @@ -29,7 +29,7 @@ | |||||
| #ifndef M_PI | #ifndef M_PI | ||||
| #define M_PI 3.14159265358979323846 | #define M_PI 3.14159265358979323846 | ||||
| #endif | #endif | ||||
| #include "mdct_tablegen.h" | |||||
| #include "sinewin_tablegen.h" | |||||
| #include "tableprint.h" | #include "tableprint.h" | ||||
| int main(void) | int main(void) | ||||
| @@ -1,5 +1,5 @@ | |||||
| /* | /* | ||||
| * Header file for hardcoded MDCT tables | |||||
| * Header file for hardcoded sine windows | |||||
| * | * | ||||
| * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de> | ||||
| * | * | ||||
| @@ -36,7 +36,7 @@ SINETABLE(1024); | |||||
| SINETABLE(2048); | SINETABLE(2048); | ||||
| SINETABLE(4096); | SINETABLE(4096); | ||||
| #else | #else | ||||
| #include "libavcodec/mdct_tables.h" | |||||
| #include "libavcodec/sinewin_tables.h" | |||||
| #endif | #endif | ||||
| SINETABLE_CONST float * const ff_sine_windows[] = { | SINETABLE_CONST float * const ff_sine_windows[] = { | ||||
| @@ -24,6 +24,7 @@ | |||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "lsp.h" | #include "lsp.h" | ||||
| #include "sinewin.h" | |||||
| #include <math.h> | #include <math.h> | ||||
| #include <stdint.h> | #include <stdint.h> | ||||
| @@ -20,6 +20,7 @@ | |||||
| */ | */ | ||||
| #include "avcodec.h" | #include "avcodec.h" | ||||
| #include "sinewin.h" | |||||
| #include "wma.h" | #include "wma.h" | ||||
| #include "wmadata.h" | #include "wmadata.h" | ||||
| @@ -92,6 +92,7 @@ | |||||
| #include "put_bits.h" | #include "put_bits.h" | ||||
| #include "wmaprodata.h" | #include "wmaprodata.h" | ||||
| #include "dsputil.h" | #include "dsputil.h" | ||||
| #include "sinewin.h" | |||||
| #include "wma.h" | #include "wma.h" | ||||
| /** current decoder limitations */ | /** current decoder limitations */ | ||||
| @@ -38,6 +38,7 @@ | |||||
| #include "libavutil/lzo.h" | #include "libavutil/lzo.h" | ||||
| #include "avfft.h" | #include "avfft.h" | ||||
| #include "fft.h" | #include "fft.h" | ||||
| #include "sinewin.h" | |||||
| #define MAX_BLOCKS 8 ///< maximum number of blocks per frame | #define MAX_BLOCKS 8 ///< maximum number of blocks per frame | ||||
| #define MAX_LSPS 16 ///< maximum filter order | #define MAX_LSPS 16 ///< maximum filter order | ||||