diff options
author | Mans Rullgard <mans@mansr.com> | 2011-03-11 17:25:45 +0000 |
---|---|---|
committer | Mans Rullgard <mans@mansr.com> | 2011-04-01 22:46:21 +0100 |
commit | aa05f2126e18d23432bde77e6f44e41691472fef (patch) | |
tree | f02f9dc4228f0b851a94b9ce2c5b702522c148bf /libavcodec/arm/ac3dsp_arm.S | |
parent | 182826c8846f2f7f0538c4b2a09e882e29881804 (diff) | |
download | ffmpeg-aa05f2126e18d23432bde77e6f44e41691472fef.tar.gz |
ac3enc: ARM optimised ac3_compute_matissa_size
Signed-off-by: Mans Rullgard <mans@mansr.com>
Diffstat (limited to 'libavcodec/arm/ac3dsp_arm.S')
-rw-r--r-- | libavcodec/arm/ac3dsp_arm.S | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/libavcodec/arm/ac3dsp_arm.S b/libavcodec/arm/ac3dsp_arm.S new file mode 100644 index 0000000000..d7d498e41f --- /dev/null +++ b/libavcodec/arm/ac3dsp_arm.S @@ -0,0 +1,52 @@ +/* + * 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_compute_mantissa_size_arm, export=1 + push {r4-r8,lr} + ldm r0, {r4-r8} + mov r3, r0 + mov r0, #0 +1: + ldrb lr, [r1], #1 + subs r2, r2, #1 + blt 2f + cmp lr, #4 + bgt 3f + subs lr, lr, #1 + addlt r4, r4, #1 + addeq r5, r5, #1 + ble 1b + subs lr, lr, #2 + addlt r6, r6, #1 + addeq r7, r7, #1 + addgt r8, r8, #1 + b 1b +3: + cmp lr, #14 + sublt lr, lr, #1 + addgt r0, r0, #16 + addle r0, r0, lr + b 1b +2: + stm r3, {r4-r8} + pop {r4-r8,pc} +endfunc |