FFmpeg
Main Page
Related Pages
Modules
Namespaces
Namespace List
Namespace Members
All
Functions
Variables
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
c
d
g
i
o
q
r
s
v
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerations
Enumerator
a
d
e
f
i
j
l
m
n
p
r
s
v
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
l
m
o
p
q
r
s
t
u
v
w
x
y
Enumerations
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Examples
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
libavcodec
mdct_fixed.c
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
#define FFT_FLOAT 0
20
#define FFT_FIXED_32 0
21
#include "
mdct_template.c
"
22
23
/* same as ff_mdct_calcw_c with double-width unscaled output */
24
void
ff_mdct_calcw_c
(
FFTContext
*
s
,
FFTDouble
*
out
,
const
FFTSample
*
input
)
25
{
26
int
i
, j, n, n8, n4, n2, n3;
27
FFTDouble
re
,
im
;
28
const
uint16_t *revtab =
s
->revtab;
29
const
FFTSample
*tcos =
s
->tcos;
30
const
FFTSample
*tsin =
s
->tsin;
31
FFTComplex
*x =
s
->tmp_buf;
32
FFTDComplex
*o = (
FFTDComplex
*)
out
;
33
34
n = 1 <<
s
->mdct_bits;
35
n2 = n >> 1;
36
n4 = n >> 2;
37
n8 = n >> 3;
38
n3 = 3 * n4;
39
40
/* pre rotation */
41
for
(
i
=0;
i
<n8;
i
++) {
42
re
=
RSCALE
(-
input
[2*
i
+n3], -
input
[n3-1-2*
i
]);
43
im
=
RSCALE
(-
input
[n4+2*
i
], +
input
[n4-1-2*
i
]);
44
j = revtab[
i
];
45
CMUL
(x[j].
re
, x[j].
im
,
re
,
im
, -tcos[
i
], tsin[
i
]);
46
47
re
=
RSCALE
(
input
[2*
i
] , -
input
[n2-1-2*
i
]);
48
im
=
RSCALE
(-
input
[n2+2*
i
], -
input
[ n-1-2*
i
]);
49
j = revtab[n8 +
i
];
50
CMUL
(x[j].
re
, x[j].
im
,
re
,
im
, -tcos[n8 +
i
], tsin[n8 +
i
]);
51
}
52
53
s
->fft_calc(
s
, x);
54
55
/* post rotation */
56
for
(
i
=0;
i
<n8;
i
++) {
57
FFTDouble
r0, i0, r1, i1;
58
CMULL
(i1, r0, x[n8-
i
-1].
re
, x[n8-
i
-1].
im
, -tsin[n8-
i
-1], -tcos[n8-
i
-1]);
59
CMULL
(i0, r1, x[n8+
i
].
re
, x[n8+
i
].
im
, -tsin[n8+
i
], -tcos[n8+
i
]);
60
o[n8-
i
-1].
re
= r0;
61
o[n8-
i
-1].
im
= i0;
62
o[n8+
i
].
re
= r1;
63
o[n8+
i
].
im
= i1;
64
}
65
}
out
FILE * out
Definition:
movenc.c:54
im
float im
Definition:
fft.c:82
FFTDComplex
Definition:
fft.h:71
mdct_template.c
s
#define s(width, name)
Definition:
cbs_vp9.c:257
ff_mdct_calcw_c
void ff_mdct_calcw_c(FFTContext *s, FFTDouble *out, const FFTSample *input)
Definition:
mdct_fixed.c:24
RSCALE
#define RSCALE(x, y)
Definition:
mdct_template.c:36
FFTDComplex::re
FFTDouble re
Definition:
fft.h:72
FFTSample
float FFTSample
Definition:
avfft.h:35
CMULL
#define CMULL(dre, dim, are, aim, bre, bim)
Definition:
fft-internal.h:79
FFTDouble
float FFTDouble
Definition:
fft.h:43
input
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some input
Definition:
filter_design.txt:172
FFTContext
Definition:
fft.h:88
i
#define i(width, name, range_min, range_max)
Definition:
cbs_h2645.c:269
FFTDComplex::im
FFTDouble im
Definition:
fft.h:72
CMUL
#define CMUL(dre, dim, are, aim, bre, bim)
Definition:
fft-internal.h:76
FFTComplex
Definition:
avfft.h:37
re
float re
Definition:
fft.c:82
Generated on Wed Aug 24 2022 21:31:21 for FFmpeg by
1.8.17