mirror of https://github.com/FFmpeg/FFmpeg.git
* newdev/master: matroskadec: set default duration for simple block When building for MinGW32 disable strict ANSI compliancy. ARM: fix ff_apply_window_int16_neon() prototype configure: check for --as-needed support early ARM: NEON optimised apply_window_int16() ac3enc: NEON optimised shift functions ac3enc: NEON optimised ac3_max_msb_abs_int16 and ac3_exponent_min mpeg12.c: fix slice threading for mpeg2 field picture mode. ffmetadec.c: fix compiler warnings. configure: Don't explicitly disable ffplay or in/outdevices on dos configure: Remove the explicit disabling of ffserver configure: Add fork as a dependency to ffserver Merged-by: Michael Niedermayer <michaelni@gmx.at>oldabi
commit
797ef671dd
11 changed files with 174 additions and 8 deletions
@ -0,0 +1,39 @@ |
||||
/*
|
||||
* 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); |
||||
void ff_ac3_lshift_int16_neon(int16_t *src, unsigned len, unsigned shift); |
||||
void ff_ac3_rshift_int32_neon(int32_t *src, unsigned len, unsigned shift); |
||||
|
||||
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; |
||||
c->ac3_lshift_int16 = ff_ac3_lshift_int16_neon; |
||||
c->ac3_rshift_int32 = ff_ac3_rshift_int32_neon; |
||||
} |
||||
} |
@ -0,0 +1,80 @@ |
||||
/* |
||||
* 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 |
||||
|
||||
function ff_ac3_lshift_int16_neon, export=1 |
||||
vdup.16 q0, r2 |
||||
1: vld1.16 {q1}, [r0,:128] |
||||
vshl.s16 q1, q1, q0 |
||||
vst1.16 {q1}, [r0,:128]! |
||||
subs r1, r1, #8 |
||||
bgt 1b |
||||
bx lr |
||||
endfunc |
||||
|
||||
function ff_ac3_rshift_int32_neon, export=1 |
||||
rsb r2, r2, #0 |
||||
vdup.32 q0, r2 |
||||
1: vld1.32 {q1}, [r0,:128] |
||||
vshl.s32 q1, q1, q0 |
||||
vst1.32 {q1}, [r0,:128]! |
||||
subs r1, r1, #4 |
||||
bgt 1b |
||||
bx lr |
||||
endfunc |
Loading…
Reference in new issue