• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * ARM NEON optimised DSP functions for G722 coding
3 * Copyright (c) 2015 Peter Meerwald <pmeerw@pmeerw.net>
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
11 *
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 * Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
22#include "libavutil/arm/asm.S"
23
24function ff_g722_apply_qmf_neon, export=1, align=4
25        movrel          r3, qmf_coeffs
26        vld1.s16        {d2,d3,d4}, [r0]! /* load prev_samples */
27        vld1.s16        {d16,d17,d18}, [r3,:64]! /* load qmf_coeffs */
28        vmull.s16       q0, d2, d16
29        vmlal.s16       q0, d3, d17
30        vmlal.s16       q0, d4, d18
31
32        vld1.s16        {d5,d6,d7}, [r0]! /* load prev_samples */
33        vld1.s16        {d19,d20,d21}, [r3,:64]! /* load qmf_coeffs */
34        vmlal.s16       q0, d5, d19
35        vmlal.s16       q0, d6, d20
36        vmlal.s16       q0, d7, d21
37
38        vadd.s32        d0, d1, d0
39        vrev64.32       d0, d0
40        vst1.s32        {d0}, [r1]
41        bx              lr
42endfunc
43
44const qmf_coeffs, align=4
45        .hword          3
46        .hword          -11
47        .hword          -11
48        .hword          53
49        .hword          12
50        .hword          -156
51        .hword          32
52        .hword          362
53        .hword          -210
54        .hword          -805
55        .hword          951
56        .hword          3876
57        .hword          3876
58        .hword          951
59        .hword          -805
60        .hword          -210
61        .hword          362
62        .hword          32
63        .hword          -156
64        .hword          12
65        .hword          53
66        .hword          -11
67        .hword          -11
68        .hword          3
69endconst
70