Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
f10524d5
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,发现更多精彩内容 >>
提交
f10524d5
编写于
9月 14, 2011
作者:
J
Justin Ruggles
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ra144: use macro constants to make the code more understandable.
上级
cadd4d33
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
29 addition
and
29 deletion
+29
-29
libavcodec/ra144.c
libavcodec/ra144.c
+20
-20
libavcodec/ra144dec.c
libavcodec/ra144dec.c
+9
-9
未找到文件。
libavcodec/ra144.c
浏览文件 @
f10524d5
...
...
@@ -1544,22 +1544,22 @@ void ff_copy_and_dup(int16_t *target, const int16_t *source, int offset)
int
ff_eval_refl
(
int
*
refl
,
const
int16_t
*
coefs
,
AVCodecContext
*
avctx
)
{
int
b
,
i
,
j
;
int
buffer1
[
10
];
int
buffer2
[
10
];
int
buffer1
[
LPC_ORDER
];
int
buffer2
[
LPC_ORDER
];
int
*
bp1
=
buffer1
;
int
*
bp2
=
buffer2
;
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
buffer2
[
i
]
=
coefs
[
i
];
refl
[
9
]
=
bp2
[
9
];
refl
[
LPC_ORDER
-
1
]
=
bp2
[
LPC_ORDER
-
1
];
if
((
unsigned
)
bp2
[
9
]
+
0x1000
>
0x1fff
)
{
if
((
unsigned
)
bp2
[
LPC_ORDER
-
1
]
+
0x1000
>
0x1fff
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Overflow. Broken sample?
\n
"
);
return
1
;
}
for
(
i
=
8
;
i
>=
0
;
i
--
)
{
for
(
i
=
LPC_ORDER
-
2
;
i
>=
0
;
i
--
)
{
b
=
0x1000
-
((
bp2
[
i
+
1
]
*
bp2
[
i
+
1
])
>>
12
);
if
(
!
b
)
...
...
@@ -1584,12 +1584,12 @@ int ff_eval_refl(int *refl, const int16_t *coefs, AVCodecContext *avctx)
*/
void
ff_eval_coefs
(
int
*
coefs
,
const
int
*
refl
)
{
int
buffer
[
10
];
int
buffer
[
LPC_ORDER
];
int
*
b1
=
buffer
;
int
*
b2
=
coefs
;
int
i
,
j
;
for
(
i
=
0
;
i
<
10
;
i
++
)
{
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
{
b1
[
i
]
=
refl
[
i
]
<<
4
;
for
(
j
=
0
;
j
<
i
;
j
++
)
...
...
@@ -1598,7 +1598,7 @@ void ff_eval_coefs(int *coefs, const int *refl)
FFSWAP
(
int
*
,
b1
,
b2
);
}
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
coefs
[
i
]
>>=
4
;
}
...
...
@@ -1606,7 +1606,7 @@ void ff_int_to_int16(int16_t *out, const int *inp)
{
int
i
;
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
*
out
++
=
*
inp
++
;
}
...
...
@@ -1629,9 +1629,9 @@ unsigned int ff_rms(const int *data)
{
int
i
;
unsigned
int
res
=
0x10000
;
int
b
=
10
;
int
b
=
LPC_ORDER
;
for
(
i
=
0
;
i
<
10
;
i
++
)
{
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
{
res
=
(((
0x1000000
-
data
[
i
]
*
data
[
i
])
>>
12
)
*
res
)
>>
12
;
if
(
res
==
0
)
...
...
@@ -1648,13 +1648,13 @@ unsigned int ff_rms(const int *data)
int
ff_interp
(
RA144Context
*
ractx
,
int16_t
*
out
,
int
a
,
int
copyold
,
int
energy
)
{
int
work
[
10
];
int
work
[
LPC_ORDER
];
int
b
=
NBLOCKS
-
a
;
int
i
;
// Interpolate block coefficients from the this frame's forth block and
// last frame's forth block.
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
out
[
i
]
=
(
a
*
ractx
->
lpc_coef
[
0
][
i
]
+
b
*
ractx
->
lpc_coef
[
1
][
i
])
>>
2
;
if
(
ff_eval_refl
(
work
,
out
,
ractx
->
avctx
))
{
...
...
@@ -1690,7 +1690,7 @@ void ff_subblock_synthesis(RA144Context *ractx, const uint16_t *lpc_coefs,
int
cba_idx
,
int
cb1_idx
,
int
cb2_idx
,
int
gval
,
int
gain
)
{
uint16_t
buffer_a
[
40
];
uint16_t
buffer_a
[
BLOCKSIZE
];
uint16_t
*
block
;
int
m
[
3
];
...
...
@@ -1711,10 +1711,10 @@ void ff_subblock_synthesis(RA144Context *ractx, const uint16_t *lpc_coefs,
ff_add_wav
(
block
,
gain
,
cba_idx
,
m
,
cba_idx
?
buffer_a
:
NULL
,
ff_cb1_vects
[
cb1_idx
],
ff_cb2_vects
[
cb2_idx
]);
memcpy
(
ractx
->
curr_sblock
,
ractx
->
curr_sblock
+
40
,
10
*
sizeof
(
*
ractx
->
curr_sblock
));
memcpy
(
ractx
->
curr_sblock
,
ractx
->
curr_sblock
+
BLOCKSIZE
,
LPC_ORDER
*
sizeof
(
*
ractx
->
curr_sblock
));
if
(
ff_celp_lp_synthesis_filter
(
ractx
->
curr_sblock
+
10
,
lpc_coefs
,
block
,
BLOCKSIZE
,
10
,
1
,
0xfff
))
memset
(
ractx
->
curr_sblock
,
0
,
50
*
sizeof
(
*
ractx
->
curr_sblock
));
if
(
ff_celp_lp_synthesis_filter
(
ractx
->
curr_sblock
+
LPC_ORDER
,
lpc_coefs
,
block
,
BLOCKSIZE
,
LPC_ORDER
,
1
,
0xfff
))
memset
(
ractx
->
curr_sblock
,
0
,
(
LPC_ORDER
+
BLOCKSIZE
)
*
sizeof
(
*
ractx
->
curr_sblock
));
}
libavcodec/ra144dec.c
浏览文件 @
f10524d5
...
...
@@ -59,10 +59,10 @@ static int ra144_decode_frame(AVCodecContext * avctx, void *vdata,
{
const
uint8_t
*
buf
=
avpkt
->
data
;
int
buf_size
=
avpkt
->
size
;
static
const
uint8_t
sizes
[
10
]
=
{
6
,
5
,
5
,
4
,
4
,
3
,
3
,
3
,
3
,
2
};
unsigned
int
refl_rms
[
4
];
// RMS of the reflection coefficients
uint16_t
block_coefs
[
4
][
10
];
// LPC coefficients of each sub-block
unsigned
int
lpc_refl
[
10
];
// LPC reflection coefficients of the frame
static
const
uint8_t
sizes
[
LPC_ORDER
]
=
{
6
,
5
,
5
,
4
,
4
,
3
,
3
,
3
,
3
,
2
};
unsigned
int
refl_rms
[
NBLOCKS
];
// RMS of the reflection coefficients
uint16_t
block_coefs
[
NBLOCKS
][
LPC_ORDER
];
// LPC coefficients of each sub-block
unsigned
int
lpc_refl
[
LPC_ORDER
];
// LPC reflection coefficients of the frame
int
i
,
j
;
int
out_size
;
int16_t
*
data
=
vdata
;
...
...
@@ -77,15 +77,15 @@ static int ra144_decode_frame(AVCodecContext * avctx, void *vdata,
return
AVERROR
(
EINVAL
);
}
if
(
buf_size
<
20
)
{
if
(
buf_size
<
FRAMESIZE
)
{
av_log
(
avctx
,
AV_LOG_ERROR
,
"Frame too small (%d bytes). Truncated file?
\n
"
,
buf_size
);
*
data_size
=
0
;
return
buf_size
;
}
init_get_bits
(
&
gb
,
buf
,
20
*
8
);
init_get_bits
(
&
gb
,
buf
,
FRAMESIZE
*
8
);
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
LPC_ORDER
;
i
++
)
lpc_refl
[
i
]
=
ff_lpc_refl_cb
[
i
][
get_bits
(
&
gb
,
sizes
[
i
])];
ff_eval_coefs
(
ractx
->
lpc_coef
[
0
],
lpc_refl
);
...
...
@@ -102,7 +102,7 @@ static int ra144_decode_frame(AVCodecContext * avctx, void *vdata,
ff_int_to_int16
(
block_coefs
[
3
],
ractx
->
lpc_coef
[
0
]);
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
NBLOCKS
;
i
++
)
{
do_output_subblock
(
ractx
,
block_coefs
[
i
],
refl_rms
[
i
],
&
gb
);
for
(
j
=
0
;
j
<
BLOCKSIZE
;
j
++
)
...
...
@@ -115,7 +115,7 @@ static int ra144_decode_frame(AVCodecContext * avctx, void *vdata,
FFSWAP
(
unsigned
int
*
,
ractx
->
lpc_coef
[
0
],
ractx
->
lpc_coef
[
1
]);
*
data_size
=
out_size
;
return
20
;
return
FRAMESIZE
;
}
AVCodec
ff_ra_144_decoder
=
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录