2 * Copyright (c) 2010 Mans Rullgard
4 * This file is part of FFmpeg.
6 * FFmpeg is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with FFmpeg; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 #define Y_DC_SCALE 0xa54
24 #define C_DC_SCALE 0xa58
26 #define BLOCK_LAST_INDEX 0x2278
27 #define INTER_SCANTAB_RASTER_END 0x2478
28 #define H263_AIC 0x2728
30 function ff_dct_unquantize_h263_inter_neon, export=1
32 add r12, r0, #BLOCK_LAST_INDEX-0x2200
33 ldr r12, [r12, r2, lsl #2]
34 add r0, r0, #INTER_SCANTAB_RASTER_END-0x2200
42 function ff_dct_unquantize_h263_neon, export=1
43 vdup.16 q15, r0 @ qmul
44 vdup.16 q14, r2 @ qadd
50 vld1.16 {q0}, [r0,:128]!
52 vld1.16 {q8}, [r0,:128]!
61 vadd.s16 q10, q10, q11
65 vst1.16 {q0}, [r1,:128]!
66 vst1.16 {q8}, [r1,:128]!
71 vld1.16 {d0}, [r0,:64]
78 vst1.16 {d0}, [r1,:64]
82 function ff_dct_unquantize_h263_intra_neon, export=1
84 ldr r6, [r0, #AC_PRED]
90 add r12, lr, #BLOCK_LAST_INDEX-0x2200
91 add lr, lr, #INTER_SCANTAB_RASTER_END-0x2200
92 ldr r12, [r12, r2, lsl #2]
94 1: ldr r5, [r5, #H263_AIC-0x2700]
103 ldr r6, [r0, #Y_DC_SCALE]
108 bl ff_dct_unquantize_h263_neon
110 vst1.16 {d0[0]}, [r5]