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 Jul 20 2014 23:05:44 for FFmpeg by
1.8.2