Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
小白菜888
Ffmpeg
提交
f4855a90
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,发现更多精彩内容 >>
提交
f4855a90
编写于
3月 09, 2011
作者:
M
Mans Rullgard
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ac3enc: NEON optimised ac3_max_msb_abs_int16 and ac3_exponent_min
上级
f7114249
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
100 addition
and
0 deletion
+100
-0
libavcodec/ac3dsp.c
libavcodec/ac3dsp.c
+2
-0
libavcodec/ac3dsp.h
libavcodec/ac3dsp.h
+1
-0
libavcodec/arm/Makefile
libavcodec/arm/Makefile
+3
-0
libavcodec/arm/ac3dsp_init_arm.c
libavcodec/arm/ac3dsp_init_arm.c
+35
-0
libavcodec/arm/ac3dsp_neon.S
libavcodec/arm/ac3dsp_neon.S
+59
-0
未找到文件。
libavcodec/ac3dsp.c
浏览文件 @
f4855a90
...
@@ -109,6 +109,8 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
...
@@ -109,6 +109,8 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
c
->
ac3_rshift_int32
=
ac3_rshift_int32_c
;
c
->
ac3_rshift_int32
=
ac3_rshift_int32_c
;
c
->
float_to_fixed24
=
float_to_fixed24_c
;
c
->
float_to_fixed24
=
float_to_fixed24_c
;
if
(
ARCH_ARM
)
ff_ac3dsp_init_arm
(
c
,
bit_exact
);
if
(
HAVE_MMX
)
if
(
HAVE_MMX
)
ff_ac3dsp_init_x86
(
c
,
bit_exact
);
ff_ac3dsp_init_x86
(
c
,
bit_exact
);
}
}
libavcodec/ac3dsp.h
浏览文件 @
f4855a90
...
@@ -84,6 +84,7 @@ typedef struct AC3DSPContext {
...
@@ -84,6 +84,7 @@ typedef struct AC3DSPContext {
}
AC3DSPContext
;
}
AC3DSPContext
;
void
ff_ac3dsp_init
(
AC3DSPContext
*
c
,
int
bit_exact
);
void
ff_ac3dsp_init
(
AC3DSPContext
*
c
,
int
bit_exact
);
void
ff_ac3dsp_init_arm
(
AC3DSPContext
*
c
,
int
bit_exact
);
void
ff_ac3dsp_init_x86
(
AC3DSPContext
*
c
,
int
bit_exact
);
void
ff_ac3dsp_init_x86
(
AC3DSPContext
*
c
,
int
bit_exact
);
#endif
/* AVCODEC_AC3DSP_H */
#endif
/* AVCODEC_AC3DSP_H */
libavcodec/arm/Makefile
浏览文件 @
f4855a90
OBJS-$(CONFIG_AC3DSP)
+=
arm/ac3dsp_init_arm.o
OBJS-$(CONFIG_DCA_DECODER)
+=
arm/dcadsp_init_arm.o
\
OBJS-$(CONFIG_DCA_DECODER)
+=
arm/dcadsp_init_arm.o
\
OBJS-$(CONFIG_VP5_DECODER)
+=
arm/vp56dsp_init_arm.o
OBJS-$(CONFIG_VP5_DECODER)
+=
arm/vp56dsp_init_arm.o
...
@@ -46,6 +47,8 @@ NEON-OBJS-$(CONFIG_H264DSP) += arm/h264dsp_neon.o \
...
@@ -46,6 +47,8 @@ NEON-OBJS-$(CONFIG_H264DSP) += arm/h264dsp_neon.o \
NEON-OBJS-$(CONFIG_H264PRED)
+=
arm/h264pred_neon.o
\
NEON-OBJS-$(CONFIG_H264PRED)
+=
arm/h264pred_neon.o
\
NEON-OBJS-$(CONFIG_AC3DSP)
+=
arm/ac3dsp_neon.o
NEON-OBJS-$(CONFIG_DCA_DECODER)
+=
arm/dcadsp_neon.o
\
NEON-OBJS-$(CONFIG_DCA_DECODER)
+=
arm/dcadsp_neon.o
\
arm/synth_filter_neon.o
\
arm/synth_filter_neon.o
\
...
...
libavcodec/arm/ac3dsp_init_arm.c
0 → 100644
浏览文件 @
f4855a90
/*
* Copyright (c) 2011 Mans Rullgard <mans@mansr.com>
*
* This file is part of Libav.
*
* Libav is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* Libav is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Libav; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <stdint.h>
#include "libavutil/attributes.h"
#include "libavcodec/ac3dsp.h"
#include "config.h"
void
ff_ac3_exponent_min_neon
(
uint8_t
*
exp
,
int
num_reuse_blocks
,
int
nb_coefs
);
int
ff_ac3_max_msb_abs_int16_neon
(
const
int16_t
*
src
,
int
len
);
av_cold
void
ff_ac3dsp_init_arm
(
AC3DSPContext
*
c
,
int
bit_exact
)
{
if
(
HAVE_NEON
)
{
c
->
ac3_exponent_min
=
ff_ac3_exponent_min_neon
;
c
->
ac3_max_msb_abs_int16
=
ff_ac3_max_msb_abs_int16_neon
;
}
}
libavcodec/arm/ac3dsp_neon.S
0 → 100644
浏览文件 @
f4855a90
/*
*
Copyright
(
c
)
2011
Mans
Rullgard
<
mans
@
mansr
.
com
>
*
*
This
file
is
part
of
Libav
.
*
*
Libav
is
free
software
; you can redistribute it and/or
*
modify
it
under
the
terms
of
the
GNU
Lesser
General
Public
*
License
as
published
by
the
Free
Software
Foundation
; either
*
version
2
.1
of
the
License
,
or
(
at
your
option
)
any
later
version
.
*
*
Libav
is
distributed
in
the
hope
that
it
will
be
useful
,
*
but
WITHOUT
ANY
WARRANTY
; without even the implied warranty of
*
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE
.
See
the
GNU
*
Lesser
General
Public
License
for
more
details
.
*
*
You
should
have
received
a
copy
of
the
GNU
Lesser
General
Public
*
License
along
with
Libav
; if not, write to the Free Software
*
Foundation
,
Inc
.
,
51
Franklin
Street
,
Fifth
Floor
,
Boston
,
MA
02110
-
1301
USA
*/
#include "asm.S"
function
ff_ac3_max_msb_abs_int16_neon
,
export
=
1
vmov.i16
q0
,
#
0
vmov.i16
q2
,
#
0
1
:
vld1.16
{
q1
},
[
r0
,:
128
]!
vabs.s16
q1
,
q1
vld1.16
{
q3
},
[
r0
,:
128
]!
vabs.s16
q3
,
q3
vorr
q0
,
q0
,
q1
vorr
q2
,
q2
,
q3
subs
r1
,
r1
,
#
16
bgt
1
b
vorr
q0
,
q0
,
q2
vorr
d0
,
d0
,
d1
vpmax.u16
d0
,
d0
,
d0
vpmax.u16
d0
,
d0
,
d0
vmov.u16
r0
,
d0
[
0
]
bx
lr
endfunc
function
ff_ac3_exponent_min_neon
,
export
=
1
cmp
r1
,
#
0
bxeq
lr
push
{
lr
}
mov
r12
,
#
256
1
:
vld1.8
{
q0
},
[
r0
,:
128
]
mov
lr
,
r1
add
r3
,
r0
,
#
256
2
:
vld1.8
{
q1
},
[
r3
,:
128
],
r12
subs
lr
,
lr
,
#
1
vmin.u8
q0
,
q0
,
q1
bgt
2
b
subs
r2
,
r2
,
#
16
vst1.8
{
q0
},
[
r0
,:
128
]!
bgt
1
b
pop
{
pc
}
endfunc
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录