From 37d4ab77290e4b906df51a7012576e6aec0fc605 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20=27Flameeyes=27=20Petten=C3=B2?= Date: Thu, 31 May 2007 20:29:27 +0200 Subject: Move libfaad in contrib/ and contextually move the plugin in src/libxineadec/. --HG-- rename : src/libfaad/Makefile.am => contrib/libfaad/Makefile.am rename : src/libfaad/analysis.h => contrib/libfaad/analysis.h rename : src/libfaad/bits.c => contrib/libfaad/bits.c rename : src/libfaad/bits.h => contrib/libfaad/bits.h rename : src/libfaad/cfft.c => contrib/libfaad/cfft.c rename : src/libfaad/cfft.h => contrib/libfaad/cfft.h rename : src/libfaad/cfft_tab.h => contrib/libfaad/cfft_tab.h rename : src/libfaad/codebook/Makefile.am => contrib/libfaad/codebook/Makefile.am rename : src/libfaad/codebook/hcb.h => contrib/libfaad/codebook/hcb.h rename : src/libfaad/codebook/hcb_1.h => contrib/libfaad/codebook/hcb_1.h rename : src/libfaad/codebook/hcb_10.h => contrib/libfaad/codebook/hcb_10.h rename : src/libfaad/codebook/hcb_11.h => contrib/libfaad/codebook/hcb_11.h rename : src/libfaad/codebook/hcb_2.h => contrib/libfaad/codebook/hcb_2.h rename : src/libfaad/codebook/hcb_3.h => contrib/libfaad/codebook/hcb_3.h rename : src/libfaad/codebook/hcb_4.h => contrib/libfaad/codebook/hcb_4.h rename : src/libfaad/codebook/hcb_5.h => contrib/libfaad/codebook/hcb_5.h rename : src/libfaad/codebook/hcb_6.h => contrib/libfaad/codebook/hcb_6.h rename : src/libfaad/codebook/hcb_7.h => contrib/libfaad/codebook/hcb_7.h rename : src/libfaad/codebook/hcb_8.h => contrib/libfaad/codebook/hcb_8.h rename : src/libfaad/codebook/hcb_9.h => contrib/libfaad/codebook/hcb_9.h rename : src/libfaad/codebook/hcb_sf.h => contrib/libfaad/codebook/hcb_sf.h rename : src/libfaad/common.c => contrib/libfaad/common.c rename : src/libfaad/common.h => contrib/libfaad/common.h rename : src/libfaad/decoder.c => contrib/libfaad/decoder.c rename : src/libfaad/decoder.h => contrib/libfaad/decoder.h rename : src/libfaad/diff_to_faad2_cvs.patch => contrib/libfaad/diff_to_faad2_cvs.patch rename : src/libfaad/drc.c => contrib/libfaad/drc.c rename : src/libfaad/drc.h => contrib/libfaad/drc.h rename : src/libfaad/drm_dec.c => contrib/libfaad/drm_dec.c rename : src/libfaad/drm_dec.h => contrib/libfaad/drm_dec.h rename : src/libfaad/error.c => contrib/libfaad/error.c rename : src/libfaad/error.h => contrib/libfaad/error.h rename : src/libfaad/faad.h => contrib/libfaad/faad.h rename : src/libfaad/filtbank.c => contrib/libfaad/filtbank.c rename : src/libfaad/filtbank.h => contrib/libfaad/filtbank.h rename : src/libfaad/fixed.h => contrib/libfaad/fixed.h rename : src/libfaad/hcr.c => contrib/libfaad/hcr.c rename : src/libfaad/huffman.c => contrib/libfaad/huffman.c rename : src/libfaad/huffman.h => contrib/libfaad/huffman.h rename : src/libfaad/ic_predict.c => contrib/libfaad/ic_predict.c rename : src/libfaad/ic_predict.h => contrib/libfaad/ic_predict.h rename : src/libfaad/iq_table.h => contrib/libfaad/iq_table.h rename : src/libfaad/is.c => contrib/libfaad/is.c rename : src/libfaad/is.h => contrib/libfaad/is.h rename : src/libfaad/kbd_win.h => contrib/libfaad/kbd_win.h rename : src/libfaad/lt_predict.c => contrib/libfaad/lt_predict.c rename : src/libfaad/lt_predict.h => contrib/libfaad/lt_predict.h rename : src/libfaad/mdct.c => contrib/libfaad/mdct.c rename : src/libfaad/mdct.h => contrib/libfaad/mdct.h rename : src/libfaad/mdct_tab.h => contrib/libfaad/mdct_tab.h rename : src/libfaad/mp4.c => contrib/libfaad/mp4.c rename : src/libfaad/mp4.h => contrib/libfaad/mp4.h rename : src/libfaad/ms.c => contrib/libfaad/ms.c rename : src/libfaad/ms.h => contrib/libfaad/ms.h rename : src/libfaad/output.c => contrib/libfaad/output.c rename : src/libfaad/output.h => contrib/libfaad/output.h rename : src/libfaad/pns.c => contrib/libfaad/pns.c rename : src/libfaad/pns.h => contrib/libfaad/pns.h rename : src/libfaad/ps_dec.c => contrib/libfaad/ps_dec.c rename : src/libfaad/ps_dec.h => contrib/libfaad/ps_dec.h rename : src/libfaad/ps_syntax.c => contrib/libfaad/ps_syntax.c rename : src/libfaad/ps_tables.h => contrib/libfaad/ps_tables.h rename : src/libfaad/pulse.c => contrib/libfaad/pulse.c rename : src/libfaad/pulse.h => contrib/libfaad/pulse.h rename : src/libfaad/rvlc.c => contrib/libfaad/rvlc.c rename : src/libfaad/rvlc.h => contrib/libfaad/rvlc.h rename : src/libfaad/sbr_dct.c => contrib/libfaad/sbr_dct.c rename : src/libfaad/sbr_dct.h => contrib/libfaad/sbr_dct.h rename : src/libfaad/sbr_dec.c => contrib/libfaad/sbr_dec.c rename : src/libfaad/sbr_dec.h => contrib/libfaad/sbr_dec.h rename : src/libfaad/sbr_e_nf.c => contrib/libfaad/sbr_e_nf.c rename : src/libfaad/sbr_e_nf.h => contrib/libfaad/sbr_e_nf.h rename : src/libfaad/sbr_fbt.c => contrib/libfaad/sbr_fbt.c rename : src/libfaad/sbr_fbt.h => contrib/libfaad/sbr_fbt.h rename : src/libfaad/sbr_hfadj.c => contrib/libfaad/sbr_hfadj.c rename : src/libfaad/sbr_hfadj.h => contrib/libfaad/sbr_hfadj.h rename : src/libfaad/sbr_hfgen.c => contrib/libfaad/sbr_hfgen.c rename : src/libfaad/sbr_hfgen.h => contrib/libfaad/sbr_hfgen.h rename : src/libfaad/sbr_huff.c => contrib/libfaad/sbr_huff.c rename : src/libfaad/sbr_huff.h => contrib/libfaad/sbr_huff.h rename : src/libfaad/sbr_noise.h => contrib/libfaad/sbr_noise.h rename : src/libfaad/sbr_qmf.c => contrib/libfaad/sbr_qmf.c rename : src/libfaad/sbr_qmf.h => contrib/libfaad/sbr_qmf.h rename : src/libfaad/sbr_qmf_c.h => contrib/libfaad/sbr_qmf_c.h rename : src/libfaad/sbr_syntax.c => contrib/libfaad/sbr_syntax.c rename : src/libfaad/sbr_syntax.h => contrib/libfaad/sbr_syntax.h rename : src/libfaad/sbr_tf_grid.c => contrib/libfaad/sbr_tf_grid.c rename : src/libfaad/sbr_tf_grid.h => contrib/libfaad/sbr_tf_grid.h rename : src/libfaad/sine_win.h => contrib/libfaad/sine_win.h rename : src/libfaad/specrec.c => contrib/libfaad/specrec.c rename : src/libfaad/specrec.h => contrib/libfaad/specrec.h rename : src/libfaad/ssr.c => contrib/libfaad/ssr.c rename : src/libfaad/ssr.h => contrib/libfaad/ssr.h rename : src/libfaad/ssr_fb.c => contrib/libfaad/ssr_fb.c rename : src/libfaad/ssr_fb.h => contrib/libfaad/ssr_fb.h rename : src/libfaad/ssr_ipqf.c => contrib/libfaad/ssr_ipqf.c rename : src/libfaad/ssr_ipqf.h => contrib/libfaad/ssr_ipqf.h rename : src/libfaad/ssr_win.h => contrib/libfaad/ssr_win.h rename : src/libfaad/structs.h => contrib/libfaad/structs.h rename : src/libfaad/syntax.c => contrib/libfaad/syntax.c rename : src/libfaad/syntax.h => contrib/libfaad/syntax.h rename : src/libfaad/tns.c => contrib/libfaad/tns.c rename : src/libfaad/tns.h => contrib/libfaad/tns.h rename : src/libfaad/xine_faad_decoder.c => src/libxineadec/xine_faad_decoder.c --- src/libfaad/mdct.c | 298 ----------------------------------------------------- 1 file changed, 298 deletions(-) delete mode 100644 src/libfaad/mdct.c (limited to 'src/libfaad/mdct.c') diff --git a/src/libfaad/mdct.c b/src/libfaad/mdct.c deleted file mode 100644 index 0df3d6aae..000000000 --- a/src/libfaad/mdct.c +++ /dev/null @@ -1,298 +0,0 @@ -/* -** FAAD2 - Freeware Advanced Audio (AAC) Decoder including SBR decoding -** Copyright (C) 2003-2004 M. Bakker, Ahead Software AG, http://www.nero.com -** -** This program is free software; you can redistribute it and/or modify -** it under the terms of the GNU General Public License as published by -** the Free Software Foundation; either version 2 of the License, or -** (at your option) any later version. -** -** This program 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 General Public License for more details. -** -** You should have received a copy of the GNU General Public License -** along with this program; if not, write to the Free Software -** Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -** -** Any non-GPL usage of this software or parts of this software is strictly -** forbidden. -** -** Commercial non-GPL licensing of this software is possible. -** For more info contact Ahead Software through Mpeg4AAClicense@nero.com. -** -** $Id: mdct.c,v 1.11 2005/10/29 23:57:07 tmmm Exp $ -**/ - -/* - * Fast (I)MDCT Implementation using (I)FFT ((Inverse) Fast Fourier Transform) - * and consists of three steps: pre-(I)FFT complex multiplication, complex - * (I)FFT, post-(I)FFT complex multiplication, - * - * As described in: - * P. Duhamel, Y. Mahieux, and J.P. Petit, "A Fast Algorithm for the - * Implementation of Filter Banks Based on 'Time Domain Aliasing - * Cancellation'," IEEE Proc. on ICASSP'91, 1991, pp. 2209-2212. - * - * - * As of April 6th 2002 completely rewritten. - * This (I)MDCT can now be used for any data size n, where n is divisible by 8. - * - */ - -#include "common.h" -#include "structs.h" - -#include -#ifdef _WIN32_WCE -#define assert(x) -#else -#include -#endif - -#include "cfft.h" -#include "mdct.h" -#include "mdct_tab.h" - - -mdct_info *faad_mdct_init(uint16_t N) -{ - mdct_info *mdct = (mdct_info*)faad_malloc(sizeof(mdct_info)); - - assert(N % 8 == 0); - - mdct->N = N; - - /* NOTE: For "small framelengths" in FIXED_POINT the coefficients need to be - * scaled by sqrt("(nearest power of 2) > N" / N) */ - - /* RE(mdct->sincos[k]) = scale*(real_t)(cos(2.0*M_PI*(k+1./8.) / (real_t)N)); - * IM(mdct->sincos[k]) = scale*(real_t)(sin(2.0*M_PI*(k+1./8.) / (real_t)N)); */ - /* scale is 1 for fixed point, sqrt(N) for floating point */ - switch (N) - { - case 2048: mdct->sincos = (complex_t*)mdct_tab_2048; break; - case 256: mdct->sincos = (complex_t*)mdct_tab_256; break; -#ifdef LD_DEC - case 1024: mdct->sincos = (complex_t*)mdct_tab_1024; break; -#endif -#ifdef ALLOW_SMALL_FRAMELENGTH - case 1920: mdct->sincos = (complex_t*)mdct_tab_1920; break; - case 240: mdct->sincos = (complex_t*)mdct_tab_240; break; -#ifdef LD_DEC - case 960: mdct->sincos = (complex_t*)mdct_tab_960; break; -#endif -#endif -#ifdef SSR_DEC - case 512: mdct->sincos = (complex_t*)mdct_tab_512; break; - case 64: mdct->sincos = (complex_t*)mdct_tab_64; break; -#endif - } - - /* initialise fft */ - mdct->cfft = cffti(N/4); - -#ifdef PROFILE - mdct->cycles = 0; - mdct->fft_cycles = 0; -#endif - - return mdct; -} - -void faad_mdct_end(mdct_info *mdct) -{ - if (mdct != NULL) - { -#ifdef PROFILE - printf("MDCT[%.4d]: %I64d cycles\n", mdct->N, mdct->cycles); - printf("CFFT[%.4d]: %I64d cycles\n", mdct->N/4, mdct->fft_cycles); -#endif - - cfftu(mdct->cfft); - - faad_free(mdct); - } -} - -void faad_imdct(mdct_info *mdct, real_t *X_in, real_t *X_out) -{ - uint16_t k; - - complex_t x; -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - real_t scale, b_scale = 0; -#endif -#endif - ALIGN complex_t Z1[512]; - complex_t *sincos = mdct->sincos; - - uint16_t N = mdct->N; - uint16_t N2 = N >> 1; - uint16_t N4 = N >> 2; - uint16_t N8 = N >> 3; - -#ifdef PROFILE - int64_t count1, count2 = faad_get_ts(); -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* detect non-power of 2 */ - if (N & (N-1)) - { - /* adjust scale for non-power of 2 MDCT */ - /* 2048/1920 */ - b_scale = 1; - scale = COEF_CONST(1.0666666666666667); - } -#endif -#endif - - /* pre-IFFT complex multiplication */ - for (k = 0; k < N4; k++) - { - ComplexMult(&IM(Z1[k]), &RE(Z1[k]), - X_in[2*k], X_in[N2 - 1 - 2*k], RE(sincos[k]), IM(sincos[k])); - } - -#ifdef PROFILE - count1 = faad_get_ts(); -#endif - - /* complex IFFT, any non-scaling FFT can be used here */ - cfftb(mdct->cfft, Z1); - -#ifdef PROFILE - count1 = faad_get_ts() - count1; -#endif - - /* post-IFFT complex multiplication */ - for (k = 0; k < N4; k++) - { - RE(x) = RE(Z1[k]); - IM(x) = IM(Z1[k]); - ComplexMult(&IM(Z1[k]), &RE(Z1[k]), - IM(x), RE(x), RE(sincos[k]), IM(sincos[k])); - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* non-power of 2 MDCT scaling */ - if (b_scale) - { - RE(Z1[k]) = MUL_C(RE(Z1[k]), scale); - IM(Z1[k]) = MUL_C(IM(Z1[k]), scale); - } -#endif -#endif - } - - /* reordering */ - for (k = 0; k < N8; k+=2) - { - X_out[ 2*k] = IM(Z1[N8 + k]); - X_out[ 2 + 2*k] = IM(Z1[N8 + 1 + k]); - - X_out[ 1 + 2*k] = -RE(Z1[N8 - 1 - k]); - X_out[ 3 + 2*k] = -RE(Z1[N8 - 2 - k]); - - X_out[N4 + 2*k] = RE(Z1[ k]); - X_out[N4 + + 2 + 2*k] = RE(Z1[ 1 + k]); - - X_out[N4 + 1 + 2*k] = -IM(Z1[N4 - 1 - k]); - X_out[N4 + 3 + 2*k] = -IM(Z1[N4 - 2 - k]); - - X_out[N2 + 2*k] = RE(Z1[N8 + k]); - X_out[N2 + + 2 + 2*k] = RE(Z1[N8 + 1 + k]); - - X_out[N2 + 1 + 2*k] = -IM(Z1[N8 - 1 - k]); - X_out[N2 + 3 + 2*k] = -IM(Z1[N8 - 2 - k]); - - X_out[N2 + N4 + 2*k] = -IM(Z1[ k]); - X_out[N2 + N4 + 2 + 2*k] = -IM(Z1[ 1 + k]); - - X_out[N2 + N4 + 1 + 2*k] = RE(Z1[N4 - 1 - k]); - X_out[N2 + N4 + 3 + 2*k] = RE(Z1[N4 - 2 - k]); - } - -#ifdef PROFILE - count2 = faad_get_ts() - count2; - mdct->fft_cycles += count1; - mdct->cycles += (count2 - count1); -#endif -} - -#ifdef LTP_DEC -void faad_mdct(mdct_info *mdct, real_t *X_in, real_t *X_out) -{ - uint16_t k; - - complex_t x; - ALIGN complex_t Z1[512]; - complex_t *sincos = mdct->sincos; - - uint16_t N = mdct->N; - uint16_t N2 = N >> 1; - uint16_t N4 = N >> 2; - uint16_t N8 = N >> 3; - -#ifndef FIXED_POINT - real_t scale = REAL_CONST(N); -#else - real_t scale = REAL_CONST(4.0/N); -#endif - -#ifdef ALLOW_SMALL_FRAMELENGTH -#ifdef FIXED_POINT - /* detect non-power of 2 */ - if (N & (N-1)) - { - /* adjust scale for non-power of 2 MDCT */ - /* *= sqrt(2048/1920) */ - scale = MUL_C(scale, COEF_CONST(1.0327955589886444)); - } -#endif -#endif - - /* pre-FFT complex multiplication */ - for (k = 0; k < N8; k++) - { - uint16_t n = k << 1; - RE(x) = X_in[N - N4 - 1 - n] + X_in[N - N4 + n]; - IM(x) = X_in[ N4 + n] - X_in[ N4 - 1 - n]; - - ComplexMult(&RE(Z1[k]), &IM(Z1[k]), - RE(x), IM(x), RE(sincos[k]), IM(sincos[k])); - - RE(Z1[k]) = MUL_R(RE(Z1[k]), scale); - IM(Z1[k]) = MUL_R(IM(Z1[k]), scale); - - RE(x) = X_in[N2 - 1 - n] - X_in[ n]; - IM(x) = X_in[N2 + n] + X_in[N - 1 - n]; - - ComplexMult(&RE(Z1[k + N8]), &IM(Z1[k + N8]), - RE(x), IM(x), RE(sincos[k + N8]), IM(sincos[k + N8])); - - RE(Z1[k + N8]) = MUL_R(RE(Z1[k + N8]), scale); - IM(Z1[k + N8]) = MUL_R(IM(Z1[k + N8]), scale); - } - - /* complex FFT, any non-scaling FFT can be used here */ - cfftf(mdct->cfft, Z1); - - /* post-FFT complex multiplication */ - for (k = 0; k < N4; k++) - { - uint16_t n = k << 1; - ComplexMult(&RE(x), &IM(x), - RE(Z1[k]), IM(Z1[k]), RE(sincos[k]), IM(sincos[k])); - - X_out[ n] = -RE(x); - X_out[N2 - 1 - n] = IM(x); - X_out[N2 + n] = -IM(x); - X_out[N - 1 - n] = RE(x); - } -} -#endif -- cgit v1.2.3