FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
avfft.h
Go to the documentation of this file.
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
22
/**
23
* @file
24
* @ingroup lavc_fft
25
* FFT functions
26
*/
27
28
/**
29
* @defgroup lavc_fft FFT functions
30
* @ingroup lavc_misc
31
*
32
* @{
33
*/
34
35
typedef
float
FFTSample
;
36
37
typedef
struct
FFTComplex
{
38
FFTSample
re
,
im
;
39
}
FFTComplex
;
40
41
typedef
struct
FFTContext
FFTContext
;
42
43
/**
44
* Set up a complex FFT.
45
* @param nbits log2 of the length of the input array
46
* @param inverse if 0 perform the forward transform, if 1 perform the inverse
47
*/
48
FFTContext
*
av_fft_init
(
int
nbits
,
int
inverse
);
49
50
/**
51
* Do the permutation needed BEFORE calling ff_fft_calc().
52
*/
53
void
av_fft_permute
(
FFTContext
*
s
,
FFTComplex
*z);
54
55
/**
56
* Do a complex FFT with the parameters defined in av_fft_init(). The
57
* input data must be permuted before. No 1.0/sqrt(n) normalization is done.
58
*/
59
void
av_fft_calc
(
FFTContext
*
s
,
FFTComplex
*z);
60
61
void
av_fft_end
(
FFTContext
*
s
);
62
63
FFTContext
*
av_mdct_init
(
int
nbits
,
int
inverse
,
double
scale
);
64
void
av_imdct_calc
(
FFTContext
*
s
,
FFTSample
*output,
const
FFTSample
*input);
65
void
av_imdct_half
(
FFTContext
*
s
,
FFTSample
*output,
const
FFTSample
*input);
66
void
av_mdct_calc
(
FFTContext
*
s
,
FFTSample
*output,
const
FFTSample
*input);
67
void
av_mdct_end
(
FFTContext
*
s
);
68
69
/* Real Discrete Fourier Transform */
70
71
enum
RDFTransformType
{
72
DFT_R2C
,
73
IDFT_C2R
,
74
IDFT_R2C
,
75
DFT_C2R
,
76
};
77
78
typedef
struct
RDFTContext
RDFTContext
;
79
80
/**
81
* Set up a real FFT.
82
* @param nbits log2 of the length of the input array
83
* @param trans the type of transform
84
*/
85
RDFTContext
*
av_rdft_init
(
int
nbits
,
enum
RDFTransformType
trans);
86
void
av_rdft_calc
(
RDFTContext
*
s
,
FFTSample
*
data
);
87
void
av_rdft_end
(
RDFTContext
*
s
);
88
89
/* Discrete Cosine Transform */
90
91
typedef
struct
DCTContext
DCTContext
;
92
93
enum
DCTTransformType
{
94
DCT_II
= 0,
95
DCT_III
,
96
DCT_I
,
97
DST_I
,
98
};
99
100
/**
101
* Set up DCT.
102
*
103
* @param nbits size of the input array:
104
* (1 << nbits) for DCT-II, DCT-III and DST-I
105
* (1 << nbits) + 1 for DCT-I
106
* @param type the type of transform
107
*
108
* @note the first element of the input of DST-I is ignored
109
*/
110
DCTContext
*
av_dct_init
(
int
nbits
,
enum
DCTTransformType
type
);
111
void
av_dct_calc
(
DCTContext
*
s
,
FFTSample
*
data
);
112
void
av_dct_end
(
DCTContext
*
s
);
113
114
/**
115
* @}
116
*/
117
118
#endif
/* AVCODEC_AVFFT_H */
Generated on Sun Mar 23 2014 23:49:52 for FFmpeg by
1.8.2