xref: /btstack/3rd-party/bluedroid/encoder/srce/sbc_analysis.c (revision 31f591700985e8eadf5c536377d08779c3a6b04f)
1df25739fSMilanka Ringwald /******************************************************************************
2df25739fSMilanka Ringwald  *
3df25739fSMilanka Ringwald  *  Copyright (C) 1999-2012 Broadcom Corporation
4df25739fSMilanka Ringwald  *
5df25739fSMilanka Ringwald  *  Licensed under the Apache License, Version 2.0 (the "License");
6df25739fSMilanka Ringwald  *  you may not use this file except in compliance with the License.
7df25739fSMilanka Ringwald  *  You may obtain a copy of the License at:
8df25739fSMilanka Ringwald  *
9df25739fSMilanka Ringwald  *  http://www.apache.org/licenses/LICENSE-2.0
10df25739fSMilanka Ringwald  *
11df25739fSMilanka Ringwald  *  Unless required by applicable law or agreed to in writing, software
12df25739fSMilanka Ringwald  *  distributed under the License is distributed on an "AS IS" BASIS,
13df25739fSMilanka Ringwald  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14df25739fSMilanka Ringwald  *  See the License for the specific language governing permissions and
15df25739fSMilanka Ringwald  *  limitations under the License.
16df25739fSMilanka Ringwald  *
17df25739fSMilanka Ringwald  ******************************************************************************/
18df25739fSMilanka Ringwald 
19df25739fSMilanka Ringwald /******************************************************************************
20df25739fSMilanka Ringwald  *
21df25739fSMilanka Ringwald  *  This file contains the code that performs Analysis of the input audio
22df25739fSMilanka Ringwald  *  stream.
23df25739fSMilanka Ringwald  *
24df25739fSMilanka Ringwald  ******************************************************************************/
25df25739fSMilanka Ringwald #include <string.h>
26df25739fSMilanka Ringwald #include "sbc_encoder.h"
27df25739fSMilanka Ringwald #include "sbc_enc_func_declare.h"
28df25739fSMilanka Ringwald /*#include <math.h>*/
29df25739fSMilanka Ringwald 
30df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
31df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_0_1 (SINT32)0x01659F45  /* gas32CoeffFor4SBs[8] = -gas32CoeffFor4SBs[32] = 0x01659F45 */
32df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_0_2 (SINT32)0x115B1ED2  /* gas32CoeffFor4SBs[16] = -gas32CoeffFor4SBs[24] = 0x115B1ED2 */
33df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_0 (SINT32)0x001194E6  /* gas32CoeffFor4SBs[1 et 39] = 0x001194E6 */
34df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_1 (SINT32)0x029DBAA3  /* gas32CoeffFor4SBs[9 et 31] = 0x029DBAA3 */
35df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_2 (SINT32)0x18F55C90  /* gas32CoeffFor4SBs[17 et 23] = 0x18F55C90 */
36df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_3 (SINT32)0xF60FAF37  /* gas32CoeffFor4SBs[15 et 25] = 0xF60FAF37 */
37df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_4 (SINT32)0xFF9BB9D5  /* gas32CoeffFor4SBs[7 et 33] = 0xFF9BB9D5 */
38df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_0 (SINT32)0x0030E2D3  /* gas32CoeffFor4SBs[2 et 38] = 0x0030E2D3 */
39df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_1 (SINT32)0x03B23341  /* gas32CoeffFor4SBs[10 et 30] = 0x03B23341 */
40df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_2 (SINT32)0x1F91CA46  /* gas32CoeffFor4SBs[18 et 22] = 0x1F91CA46 */
41df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_3 (SINT32)0xFC4F91D4  /* gas32CoeffFor4SBs[14 et 26] = 0xFC4F91D4 */
42df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_4 (SINT32)0x003D239B  /* gas32CoeffFor4SBs[6 et 34] = 0x003D239B */
43df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_0 (SINT32)0x00599403  /* gas32CoeffFor4SBs[3 et 37] = 0x00599403 */
44df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_1 (SINT32)0x041EEE40  /* gas32CoeffFor4SBs[11 et 29] = 0x041EEE40 */
45df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_2 (SINT32)0x2412F251  /* gas32CoeffFor4SBs[19 et 21] = 0x2412F251 */
46df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_3 (SINT32)0x00C8F2BC  /* gas32CoeffFor4SBs[13 et 27] = 0x00C8F2BC */
47df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_4 (SINT32)0x007F88E4  /* gas32CoeffFor4SBs[5 et 35] = 0x007F88E4 */
48df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_0 (SINT32)0x007DBCC8  /* gas32CoeffFor4SBs[4 et 36] = 0x007DBCC8 */
49df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_1 (SINT32)0x034FEE2C  /* gas32CoeffFor4SBs[12 et 28] = 0x034FEE2C */
50df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_2 (SINT32)0x25AC1FF2  /* gas32CoeffFor4SBs[20] = 0x25AC1FF2 */
51df25739fSMilanka Ringwald 
52df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_0_1 (SINT32)0x00B97348  /* 16 0x00B97348 */
53df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_0_2 (SINT32)0x08B4307A  /* 32 0x08B4307A */
54df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_0 (SINT32)0x00052173  /* 1 et 79 = 0x00052173 */
55df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_1 (SINT32)0x01071B96  /* 17 et 63 = 0x01071B96 */
56df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_2 (SINT32)0x0A9F3E9A  /* 33 et 47 = 0x0A9F3E9A*/
57df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_3 (SINT32)0xF9312891  /* 31 et 49 = 0xF9312891 */
58df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_4 (SINT32)0xFF8D6793  /* 15 et 65 = 0xFF8D6793 */
59df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_0 (SINT32)0x000B3F71  /* 2 et 78 = 0x000B3F71 */
60df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_1 (SINT32)0x0156B3CA  /* 18 et 62 = 0x0156B3CA */
61df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_2 (SINT32)0x0C7D59B6  /* 34 et 46 = 0x0C7D59B6 */
62df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_3 (SINT32)0xFAFF95FC  /* 30 et 50 = 0xFAFF95FC */
63df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_4 (SINT32)0xFFC9F10E  /* 14 et 66 = 0xFFC9F10E */
64df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_0 (SINT32)0x00122C7D  /* 3 et 77 = 0x00122C7D*/
65df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_1 (SINT32)0x01A1B38B  /* 19 et 61 = 0x01A1B38B */
66df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_2 (SINT32)0x0E3BB16F  /* 35 et 45 = 0x0E3BB16F */
67df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_3 (SINT32)0xFCA86E7E  /* 29 et 51 = 0xFCA86E7E */
68df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_4 (SINT32)0xFFFA2413  /* 13 et 67 = 0xFFFA2413 */
69df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_0 (SINT32)0x001AFF89  /* 4 et 66 = 0x001AFF89 */
70df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_1 (SINT32)0x01E0224C  /* 20 et 60 = 0x01E0224C */
71df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_2 (SINT32)0x0FC721F9  /* 36 et 44 = 0x0FC721F9 */
72df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_3 (SINT32)0xFE20435D  /* 28 et 52 = 0xFE20435D */
73df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_4 (SINT32)0x001D8FD2  /* 12 et 68 = 0x001D8FD2 */
74df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_0 (SINT32)0x00255A62  /* 5 et 75 = 0x00255A62 */
75df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_1 (SINT32)0x0209291F  /* 21 et 59 = 0x0209291F */
76df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_2 (SINT32)0x110ECEF0  /* 37 et 43 = 0x110ECEF0 */
77df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_3 (SINT32)0xFF5EEB73  /* 27 et  53 = 0xFF5EEB73 */
78df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_4 (SINT32)0x0034F8B6  /* 11 et 69 = 0x0034F8B6 */
79df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_0 (SINT32)0x003060F4  /* 6 et 74 = 0x003060F4 */
80df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_1 (SINT32)0x02138653  /* 22 et 58 = 0x02138653 */
81df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_2 (SINT32)0x120435FA  /* 38 et 42 = 0x120435FA */
82df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_3 (SINT32)0x005FD0FF  /* 26 et 54 = 0x005FD0FF */
83df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_4 (SINT32)0x00415B75  /* 10 et 70 = 0x00415B75 */
84df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_0 (SINT32)0x003A72E7  /* 7 et 73 = 0x003A72E7 */
85df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_1 (SINT32)0x01F5F424  /* 23 et 57 = 0x01F5F424 */
86df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_2 (SINT32)0x129C226F  /* 39 et 41 = 0x129C226F */
87df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_3 (SINT32)0x01223EBA  /* 25 et 55 = 0x01223EBA */
88df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_4 (SINT32)0x0044EF48  /* 9 et 71 = 0x0044EF48 */
89df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_0 (SINT32)0x0041EC6A  /* 8 et 72 = 0x0041EC6A */
90df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_1 (SINT32)0x01A7ECEF  /* 24 et 56 = 0x01A7ECEF */
91df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_2 (SINT32)0x12CF6C75  /* 40 = 0x12CF6C75 */
92df25739fSMilanka Ringwald #else
93df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_0_1 (SINT16)0x0166  /* gas32CoeffFor4SBs[8] = -gas32CoeffFor4SBs[32] = 0x01659F45 */
94df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_0_2 (SINT16)0x115B  /* gas32CoeffFor4SBs[16] = -gas32CoeffFor4SBs[24] = 0x115B1ED2 */
95df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_0 (SINT16)0x0012  /* gas32CoeffFor4SBs[1 et 39] = 0x001194E6 */
96df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_1 (SINT16)0x029E  /* gas32CoeffFor4SBs[9 et 31] = 0x029DBAA3 */
97df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_2 (SINT16)0x18F5  /* gas32CoeffFor4SBs[17 et 23] = 0x18F55C90 */
98df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_3 (SINT16)0xF610  /* gas32CoeffFor4SBs[15 et 25] = 0xF60FAF37 */
99df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_1_4 (SINT16)0xFF9C  /* gas32CoeffFor4SBs[7 et 33] = 0xFF9BB9D5 */
100df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_0 (SINT16)0x0031  /* gas32CoeffFor4SBs[2 et 38] = 0x0030E2D3 */
101df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_1 (SINT16)0x03B2  /* gas32CoeffFor4SBs[10 et 30] = 0x03B23341 */
102df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_2 (SINT16)0x1F91  /* gas32CoeffFor4SBs[18 et 22] = 0x1F91CA46 */
103df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_3 (SINT16)0xFC50  /* gas32CoeffFor4SBs[14 et 26] = 0xFC4F91D4 */
104df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_2_4 (SINT16)0x003D  /* gas32CoeffFor4SBs[6 et 34] = 0x003D239B */
105df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_0 (SINT16)0x005A  /* gas32CoeffFor4SBs[3 et 37] = 0x00599403 */
106df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_1 (SINT16)0x041F  /* gas32CoeffFor4SBs[11 et 29] = 0x041EEE40 */
107df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_2 (SINT16)0x2413  /* gas32CoeffFor4SBs[19 et 21] = 0x2412F251 */
108df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_3 (SINT16)0x00C9  /* gas32CoeffFor4SBs[13 et 27] = 0x00C8F2BC */
109df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_3_4 (SINT16)0x0080  /* gas32CoeffFor4SBs[5 et 35] = 0x007F88E4 */
110df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_0 (SINT16)0x007E  /* gas32CoeffFor4SBs[4 et 36] = 0x007DBCC8 */
111df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_1 (SINT16)0x0350  /* gas32CoeffFor4SBs[12 et 28] = 0x034FEE2C */
112df25739fSMilanka Ringwald #define WIND_4_SUBBANDS_4_2 (SINT16)0x25AC  /* gas32CoeffFor4SBs[20] = 25AC1FF2 */
113df25739fSMilanka Ringwald 
114df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_0_1 (SINT16)0x00B9  /* 16 0x12CF6C75 */
115df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_0_2 (SINT16)0x08B4  /* 32 0x08B4307A */
116df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_0 (SINT16)0x0005  /* 1 et 79 = 0x00052173 */
117df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_1 (SINT16)0x0107  /* 17 et 63 = 0x01071B96 */
118df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_2 (SINT16)0x0A9F  /* 33 et 47 = 0x0A9F3E9A*/
119df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_3 (SINT16)0xF931  /* 31 et 49 = 0xF9312891 */
120df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_1_4 (SINT16)0xFF8D  /* 15 et 65 = 0xFF8D6793 */
121df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_0 (SINT16)0x000B  /* 2 et 78 = 0x000B3F71 */
122df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_1 (SINT16)0x0157  /* 18 et 62 = 0x0156B3CA */
123df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_2 (SINT16)0x0C7D  /* 34 et 46 = 0x0C7D59B6 */
124df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_3 (SINT16)0xFB00  /* 30 et 50 = 0xFAFF95FC */
125df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_2_4 (SINT16)0xFFCA  /* 14 et 66 = 0xFFC9F10E */
126df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_0 (SINT16)0x0012  /* 3 et 77 = 0x00122C7D*/
127df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_1 (SINT16)0x01A2  /* 19 et 61 = 0x01A1B38B */
128df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_2 (SINT16)0x0E3C  /* 35 et 45 = 0x0E3BB16F */
129df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_3 (SINT16)0xFCA8  /* 29 et 51 = 0xFCA86E7E */
130df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_3_4 (SINT16)0xFFFA  /* 13 et 67 = 0xFFFA2413 */
131df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_0 (SINT16)0x001B  /* 4 et 66 = 0x001AFF89 */
132df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_1 (SINT16)0x01E0  /* 20 et 60 = 0x01E0224C */
133df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_2 (SINT16)0x0FC7  /* 36 et 44 = 0x0FC721F9 */
134df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_3 (SINT16)0xFE20  /* 28 et 52 = 0xFE20435D */
135df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_4_4 (SINT16)0x001E  /* 12 et 68 = 0x001D8FD2 */
136df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_0 (SINT16)0x0025  /* 5 et 75 = 0x00255A62 */
137df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_1 (SINT16)0x0209  /* 21 et 59 = 0x0209291F */
138df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_2 (SINT16)0x110F  /* 37 et 43 = 0x110ECEF0 */
139df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_3 (SINT16)0xFF5F  /* 27 et  53 = 0xFF5EEB73 */
140df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_5_4 (SINT16)0x0035  /* 11 et 69 = 0x0034F8B6 */
141df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_0 (SINT16)0x0030  /* 6 et 74 = 0x003060F4 */
142df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_1 (SINT16)0x0214  /* 22 et 58 = 0x02138653 */
143df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_2 (SINT16)0x1204  /* 38 et 42 = 0x120435FA */
144df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_3 (SINT16)0x0060  /* 26 et 54 = 0x005FD0FF */
145df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_6_4 (SINT16)0x0041  /* 10 et 70 = 0x00415B75 */
146df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_0 (SINT16)0x003A  /* 7 et 73 = 0x003A72E7 */
147df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_1 (SINT16)0x01F6  /* 23 et 57 = 0x01F5F424 */
148df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_2 (SINT16)0x129C  /* 39 et 41 = 0x129C226F */
149df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_3 (SINT16)0x0122  /* 25 et 55 = 0x01223EBA */
150df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_7_4 (SINT16)0x0045  /* 9 et 71 = 0x0044EF48 */
151df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_0 (SINT16)0x0042  /* 8 et 72 = 0x0041EC6A */
152df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_1 (SINT16)0x01A8  /* 24 et 56 = 0x01A7ECEF */
153df25739fSMilanka Ringwald #define WIND_8_SUBBANDS_8_2 (SINT16)0x12CF  /* 40 = 0x12CF6C75 */
154df25739fSMilanka Ringwald #endif
155df25739fSMilanka Ringwald 
156df25739fSMilanka Ringwald #if (SBC_USE_ARM_PRAGMA==TRUE)
157df25739fSMilanka Ringwald #pragma arm section zidata
158df25739fSMilanka Ringwald #endif
159df25739fSMilanka Ringwald 
160df25739fSMilanka Ringwald /* This macro is for 4 subbands */
161df25739fSMilanka Ringwald #define SHIFTUP_X4                                                               \
162df25739fSMilanka Ringwald {                                                                                   \
163*31f59170SMatthias Ringwald     ps32X=(SINT32 *)(pstrEncParams->s16X+EncMaxShiftCounter+38);                                 \
164df25739fSMilanka Ringwald     for (i=0;i<9;i++)                                                               \
165df25739fSMilanka Ringwald     {                                                                               \
166df25739fSMilanka Ringwald         *ps32X=*(ps32X-2-(ShiftCounter>>1));  ps32X--;                                 \
167df25739fSMilanka Ringwald         *ps32X=*(ps32X-2-(ShiftCounter>>1));  ps32X--;                                 \
168df25739fSMilanka Ringwald     }                                                                               \
169df25739fSMilanka Ringwald }
170df25739fSMilanka Ringwald #define SHIFTUP_X4_2                                                              \
171df25739fSMilanka Ringwald {                                                                                   \
172*31f59170SMatthias Ringwald     ps32X=(SINT32 *)(pstrEncParams->s16X+EncMaxShiftCounter+38);                                   \
173*31f59170SMatthias Ringwald     ps32X2=(SINT32 *)(pstrEncParams->s16X+(EncMaxShiftCounter<<1)+78);                             \
174df25739fSMilanka Ringwald     for (i=0;i<9;i++)                                                               \
175df25739fSMilanka Ringwald     {                                                                               \
176df25739fSMilanka Ringwald         *ps32X=*(ps32X-2-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-2-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
177df25739fSMilanka Ringwald         *ps32X=*(ps32X-2-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-2-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
178df25739fSMilanka Ringwald     }                                                                               \
179df25739fSMilanka Ringwald }
180df25739fSMilanka Ringwald 
181df25739fSMilanka Ringwald /* This macro is for 8 subbands */
182df25739fSMilanka Ringwald #define SHIFTUP_X8                                                               \
183df25739fSMilanka Ringwald {                                                                                   \
184*31f59170SMatthias Ringwald     ps32X=(SINT32 *)(pstrEncParams->s16X+EncMaxShiftCounter+78);                                 \
185df25739fSMilanka Ringwald     for (i=0;i<9;i++)                                                               \
186df25739fSMilanka Ringwald     {                                                                               \
187df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  ps32X--;                                 \
188df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  ps32X--;                                 \
189df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  ps32X--;                                 \
190df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  ps32X--;                                 \
191df25739fSMilanka Ringwald     }                                                                               \
192df25739fSMilanka Ringwald }
193df25739fSMilanka Ringwald #define SHIFTUP_X8_2                                                               \
194df25739fSMilanka Ringwald {                                                                                   \
195*31f59170SMatthias Ringwald     ps32X=(SINT32 *)(pstrEncParams->s16X+EncMaxShiftCounter+78);                                   \
196*31f59170SMatthias Ringwald     ps32X2=(SINT32 *)(pstrEncParams->s16X+(EncMaxShiftCounter<<1)+158);                             \
197df25739fSMilanka Ringwald     for (i=0;i<9;i++)                                                               \
198df25739fSMilanka Ringwald     {                                                                               \
199df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-4-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
200df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-4-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
201df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-4-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
202df25739fSMilanka Ringwald         *ps32X=*(ps32X-4-(ShiftCounter>>1));  *(ps32X2)=*(ps32X2-4-(ShiftCounter>>1)); ps32X--;  ps32X2--;                     \
203df25739fSMilanka Ringwald     }                                                                               \
204df25739fSMilanka Ringwald }
205df25739fSMilanka Ringwald 
206df25739fSMilanka Ringwald #if (SBC_ARM_ASM_OPT==TRUE)
207df25739fSMilanka Ringwald #define WINDOW_ACCU_8_0 \
208df25739fSMilanka Ringwald {\
209df25739fSMilanka Ringwald     __asm\
210df25739fSMilanka Ringwald     {\
211*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_0_1,(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
212*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_0_2,(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]),s32Hi;\
213*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[0],s32Hi;\
214df25739fSMilanka Ringwald     }\
215df25739fSMilanka Ringwald }
216df25739fSMilanka Ringwald #define WINDOW_ACCU_8_1_15 \
217df25739fSMilanka Ringwald {\
218df25739fSMilanka Ringwald     __asm\
219df25739fSMilanka Ringwald     {\
220*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+1];\
221*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+64+15];\
222*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+16+1],s32Hi;\
223*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+48+15],s32Hi2;\
224*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+32+1],s32Hi;\
225*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+32+15],s32Hi2;\
226*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+48+1],s32Hi;\
227*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+16+15],s32Hi2;\
228*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+64+1],s32Hi;\
229*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+15],s32Hi2;\
230*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[1],s32Hi;\
231*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[15],s32Hi2;\
232df25739fSMilanka Ringwald     }\
233df25739fSMilanka Ringwald }
234df25739fSMilanka Ringwald #define WINDOW_ACCU_8_2_14 \
235df25739fSMilanka Ringwald {\
236df25739fSMilanka Ringwald     __asm\
237df25739fSMilanka Ringwald     {\
238*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+2];\
239*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+64+14];\
240*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+16+2],s32Hi;\
241*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+48+14],s32Hi2;\
242*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+32+2],s32Hi;\
243*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+32+14],s32Hi2;\
244*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+48+2],s32Hi;\
245*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+16+14],s32Hi2;\
246*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+64+2],s32Hi;\
247*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+14],s32Hi2;\
248*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[2],s32Hi;\
249*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[14],s32Hi2;\
250df25739fSMilanka Ringwald     }\
251df25739fSMilanka Ringwald }
252df25739fSMilanka Ringwald #define WINDOW_ACCU_8_3_13 \
253df25739fSMilanka Ringwald {\
254df25739fSMilanka Ringwald     __asm\
255df25739fSMilanka Ringwald     {\
256*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+3];\
257*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+64+13];\
258*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+16+3],s32Hi;\
259*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+48+13],s32Hi2;\
260*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+32+3],s32Hi;\
261*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+32+13],s32Hi2;\
262*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+48+3],s32Hi;\
263*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+16+13],s32Hi2;\
264*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+64+3],s32Hi;\
265*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+13],s32Hi2;\
266*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[3],s32Hi;\
267*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[13],s32Hi2;\
268df25739fSMilanka Ringwald     }\
269df25739fSMilanka Ringwald }
270df25739fSMilanka Ringwald #define WINDOW_ACCU_8_4_12 \
271df25739fSMilanka Ringwald {\
272df25739fSMilanka Ringwald     __asm\
273df25739fSMilanka Ringwald     {\
274*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_4_0,pstrEncParams->s16X[ChOffset+4];\
275*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_4_0,pstrEncParams->s16X[ChOffset+64+12];\
276*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_4_1,pstrEncParams->s16X[ChOffset+16+4],s32Hi;\
277*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_4_1,pstrEncParams->s16X[ChOffset+48+12],s32Hi2;\
278*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+32+4],s32Hi;\
279*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+32+12],s32Hi2;\
280*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_4_3,pstrEncParams->s16X[ChOffset+48+4],s32Hi;\
281*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_4_3,pstrEncParams->s16X[ChOffset+16+12],s32Hi2;\
282*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_4_4,pstrEncParams->s16X[ChOffset+64+4],s32Hi;\
283*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_4_4,pstrEncParams->s16X[ChOffset+12],s32Hi2;\
284*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[4],s32Hi;\
285*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[12],s32Hi2;\
286df25739fSMilanka Ringwald     }\
287df25739fSMilanka Ringwald }
288df25739fSMilanka Ringwald #define WINDOW_ACCU_8_5_11 \
289df25739fSMilanka Ringwald {\
290df25739fSMilanka Ringwald     __asm\
291df25739fSMilanka Ringwald     {\
292*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_5_0,pstrEncParams->s16X[ChOffset+5];\
293*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_5_0,pstrEncParams->s16X[ChOffset+64+11];\
294*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_5_1,pstrEncParams->s16X[ChOffset+16+5],s32Hi;\
295*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_5_1,pstrEncParams->s16X[ChOffset+48+11],s32Hi2;\
296*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_5_2,pstrEncParams->s16X[ChOffset+32+5],s32Hi;\
297*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_5_2,pstrEncParams->s16X[ChOffset+32+11],s32Hi2;\
298*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_5_3,pstrEncParams->s16X[ChOffset+48+5],s32Hi;\
299*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_5_3,pstrEncParams->s16X[ChOffset+16+11],s32Hi2;\
300*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_5_4,pstrEncParams->s16X[ChOffset+64+5],s32Hi;\
301*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_5_4,pstrEncParams->s16X[ChOffset+11],s32Hi2;\
302*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[5],s32Hi;\
303*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[11],s32Hi2;\
304df25739fSMilanka Ringwald     }\
305df25739fSMilanka Ringwald }
306df25739fSMilanka Ringwald #define WINDOW_ACCU_8_6_10 \
307df25739fSMilanka Ringwald {\
308df25739fSMilanka Ringwald     __asm\
309df25739fSMilanka Ringwald     {\
310*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_6_0,pstrEncParams->s16X[ChOffset+6];\
311*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_6_0,pstrEncParams->s16X[ChOffset+64+10];\
312*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_6_1,pstrEncParams->s16X[ChOffset+16+6],s32Hi;\
313*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_6_1,pstrEncParams->s16X[ChOffset+48+10],s32Hi2;\
314*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_6_2,pstrEncParams->s16X[ChOffset+32+6],s32Hi;\
315*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_6_2,pstrEncParams->s16X[ChOffset+32+10],s32Hi2;\
316*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_6_3,pstrEncParams->s16X[ChOffset+48+6],s32Hi;\
317*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_6_3,pstrEncParams->s16X[ChOffset+16+10],s32Hi2;\
318*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_6_4,pstrEncParams->s16X[ChOffset+64+6],s32Hi;\
319*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_6_4,pstrEncParams->s16X[ChOffset+10],s32Hi2;\
320*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[6],s32Hi;\
321*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[10],s32Hi2;\
322df25739fSMilanka Ringwald     }\
323df25739fSMilanka Ringwald }
324df25739fSMilanka Ringwald #define WINDOW_ACCU_8_7_9 \
325df25739fSMilanka Ringwald {\
326df25739fSMilanka Ringwald     __asm\
327df25739fSMilanka Ringwald     {\
328*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_7_0,pstrEncParams->s16X[ChOffset+7];\
329*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_8_SUBBANDS_7_0,pstrEncParams->s16X[ChOffset+64+9];\
330*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_7_1,pstrEncParams->s16X[ChOffset+16+7],s32Hi;\
331*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_7_1,pstrEncParams->s16X[ChOffset+48+9],s32Hi2;\
332*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_7_2,pstrEncParams->s16X[ChOffset+32+7],s32Hi;\
333*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_7_2,pstrEncParams->s16X[ChOffset+32+9],s32Hi2;\
334*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_7_3,pstrEncParams->s16X[ChOffset+48+7],s32Hi;\
335*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_7_3,pstrEncParams->s16X[ChOffset+16+9],s32Hi2;\
336*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_7_4,pstrEncParams->s16X[ChOffset+64+7],s32Hi;\
337*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_8_SUBBANDS_7_4,pstrEncParams->s16X[ChOffset+9],s32Hi2;\
338*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[7],s32Hi;\
339*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[9],s32Hi2;\
340df25739fSMilanka Ringwald     }\
341df25739fSMilanka Ringwald }
342df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
343df25739fSMilanka Ringwald {\
344df25739fSMilanka Ringwald     __asm\
345df25739fSMilanka Ringwald     {\
346*31f59170SMatthias Ringwald         MUL s32Hi,WIND_8_SUBBANDS_8_0,(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+8+64]);\
347*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_8_1,(pstrEncParams->s16X[ChOffset+8+16]+pstrEncParams->s16X[ChOffset+8+64]),s32Hi;\
348*31f59170SMatthias Ringwald         MLA s32Hi,WIND_8_SUBBANDS_8_2,pstrEncParams->s16X[ChOffset+8+32],s32Hi;\
349*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[8],s32Hi;\
350df25739fSMilanka Ringwald     }\
351df25739fSMilanka Ringwald }
352df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
353df25739fSMilanka Ringwald {\
354df25739fSMilanka Ringwald     __asm\
355df25739fSMilanka Ringwald     {\
356*31f59170SMatthias Ringwald         MUL s32Hi,WIND_4_SUBBANDS_0_1,(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
357*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_0_2,(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]),s32Hi;\
358*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[0],s32Hi;\
359df25739fSMilanka Ringwald     }\
360df25739fSMilanka Ringwald }
361df25739fSMilanka Ringwald #define WINDOW_ACCU_4_1_7 \
362df25739fSMilanka Ringwald {\
363df25739fSMilanka Ringwald     __asm\
364df25739fSMilanka Ringwald     {\
365*31f59170SMatthias Ringwald         MUL s32Hi,WIND_4_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+1];\
366*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_4_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+32+7];\
367*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+8+1],s32Hi;\
368*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+24+7],s32Hi2;\
369*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+16+1],s32Hi;\
370*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+16+7],s32Hi2;\
371*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+24+1],s32Hi;\
372*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+8+7],s32Hi2;\
373*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+32+1],s32Hi;\
374*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+7],s32Hi2;\
375*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[1],s32Hi;\
376*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[7],s32Hi2;\
377df25739fSMilanka Ringwald     }\
378df25739fSMilanka Ringwald }
379df25739fSMilanka Ringwald #define WINDOW_ACCU_4_2_6 \
380df25739fSMilanka Ringwald {\
381df25739fSMilanka Ringwald     __asm\
382df25739fSMilanka Ringwald     {\
383*31f59170SMatthias Ringwald         MUL s32Hi,WIND_4_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+2];\
384*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_4_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+32+6];\
385*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+8+2],s32Hi;\
386*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+24+6],s32Hi2;\
387*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+16+2],s32Hi;\
388*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+16+6],s32Hi2;\
389*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+24+2],s32Hi;\
390*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+8+6],s32Hi2;\
391*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+32+2],s32Hi;\
392*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+6],s32Hi2;\
393*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[2],s32Hi;\
394*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[6],s32Hi2;\
395df25739fSMilanka Ringwald     }\
396df25739fSMilanka Ringwald }
397df25739fSMilanka Ringwald #define WINDOW_ACCU_4_3_5 \
398df25739fSMilanka Ringwald {\
399df25739fSMilanka Ringwald     __asm\
400df25739fSMilanka Ringwald     {\
401*31f59170SMatthias Ringwald         MUL s32Hi,WIND_4_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+3];\
402*31f59170SMatthias Ringwald         MUL s32Hi2,WIND_4_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+32+5];\
403*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+8+3],s32Hi;\
404*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+24+5],s32Hi2;\
405*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+16+3],s32Hi;\
406*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+16+5],s32Hi2;\
407*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+24+3],s32Hi;\
408*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+8+5],s32Hi2;\
409*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+32+3],s32Hi;\
410*31f59170SMatthias Ringwald         MLA s32Hi2,WIND_4_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+5],s32Hi2;\
411*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[3],s32Hi;\
412*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[5],s32Hi2;\
413df25739fSMilanka Ringwald     }\
414df25739fSMilanka Ringwald }
415df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
416df25739fSMilanka Ringwald {\
417df25739fSMilanka Ringwald     __asm\
418df25739fSMilanka Ringwald     {\
419*31f59170SMatthias Ringwald         MUL s32Hi,WIND_4_SUBBANDS_4_0,(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
420*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_4_1,(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]),s32Hi;\
421*31f59170SMatthias Ringwald         MLA s32Hi,WIND_4_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+4+16],s32Hi;\
422*31f59170SMatthias Ringwald         MOV pstrEncParams->s32DCTY[4],s32Hi;\
423df25739fSMilanka Ringwald     }\
424df25739fSMilanka Ringwald }
425df25739fSMilanka Ringwald 
426df25739fSMilanka Ringwald #define WINDOW_PARTIAL_4 \
427df25739fSMilanka Ringwald {\
428df25739fSMilanka Ringwald     WINDOW_ACCU_4_0;     WINDOW_ACCU_4_1_7;\
429df25739fSMilanka Ringwald     WINDOW_ACCU_4_2_6;   WINDOW_ACCU_4_3_5;\
430df25739fSMilanka Ringwald     WINDOW_ACCU_4_4;\
431df25739fSMilanka Ringwald }
432df25739fSMilanka Ringwald 
433df25739fSMilanka Ringwald #define WINDOW_PARTIAL_8 \
434df25739fSMilanka Ringwald {\
435df25739fSMilanka Ringwald     WINDOW_ACCU_8_0;     WINDOW_ACCU_8_1_15;\
436df25739fSMilanka Ringwald     WINDOW_ACCU_8_2_14;  WINDOW_ACCU_8_3_13;\
437df25739fSMilanka Ringwald     WINDOW_ACCU_8_4_12;  WINDOW_ACCU_8_5_11;\
438df25739fSMilanka Ringwald     WINDOW_ACCU_8_6_10;  WINDOW_ACCU_8_7_9;\
439df25739fSMilanka Ringwald     WINDOW_ACCU_8_8;\
440df25739fSMilanka Ringwald }
441df25739fSMilanka Ringwald 
442df25739fSMilanka Ringwald #else
443df25739fSMilanka Ringwald #if (SBC_IPAQ_OPT==TRUE)
444df25739fSMilanka Ringwald 
445df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
446df25739fSMilanka Ringwald #define WINDOW_ACCU_8_0 \
447df25739fSMilanka Ringwald {\
448*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_0_1*(SINT64)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
449*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_0_2*(SINT64)(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]);\
450*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[0]=(SINT32)(s64Temp>>16);\
451df25739fSMilanka Ringwald }
452df25739fSMilanka Ringwald #define WINDOW_ACCU_8_1_15 \
453df25739fSMilanka Ringwald {\
454*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+1];\
455*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+64+15];\
456*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+16+1];\
457*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+48+15];\
458*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+32+1];\
459*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+32+15];\
460*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+48+1];\
461*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+16+15];\
462*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+64+1];\
463*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+15];\
464*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[1]=(SINT32)(s64Temp>>16);\
465*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[15]=(SINT32)(s64Temp2>>16);\
466df25739fSMilanka Ringwald }
467df25739fSMilanka Ringwald #define WINDOW_ACCU_8_2_14 \
468df25739fSMilanka Ringwald {\
469*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+2];\
470*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+64+14];\
471*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+16+2];\
472*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+48+14];\
473*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+32+2];\
474*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+32+14];\
475*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+48+2];\
476*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+16+14];\
477*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+64+2];\
478*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+14];\
479*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[2]=(SINT32)(s64Temp>>16);\
480*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[14]=(SINT32)(s64Temp2>>16);\
481df25739fSMilanka Ringwald }
482df25739fSMilanka Ringwald #define WINDOW_ACCU_8_3_13 \
483df25739fSMilanka Ringwald {\
484*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+3];\
485*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+64+13];\
486*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+16+3];\
487*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+48+13];\
488*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+32+3];\
489*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+32+13];\
490*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+48+3];\
491*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+16+13];\
492*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+64+3];\
493*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+13];\
494*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[3]=(SINT32)(s64Temp>>16);\
495*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[13]=(SINT32)(s64Temp2>>16);\
496df25739fSMilanka Ringwald }
497df25739fSMilanka Ringwald #define WINDOW_ACCU_8_4_12 \
498df25739fSMilanka Ringwald {\
499*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_4_0*(SINT64)pstrEncParams->s16X[ChOffset+4];\
500*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_4_0*(SINT64)pstrEncParams->s16X[ChOffset+64+12];\
501*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_4_1*(SINT64)pstrEncParams->s16X[ChOffset+16+4];\
502*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_1*(SINT64)pstrEncParams->s16X[ChOffset+48+12];\
503*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+32+4];\
504*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+32+12];\
505*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_4_3*(SINT64)pstrEncParams->s16X[ChOffset+48+4];\
506*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_3*(SINT64)pstrEncParams->s16X[ChOffset+16+12];\
507*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_4_4*(SINT64)pstrEncParams->s16X[ChOffset+64+4];\
508*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_4*(SINT64)pstrEncParams->s16X[ChOffset+12];\
509*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[4]=(SINT32)(s64Temp>>16);\
510*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[12]=(SINT32)(s64Temp2>>16);\
511df25739fSMilanka Ringwald }
512df25739fSMilanka Ringwald #define WINDOW_ACCU_8_5_11 \
513df25739fSMilanka Ringwald {\
514*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_5_0*(SINT64)pstrEncParams->s16X[ChOffset+5];\
515*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_5_0*(SINT64)pstrEncParams->s16X[ChOffset+64+11];\
516*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_5_1*(SINT64)pstrEncParams->s16X[ChOffset+16+5];\
517*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_1*(SINT64)pstrEncParams->s16X[ChOffset+48+11];\
518*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_5_2*(SINT64)pstrEncParams->s16X[ChOffset+32+5];\
519*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_2*(SINT64)pstrEncParams->s16X[ChOffset+32+11];\
520*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_5_3*(SINT64)pstrEncParams->s16X[ChOffset+48+5];\
521*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_3*(SINT64)pstrEncParams->s16X[ChOffset+16+11];\
522*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_5_4*(SINT64)pstrEncParams->s16X[ChOffset+64+5];\
523*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_4*(SINT64)pstrEncParams->s16X[ChOffset+11];\
524*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[5]=(SINT32)(s64Temp>>16);\
525*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[11]=(SINT32)(s64Temp2>>16);\
526df25739fSMilanka Ringwald }
527df25739fSMilanka Ringwald #define WINDOW_ACCU_8_6_10 \
528df25739fSMilanka Ringwald {\
529*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_6_0*(SINT64)pstrEncParams->s16X[ChOffset+6];\
530*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_6_0*(SINT64)pstrEncParams->s16X[ChOffset+64+10];\
531*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_6_1*(SINT64)pstrEncParams->s16X[ChOffset+16+6];\
532*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_1*(SINT64)pstrEncParams->s16X[ChOffset+48+10];\
533*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_6_2*(SINT64)pstrEncParams->s16X[ChOffset+32+6];\
534*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_2*(SINT64)pstrEncParams->s16X[ChOffset+32+10];\
535*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_6_3*(SINT64)pstrEncParams->s16X[ChOffset+48+6];\
536*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_3*(SINT64)pstrEncParams->s16X[ChOffset+16+10];\
537*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_6_4*(SINT64)pstrEncParams->s16X[ChOffset+64+6];\
538*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_4*(SINT64)pstrEncParams->s16X[ChOffset+10];\
539*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[6]=(SINT32)(s64Temp>>16);\
540*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[10]=(SINT32)(s64Temp2>>16);\
541df25739fSMilanka Ringwald }
542df25739fSMilanka Ringwald #define WINDOW_ACCU_8_7_9 \
543df25739fSMilanka Ringwald {\
544*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_7_0*(SINT64)pstrEncParams->s16X[ChOffset+7];\
545*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_8_SUBBANDS_7_0*(SINT64)pstrEncParams->s16X[ChOffset+64+9];\
546*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_7_1*(SINT64)pstrEncParams->s16X[ChOffset+16+7];\
547*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_1*(SINT64)pstrEncParams->s16X[ChOffset+48+9];\
548*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_7_2*(SINT64)pstrEncParams->s16X[ChOffset+32+7];\
549*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_2*(SINT64)pstrEncParams->s16X[ChOffset+32+9];\
550*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_7_3*(SINT64)pstrEncParams->s16X[ChOffset+48+7];\
551*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_3*(SINT64)pstrEncParams->s16X[ChOffset+16+9];\
552*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_7_4*(SINT64)pstrEncParams->s16X[ChOffset+64+7];\
553*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_4*(SINT64)pstrEncParams->s16X[ChOffset+9];\
554*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[7]=(SINT32)(s64Temp>>16);\
555*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[9]=(SINT32)(s64Temp2>>16);\
556df25739fSMilanka Ringwald }
557df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
558df25739fSMilanka Ringwald {\
559*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_8_SUBBANDS_8_0*(SINT64)(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+64+8]);\
560*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_8_1*(SINT64)(pstrEncParams->s16X[ChOffset+16+8]+pstrEncParams->s16X[ChOffset+48+8]);\
561*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_8_SUBBANDS_8_2*(SINT64)pstrEncParams->s16X[ChOffset+32+8];\
562*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[8]=(SINT32)(s64Temp>>16);\
563df25739fSMilanka Ringwald }
564df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
565df25739fSMilanka Ringwald {\
566*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_4_SUBBANDS_0_1*(SINT64)(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
567*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_0_2*(SINT64)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]);\
568*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[0]=(SINT32)(s64Temp>>16);\
569df25739fSMilanka Ringwald }
570df25739fSMilanka Ringwald #define WINDOW_ACCU_4_1_7 \
571df25739fSMilanka Ringwald {\
572*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_4_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+1];\
573*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_4_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+32+7];\
574*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+8+1];\
575*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+24+7];\
576*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+16+1];\
577*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+16+7];\
578*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+24+1];\
579*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+8+7];\
580*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+32+1];\
581*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+7];\
582*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[1]=(SINT32)(s64Temp>>16);\
583*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[7]=(SINT32)(s64Temp2>>16);\
584df25739fSMilanka Ringwald }
585df25739fSMilanka Ringwald #define WINDOW_ACCU_4_2_6 \
586df25739fSMilanka Ringwald {\
587*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_4_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+2];\
588*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_4_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+32+6];\
589*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+8+2];\
590*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+24+6];\
591*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+16+2];\
592*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+16+6];\
593*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+24+2];\
594*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+8+6];\
595*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+32+2];\
596*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+6];\
597*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[2]=(SINT32)(s64Temp>>16);\
598*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[6]=(SINT32)(s64Temp2>>16);\
599df25739fSMilanka Ringwald }
600df25739fSMilanka Ringwald #define WINDOW_ACCU_4_3_5 \
601df25739fSMilanka Ringwald {\
602*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_4_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+3];\
603*31f59170SMatthias Ringwald     s64Temp2=(SINT64)WIND_4_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+32+5];\
604*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+8+3];\
605*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+24+5];\
606*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+16+3];\
607*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+16+5];\
608*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+24+3];\
609*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+8+5];\
610*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+32+3];\
611*31f59170SMatthias Ringwald     s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+5];\
612*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[3]=(SINT32)(s64Temp>>16);\
613*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[5]=(SINT32)(s64Temp2>>16);\
614df25739fSMilanka Ringwald }
615df25739fSMilanka Ringwald 
616df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
617df25739fSMilanka Ringwald {\
618*31f59170SMatthias Ringwald     s64Temp=(SINT64)WIND_4_SUBBANDS_4_0*(SINT64)(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
619*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_4_1*(SINT64)(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]);\
620*31f59170SMatthias Ringwald     s64Temp+=(SINT64)WIND_4_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+4+16];\
621*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[4]=(SINT32)(s64Temp>>16);\
622df25739fSMilanka Ringwald }
623df25739fSMilanka Ringwald #else /* SBC_IS_64_MULT_IN_WINDOW_ACCU == FALSE */
624df25739fSMilanka Ringwald #define WINDOW_ACCU_8_0 \
625df25739fSMilanka Ringwald {\
626*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_0_1*(SINT32)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
627*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_0_2*(SINT32)(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]);\
628*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[0]=(SINT32)s32Temp;\
629df25739fSMilanka Ringwald }
630df25739fSMilanka Ringwald #define WINDOW_ACCU_8_1_15 \
631df25739fSMilanka Ringwald {\
632*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+1];\
633*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+64+15];\
634*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+16+1];\
635*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+48+15];\
636*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+32+1];\
637*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+32+15];\
638*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+48+1];\
639*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+16+15];\
640*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+64+1];\
641*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+15];\
642*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[1]=(SINT32)s32Temp;\
643*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[15]=(SINT32)s32Temp2;\
644df25739fSMilanka Ringwald }
645df25739fSMilanka Ringwald #define WINDOW_ACCU_8_2_14 \
646df25739fSMilanka Ringwald {\
647*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+2];\
648*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+64+14];\
649*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+16+2];\
650*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+48+14];\
651*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+32+2];\
652*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+32+14];\
653*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+48+2];\
654*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+16+14];\
655*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+64+2];\
656*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+14];\
657*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[2]=(SINT32)s32Temp;\
658*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[14]=(SINT32)s32Temp2;\
659df25739fSMilanka Ringwald }
660df25739fSMilanka Ringwald #define WINDOW_ACCU_8_3_13 \
661df25739fSMilanka Ringwald {\
662*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+3];\
663*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+64+13];\
664*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+16+3];\
665*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+48+13];\
666*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+32+3];\
667*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+32+13];\
668*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+48+3];\
669*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+16+13];\
670*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+64+3];\
671*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+13];\
672*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[3]=(SINT32)s32Temp;\
673*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[13]=(SINT32)s32Temp2;\
674df25739fSMilanka Ringwald }
675df25739fSMilanka Ringwald #define WINDOW_ACCU_8_4_12 \
676df25739fSMilanka Ringwald {\
677*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_4_0*(SINT32)pstrEncParams->s16X[ChOffset+4];\
678*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_4_0*(SINT32)pstrEncParams->s16X[ChOffset+64+12];\
679*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_4_1*(SINT32)pstrEncParams->s16X[ChOffset+16+4];\
680*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_1*(SINT32)pstrEncParams->s16X[ChOffset+48+12];\
681*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+32+4];\
682*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+32+12];\
683*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_4_3*(SINT32)pstrEncParams->s16X[ChOffset+48+4];\
684*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_3*(SINT32)pstrEncParams->s16X[ChOffset+16+12];\
685*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_4_4*(SINT32)pstrEncParams->s16X[ChOffset+64+4];\
686*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_4*(SINT32)pstrEncParams->s16X[ChOffset+12];\
687*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[4]=(SINT32)s32Temp;\
688*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[12]=(SINT32)s32Temp2;\
689df25739fSMilanka Ringwald }
690df25739fSMilanka Ringwald #define WINDOW_ACCU_8_5_11 \
691df25739fSMilanka Ringwald {\
692*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_5_0*(SINT32)pstrEncParams->s16X[ChOffset+5];\
693*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_5_0*(SINT32)pstrEncParams->s16X[ChOffset+64+11];\
694*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_5_1*(SINT32)pstrEncParams->s16X[ChOffset+16+5];\
695*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_1*(SINT32)pstrEncParams->s16X[ChOffset+48+11];\
696*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_5_2*(SINT32)pstrEncParams->s16X[ChOffset+32+5];\
697*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_2*(SINT32)pstrEncParams->s16X[ChOffset+32+11];\
698*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_5_3*(SINT32)pstrEncParams->s16X[ChOffset+48+5];\
699*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_3*(SINT32)pstrEncParams->s16X[ChOffset+16+11];\
700*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_5_4*(SINT32)pstrEncParams->s16X[ChOffset+64+5];\
701*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_4*(SINT32)pstrEncParams->s16X[ChOffset+11];\
702*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[5]=(SINT32)s32Temp;\
703*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[11]=(SINT32)s32Temp2;\
704df25739fSMilanka Ringwald }
705df25739fSMilanka Ringwald #define WINDOW_ACCU_8_6_10 \
706df25739fSMilanka Ringwald {\
707*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_6_0*(SINT32)pstrEncParams->s16X[ChOffset+6];\
708*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_6_0*(SINT32)pstrEncParams->s16X[ChOffset+64+10];\
709*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_6_1*(SINT32)pstrEncParams->s16X[ChOffset+16+6];\
710*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_1*(SINT32)pstrEncParams->s16X[ChOffset+48+10];\
711*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_6_2*(SINT32)pstrEncParams->s16X[ChOffset+32+6];\
712*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_2*(SINT32)pstrEncParams->s16X[ChOffset+32+10];\
713*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_6_3*(SINT32)pstrEncParams->s16X[ChOffset+48+6];\
714*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_3*(SINT32)pstrEncParams->s16X[ChOffset+16+10];\
715*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_6_4*(SINT32)pstrEncParams->s16X[ChOffset+64+6];\
716*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_4*(SINT32)pstrEncParams->s16X[ChOffset+10];\
717*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[6]=(SINT32)s32Temp;\
718*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[10]=(SINT32)s32Temp2;\
719df25739fSMilanka Ringwald }
720df25739fSMilanka Ringwald #define WINDOW_ACCU_8_7_9 \
721df25739fSMilanka Ringwald {\
722*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_7_0*(SINT32)pstrEncParams->s16X[ChOffset+7];\
723*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_8_SUBBANDS_7_0*(SINT32)pstrEncParams->s16X[ChOffset+64+9];\
724*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_7_1*(SINT32)pstrEncParams->s16X[ChOffset+16+7];\
725*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_1*(SINT32)pstrEncParams->s16X[ChOffset+48+9];\
726*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_7_2*(SINT32)pstrEncParams->s16X[ChOffset+32+7];\
727*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_2*(SINT32)pstrEncParams->s16X[ChOffset+32+9];\
728*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_7_3*(SINT32)pstrEncParams->s16X[ChOffset+48+7];\
729*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_3*(SINT32)pstrEncParams->s16X[ChOffset+16+9];\
730*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_7_4*(SINT32)pstrEncParams->s16X[ChOffset+64+7];\
731*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_4*(SINT32)pstrEncParams->s16X[ChOffset+9];\
732*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[7]=(SINT32)s32Temp;\
733*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[9]=(SINT32)s32Temp2;\
734df25739fSMilanka Ringwald }
735df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
736df25739fSMilanka Ringwald {\
737*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_8_SUBBANDS_8_0*(SINT32)(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+64+8]);\
738*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_8_1*(SINT32)(pstrEncParams->s16X[ChOffset+16+8]+pstrEncParams->s16X[ChOffset+48+8]);\
739*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_8_SUBBANDS_8_2*(SINT32)pstrEncParams->s16X[ChOffset+32+8];\
740*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[8]=(SINT32)s32Temp;\
741df25739fSMilanka Ringwald }
742df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
743df25739fSMilanka Ringwald {\
744*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_4_SUBBANDS_0_1*(SINT32)(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
745*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_0_2*(SINT32)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]);\
746*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[0]=(SINT32)(s32Temp);\
747df25739fSMilanka Ringwald }
748df25739fSMilanka Ringwald #define WINDOW_ACCU_4_1_7 \
749df25739fSMilanka Ringwald {\
750*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_4_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+1];\
751*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_4_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+32+7];\
752*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+8+1];\
753*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+24+7];\
754*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+16+1];\
755*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+16+7];\
756*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+24+1];\
757*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+8+7];\
758*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+32+1];\
759*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+7];\
760*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[1]=(SINT32)(s32Temp);\
761*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[7]=(SINT32)(s32Temp2);\
762df25739fSMilanka Ringwald }
763df25739fSMilanka Ringwald #define WINDOW_ACCU_4_2_6 \
764df25739fSMilanka Ringwald {\
765*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_4_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+2];\
766*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_4_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+32+6];\
767*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+8+2];\
768*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+24+6];\
769*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+16+2];\
770*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+16+6];\
771*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+24+2];\
772*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+8+6];\
773*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+32+2];\
774*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+6];\
775*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[2]=(SINT32)(s32Temp);\
776*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[6]=(SINT32)(s32Temp2);\
777df25739fSMilanka Ringwald }
778df25739fSMilanka Ringwald #define WINDOW_ACCU_4_3_5 \
779df25739fSMilanka Ringwald {\
780*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_4_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+3];\
781*31f59170SMatthias Ringwald     s32Temp2=(SINT32)WIND_4_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+32+5];\
782*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+8+3];\
783*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+24+5];\
784*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+16+3];\
785*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+16+5];\
786*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+24+3];\
787*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+8+5];\
788*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+32+3];\
789*31f59170SMatthias Ringwald     s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+5];\
790*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[3]=(SINT32)(s32Temp);\
791*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[5]=(SINT32)(s32Temp2);\
792df25739fSMilanka Ringwald }
793df25739fSMilanka Ringwald 
794df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
795df25739fSMilanka Ringwald {\
796*31f59170SMatthias Ringwald     s32Temp=(SINT32)WIND_4_SUBBANDS_4_0*(SINT32)(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
797*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_4_1*(SINT32)(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]);\
798*31f59170SMatthias Ringwald     s32Temp+=(SINT32)WIND_4_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+4+16];\
799*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[4]=(SINT32)(s32Temp);\
800df25739fSMilanka Ringwald }
801df25739fSMilanka Ringwald #endif
802df25739fSMilanka Ringwald #define WINDOW_PARTIAL_4 \
803df25739fSMilanka Ringwald {\
804df25739fSMilanka Ringwald     WINDOW_ACCU_4_0;     WINDOW_ACCU_4_1_7;\
805df25739fSMilanka Ringwald     WINDOW_ACCU_4_2_6;   WINDOW_ACCU_4_3_5;\
806df25739fSMilanka Ringwald     WINDOW_ACCU_4_4;\
807df25739fSMilanka Ringwald }
808df25739fSMilanka Ringwald 
809df25739fSMilanka Ringwald #define WINDOW_PARTIAL_8 \
810df25739fSMilanka Ringwald {\
811df25739fSMilanka Ringwald     WINDOW_ACCU_8_0;         WINDOW_ACCU_8_1_15;\
812df25739fSMilanka Ringwald     WINDOW_ACCU_8_2_14;      WINDOW_ACCU_8_3_13;\
813df25739fSMilanka Ringwald     WINDOW_ACCU_8_4_12;      WINDOW_ACCU_8_5_11;\
814df25739fSMilanka Ringwald     WINDOW_ACCU_8_6_10;      WINDOW_ACCU_8_7_9;\
815df25739fSMilanka Ringwald     WINDOW_ACCU_8_8;\
816df25739fSMilanka Ringwald }
817df25739fSMilanka Ringwald #else
818df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
819df25739fSMilanka Ringwald #define WINDOW_ACCU_4(i) \
820df25739fSMilanka Ringwald {\
821*31f59170SMatthias Ringwald     s64Temp=((SINT64)gas32CoeffFor4SBs[i] * (SINT64)pstrEncParams->s16X[ChOffset+i]);                                    \
822*31f59170SMatthias Ringwald     s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+8)] * (SINT64)pstrEncParams->s16X[ChOffset+i+8]);                                    \
823*31f59170SMatthias Ringwald     s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+16)] * (SINT64)pstrEncParams->s16X[ChOffset+i+16]);                                    \
824*31f59170SMatthias Ringwald     s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+24)] * (SINT64)pstrEncParams->s16X[ChOffset+i+24]);                                    \
825*31f59170SMatthias Ringwald     s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+32)] * (SINT64)pstrEncParams->s16X[ChOffset+i+32]);                                    \
826*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]=(SINT32)(s64Temp>>16);\
827df25739fSMilanka Ringwald }
828df25739fSMilanka Ringwald #else
829df25739fSMilanka Ringwald #define WINDOW_ACCU_4(i) \
830df25739fSMilanka Ringwald {\
831*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]=(gas32CoeffFor4SBs[i * 2] * pstrEncParams->s16X[ChOffset+i])                                    \
832*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor4SBs[(i * 2) + 1]) * pstrEncParams->s16X[ChOffset+i]) >> 16);   \
833*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+8) * 2] * pstrEncParams->s16X[ChOffset+i+8])                                    \
834*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+8) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+8]) >> 16);   \
835*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+16) * 2] * pstrEncParams->s16X[ChOffset+i+16])                                    \
836*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+16) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+16]) >> 16);   \
837*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+24) * 2] * pstrEncParams->s16X[ChOffset+i+24])                                    \
838*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+24) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+24]) >> 16);   \
839*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+32) * 2] * pstrEncParams->s16X[ChOffset+i+32])                                    \
840*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+32) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+32]) >> 16);   \
841df25739fSMilanka Ringwald }
842df25739fSMilanka Ringwald #endif
843df25739fSMilanka Ringwald #define WINDOW_PARTIAL_4 \
844df25739fSMilanka Ringwald {\
845df25739fSMilanka Ringwald     WINDOW_ACCU_4(0);      WINDOW_ACCU_4(1);\
846df25739fSMilanka Ringwald     WINDOW_ACCU_4(2);      WINDOW_ACCU_4(3);\
847df25739fSMilanka Ringwald     WINDOW_ACCU_4(4);      WINDOW_ACCU_4(5);\
848df25739fSMilanka Ringwald     WINDOW_ACCU_4(6);      WINDOW_ACCU_4(7);\
849df25739fSMilanka Ringwald }
850df25739fSMilanka Ringwald 
851df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
852df25739fSMilanka Ringwald #define WINDOW_ACCU_8(i) \
853df25739fSMilanka Ringwald {\
854*31f59170SMatthias Ringwald     s64Temp = ((((SINT64)gas32CoeffFor8SBs[i]      * (SINT64)pstrEncParams->s16X[ChOffset+i]   )));                 \
855*31f59170SMatthias Ringwald     s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+16)] * (SINT64)pstrEncParams->s16X[ChOffset+i+16])));                 \
856*31f59170SMatthias Ringwald     s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+32)] * (SINT64)pstrEncParams->s16X[ChOffset+i+32])));                 \
857*31f59170SMatthias Ringwald     s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+48)] * (SINT64)pstrEncParams->s16X[ChOffset+i+48])));                 \
858*31f59170SMatthias Ringwald     s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+64)] * (SINT64)pstrEncParams->s16X[ChOffset+i+64])));                 \
859*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]=(SINT32)(s64Temp>>16);\
860df25739fSMilanka Ringwald }
861df25739fSMilanka Ringwald #else
862df25739fSMilanka Ringwald #define WINDOW_ACCU_8(i) \
863df25739fSMilanka Ringwald {\
864*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]=(gas32CoeffFor8SBs[i * 2] * pstrEncParams->s16X[ChOffset+i])                                    \
865*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor8SBs[(i * 2) + 1]) * pstrEncParams->s16X[ChOffset+i]) >> 16);   \
866*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+16) * 2] * pstrEncParams->s16X[ChOffset+i+16])                                    \
867*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+16) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+16]) >> 16);   \
868*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+32) * 2] * pstrEncParams->s16X[ChOffset+i+32])                                    \
869*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+32) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+32]) >> 16);   \
870*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+48) * 2] * pstrEncParams->s16X[ChOffset+i+48])                                    \
871*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+48) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+48]) >> 16);   \
872*31f59170SMatthias Ringwald     pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+64) * 2] * pstrEncParams->s16X[ChOffset+i+64])                                    \
873*31f59170SMatthias Ringwald             +  (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+64) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+64]) >> 16);   \
874df25739fSMilanka Ringwald }
875df25739fSMilanka Ringwald #endif
876df25739fSMilanka Ringwald #define WINDOW_PARTIAL_8 \
877df25739fSMilanka Ringwald {\
878df25739fSMilanka Ringwald     WINDOW_ACCU_8(0);      WINDOW_ACCU_8(1);\
879df25739fSMilanka Ringwald     WINDOW_ACCU_8(2);      WINDOW_ACCU_8(3);\
880df25739fSMilanka Ringwald     WINDOW_ACCU_8(4);      WINDOW_ACCU_8(5);\
881df25739fSMilanka Ringwald     WINDOW_ACCU_8(6);      WINDOW_ACCU_8(7);\
882df25739fSMilanka Ringwald     WINDOW_ACCU_8(8);      WINDOW_ACCU_8(9);\
883df25739fSMilanka Ringwald     WINDOW_ACCU_8(10);     WINDOW_ACCU_8(11);\
884df25739fSMilanka Ringwald     WINDOW_ACCU_8(12);     WINDOW_ACCU_8(13);\
885df25739fSMilanka Ringwald     WINDOW_ACCU_8(14);     WINDOW_ACCU_8(15);\
886df25739fSMilanka Ringwald }
887df25739fSMilanka Ringwald #endif
888df25739fSMilanka Ringwald #endif
889df25739fSMilanka Ringwald 
890df25739fSMilanka Ringwald static SINT16 ShiftCounter=0;
891df25739fSMilanka Ringwald extern SINT16 EncMaxShiftCounter;
892df25739fSMilanka Ringwald /****************************************************************************
893df25739fSMilanka Ringwald * SbcAnalysisFilter - performs Analysis of the input audio stream
894df25739fSMilanka Ringwald *
895df25739fSMilanka Ringwald * RETURNS : N/A
896df25739fSMilanka Ringwald */
897df25739fSMilanka Ringwald void SbcAnalysisFilter4(SBC_ENC_PARAMS *pstrEncParams)
898df25739fSMilanka Ringwald {
899df25739fSMilanka Ringwald     SINT16 *ps16PcmBuf;
900df25739fSMilanka Ringwald     SINT32 *ps32SbBuf;
901df25739fSMilanka Ringwald     SINT32  s32Blk,s32Ch;
902df25739fSMilanka Ringwald     SINT32  s32NumOfChannels, s32NumOfBlocks;
903df25739fSMilanka Ringwald     SINT32 i,*ps32X,*ps32X2;
904df25739fSMilanka Ringwald     SINT32 Offset,Offset2,ChOffset;
905df25739fSMilanka Ringwald #if (SBC_ARM_ASM_OPT==TRUE)
906df25739fSMilanka Ringwald     register SINT32 s32Hi,s32Hi2;
907df25739fSMilanka Ringwald #else
908df25739fSMilanka Ringwald #if (SBC_IPAQ_OPT==TRUE)
909df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
910df25739fSMilanka Ringwald     register SINT64 s64Temp,s64Temp2;
911df25739fSMilanka Ringwald #else
912df25739fSMilanka Ringwald 	register SINT32 s32Temp,s32Temp2;
913df25739fSMilanka Ringwald #endif
914df25739fSMilanka Ringwald #else
915df25739fSMilanka Ringwald 
916df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
917df25739fSMilanka Ringwald     SINT64 s64Temp;
918df25739fSMilanka Ringwald #endif
919df25739fSMilanka Ringwald 
920df25739fSMilanka Ringwald #endif
921df25739fSMilanka Ringwald #endif
922df25739fSMilanka Ringwald 
923df25739fSMilanka Ringwald     s32NumOfChannels = pstrEncParams->s16NumOfChannels;
924df25739fSMilanka Ringwald     s32NumOfBlocks   = pstrEncParams->s16NumOfBlocks;
925df25739fSMilanka Ringwald 
926df25739fSMilanka Ringwald     ps16PcmBuf = pstrEncParams->ps16NextPcmBuffer;
927df25739fSMilanka Ringwald 
928df25739fSMilanka Ringwald     ps32SbBuf  = pstrEncParams->s32SbBuffer;
929df25739fSMilanka Ringwald     Offset2=(SINT32)(EncMaxShiftCounter+40);
930df25739fSMilanka Ringwald 
931df25739fSMilanka Ringwald     for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++)
932df25739fSMilanka Ringwald     {
933df25739fSMilanka Ringwald         Offset=(SINT32)(EncMaxShiftCounter-ShiftCounter);
934df25739fSMilanka Ringwald         /* Store new samples */
935df25739fSMilanka Ringwald         if (s32NumOfChannels==1)
936df25739fSMilanka Ringwald         {
937*31f59170SMatthias Ringwald             pstrEncParams->s16X[3+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
938*31f59170SMatthias Ringwald             pstrEncParams->s16X[2+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
939*31f59170SMatthias Ringwald             pstrEncParams->s16X[1+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
940*31f59170SMatthias Ringwald             pstrEncParams->s16X[0+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
941df25739fSMilanka Ringwald 
942df25739fSMilanka Ringwald         }
943df25739fSMilanka Ringwald         else
944df25739fSMilanka Ringwald         {
945*31f59170SMatthias Ringwald             pstrEncParams->s16X[3+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
946*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
947*31f59170SMatthias Ringwald             pstrEncParams->s16X[2+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
948*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
949*31f59170SMatthias Ringwald             pstrEncParams->s16X[1+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
950*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
951*31f59170SMatthias Ringwald             pstrEncParams->s16X[0+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
952*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+0+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
953df25739fSMilanka Ringwald         }
954df25739fSMilanka Ringwald         for (s32Ch=0;s32Ch<s32NumOfChannels;s32Ch++)
955df25739fSMilanka Ringwald         {
956c1ab6cc1SMatthias Ringwald             ChOffset=(s32Ch*Offset2)+Offset;
957df25739fSMilanka Ringwald 
958df25739fSMilanka Ringwald             WINDOW_PARTIAL_4
959df25739fSMilanka Ringwald 
960*31f59170SMatthias Ringwald             SBC_FastIDCT4(pstrEncParams->s32DCTY, ps32SbBuf);
961df25739fSMilanka Ringwald             ps32SbBuf +=SUB_BANDS_4;
962df25739fSMilanka Ringwald         }
963df25739fSMilanka Ringwald         if (s32NumOfChannels==1)
964df25739fSMilanka Ringwald         {
965df25739fSMilanka Ringwald             if (ShiftCounter>=EncMaxShiftCounter)
966df25739fSMilanka Ringwald             {
967df25739fSMilanka Ringwald                 SHIFTUP_X4;
968df25739fSMilanka Ringwald                 ShiftCounter=0;
969df25739fSMilanka Ringwald             }
970df25739fSMilanka Ringwald             else
971df25739fSMilanka Ringwald             {
972df25739fSMilanka Ringwald                 ShiftCounter+=SUB_BANDS_4;
973df25739fSMilanka Ringwald             }
974df25739fSMilanka Ringwald         }
975df25739fSMilanka Ringwald         else
976df25739fSMilanka Ringwald         {
977df25739fSMilanka Ringwald             if (ShiftCounter>=EncMaxShiftCounter)
978df25739fSMilanka Ringwald             {
979df25739fSMilanka Ringwald                 SHIFTUP_X4_2;
980df25739fSMilanka Ringwald                 ShiftCounter=0;
981df25739fSMilanka Ringwald             }
982df25739fSMilanka Ringwald             else
983df25739fSMilanka Ringwald             {
984df25739fSMilanka Ringwald                 ShiftCounter+=SUB_BANDS_4;
985df25739fSMilanka Ringwald             }
986df25739fSMilanka Ringwald         }
987df25739fSMilanka Ringwald     }
988df25739fSMilanka Ringwald }
989df25739fSMilanka Ringwald 
990df25739fSMilanka Ringwald /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
991df25739fSMilanka Ringwald void SbcAnalysisFilter8 (SBC_ENC_PARAMS *pstrEncParams)
992df25739fSMilanka Ringwald {
993df25739fSMilanka Ringwald     SINT16 *ps16PcmBuf;
994df25739fSMilanka Ringwald     SINT32 *ps32SbBuf;
995df25739fSMilanka Ringwald     SINT32  s32Blk,s32Ch;                                     /* counter for block*/
996df25739fSMilanka Ringwald     SINT32 Offset,Offset2;
997df25739fSMilanka Ringwald     SINT32  s32NumOfChannels, s32NumOfBlocks;
998df25739fSMilanka Ringwald     SINT32 i,*ps32X,*ps32X2;
999df25739fSMilanka Ringwald     SINT32 ChOffset;
1000df25739fSMilanka Ringwald #if (SBC_ARM_ASM_OPT==TRUE)
1001df25739fSMilanka Ringwald     register SINT32 s32Hi,s32Hi2;
1002df25739fSMilanka Ringwald #else
1003df25739fSMilanka Ringwald #if (SBC_IPAQ_OPT==TRUE)
1004df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
1005df25739fSMilanka Ringwald     register SINT64 s64Temp,s64Temp2;
1006df25739fSMilanka Ringwald #else
1007df25739fSMilanka Ringwald 	register SINT32 s32Temp,s32Temp2;
1008df25739fSMilanka Ringwald #endif
1009df25739fSMilanka Ringwald #else
1010df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
1011df25739fSMilanka Ringwald     SINT64 s64Temp;
1012df25739fSMilanka Ringwald #endif
1013df25739fSMilanka Ringwald #endif
1014df25739fSMilanka Ringwald #endif
1015df25739fSMilanka Ringwald 
1016df25739fSMilanka Ringwald     s32NumOfChannels = pstrEncParams->s16NumOfChannels;
1017df25739fSMilanka Ringwald     s32NumOfBlocks   = pstrEncParams->s16NumOfBlocks;
1018df25739fSMilanka Ringwald 
1019df25739fSMilanka Ringwald     ps16PcmBuf = pstrEncParams->ps16NextPcmBuffer;
1020df25739fSMilanka Ringwald 
1021df25739fSMilanka Ringwald     ps32SbBuf  = pstrEncParams->s32SbBuffer;
1022df25739fSMilanka Ringwald     Offset2=(SINT32)(EncMaxShiftCounter+80);
1023df25739fSMilanka Ringwald     for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++)
1024df25739fSMilanka Ringwald     {
1025df25739fSMilanka Ringwald         Offset=(SINT32)(EncMaxShiftCounter-ShiftCounter);
1026df25739fSMilanka Ringwald         /* Store new samples */
1027df25739fSMilanka Ringwald         if (s32NumOfChannels==1)
1028df25739fSMilanka Ringwald         {
1029*31f59170SMatthias Ringwald             pstrEncParams->s16X[7+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1030*31f59170SMatthias Ringwald             pstrEncParams->s16X[6+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1031*31f59170SMatthias Ringwald             pstrEncParams->s16X[5+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1032*31f59170SMatthias Ringwald             pstrEncParams->s16X[4+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1033*31f59170SMatthias Ringwald             pstrEncParams->s16X[3+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1034*31f59170SMatthias Ringwald             pstrEncParams->s16X[2+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1035*31f59170SMatthias Ringwald             pstrEncParams->s16X[1+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1036*31f59170SMatthias Ringwald             pstrEncParams->s16X[0+Offset] = *ps16PcmBuf;   ps16PcmBuf++;
1037df25739fSMilanka Ringwald         }
1038df25739fSMilanka Ringwald         else
1039df25739fSMilanka Ringwald         {
1040*31f59170SMatthias Ringwald             pstrEncParams->s16X[7+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1041*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+7+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1042*31f59170SMatthias Ringwald             pstrEncParams->s16X[6+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1043*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+6+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1044*31f59170SMatthias Ringwald             pstrEncParams->s16X[5+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1045*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+5+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1046*31f59170SMatthias Ringwald             pstrEncParams->s16X[4+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1047*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+4+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1048*31f59170SMatthias Ringwald             pstrEncParams->s16X[3+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1049*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1050*31f59170SMatthias Ringwald             pstrEncParams->s16X[2+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1051*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1052*31f59170SMatthias Ringwald             pstrEncParams->s16X[1+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1053*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1054*31f59170SMatthias Ringwald             pstrEncParams->s16X[0+Offset] = *ps16PcmBuf;        ps16PcmBuf++;
1055*31f59170SMatthias Ringwald             pstrEncParams->s16X[Offset2+0+Offset] = *ps16PcmBuf;     ps16PcmBuf++;
1056df25739fSMilanka Ringwald         }
1057df25739fSMilanka Ringwald         for (s32Ch=0;s32Ch<s32NumOfChannels;s32Ch++)
1058df25739fSMilanka Ringwald         {
1059c1ab6cc1SMatthias Ringwald             ChOffset=(s32Ch*Offset2)+Offset;
1060df25739fSMilanka Ringwald 
1061df25739fSMilanka Ringwald             WINDOW_PARTIAL_8
1062df25739fSMilanka Ringwald 
1063*31f59170SMatthias Ringwald             SBC_FastIDCT8 (pstrEncParams->s32DCTY, ps32SbBuf);
1064df25739fSMilanka Ringwald 
1065df25739fSMilanka Ringwald             ps32SbBuf +=SUB_BANDS_8;
1066df25739fSMilanka Ringwald         }
1067df25739fSMilanka Ringwald         if (s32NumOfChannels==1)
1068df25739fSMilanka Ringwald         {
1069df25739fSMilanka Ringwald             if (ShiftCounter>=EncMaxShiftCounter)
1070df25739fSMilanka Ringwald             {
1071df25739fSMilanka Ringwald                 SHIFTUP_X8;
1072df25739fSMilanka Ringwald                 ShiftCounter=0;
1073df25739fSMilanka Ringwald             }
1074df25739fSMilanka Ringwald             else
1075df25739fSMilanka Ringwald             {
1076df25739fSMilanka Ringwald                 ShiftCounter+=SUB_BANDS_8;
1077df25739fSMilanka Ringwald             }
1078df25739fSMilanka Ringwald         }
1079df25739fSMilanka Ringwald         else
1080df25739fSMilanka Ringwald         {
1081df25739fSMilanka Ringwald             if (ShiftCounter>=EncMaxShiftCounter)
1082df25739fSMilanka Ringwald             {
1083df25739fSMilanka Ringwald                 SHIFTUP_X8_2;
1084df25739fSMilanka Ringwald                 ShiftCounter=0;
1085df25739fSMilanka Ringwald             }
1086df25739fSMilanka Ringwald             else
1087df25739fSMilanka Ringwald             {
1088df25739fSMilanka Ringwald                 ShiftCounter+=SUB_BANDS_8;
1089df25739fSMilanka Ringwald             }
1090df25739fSMilanka Ringwald         }
1091df25739fSMilanka Ringwald     }
1092df25739fSMilanka Ringwald }
1093df25739fSMilanka Ringwald 
10941d3a1229SMatthias Ringwald void SbcAnalysisInit (SBC_ENC_PARAMS *pstrEncParams)
1095df25739fSMilanka Ringwald {
1096df25739fSMilanka Ringwald     ShiftCounter=0;
1097*31f59170SMatthias Ringwald 
1098*31f59170SMatthias Ringwald     // s16X must be 32 bits aligned cf
1099*31f59170SMatthias Ringwald     pstrEncParams->s16X = (SINT16*) (pstrEncParams->s32X);
1100*31f59170SMatthias Ringwald     memset(pstrEncParams->s16X,0,ENC_VX_BUFFER_SIZE*sizeof(SINT16));
1101*31f59170SMatthias Ringwald     memset(pstrEncParams->s32DCTY, 0, sizeof(pstrEncParams->s32DCTY));
1102df25739fSMilanka Ringwald }
1103