annotate avfft.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents fdafbcef52f5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11392
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
1 /*
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
2 * This file is part of FFmpeg.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
3 *
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
4 * FFmpeg is free software; you can redistribute it and/or
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
5 * modify it under the terms of the GNU Lesser General Public
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
6 * License as published by the Free Software Foundation; either
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
7 * version 2.1 of the License, or (at your option) any later version.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
8 *
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
9 * FFmpeg is distributed in the hope that it will be useful,
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
12 * Lesser General Public License for more details.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
13 *
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
14 * You should have received a copy of the GNU Lesser General Public
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
15 * License along with FFmpeg; if not, write to the Free Software
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
17 */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
18
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
19 #ifndef AVCODEC_AVFFT_H
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
20 #define AVCODEC_AVFFT_H
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
21
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
22 typedef float FFTSample;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
23
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
24 typedef struct FFTComplex {
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
25 FFTSample re, im;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
26 } FFTComplex;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
27
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
28 typedef struct FFTContext FFTContext;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
29
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
30 /**
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
31 * Set up a complex FFT.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
32 * @param nbits log2 of the length of the input array
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
33 * @param inverse if 0 perform the forward transform, if 1 perform the inverse
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
34 */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
35 FFTContext *av_fft_init(int nbits, int inverse);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
36
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
37 /**
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
38 * Do the permutation needed BEFORE calling ff_fft_calc().
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
39 */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
40 void av_fft_permute(FFTContext *s, FFTComplex *z);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
41
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
42 /**
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
43 * Do a complex FFT with the parameters defined in av_fft_init(). The
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
44 * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
45 */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
46 void av_fft_calc(FFTContext *s, FFTComplex *z);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
47
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
48 void av_fft_end(FFTContext *s);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
49
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
50 FFTContext *av_mdct_init(int nbits, int inverse, double scale);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
51 void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
52 void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
53 void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
54 void av_mdct_end(FFTContext *s);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
55
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
56 /* Real Discrete Fourier Transform */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
57
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
58 enum RDFTransformType {
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
59 DFT_R2C,
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
60 IDFT_C2R,
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
61 IDFT_R2C,
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
62 DFT_C2R,
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
63 };
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
64
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
65 typedef struct RDFTContext RDFTContext;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
66
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
67 /**
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
68 * Set up a real FFT.
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
69 * @param nbits log2 of the length of the input array
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
70 * @param trans the type of transform
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
71 */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
72 RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
73 void av_rdft_calc(RDFTContext *s, FFTSample *data);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
74 void av_rdft_end(RDFTContext *s);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
75
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
76 /* Discrete Cosine Transform */
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
77
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
78 typedef struct DCTContext DCTContext;
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
79
11535
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
80 enum DCTTransformType {
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
81 DCT_II = 0,
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
82 DCT_III,
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
83 DCT_I,
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
84 DST_I,
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
85 };
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
86
11392
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
87 /**
12024
fdafbcef52f5 Fix grammar errors in documentation
mru
parents: 11535
diff changeset
88 * Set up DCT.
11535
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
89 * @param nbits size of the input array:
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
90 * (1 << nbits) for DCT-II, DCT-III and DST-I
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
91 * (1 << nbits) + 1 for DCT-I
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
92 *
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
93 * @note the first element of the input of DST-I is ignored
11392
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
94 */
11535
f468aac92300 Implement the discrete sine/cosine transforms DCT-I and DST-I
vitor
parents: 11392
diff changeset
95 DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
11392
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
96 void av_dct_calc(DCTContext *s, FFTSample *data);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
97 void av_dct_end (DCTContext *s);
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
98
384d803faff4 Create a public API for FFT family of functions
mru
parents:
diff changeset
99 #endif /* AVCODEC_AVFFT_H */