Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
35a9cac8
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,发现更多精彩内容 >>
提交
35a9cac8
编写于
7月 04, 2006
作者:
K
Kostya Shishkov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Optimizations suggested by Michael Niedermayer
Originally committed as revision 5607 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
5cb49ca1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
21 addition
and
53 deletion
+21
-53
libavcodec/vc1.c
libavcodec/vc1.c
+21
-53
未找到文件。
libavcodec/vc1.c
浏览文件 @
35a9cac8
...
...
@@ -1019,20 +1019,15 @@ static void vc1_mc_4mv_luma(VC1Context *v, int n)
}
}
#define SETMAXMIN(var) \
if(var > ma) ma = var; \
if(var < mi) mi = var;
static
inline
int
median4
(
int
a
,
int
b
,
int
c
,
int
d
)
{
int
ma
,
mi
;
ma
=
mi
=
a
;
SETMAXMIN
(
b
);
SETMAXMIN
(
c
);
SETMAXMIN
(
d
);
return
(
a
+
b
+
c
+
d
-
ma
-
mi
)
>>
1
;
if
(
a
<
b
)
{
if
(
c
<
d
)
return
(
FFMIN
(
b
,
d
)
+
FFMAX
(
a
,
c
))
>>
1
;
else
return
(
FFMIN
(
b
,
c
)
+
FFMAX
(
a
,
d
))
>>
1
;
}
else
{
if
(
c
<
d
)
return
(
FFMIN
(
a
,
d
)
+
FFMAX
(
b
,
c
))
>>
1
;
else
return
(
FFMIN
(
a
,
c
)
+
FFMAX
(
b
,
d
))
>>
1
;
}
}
...
...
@@ -1408,6 +1403,7 @@ static int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
#define GET_MQUANT() \
if (v->dquantfrm) \
{ \
int edges = 0; \
if (v->dqprofile == DQPROFILE_ALL_MBS) \
{ \
if (v->dqbilevel) \
...
...
@@ -1421,49 +1417,21 @@ static int vc1_parse_frame_header(VC1Context *v, GetBitContext* gb)
else mquant = get_bits(gb, 5); \
} \
} \
else if(v->dqprofile == DQPROFILE_SINGLE_EDGE) \
{ \
switch(v->dqsbedge){ \
case 0:
/* left */
\
mquant = (s->mb_x) ? v->pq : v->altpq; \
break; \
case 1:
/* top */
\
mquant = (s->mb_y) ? v->pq : v->altpq; \
break; \
case 2:
/* right */
\
mquant = (s->mb_x != (s->mb_width - 1)) ? v->pq : v->altpq; \
break; \
case 3:
/* bottom */
\
mquant = (s->mb_y != (s->mb_height-1)) ? v->pq : v->altpq; \
break; \
default: \
mquant = v->pq; \
} \
} \
if(v->dqprofile == DQPROFILE_SINGLE_EDGE) \
edges = 1 << v->dqsbedge; \
else if(v->dqprofile == DQPROFILE_DOUBLE_EDGES) \
{ \
switch(v->dqsbedge){ \
case 0:
/* left and top */
\
mquant = (s->mb_x && s->mb_y) ? v->pq : v->altpq; \
break; \
case 1:
/* top and right */
\
mquant = (s->mb_y && s->mb_x != (s->mb_width - 1)) ? v->pq : v->altpq; \
break; \
case 2:
/* right and bottom */
\
mquant = (s->mb_x != (s->mb_width - 1) && s->mb_y != (s->mb_height-1)) ? v->pq : v->altpq; \
break; \
case 3:
/* bottom and left */
\
mquant = (s->mb_x && s->mb_y != (s->mb_height-1)) ? v->pq : v->altpq; \
break; \
default: \
mquant = v->pq; \
} \
} \
edges = (3 << v->dqsbedge) % 15; \
else if(v->dqprofile == DQPROFILE_FOUR_EDGES) \
{ \
mquant = (s->mb_x && s->mb_y && s->mb_x != (s->mb_width - 1) && s->mb_y != (s->mb_height-1)) ? v->pq : v->altpq; \
} \
else mquant = v->pq; \
edges = 15; \
mquant = v->pq; \
if((edges&1) && !s->mb_x) \
mquant = v->altpq; \
if((edges&2) && !s->mb_y) \
mquant = v->altpq; \
if((edges&4) && s->mb_x == (s->mb_width - 1)) \
mquant = v->altpq; \
if((edges&8) && s->mb_y == (s->mb_height - 1)) \
mquant = v->altpq; \
}
/**
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录