Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
f4855a90
Commit
f4855a90
authored
Mar 09, 2011
by
Mans Rullgard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ac3enc: NEON optimised ac3_max_msb_abs_int16 and ac3_exponent_min
parent
f7114249
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
100 additions
and
0 deletions
+100
-0
ac3dsp.c
libavcodec/ac3dsp.c
+2
-0
ac3dsp.h
libavcodec/ac3dsp.h
+1
-0
Makefile
libavcodec/arm/Makefile
+3
-0
ac3dsp_init_arm.c
libavcodec/arm/ac3dsp_init_arm.c
+35
-0
ac3dsp_neon.S
libavcodec/arm/ac3dsp_neon.S
+59
-0
No files found.
libavcodec/ac3dsp.c
View file @
f4855a90
...
...
@@ -109,6 +109,8 @@ av_cold void ff_ac3dsp_init(AC3DSPContext *c, int bit_exact)
c
->
ac3_rshift_int32
=
ac3_rshift_int32_c
;
c
->
float_to_fixed24
=
float_to_fixed24_c
;
if
(
ARCH_ARM
)
ff_ac3dsp_init_arm
(
c
,
bit_exact
);
if
(
HAVE_MMX
)
ff_ac3dsp_init_x86
(
c
,
bit_exact
);
}
libavcodec/ac3dsp.h
View file @
f4855a90
...
...
@@ -84,6 +84,7 @@ typedef struct AC3DSPContext {
}
AC3DSPContext
;
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
);
#endif
/* AVCODEC_AC3DSP_H */
libavcodec/arm/Makefile
View file @
f4855a90
OBJS-$(CONFIG_AC3DSP)
+=
arm/ac3dsp_init_arm.o
OBJS-$(CONFIG_DCA_DECODER)
+=
arm/dcadsp_init_arm.o
\
OBJS-$(CONFIG_VP5_DECODER)
+=
arm/vp56dsp_init_arm.o
...
...
@@ -46,6 +47,8 @@ NEON-OBJS-$(CONFIG_H264DSP) += arm/h264dsp_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
\
arm/synth_filter_neon.o
\
...
...
libavcodec/arm/ac3dsp_init_arm.c
0 → 100644
View file @
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
View file @
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 1b
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 2b
subs r2, r2, #16
vst1.8 {q0}, [r0,:128]!
bgt 1b
pop {pc}
endfunc
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment