Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
4a5343fa
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,发现更多精彩内容 >>
提交
4a5343fa
编写于
7月 03, 2006
作者:
K
Kostya Shishkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
vc1_decode_intra_block() simplifications and corrections
Originally committed as revision 5599 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
cc0bc648
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
19 addition
and
42 deletion
+19
-42
libavcodec/vc1.c
libavcodec/vc1.c
+19
-42
未找到文件。
libavcodec/vc1.c
浏览文件 @
4a5343fa
...
...
@@ -2043,6 +2043,8 @@ static int vc1_decode_intra_block(VC1Context *v, DCTELEM block[64], int n, int c
int
dcdiff
;
int
mb_pos
=
s
->
mb_x
+
s
->
mb_y
*
s
->
mb_stride
;
int
a_avail
=
v
->
a_avail
,
c_avail
=
v
->
c_avail
;
int
use_pred
=
s
->
ac_pred
;
int
scale
;
/* XXX: Guard against dumb values of mquant */
mquant
=
(
mquant
<
1
)
?
0
:
(
(
mquant
>
31
)
?
31
:
mquant
);
...
...
@@ -2095,35 +2097,31 @@ static int vc1_decode_intra_block(VC1Context *v, DCTELEM block[64], int n, int c
/* Skip ? */
run_diff
=
0
;
i
=
0
;
if
(
!
coded
)
{
goto
not_coded
;
}
//AC Decoding
i
=
1
;
{
/* check if AC is needed at all and adjust direction if needed */
if
(
!
a_avail
)
dc_pred_dir
=
1
;
if
(
!
c_avail
)
dc_pred_dir
=
0
;
if
(
!
a_avail
&&
!
c_avail
)
use_pred
=
0
;
ac_val
=
s
->
ac_val
[
0
][
0
]
+
s
->
block_index
[
n
]
*
16
;
ac_val2
=
ac_val
;
scale
=
mquant
*
2
;
if
(
dc_pred_dir
)
//left
ac_val
-=
16
;
else
//top
ac_val
-=
16
*
s
->
block_wrap
[
n
];
if
(
coded
)
{
int
last
=
0
,
skip
,
value
;
const
int8_t
*
zz_table
;
int
scale
;
int
k
;
int
use_pred
=
s
->
ac_pred
;
scale
=
mquant
*
2
;
zz_table
=
vc1_simple_progressive_8x8_zz
;
ac_val
=
s
->
ac_val
[
0
][
0
]
+
s
->
block_index
[
n
]
*
16
;
ac_val2
=
ac_val
;
if
(
!
a_avail
)
dc_pred_dir
=
1
;
if
(
!
c_avail
)
dc_pred_dir
=
0
;
if
(
!
a_avail
&&
!
c_avail
)
use_pred
=
0
;
if
(
dc_pred_dir
)
//left
ac_val
-=
16
;
else
//top
ac_val
-=
16
*
s
->
block_wrap
[
n
];
while
(
!
last
)
{
vc1_decode_ac_coeff
(
v
,
&
last
,
&
skip
,
&
value
,
codingset
);
i
+=
skip
;
...
...
@@ -2177,36 +2175,16 @@ static int vc1_decode_intra_block(VC1Context *v, DCTELEM block[64], int n, int c
}
if
(
use_pred
)
i
=
63
;
}
not_coded:
if
(
!
coded
)
{
int
k
,
scale
;
int
use_pred
=
s
->
ac_pred
;
}
else
{
// no AC coeffs
int
k
;
int
mb_pos2
,
q1
,
q2
;
mb_pos2
=
mb_pos
-
dc_pred_dir
-
(
1
-
dc_pred_dir
)
*
s
->
mb_stride
;
q1
=
s
->
current_picture
.
qscale_table
[
mb_pos
];
q2
=
s
->
current_picture
.
qscale_table
[
mb_pos2
];
ac_val
=
s
->
ac_val
[
0
][
0
]
+
s
->
block_index
[
n
]
*
16
;
ac_val2
=
ac_val
;
if
(
!
c_avail
)
{
memset
(
ac_val
,
0
,
8
*
sizeof
(
ac_val
[
0
]));
dc_pred_dir
=
0
;
}
if
(
!
a_avail
)
{
memset
(
ac_val
+
8
,
0
,
8
*
sizeof
(
ac_val
[
0
]));
dc_pred_dir
=
1
;
}
if
(
!
a_avail
&&
!
c_avail
)
use_pred
=
0
;
scale
=
mquant
*
2
;
memset
(
ac_val2
,
0
,
16
*
2
);
if
(
dc_pred_dir
)
{
//left
ac_val
-=
16
;
if
(
use_pred
)
{
memcpy
(
ac_val2
,
ac_val
,
8
*
2
);
if
(
0
&&
q2
&&
q1
!=
q2
&&
c_avail
)
{
...
...
@@ -2217,7 +2195,6 @@ not_coded:
}
}
}
else
{
//top
ac_val
-=
16
*
s
->
block_wrap
[
n
];
if
(
use_pred
)
{
memcpy
(
ac_val2
+
8
,
ac_val
+
8
,
8
*
2
);
if
(
0
&&
q2
&&
q1
!=
q2
&&
a_avail
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录