Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
22b48b85
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,发现更多精彩内容 >>
提交
22b48b85
编写于
3月 27, 2006
作者:
L
Luca Barbato
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
altivec support for snow
Originally committed as revision 5228 to
svn://svn.ffmpeg.org/ffmpeg/trunk
上级
e62c29bf
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
57 addition
and
30 deletion
+57
-30
MAINTAINERS
MAINTAINERS
+1
-0
libavcodec/Makefile
libavcodec/Makefile
+1
-1
libavcodec/i386/snowdsp_mmx.c
libavcodec/i386/snowdsp_mmx.c
+0
-29
libavcodec/ppc/dsputil_ppc.c
libavcodec/ppc/dsputil_ppc.c
+16
-0
libavcodec/snow.h
libavcodec/snow.h
+39
-0
未找到文件。
MAINTAINERS
浏览文件 @
22b48b85
...
...
@@ -212,3 +212,4 @@ BeOS Francois Revol
i386 Michael Niedermayer
Mac OS X / PowerPC Romain Dolbeau
Amiga / PowerPC Colin Ward
Linux / PowerPC Luca Barbato
libavcodec/Makefile
浏览文件 @
22b48b85
...
...
@@ -388,7 +388,7 @@ endif
ifeq
($(TARGET_ALTIVEC),yes)
OBJS
+=
ppc/dsputil_altivec.o ppc/mpegvideo_altivec.o ppc/idct_altivec.o
\
ppc/fft_altivec.o ppc/gmc_altivec.o ppc/fdct_altivec.o
\
ppc/dsputil_h264_altivec.o
ppc/dsputil_h264_altivec.o
ppc/dsputil_snow_altivec.o
endif
ifeq
($(TARGET_ARCH_SH4),yes)
...
...
libavcodec/i386/snowdsp_mmx.c
浏览文件 @
22b48b85
...
...
@@ -21,35 +21,6 @@
#include "../snow.h"
#include "mmx.h"
static
void
always_inline
snow_interleave_line_header
(
int
*
i
,
int
width
,
DWTELEM
*
low
,
DWTELEM
*
high
){
(
*
i
)
=
(
width
)
-
2
;
if
(
width
&
1
){
low
[(
*
i
)
+
1
]
=
low
[((
*
i
)
+
1
)
>>
1
];
(
*
i
)
--
;
}
}
static
void
always_inline
snow_horizontal_compose_lift_lead_out
(
int
i
,
DWTELEM
*
dst
,
DWTELEM
*
src
,
DWTELEM
*
ref
,
int
width
,
int
w
,
int
lift_high
,
int
mul
,
int
add
,
int
shift
){
for
(;
i
<
w
;
i
++
){
dst
[
i
]
=
src
[
i
]
-
((
mul
*
(
ref
[
i
]
+
ref
[
i
+
1
])
+
add
)
>>
shift
);
}
if
((
width
^
lift_high
)
&
1
){
dst
[
w
]
=
src
[
w
]
-
((
mul
*
2
*
ref
[
w
]
+
add
)
>>
shift
);
}
}
static
void
always_inline
snow_horizontal_compose_liftS_lead_out
(
int
i
,
DWTELEM
*
dst
,
DWTELEM
*
src
,
DWTELEM
*
ref
,
int
width
,
int
w
){
for
(;
i
<
w
;
i
++
){
dst
[
i
]
=
src
[
i
]
-
(((
-
(
ref
[
i
]
+
ref
[(
i
+
1
)])
+
W_BO
)
-
4
*
src
[
i
])
>>
W_BS
);
}
if
(
width
&
1
){
dst
[
w
]
=
src
[
w
]
-
(((
-
2
*
ref
[
w
]
+
W_BO
)
-
4
*
src
[
w
])
>>
W_BS
);
}
}
void
ff_snow_horizontal_compose97i_sse2
(
DWTELEM
*
b
,
int
width
){
const
int
w2
=
(
width
+
1
)
>>
1
;
// SSE2 code runs faster with pointers aligned on a 32-byte boundary.
...
...
libavcodec/ppc/dsputil_ppc.c
浏览文件 @
22b48b85
...
...
@@ -30,6 +30,17 @@ extern void fdct_altivec(int16_t *block);
extern
void
idct_put_altivec
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
);
extern
void
idct_add_altivec
(
uint8_t
*
dest
,
int
line_size
,
int16_t
*
block
);
extern
void
ff_snow_horizontal_compose97i_altivec
(
DWTELEM
*
b
,
int
width
);
extern
void
ff_snow_vertical_compose97i_altivec
(
DWTELEM
*
b0
,
DWTELEM
*
b1
,
DWTELEM
*
b2
,
DWTELEM
*
b3
,
DWTELEM
*
b4
,
DWTELEM
*
b5
,
int
width
);
extern
void
ff_snow_inner_add_yblock_altivec
(
uint8_t
*
obmc
,
const
int
obmc_stride
,
uint8_t
*
*
block
,
int
b_w
,
int
b_h
,
int
src_x
,
int
src_y
,
int
src_stride
,
slice_buffer
*
sb
,
int
add
,
uint8_t
*
dst8
);
int
mm_flags
=
0
;
int
mm_support
(
void
)
...
...
@@ -297,6 +308,11 @@ void dsputil_init_ppc(DSPContext* c, AVCodecContext *avctx)
c
->
hadamard8_diff
[
1
]
=
hadamard8_diff8x8_altivec
;
#endif
c
->
horizontal_compose97i
=
ff_snow_horizontal_compose97i_altivec
;
c
->
vertical_compose97i
=
ff_snow_vertical_compose97i_altivec
;
c
->
inner_add_yblock
=
ff_snow_inner_add_yblock_altivec
;
#ifdef CONFIG_ENCODERS
if
(
avctx
->
dct_algo
==
FF_DCT_AUTO
||
avctx
->
dct_algo
==
FF_DCT_ALTIVEC
)
...
...
libavcodec/snow.h
浏览文件 @
22b48b85
...
...
@@ -120,4 +120,43 @@ extern void ff_snow_vertical_compose97i(DWTELEM *b0, DWTELEM *b1, DWTELEM *b2, D
extern
void
ff_snow_horizontal_compose97i
(
DWTELEM
*
b
,
int
width
);
extern
void
ff_snow_inner_add_yblock
(
uint8_t
*
obmc
,
const
int
obmc_stride
,
uint8_t
*
*
block
,
int
b_w
,
int
b_h
,
int
src_x
,
int
src_y
,
int
src_stride
,
slice_buffer
*
sb
,
int
add
,
uint8_t
*
dst8
);
/* C bits used by mmx/sse2/altivec */
static
always_inline
void
snow_interleave_line_header
(
int
*
i
,
int
width
,
DWTELEM
*
low
,
DWTELEM
*
high
){
(
*
i
)
=
(
width
)
-
2
;
if
(
width
&
1
){
low
[(
*
i
)
+
1
]
=
low
[((
*
i
)
+
1
)
>>
1
];
(
*
i
)
--
;
}
}
static
always_inline
void
snow_interleave_line_footer
(
int
*
i
,
DWTELEM
*
low
,
DWTELEM
*
high
){
for
(;
(
*
i
)
>=
0
;
(
*
i
)
-=
2
){
low
[(
*
i
)
+
1
]
=
high
[(
*
i
)
>>
1
];
low
[
*
i
]
=
low
[(
*
i
)
>>
1
];
}
}
static
always_inline
void
snow_horizontal_compose_lift_lead_out
(
int
i
,
DWTELEM
*
dst
,
DWTELEM
*
src
,
DWTELEM
*
ref
,
int
width
,
int
w
,
int
lift_high
,
int
mul
,
int
add
,
int
shift
){
for
(;
i
<
w
;
i
++
){
dst
[
i
]
=
src
[
i
]
-
((
mul
*
(
ref
[
i
]
+
ref
[
i
+
1
])
+
add
)
>>
shift
);
}
if
((
width
^
lift_high
)
&
1
){
dst
[
w
]
=
src
[
w
]
-
((
mul
*
2
*
ref
[
w
]
+
add
)
>>
shift
);
}
}
static
always_inline
void
snow_horizontal_compose_liftS_lead_out
(
int
i
,
DWTELEM
*
dst
,
DWTELEM
*
src
,
DWTELEM
*
ref
,
int
width
,
int
w
){
for
(;
i
<
w
;
i
++
){
dst
[
i
]
=
src
[
i
]
-
(((
-
(
ref
[
i
]
+
ref
[(
i
+
1
)])
+
W_BO
)
-
4
*
src
[
i
])
>>
W_BS
);
}
if
(
width
&
1
){
dst
[
w
]
=
src
[
w
]
-
(((
-
2
*
ref
[
w
]
+
W_BO
)
-
4
*
src
[
w
])
>>
W_BS
);
}
}
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录