summaryrefslogtreecommitdiff
path: root/apps/codecs/libwmapro/avfft.h
diff options
context:
space:
mode:
authorMohamed Tarek <mt@rockbox.org>2010-04-30 11:11:56 +0000
committerMohamed Tarek <mt@rockbox.org>2010-04-30 11:11:56 +0000
commitcf43e5083b9e0f87de262ea31fd8067225ebfcda (patch)
tree073e6f4cd9561564d85e410a35432e1f4ead5b11 /apps/codecs/libwmapro/avfft.h
parentbc3c5c16571487bf71fed8c22b30ee40481e156e (diff)
downloadrockbox-cf43e5083b9e0f87de262ea31fd8067225ebfcda.tar.gz
rockbox-cf43e5083b9e0f87de262ea31fd8067225ebfcda.zip
Add libwmapro to apps/codecs. These files comprise a set of unmodified files needed from ffmpeg's libavcodec and libavutil to compile and use the wma pro decoder standalone. The files were taken from ffmpeg's svn r22886 dated 15 April 2010.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25763 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libwmapro/avfft.h')
-rw-r--r--apps/codecs/libwmapro/avfft.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/apps/codecs/libwmapro/avfft.h b/apps/codecs/libwmapro/avfft.h
new file mode 100644
index 0000000000..623f0a33b5
--- /dev/null
+++ b/apps/codecs/libwmapro/avfft.h
@@ -0,0 +1,99 @@
1/*
2 * This file is part of FFmpeg.
3 *
4 * FFmpeg is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * FFmpeg is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with FFmpeg; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18
19#ifndef AVCODEC_AVFFT_H
20#define AVCODEC_AVFFT_H
21
22typedef float FFTSample;
23
24typedef struct FFTComplex {
25 FFTSample re, im;
26} FFTComplex;
27
28typedef struct FFTContext FFTContext;
29
30/**
31 * Set up a complex FFT.
32 * @param nbits log2 of the length of the input array
33 * @param inverse if 0 perform the forward transform, if 1 perform the inverse
34 */
35FFTContext *av_fft_init(int nbits, int inverse);
36
37/**
38 * Do the permutation needed BEFORE calling ff_fft_calc().
39 */
40void av_fft_permute(FFTContext *s, FFTComplex *z);
41
42/**
43 * Do a complex FFT with the parameters defined in av_fft_init(). The
44 * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
45 */
46void av_fft_calc(FFTContext *s, FFTComplex *z);
47
48void av_fft_end(FFTContext *s);
49
50FFTContext *av_mdct_init(int nbits, int inverse, double scale);
51void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
52void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
53void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
54void av_mdct_end(FFTContext *s);
55
56/* Real Discrete Fourier Transform */
57
58enum RDFTransformType {
59 DFT_R2C,
60 IDFT_C2R,
61 IDFT_R2C,
62 DFT_C2R,
63};
64
65typedef struct RDFTContext RDFTContext;
66
67/**
68 * Set up a real FFT.
69 * @param nbits log2 of the length of the input array
70 * @param trans the type of transform
71 */
72RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
73void av_rdft_calc(RDFTContext *s, FFTSample *data);
74void av_rdft_end(RDFTContext *s);
75
76/* Discrete Cosine Transform */
77
78typedef struct DCTContext DCTContext;
79
80enum DCTTransformType {
81 DCT_II = 0,
82 DCT_III,
83 DCT_I,
84 DST_I,
85};
86
87/**
88 * Sets up DCT.
89 * @param nbits size of the input array:
90 * (1 << nbits) for DCT-II, DCT-III and DST-I
91 * (1 << nbits) + 1 for DCT-I
92 *
93 * @note the first element of the input of DST-I is ignored
94 */
95DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
96void av_dct_calc(DCTContext *s, FFTSample *data);
97void av_dct_end (DCTContext *s);
98
99#endif /* AVCODEC_AVFFT_H */