Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
3924dac4
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,发现更多精彩内容 >>
提交
3924dac4
编写于
9月 12, 2004
作者:
M
Michael Niedermayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
use pointer arithmetic in mc_block(), 25% faster
Originally committed as revision 3452 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
a6c01275
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
24 addition
and
16 deletion
+24
-16
libavcodec/snow.c
libavcodec/snow.c
+24
-16
未找到文件。
libavcodec/snow.c
浏览文件 @
3924dac4
...
...
@@ -1929,14 +1929,15 @@ static void decode_blocks(SnowContext *s){
static
void
mc_block
(
uint8_t
*
dst
,
uint8_t
*
src
,
uint8_t
*
tmp
,
int
stride
,
int
b_w
,
int
b_h
,
int
dx
,
int
dy
){
int
x
,
y
;
START_TIMER
for
(
y
=
0
;
y
<
b_h
+
5
;
y
++
){
for
(
x
=
0
;
x
<
b_w
;
x
++
){
int
a0
=
src
[
x
+
y
*
stride
];
int
a1
=
src
[
x
+
1
+
y
*
stride
];
int
a2
=
src
[
x
+
2
+
y
*
stride
];
int
a3
=
src
[
x
+
3
+
y
*
stride
];
int
a4
=
src
[
x
+
4
+
y
*
stride
];
int
a5
=
src
[
x
+
5
+
y
*
stride
];
int
a0
=
src
[
x
];
int
a1
=
src
[
x
+
1
];
int
a2
=
src
[
x
+
2
];
int
a3
=
src
[
x
+
3
];
int
a4
=
src
[
x
+
4
];
int
a5
=
src
[
x
+
5
];
// int am= 9*(a1+a2) - (a0+a3);
int
am
=
20
*
(
a2
+
a3
)
-
5
*
(
a1
+
a4
)
+
(
a0
+
a5
);
// int am= 18*(a2+a3) - 2*(a1+a4);
...
...
@@ -1945,23 +1946,27 @@ static void mc_block(uint8_t *dst, uint8_t *src, uint8_t *tmp, int stride, int b
// if(b_w==16) am= 8*(a1+a2);
if
(
dx
<
8
)
tmp
[
x
+
y
*
stride
]
=
(
32
*
a2
*
(
8
-
dx
)
+
am
*
dx
+
128
)
>>
8
;
else
tmp
[
x
+
y
*
stride
]
=
(
am
*
(
16
-
dx
)
+
32
*
a3
*
(
dx
-
8
)
+
128
)
>>
8
;
if
(
dx
<
8
)
tmp
[
x
]
=
(
32
*
a2
*
(
8
-
dx
)
+
am
*
dx
+
128
)
>>
8
;
else
tmp
[
x
]
=
(
am
*
(
16
-
dx
)
+
32
*
a3
*
(
dx
-
8
)
+
128
)
>>
8
;
/* if (dx< 4) tmp[x + y*stride]= (16*a1*( 4-dx) + aL* dx + 32)>>6;
else if(dx< 8) tmp[x + y*stride]= ( aL*( 8-dx) + am*(dx- 4) + 32)>>6;
else if(dx<12) tmp[x + y*stride]= ( am*(12-dx) + aR*(dx- 8) + 32)>>6;
else tmp[x + y*stride]= ( aR*(16-dx) + 16*a2*(dx-12) + 32)>>6;*/
}
tmp
+=
stride
;
src
+=
stride
;
}
tmp
-=
(
b_h
+
5
)
*
stride
;
for
(
y
=
0
;
y
<
b_h
;
y
++
){
for
(
x
=
0
;
x
<
b_w
;
x
++
){
int
a0
=
tmp
[
x
+
y
*
stride
];
int
a1
=
tmp
[
x
+
(
y
+
1
)
*
stride
];
int
a2
=
tmp
[
x
+
(
y
+
2
)
*
stride
];
int
a3
=
tmp
[
x
+
(
y
+
3
)
*
stride
];
int
a4
=
tmp
[
x
+
(
y
+
4
)
*
stride
];
int
a5
=
tmp
[
x
+
(
y
+
5
)
*
stride
];
int
a0
=
tmp
[
x
+
0
*
stride
];
int
a1
=
tmp
[
x
+
1
*
stride
];
int
a2
=
tmp
[
x
+
2
*
stride
];
int
a3
=
tmp
[
x
+
3
*
stride
];
int
a4
=
tmp
[
x
+
4
*
stride
];
int
a5
=
tmp
[
x
+
5
*
stride
];
int
am
=
20
*
(
a2
+
a3
)
-
5
*
(
a1
+
a4
)
+
(
a0
+
a5
);
// int am= 18*(a2+a3) - 2*(a1+a4);
/* int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3;
...
...
@@ -1969,15 +1974,18 @@ static void mc_block(uint8_t *dst, uint8_t *src, uint8_t *tmp, int stride, int b
// if(b_w==16) am= 8*(a1+a2);
if
(
dy
<
8
)
dst
[
x
+
y
*
stride
]
=
(
32
*
a2
*
(
8
-
dy
)
+
am
*
dy
+
128
)
>>
8
;
else
dst
[
x
+
y
*
stride
]
=
(
am
*
(
16
-
dy
)
+
32
*
a3
*
(
dy
-
8
)
+
128
)
>>
8
;
if
(
dy
<
8
)
dst
[
x
]
=
(
32
*
a2
*
(
8
-
dy
)
+
am
*
dy
+
128
)
>>
8
;
else
dst
[
x
]
=
(
am
*
(
16
-
dy
)
+
32
*
a3
*
(
dy
-
8
)
+
128
)
>>
8
;
/* if (dy< 4) tmp[x + y*stride]= (16*a1*( 4-dy) + aL* dy + 32)>>6;
else if(dy< 8) tmp[x + y*stride]= ( aL*( 8-dy) + am*(dy- 4) + 32)>>6;
else if(dy<12) tmp[x + y*stride]= ( am*(12-dy) + aR*(dy- 8) + 32)>>6;
else tmp[x + y*stride]= ( aR*(16-dy) + 16*a2*(dy-12) + 32)>>6;*/
}
dst
+=
stride
;
tmp
+=
stride
;
}
STOP_TIMER
(
"mc_block"
)
}
#define mcb(dx,dy,b_w)\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录