Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
01b22147
F
Ffmpeg
项目概览
小白菜888
/
Ffmpeg
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
Ffmpeg
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
01b22147
编写于
9月 20, 2009
作者:
M
Måns Rullgård
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Merge FFTContext and MDCTContext
Originally committed as revision 19931 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
ec129499
变更
22
隐藏空白更改
内联
并排
Showing
22 changed file
with
91 addition
and
99 deletion
+91
-99
libavcodec/aac.h
libavcodec/aac.h
+2
-2
libavcodec/aacenc.h
libavcodec/aacenc.h
+2
-2
libavcodec/ac3dec.h
libavcodec/ac3dec.h
+2
-2
libavcodec/arm/fft_init_arm.c
libavcodec/arm/fft_init_arm.c
+3
-3
libavcodec/arm/mdct_neon.S
libavcodec/arm/mdct_neon.S
+16
-18
libavcodec/atrac1.c
libavcodec/atrac1.c
+2
-2
libavcodec/atrac3.c
libavcodec/atrac3.c
+1
-1
libavcodec/cook.c
libavcodec/cook.c
+1
-1
libavcodec/dca.c
libavcodec/dca.c
+1
-1
libavcodec/dsputil.h
libavcodec/dsputil.h
+19
-25
libavcodec/fft-test.c
libavcodec/fft-test.c
+1
-1
libavcodec/mdct.c
libavcodec/mdct.c
+16
-16
libavcodec/nellymoserdec.c
libavcodec/nellymoserdec.c
+1
-1
libavcodec/nellymoserenc.c
libavcodec/nellymoserenc.c
+1
-1
libavcodec/twinvq.c
libavcodec/twinvq.c
+1
-1
libavcodec/vorbis_dec.c
libavcodec/vorbis_dec.c
+1
-1
libavcodec/vorbis_enc.c
libavcodec/vorbis_enc.c
+1
-1
libavcodec/wma.h
libavcodec/wma.h
+1
-1
libavcodec/wmaprodec.c
libavcodec/wmaprodec.c
+1
-1
libavcodec/x86/fft.h
libavcodec/x86/fft.h
+6
-6
libavcodec/x86/fft_3dn2.c
libavcodec/x86/fft_3dn2.c
+6
-6
libavcodec/x86/fft_sse.c
libavcodec/x86/fft_sse.c
+6
-6
未找到文件。
libavcodec/aac.h
浏览文件 @
01b22147
...
...
@@ -257,8 +257,8 @@ typedef struct {
* @defgroup tables Computed / set up during initialization.
* @{
*/
MDC
TContext
mdct
;
MDC
TContext
mdct_small
;
FF
TContext
mdct
;
FF
TContext
mdct_small
;
DSPContext
dsp
;
int
random_state
;
/** @} */
...
...
libavcodec/aacenc.h
浏览文件 @
01b22147
...
...
@@ -49,8 +49,8 @@ extern AACCoefficientsEncoder ff_aac_coders[];
*/
typedef
struct
AACEncContext
{
PutBitContext
pb
;
MDCTContext
mdct1024
;
///< long (1024 samples) frame transform context
MDCTContext
mdct128
;
///< short (128 samples) frame transform context
FFTContext
mdct1024
;
///< long (1024 samples) frame transform context
FFTContext
mdct128
;
///< short (128 samples) frame transform context
DSPContext
dsp
;
DECLARE_ALIGNED_16
(
FFTSample
,
output
[
2048
]);
///< temporary buffer for MDCT input coefficients
int16_t
*
samples
;
///< saved preprocessed input
...
...
libavcodec/ac3dec.h
浏览文件 @
01b22147
...
...
@@ -146,8 +146,8 @@ typedef struct {
///@defgroup imdct IMDCT
int
block_switch
[
AC3_MAX_CHANNELS
];
///< block switch flags (blksw)
MDCTContext
imdct_512
;
///< for 512 sample IMDCT
MDCTContext
imdct_256
;
///< for 256 sample IMDCT
FFTContext
imdct_512
;
///< for 512 sample IMDCT
FFTContext
imdct_256
;
///< for 256 sample IMDCT
///@}
///@defgroup opt optimization
...
...
libavcodec/arm/fft_init_arm.c
浏览文件 @
01b22147
...
...
@@ -23,9 +23,9 @@
void
ff_fft_permute_neon
(
FFTContext
*
s
,
FFTComplex
*
z
);
void
ff_fft_calc_neon
(
FFTContext
*
s
,
FFTComplex
*
z
);
void
ff_imdct_calc_neon
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_neon
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_calc_neon
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_neon
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_neon
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_calc_neon
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
av_cold
void
ff_fft_init_arm
(
FFTContext
*
s
)
{
...
...
libavcodec/arm/mdct_neon.S
浏览文件 @
01b22147
...
...
@@ -28,10 +28,10 @@ function ff_imdct_half_neon, export=1
push
{
r4
-
r8
,
lr
}
mov
r12
,
#
1
ldr
lr
,
[
r0
,
#
4
]
@
n
bits
ldr
r4
,
[
r0
,
#
8
]
@
tcos
ldr
r5
,
[
r0
,
#
12
]
@
tsin
ldr
r3
,
[
r0
,
#
24
]
@
revtab
ldr
lr
,
[
r0
,
#
28
]
@
mdct_
bits
ldr
r4
,
[
r0
,
#
32
]
@
tcos
ldr
r5
,
[
r0
,
#
36
]
@
tsin
ldr
r3
,
[
r0
,
#
8
]
@
revtab
lsl
r12
,
r12
,
lr
@
n
=
1
<<
nbits
lsr
lr
,
r12
,
#
2
@
n4
=
n
>>
2
add
r7
,
r2
,
r12
,
lsl
#
1
...
...
@@ -73,13 +73,12 @@ function ff_imdct_half_neon, export=1
mov
r4
,
r0
mov
r6
,
r1
add
r0
,
r0
,
#
16
bl
ff_fft_calc_neon
mov
r12
,
#
1
ldr
lr
,
[
r4
,
#
4
]
@
n
bits
ldr
r5
,
[
r4
,
#
12
]
@
tsin
ldr
r4
,
[
r4
,
#
8
]
@
tcos
ldr
lr
,
[
r4
,
#
28
]
@
mdct_
bits
ldr
r5
,
[
r4
,
#
36
]
@
tsin
ldr
r4
,
[
r4
,
#
32
]
@
tcos
lsl
r12
,
r12
,
lr
@
n
=
1
<<
nbits
lsr
lr
,
r12
,
#
3
@
n8
=
n
>>
3
...
...
@@ -134,7 +133,7 @@ function ff_imdct_half_neon, export=1
function
ff_imdct_calc_neon
,
export
=
1
push
{
r4
-
r6
,
lr
}
ldr
r3
,
[
r0
,
#
4
]
ldr
r3
,
[
r0
,
#
28
]
mov
r4
,
#
1
mov
r5
,
r1
lsl
r4
,
r4
,
r3
...
...
@@ -171,10 +170,10 @@ function ff_mdct_calc_neon, export=1
push
{
r4
-
r10
,
lr
}
mov
r12
,
#
1
ldr
lr
,
[
r0
,
#
4
]
@
n
bits
ldr
r4
,
[
r0
,
#
8
]
@
tcos
ldr
r5
,
[
r0
,
#
12
]
@
tsin
ldr
r3
,
[
r0
,
#
24
]
@
revtab
ldr
lr
,
[
r0
,
#
28
]
@
mdct_
bits
ldr
r4
,
[
r0
,
#
32
]
@
tcos
ldr
r5
,
[
r0
,
#
36
]
@
tsin
ldr
r3
,
[
r0
,
#
8
]
@
revtab
lsl
lr
,
r12
,
lr
@
n
=
1
<<
nbits
add
r7
,
r2
,
lr
@
in4u
sub
r9
,
r7
,
#
16
@
in4d
...
...
@@ -224,7 +223,7 @@ function ff_mdct_calc_neon, export=1
vst2.32
{
d6
[
1
],
d7
[
1
]},
[
r10
,:
64
]
mov
r12
,
#
1
ldr
lr
,
[
r0
,
#
4
]
@
n
bits
ldr
lr
,
[
r0
,
#
28
]
@
mdct_
bits
lsl
lr
,
r12
,
lr
@
n
=
1
<<
nbits
sub
r8
,
r2
,
#
16
@
in1d
add
r2
,
r9
,
#
16
@
in0u
...
...
@@ -272,13 +271,12 @@ function ff_mdct_calc_neon, export=1
mov
r4
,
r0
mov
r6
,
r1
add
r0
,
r0
,
#
16
bl
ff_fft_calc_neon
mov
r12
,
#
1
ldr
lr
,
[
r4
,
#
4
]
@
n
bits
ldr
r5
,
[
r4
,
#
12
]
@
tsin
ldr
r4
,
[
r4
,
#
8
]
@
tcos
ldr
lr
,
[
r4
,
#
28
]
@
mdct_
bits
ldr
r5
,
[
r4
,
#
36
]
@
tsin
ldr
r4
,
[
r4
,
#
32
]
@
tcos
lsl
r12
,
r12
,
lr
@
n
=
1
<<
nbits
lsr
lr
,
r12
,
#
3
@
n8
=
n
>>
3
...
...
libavcodec/atrac1.c
浏览文件 @
01b22147
...
...
@@ -79,7 +79,7 @@ typedef struct {
DECLARE_ALIGNED_16
(
float
,
high
[
512
]);
float
*
bands
[
3
];
DECLARE_ALIGNED_16
(
float
,
out_samples
[
AT1_MAX_CHANNELS
][
AT1_SU_SAMPLES
]);
MDCTContext
mdct_ctx
[
3
];
FFTContext
mdct_ctx
[
3
];
int
channels
;
DSPContext
dsp
;
}
AT1Ctx
;
...
...
@@ -94,7 +94,7 @@ static const uint8_t mdct_long_nbits[3] = {7, 7, 8};
static
void
at1_imdct
(
AT1Ctx
*
q
,
float
*
spec
,
float
*
out
,
int
nbits
,
int
rev_spec
)
{
MDC
TContext
*
mdct_context
;
FF
TContext
*
mdct_context
;
int
transf_size
=
1
<<
nbits
;
mdct_context
=
&
q
->
mdct_ctx
[
nbits
-
5
-
(
nbits
>
6
)];
...
...
libavcodec/atrac3.c
浏览文件 @
01b22147
...
...
@@ -123,7 +123,7 @@ static DECLARE_ALIGNED_16(float,mdct_window[512]);
static
VLC
spectral_coeff_tab
[
7
];
static
float
gain_tab1
[
16
];
static
float
gain_tab2
[
31
];
static
MDCTContext
mdct_ctx
;
static
FFTContext
mdct_ctx
;
static
DSPContext
dsp
;
...
...
libavcodec/cook.c
浏览文件 @
01b22147
...
...
@@ -136,7 +136,7 @@ typedef struct cook {
AVLFG
random_state
;
/* transform data */
MDCTContext
mdct_ctx
;
FFTContext
mdct_ctx
;
float
*
mlt_window
;
/* VLC data */
...
...
libavcodec/dca.c
浏览文件 @
01b22147
...
...
@@ -250,7 +250,7 @@ typedef struct {
int
debug_flag
;
///< used for suppressing repeated error messages output
DSPContext
dsp
;
MDC
TContext
imdct
;
FF
TContext
imdct
;
}
DCAContext
;
static
const
uint16_t
dca_vlc_offs
[]
=
{
...
...
libavcodec/dsputil.h
浏览文件 @
01b22147
...
...
@@ -665,8 +665,6 @@ void get_psnr(uint8_t *orig_image[3], uint8_t *coded_image[3],
FFTSample type */
typedef
float
FFTSample
;
struct
MDCTContext
;
typedef
struct
FFTComplex
{
FFTSample
re
,
im
;
}
FFTComplex
;
...
...
@@ -678,11 +676,16 @@ typedef struct FFTContext {
FFTComplex
*
exptab
;
FFTComplex
*
exptab1
;
/* only used by SSE code */
FFTComplex
*
tmp_buf
;
int
mdct_size
;
/* size of MDCT (i.e. number of input data * 2) */
int
mdct_bits
;
/* n = 2^nbits */
/* pre/post rotation tables */
FFTSample
*
tcos
;
FFTSample
*
tsin
;
void
(
*
fft_permute
)(
struct
FFTContext
*
s
,
FFTComplex
*
z
);
void
(
*
fft_calc
)(
struct
FFTContext
*
s
,
FFTComplex
*
z
);
void
(
*
imdct_calc
)(
struct
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
(
*
imdct_half
)(
struct
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
(
*
mdct_calc
)(
struct
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
(
*
imdct_calc
)(
struct
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
(
*
imdct_half
)(
struct
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
(
*
mdct_calc
)(
struct
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
int
split_radix
;
}
FFTContext
;
...
...
@@ -720,28 +723,19 @@ void ff_fft_end(FFTContext *s);
/* MDCT computation */
typedef
struct
MDCTContext
{
int
n
;
/* size of MDCT (i.e. number of input data * 2) */
int
nbits
;
/* n = 2^nbits */
/* pre/post rotation tables */
FFTSample
*
tcos
;
FFTSample
*
tsin
;
FFTContext
fft
;
}
MDCTContext
;
static
inline
void
ff_imdct_calc
(
MDCTContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
static
inline
void
ff_imdct_calc
(
FFTContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
s
->
fft
.
imdct_calc
(
s
,
output
,
input
);
s
->
imdct_calc
(
s
,
output
,
input
);
}
static
inline
void
ff_imdct_half
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
static
inline
void
ff_imdct_half
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
s
->
fft
.
imdct_half
(
s
,
output
,
input
);
s
->
imdct_half
(
s
,
output
,
input
);
}
static
inline
void
ff_mdct_calc
(
MDC
TContext
*
s
,
FFTSample
*
output
,
static
inline
void
ff_mdct_calc
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
s
->
fft
.
mdct_calc
(
s
,
output
,
input
);
s
->
mdct_calc
(
s
,
output
,
input
);
}
/**
...
...
@@ -768,11 +762,11 @@ extern float ff_sine_2048[2048];
extern
float
ff_sine_4096
[
4096
];
extern
float
*
const
ff_sine_windows
[
13
];
int
ff_mdct_init
(
MDC
TContext
*
s
,
int
nbits
,
int
inverse
,
double
scale
);
void
ff_imdct_calc_c
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_c
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_calc_c
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_end
(
MDC
TContext
*
s
);
int
ff_mdct_init
(
FF
TContext
*
s
,
int
nbits
,
int
inverse
,
double
scale
);
void
ff_imdct_calc_c
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_c
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_calc_c
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_mdct_end
(
FF
TContext
*
s
);
/* Real Discrete Fourier Transform */
...
...
libavcodec/fft-test.c
浏览文件 @
01b22147
...
...
@@ -184,7 +184,7 @@ int main(int argc, char **argv)
int
do_mdct
=
0
;
int
do_inverse
=
0
;
FFTContext
s1
,
*
s
=
&
s1
;
MDC
TContext
m1
,
*
m
=
&
m1
;
FF
TContext
m1
,
*
m
=
&
m1
;
int
fft_nbits
,
fft_size
;
double
scale
=
1
.
0
;
AVLFG
prng
;
...
...
libavcodec/mdct.c
浏览文件 @
01b22147
...
...
@@ -72,15 +72,15 @@ av_cold void ff_sine_window_init(float *window, int n) {
/**
* init MDCT or IMDCT computation.
*/
av_cold
int
ff_mdct_init
(
MDC
TContext
*
s
,
int
nbits
,
int
inverse
,
double
scale
)
av_cold
int
ff_mdct_init
(
FF
TContext
*
s
,
int
nbits
,
int
inverse
,
double
scale
)
{
int
n
,
n4
,
i
;
double
alpha
,
theta
;
memset
(
s
,
0
,
sizeof
(
*
s
));
n
=
1
<<
nbits
;
s
->
n
bits
=
nbits
;
s
->
n
=
n
;
s
->
mdct_
bits
=
nbits
;
s
->
mdct_size
=
n
;
n4
=
n
>>
2
;
s
->
tcos
=
av_malloc
(
n4
*
sizeof
(
FFTSample
));
if
(
!
s
->
tcos
)
...
...
@@ -96,7 +96,7 @@ av_cold int ff_mdct_init(MDCTContext *s, int nbits, int inverse, double scale)
s
->
tcos
[
i
]
=
-
cos
(
alpha
)
*
scale
;
s
->
tsin
[
i
]
=
-
sin
(
alpha
)
*
scale
;
}
if
(
ff_fft_init
(
&
s
->
fft
,
s
->
n
bits
-
2
,
inverse
)
<
0
)
if
(
ff_fft_init
(
s
,
s
->
mdct_
bits
-
2
,
inverse
)
<
0
)
goto
fail
;
return
0
;
fail:
...
...
@@ -122,16 +122,16 @@ av_cold int ff_mdct_init(MDCTContext *s, int nbits, int inverse, double scale)
* @param output N/2 samples
* @param input N/2 samples
*/
void
ff_imdct_half_c
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_half_c
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
int
k
,
n8
,
n4
,
n2
,
n
,
j
;
const
uint16_t
*
revtab
=
s
->
fft
.
revtab
;
const
uint16_t
*
revtab
=
s
->
revtab
;
const
FFTSample
*
tcos
=
s
->
tcos
;
const
FFTSample
*
tsin
=
s
->
tsin
;
const
FFTSample
*
in1
,
*
in2
;
FFTComplex
*
z
=
(
FFTComplex
*
)
output
;
n
=
1
<<
s
->
n
bits
;
n
=
1
<<
s
->
mdct_
bits
;
n2
=
n
>>
1
;
n4
=
n
>>
2
;
n8
=
n
>>
3
;
...
...
@@ -145,7 +145,7 @@ void ff_imdct_half_c(MDCTContext *s, FFTSample *output, const FFTSample *input)
in1
+=
2
;
in2
-=
2
;
}
ff_fft_calc
(
&
s
->
fft
,
z
);
ff_fft_calc
(
s
,
z
);
/* post rotation + reordering */
for
(
k
=
0
;
k
<
n8
;
k
++
)
{
...
...
@@ -164,10 +164,10 @@ void ff_imdct_half_c(MDCTContext *s, FFTSample *output, const FFTSample *input)
* @param output N samples
* @param input N/2 samples
*/
void
ff_imdct_calc_c
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_calc_c
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
int
k
;
int
n
=
1
<<
s
->
n
bits
;
int
n
=
1
<<
s
->
mdct_
bits
;
int
n2
=
n
>>
1
;
int
n4
=
n
>>
2
;
...
...
@@ -184,16 +184,16 @@ void ff_imdct_calc_c(MDCTContext *s, FFTSample *output, const FFTSample *input)
* @param input N samples
* @param out N/2 samples
*/
void
ff_mdct_calc_c
(
MDC
TContext
*
s
,
FFTSample
*
out
,
const
FFTSample
*
input
)
void
ff_mdct_calc_c
(
FF
TContext
*
s
,
FFTSample
*
out
,
const
FFTSample
*
input
)
{
int
i
,
j
,
n
,
n8
,
n4
,
n2
,
n3
;
FFTSample
re
,
im
;
const
uint16_t
*
revtab
=
s
->
fft
.
revtab
;
const
uint16_t
*
revtab
=
s
->
revtab
;
const
FFTSample
*
tcos
=
s
->
tcos
;
const
FFTSample
*
tsin
=
s
->
tsin
;
FFTComplex
*
x
=
(
FFTComplex
*
)
out
;
n
=
1
<<
s
->
n
bits
;
n
=
1
<<
s
->
mdct_
bits
;
n2
=
n
>>
1
;
n4
=
n
>>
2
;
n8
=
n
>>
3
;
...
...
@@ -212,7 +212,7 @@ void ff_mdct_calc_c(MDCTContext *s, FFTSample *out, const FFTSample *input)
CMUL
(
x
[
j
].
re
,
x
[
j
].
im
,
re
,
im
,
-
tcos
[
n8
+
i
],
tsin
[
n8
+
i
]);
}
ff_fft_calc
(
&
s
->
fft
,
x
);
ff_fft_calc
(
s
,
x
);
/* post rotation */
for
(
i
=
0
;
i
<
n8
;
i
++
)
{
...
...
@@ -226,9 +226,9 @@ void ff_mdct_calc_c(MDCTContext *s, FFTSample *out, const FFTSample *input)
}
}
av_cold
void
ff_mdct_end
(
MDC
TContext
*
s
)
av_cold
void
ff_mdct_end
(
FF
TContext
*
s
)
{
av_freep
(
&
s
->
tcos
);
av_freep
(
&
s
->
tsin
);
ff_fft_end
(
&
s
->
fft
);
ff_fft_end
(
s
);
}
libavcodec/nellymoserdec.c
浏览文件 @
01b22147
...
...
@@ -50,7 +50,7 @@ typedef struct NellyMoserDecodeContext {
int
add_bias
;
float
scale_bias
;
DSPContext
dsp
;
MDCTContext
imdct_ctx
;
FFTContext
imdct_ctx
;
DECLARE_ALIGNED_16
(
float
,
imdct_out
[
NELLY_BUF_LEN
*
2
]);
}
NellyMoserDecodeContext
;
...
...
libavcodec/nellymoserenc.c
浏览文件 @
01b22147
...
...
@@ -52,7 +52,7 @@ typedef struct NellyMoserEncodeContext {
int
bufsel
;
int
have_saved
;
DSPContext
dsp
;
MDCTContext
mdct_ctx
;
FFTContext
mdct_ctx
;
DECLARE_ALIGNED_16
(
float
,
mdct_out
[
NELLY_SAMPLES
]);
DECLARE_ALIGNED_16
(
float
,
in_buff
[
NELLY_SAMPLES
]);
DECLARE_ALIGNED_16
(
float
,
buf
[
2
][
3
*
NELLY_BUF_LEN
]);
///< sample buffer
...
...
libavcodec/twinvq.c
浏览文件 @
01b22147
...
...
@@ -172,7 +172,7 @@ static const ModeTab mode_44_48 = {
typedef
struct
TwinContext
{
AVCodecContext
*
avctx
;
DSPContext
dsp
;
MDC
TContext
mdct_ctx
[
3
];
FF
TContext
mdct_ctx
[
3
];
const
ModeTab
*
mtab
;
...
...
libavcodec/vorbis_dec.c
浏览文件 @
01b22147
...
...
@@ -128,7 +128,7 @@ typedef struct vorbis_context_s {
GetBitContext
gb
;
DSPContext
dsp
;
MDC
TContext
mdct
[
2
];
FF
TContext
mdct
[
2
];
uint_fast8_t
first_frame
;
uint_fast32_t
version
;
uint_fast8_t
audio_channels
;
...
...
libavcodec/vorbis_enc.c
浏览文件 @
01b22147
...
...
@@ -98,7 +98,7 @@ typedef struct {
int
channels
;
int
sample_rate
;
int
log2_blocksize
[
2
];
MDC
TContext
mdct
[
2
];
FF
TContext
mdct
[
2
];
const
float
*
win
[
2
];
int
have_saved
;
float
*
saved
;
...
...
libavcodec/wma.h
浏览文件 @
01b22147
...
...
@@ -116,7 +116,7 @@ typedef struct WMACodecContext {
WMACoef
coefs1
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
];
DECLARE_ALIGNED_16
(
float
,
coefs
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
]);
DECLARE_ALIGNED_16
(
FFTSample
,
output
[
BLOCK_MAX_SIZE
*
2
]);
MDC
TContext
mdct_ctx
[
BLOCK_NB_SIZES
];
FF
TContext
mdct_ctx
[
BLOCK_NB_SIZES
];
float
*
windows
[
BLOCK_NB_SIZES
];
/* output buffer for one frame and the last for IMDCT windowing */
DECLARE_ALIGNED_16
(
float
,
frame_out
[
MAX_CHANNELS
][
BLOCK_MAX_SIZE
*
2
]);
...
...
libavcodec/wmaprodec.c
浏览文件 @
01b22147
...
...
@@ -166,7 +166,7 @@ typedef struct WMAProDecodeCtx {
uint8_t
frame_data
[
MAX_FRAMESIZE
+
FF_INPUT_BUFFER_PADDING_SIZE
];
///< compressed frame data
PutBitContext
pb
;
///< context for filling the frame_data buffer
MDCTContext
mdct_ctx
[
WMAPRO_BLOCK_SIZES
];
///< MDCT context per block size
FFTContext
mdct_ctx
[
WMAPRO_BLOCK_SIZES
];
///< MDCT context per block size
DECLARE_ALIGNED_16
(
float
,
tmp
[
WMAPRO_BLOCK_MAX_SIZE
]);
///< IMDCT output buffer
float
*
windows
[
WMAPRO_BLOCK_SIZES
];
///< windows for the different block sizes
...
...
libavcodec/x86/fft.h
浏览文件 @
01b22147
...
...
@@ -26,11 +26,11 @@ void ff_fft_calc_sse(FFTContext *s, FFTComplex *z);
void
ff_fft_calc_3dn
(
FFTContext
*
s
,
FFTComplex
*
z
);
void
ff_fft_calc_3dn2
(
FFTContext
*
s
,
FFTComplex
*
z
);
void
ff_imdct_calc_3dn
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_3dn
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_3dn2
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_3dn2
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_sse
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_sse
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_3dn
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_3dn
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_3dn2
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_3dn2
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_calc_sse
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
void
ff_imdct_half_sse
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
);
#endif
libavcodec/x86/fft_3dn2.c
浏览文件 @
01b22147
...
...
@@ -53,14 +53,14 @@ void ff_fft_calc_3dn2(FFTContext *s, FFTComplex *z)
FFSWAP
(
FFTSample
,
z
[
i
].
im
,
z
[
i
+
1
].
re
);
}
void
ff_imdct_half_3dn2
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_half_3dn2
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
x86_reg
j
,
k
;
long
n
=
1
<<
s
->
n
bits
;
long
n
=
1
<<
s
->
mdct_
bits
;
long
n2
=
n
>>
1
;
long
n4
=
n
>>
2
;
long
n8
=
n
>>
3
;
const
uint16_t
*
revtab
=
s
->
fft
.
revtab
;
const
uint16_t
*
revtab
=
s
->
revtab
;
const
FFTSample
*
tcos
=
s
->
tcos
;
const
FFTSample
*
tsin
=
s
->
tsin
;
const
FFTSample
*
in1
,
*
in2
;
...
...
@@ -101,7 +101,7 @@ void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *inpu
);
}
ff_fft_dispatch_3dn2
(
z
,
s
->
fft
.
nbits
);
ff_fft_dispatch_3dn2
(
z
,
s
->
nbits
);
#define CMUL(j,mm0,mm1)\
"movq (%2,"#j",2), %%mm6 \n"\
...
...
@@ -144,10 +144,10 @@ void ff_imdct_half_3dn2(MDCTContext *s, FFTSample *output, const FFTSample *inpu
__asm__
volatile
(
"femms"
);
}
void
ff_imdct_calc_3dn2
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_calc_3dn2
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
x86_reg
j
,
k
;
long
n
=
1
<<
s
->
n
bits
;
long
n
=
1
<<
s
->
mdct_
bits
;
long
n4
=
n
>>
2
;
ff_imdct_half_3dn2
(
s
,
output
+
n4
,
input
);
...
...
libavcodec/x86/fft_sse.c
浏览文件 @
01b22147
...
...
@@ -71,14 +71,14 @@ void ff_fft_permute_sse(FFTContext *s, FFTComplex *z)
memcpy
(
z
,
s
->
tmp_buf
,
n
*
sizeof
(
FFTComplex
));
}
void
ff_imdct_half_sse
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_half_sse
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
av_unused
x86_reg
i
,
j
,
k
,
l
;
long
n
=
1
<<
s
->
n
bits
;
long
n
=
1
<<
s
->
mdct_
bits
;
long
n2
=
n
>>
1
;
long
n4
=
n
>>
2
;
long
n8
=
n
>>
3
;
const
uint16_t
*
revtab
=
s
->
fft
.
revtab
+
n8
;
const
uint16_t
*
revtab
=
s
->
revtab
+
n8
;
const
FFTSample
*
tcos
=
s
->
tcos
;
const
FFTSample
*
tsin
=
s
->
tsin
;
FFTComplex
*
z
=
(
FFTComplex
*
)
output
;
...
...
@@ -129,7 +129,7 @@ void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input
#endif
}
ff_fft_dispatch_sse
(
z
,
s
->
fft
.
nbits
);
ff_fft_dispatch_sse
(
z
,
s
->
nbits
);
/* post rotation + reinterleave + reorder */
...
...
@@ -172,10 +172,10 @@ void ff_imdct_half_sse(MDCTContext *s, FFTSample *output, const FFTSample *input
);
}
void
ff_imdct_calc_sse
(
MDC
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
void
ff_imdct_calc_sse
(
FF
TContext
*
s
,
FFTSample
*
output
,
const
FFTSample
*
input
)
{
x86_reg
j
,
k
;
long
n
=
1
<<
s
->
n
bits
;
long
n
=
1
<<
s
->
mdct_
bits
;
long
n4
=
n
>>
2
;
ff_imdct_half_sse
(
s
,
output
+
n4
,
input
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录