OSDN Git Service

Merge commit '702458538d4e52809bcef460d39baabf061b16b5'
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 16 Feb 2015 01:16:29 +0000 (02:16 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 16 Feb 2015 01:16:29 +0000 (02:16 +0100)
* commit '702458538d4e52809bcef460d39baabf061b16b5':
  g722: Add ARM NEON implementation for g722_apply_qmf()

Conflicts:
libavcodec/arm/Makefile

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
libavcodec/arm/Makefile
libavcodec/arm/g722dsp_init_arm.c
libavcodec/arm/g722dsp_neon.S
libavcodec/g722dsp.c
libavcodec/g722dsp.h

@@@ -32,6 -31,7 +32,8 @@@ OBJS-$(CONFIG_VP3DSP)                  
  # decoders/encoders
  OBJS-$(CONFIG_AAC_DECODER)             += arm/aacpsdsp_init_arm.o       \
                                            arm/sbrdsp_init_arm.o
 -OBJS-$(CONFIG_APE_DECODER)             += arm/apedsp_init_arm.o
++OBJS-$(CONFIG_ADPCM_G722_DECODER)      += arm/g722dsp_init_arm.o
++OBJS-$(CONFIG_ADPCM_G722_ENCODER)      += arm/g722dsp_init_arm.o
  OBJS-$(CONFIG_DCA_DECODER)             += arm/dcadsp_init_arm.o
  OBJS-$(CONFIG_FLAC_DECODER)            += arm/flacdsp_init_arm.o        \
                                            arm/flacdsp_arm.o
@@@ -129,12 -130,11 +131,14 @@@ NEON-OBJS-$(CONFIG_VP3DSP)             
  # decoders/encoders
  NEON-OBJS-$(CONFIG_AAC_DECODER)        += arm/aacpsdsp_neon.o           \
                                            arm/sbrdsp_neon.o
 -NEON-OBJS-$(CONFIG_APE_DECODER)        += arm/apedsp_neon.o
 -NEON-OBJS-$(CONFIG_DCA_DECODER)        += arm/dcadsp_neon.o             \
 -                                          arm/synth_filter_neon.o
+ NEON-OBJS-$(CONFIG_ADPCM_G722_DECODER) += arm/g722dsp_neon.o
+ NEON-OBJS-$(CONFIG_ADPCM_G722_ENCODER) += arm/g722dsp_neon.o
 +NEON-OBJS-$(CONFIG_LLAUDDSP)           += arm/lossless_audiodsp_neon.o
 +NEON-OBJS-$(CONFIG_DCA_DECODER)        += arm/dcadsp_neon.o             \
 +                                          arm/synth_filter_neon.o
 +NEON-OBJS-$(CONFIG_HEVC_DECODER)       += arm/hevcdsp_init_neon.o       \
 +                                          arm/hevcdsp_deblock_neon.o    \
 +                                          arm/hevcdsp_idct_neon.o
  NEON-OBJS-$(CONFIG_RV30_DECODER)       += arm/rv34dsp_neon.o
  NEON-OBJS-$(CONFIG_RV40_DECODER)       += arm/rv34dsp_neon.o            \
                                            arm/rv40dsp_neon.o
index 0000000,5edf619..c0e5d8b
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,35 +1,35 @@@
 - * This file is part of Libav.
+ /*
+  * Copyright (c) 2015 Peter Meerwald <pmeerw@pmeerw.net>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg 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.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg 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 FFmpeg; 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 "libavutil/arm/cpu.h"
+ #include "libavcodec/g722dsp.h"
+ extern void ff_g722_apply_qmf_neon(const int16_t *prev_samples, int xout[2]);
+ av_cold void ff_g722dsp_init_arm(G722DSPContext *dsp)
+ {
+     int cpu_flags = av_get_cpu_flags();
+     if (have_neon(cpu_flags))
+         dsp->apply_qmf = ff_g722_apply_qmf_neon;
+ }
index 0000000,5fa3c27..757e53f
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,69 +1,69 @@@
 - * This file is part of Libav.
+ /*
+  * ARM NEON optimised DSP functions for G722 coding
+  * Copyright (c) 2015 Peter Meerwald <pmeerw@pmeerw.net>
+  *
 - * Libav is free software; you can redistribute it and/or
++ * This file is part of FFmpeg.
+  *
 - * Libav is distributed in the hope that it will be useful,
++ * FFmpeg 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.
+  *
 - * License along with Libav; if not, write to the Free Software
++ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+  */
+ #include "libavutil/arm/asm.S"
+ function ff_g722_apply_qmf_neon, export=1, align=4
+         movrel          r3, qmf_coeffs
+         vld1.s16        {d2,d3,d4}, [r0]! /* load prev_samples */
+         vld1.s16        {d16,d17,d18}, [r3,:64]! /* load qmf_coeffs */
+         vmull.s16       q0, d2, d16
+         vmlal.s16       q0, d3, d17
+         vmlal.s16       q0, d4, d18
+         vld1.s16        {d5,d6,d7}, [r0]! /* load prev_samples */
+         vld1.s16        {d19,d20,d21}, [r3,:64]! /* load qmf_coeffs */
+         vmlal.s16       q0, d5, d19
+         vmlal.s16       q0, d6, d20
+         vmlal.s16       q0, d7, d21
+         vadd.s32        d0, d1, d0
+         vrev64.32       d0, d0
+         vst1.s32        {d0}, [r1]
+         bx              lr
+ endfunc
+ const qmf_coeffs, align=4
+         .hword          3
+         .hword          -11
+         .hword          -11
+         .hword          53
+         .hword          12
+         .hword          -156
+         .hword          32
+         .hword          362
+         .hword          -210
+         .hword          -805
+         .hword          951
+         .hword          3876
+         .hword          3876
+         .hword          951
+         .hword          -805
+         .hword          -210
+         .hword          362
+         .hword          32
+         .hword          -156
+         .hword          12
+         .hword          53
+         .hword          -11
+         .hword          -11
+         .hword          3
+ endconst
Simple merge
Simple merge