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 { \
163c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+38); \
164df25739fSMilanka Ringwald for (i=0;i<9;i++) \
165df25739fSMilanka Ringwald { \
166*55743d68SMatthias Ringwald *ps32X=*(ps32X-2-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
167*55743d68SMatthias Ringwald *ps32X=*(ps32X-2-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
168df25739fSMilanka Ringwald } \
169df25739fSMilanka Ringwald }
170df25739fSMilanka Ringwald #define SHIFTUP_X4_2 \
171df25739fSMilanka Ringwald { \
172c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+38); \
173c0ca5c25SMatthias Ringwald ps32X2=(SINT32 *)(pstrEncParams->s16X+(pstrEncParams->EncMaxShiftCounter<<1)+78); \
174df25739fSMilanka Ringwald for (i=0;i<9;i++) \
175df25739fSMilanka Ringwald { \
176*55743d68SMatthias Ringwald *ps32X=*(ps32X-2-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-2-(pstrEncParams->ShiftCounter>>1)); ps32X--; ps32X2--; \
177*55743d68SMatthias Ringwald *ps32X=*(ps32X-2-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-2-(pstrEncParams->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 { \
184c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+78); \
185df25739fSMilanka Ringwald for (i=0;i<9;i++) \
186df25739fSMilanka Ringwald { \
187*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
188*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
189*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
190*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; \
191df25739fSMilanka Ringwald } \
192df25739fSMilanka Ringwald }
193df25739fSMilanka Ringwald #define SHIFTUP_X8_2 \
194df25739fSMilanka Ringwald { \
195c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+78); \
196c0ca5c25SMatthias Ringwald ps32X2=(SINT32 *)(pstrEncParams->s16X+(pstrEncParams->EncMaxShiftCounter<<1)+158); \
197df25739fSMilanka Ringwald for (i=0;i<9;i++) \
198df25739fSMilanka Ringwald { \
199*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; ps32X2--; \
200*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; ps32X2--; \
201*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-4-(pstrEncParams->ShiftCounter>>1)); ps32X--; ps32X2--; \
202*55743d68SMatthias Ringwald *ps32X=*(ps32X-4-(pstrEncParams->ShiftCounter>>1)); *(ps32X2)=*(ps32X2-4-(pstrEncParams->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 {\
21131f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_0_1,(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
21231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_0_2,(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]),s32Hi;\
21331f59170SMatthias 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 {\
22031f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+1];\
22131f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+64+15];\
22231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+16+1],s32Hi;\
22331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+48+15],s32Hi2;\
22431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+32+1],s32Hi;\
22531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+32+15],s32Hi2;\
22631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+48+1],s32Hi;\
22731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+16+15],s32Hi2;\
22831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+64+1],s32Hi;\
22931f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+15],s32Hi2;\
23031f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[1],s32Hi;\
23131f59170SMatthias 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 {\
23831f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+2];\
23931f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+64+14];\
24031f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+16+2],s32Hi;\
24131f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+48+14],s32Hi2;\
24231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+32+2],s32Hi;\
24331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+32+14],s32Hi2;\
24431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+48+2],s32Hi;\
24531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+16+14],s32Hi2;\
24631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+64+2],s32Hi;\
24731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+14],s32Hi2;\
24831f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[2],s32Hi;\
24931f59170SMatthias 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 {\
25631f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+3];\
25731f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+64+13];\
25831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+16+3],s32Hi;\
25931f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+48+13],s32Hi2;\
26031f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+32+3],s32Hi;\
26131f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+32+13],s32Hi2;\
26231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+48+3],s32Hi;\
26331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+16+13],s32Hi2;\
26431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+64+3],s32Hi;\
26531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+13],s32Hi2;\
26631f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[3],s32Hi;\
26731f59170SMatthias 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 {\
27431f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_4_0,pstrEncParams->s16X[ChOffset+4];\
27531f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_4_0,pstrEncParams->s16X[ChOffset+64+12];\
27631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_4_1,pstrEncParams->s16X[ChOffset+16+4],s32Hi;\
27731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_4_1,pstrEncParams->s16X[ChOffset+48+12],s32Hi2;\
27831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+32+4],s32Hi;\
27931f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+32+12],s32Hi2;\
28031f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_4_3,pstrEncParams->s16X[ChOffset+48+4],s32Hi;\
28131f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_4_3,pstrEncParams->s16X[ChOffset+16+12],s32Hi2;\
28231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_4_4,pstrEncParams->s16X[ChOffset+64+4],s32Hi;\
28331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_4_4,pstrEncParams->s16X[ChOffset+12],s32Hi2;\
28431f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[4],s32Hi;\
28531f59170SMatthias 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 {\
29231f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_5_0,pstrEncParams->s16X[ChOffset+5];\
29331f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_5_0,pstrEncParams->s16X[ChOffset+64+11];\
29431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_5_1,pstrEncParams->s16X[ChOffset+16+5],s32Hi;\
29531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_5_1,pstrEncParams->s16X[ChOffset+48+11],s32Hi2;\
29631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_5_2,pstrEncParams->s16X[ChOffset+32+5],s32Hi;\
29731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_5_2,pstrEncParams->s16X[ChOffset+32+11],s32Hi2;\
29831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_5_3,pstrEncParams->s16X[ChOffset+48+5],s32Hi;\
29931f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_5_3,pstrEncParams->s16X[ChOffset+16+11],s32Hi2;\
30031f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_5_4,pstrEncParams->s16X[ChOffset+64+5],s32Hi;\
30131f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_5_4,pstrEncParams->s16X[ChOffset+11],s32Hi2;\
30231f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[5],s32Hi;\
30331f59170SMatthias 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 {\
31031f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_6_0,pstrEncParams->s16X[ChOffset+6];\
31131f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_6_0,pstrEncParams->s16X[ChOffset+64+10];\
31231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_6_1,pstrEncParams->s16X[ChOffset+16+6],s32Hi;\
31331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_6_1,pstrEncParams->s16X[ChOffset+48+10],s32Hi2;\
31431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_6_2,pstrEncParams->s16X[ChOffset+32+6],s32Hi;\
31531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_6_2,pstrEncParams->s16X[ChOffset+32+10],s32Hi2;\
31631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_6_3,pstrEncParams->s16X[ChOffset+48+6],s32Hi;\
31731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_6_3,pstrEncParams->s16X[ChOffset+16+10],s32Hi2;\
31831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_6_4,pstrEncParams->s16X[ChOffset+64+6],s32Hi;\
31931f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_6_4,pstrEncParams->s16X[ChOffset+10],s32Hi2;\
32031f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[6],s32Hi;\
32131f59170SMatthias 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 {\
32831f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_7_0,pstrEncParams->s16X[ChOffset+7];\
32931f59170SMatthias Ringwald MUL s32Hi2,WIND_8_SUBBANDS_7_0,pstrEncParams->s16X[ChOffset+64+9];\
33031f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_7_1,pstrEncParams->s16X[ChOffset+16+7],s32Hi;\
33131f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_7_1,pstrEncParams->s16X[ChOffset+48+9],s32Hi2;\
33231f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_7_2,pstrEncParams->s16X[ChOffset+32+7],s32Hi;\
33331f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_7_2,pstrEncParams->s16X[ChOffset+32+9],s32Hi2;\
33431f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_7_3,pstrEncParams->s16X[ChOffset+48+7],s32Hi;\
33531f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_7_3,pstrEncParams->s16X[ChOffset+16+9],s32Hi2;\
33631f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_7_4,pstrEncParams->s16X[ChOffset+64+7],s32Hi;\
33731f59170SMatthias Ringwald MLA s32Hi2,WIND_8_SUBBANDS_7_4,pstrEncParams->s16X[ChOffset+9],s32Hi2;\
33831f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[7],s32Hi;\
33931f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[9],s32Hi2;\
340df25739fSMilanka Ringwald }\
341df25739fSMilanka Ringwald }
342df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
343df25739fSMilanka Ringwald {\
344df25739fSMilanka Ringwald __asm\
345df25739fSMilanka Ringwald {\
34631f59170SMatthias Ringwald MUL s32Hi,WIND_8_SUBBANDS_8_0,(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+8+64]);\
34731f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_8_1,(pstrEncParams->s16X[ChOffset+8+16]+pstrEncParams->s16X[ChOffset+8+64]),s32Hi;\
34831f59170SMatthias Ringwald MLA s32Hi,WIND_8_SUBBANDS_8_2,pstrEncParams->s16X[ChOffset+8+32],s32Hi;\
34931f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[8],s32Hi;\
350df25739fSMilanka Ringwald }\
351df25739fSMilanka Ringwald }
352df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
353df25739fSMilanka Ringwald {\
354df25739fSMilanka Ringwald __asm\
355df25739fSMilanka Ringwald {\
35631f59170SMatthias Ringwald MUL s32Hi,WIND_4_SUBBANDS_0_1,(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
35731f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_0_2,(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]),s32Hi;\
35831f59170SMatthias 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 {\
36531f59170SMatthias Ringwald MUL s32Hi,WIND_4_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+1];\
36631f59170SMatthias Ringwald MUL s32Hi2,WIND_4_SUBBANDS_1_0,pstrEncParams->s16X[ChOffset+32+7];\
36731f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+8+1],s32Hi;\
36831f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_1_1,pstrEncParams->s16X[ChOffset+24+7],s32Hi2;\
36931f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+16+1],s32Hi;\
37031f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_1_2,pstrEncParams->s16X[ChOffset+16+7],s32Hi2;\
37131f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+24+1],s32Hi;\
37231f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_1_3,pstrEncParams->s16X[ChOffset+8+7],s32Hi2;\
37331f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+32+1],s32Hi;\
37431f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_1_4,pstrEncParams->s16X[ChOffset+7],s32Hi2;\
37531f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[1],s32Hi;\
37631f59170SMatthias 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 {\
38331f59170SMatthias Ringwald MUL s32Hi,WIND_4_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+2];\
38431f59170SMatthias Ringwald MUL s32Hi2,WIND_4_SUBBANDS_2_0,pstrEncParams->s16X[ChOffset+32+6];\
38531f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+8+2],s32Hi;\
38631f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_2_1,pstrEncParams->s16X[ChOffset+24+6],s32Hi2;\
38731f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+16+2],s32Hi;\
38831f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_2_2,pstrEncParams->s16X[ChOffset+16+6],s32Hi2;\
38931f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+24+2],s32Hi;\
39031f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_2_3,pstrEncParams->s16X[ChOffset+8+6],s32Hi2;\
39131f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+32+2],s32Hi;\
39231f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_2_4,pstrEncParams->s16X[ChOffset+6],s32Hi2;\
39331f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[2],s32Hi;\
39431f59170SMatthias 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 {\
40131f59170SMatthias Ringwald MUL s32Hi,WIND_4_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+3];\
40231f59170SMatthias Ringwald MUL s32Hi2,WIND_4_SUBBANDS_3_0,pstrEncParams->s16X[ChOffset+32+5];\
40331f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+8+3],s32Hi;\
40431f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_3_1,pstrEncParams->s16X[ChOffset+24+5],s32Hi2;\
40531f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+16+3],s32Hi;\
40631f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_3_2,pstrEncParams->s16X[ChOffset+16+5],s32Hi2;\
40731f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+24+3],s32Hi;\
40831f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_3_3,pstrEncParams->s16X[ChOffset+8+5],s32Hi2;\
40931f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+32+3],s32Hi;\
41031f59170SMatthias Ringwald MLA s32Hi2,WIND_4_SUBBANDS_3_4,pstrEncParams->s16X[ChOffset+5],s32Hi2;\
41131f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[3],s32Hi;\
41231f59170SMatthias Ringwald MOV pstrEncParams->s32DCTY[5],s32Hi2;\
413df25739fSMilanka Ringwald }\
414df25739fSMilanka Ringwald }
415df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
416df25739fSMilanka Ringwald {\
417df25739fSMilanka Ringwald __asm\
418df25739fSMilanka Ringwald {\
41931f59170SMatthias Ringwald MUL s32Hi,WIND_4_SUBBANDS_4_0,(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
42031f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_4_1,(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]),s32Hi;\
42131f59170SMatthias Ringwald MLA s32Hi,WIND_4_SUBBANDS_4_2,pstrEncParams->s16X[ChOffset+4+16],s32Hi;\
42231f59170SMatthias 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 {\
44831f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_0_1*(SINT64)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
44931f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_0_2*(SINT64)(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]);\
45031f59170SMatthias Ringwald pstrEncParams->s32DCTY[0]=(SINT32)(s64Temp>>16);\
451df25739fSMilanka Ringwald }
452df25739fSMilanka Ringwald #define WINDOW_ACCU_8_1_15 \
453df25739fSMilanka Ringwald {\
45431f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+1];\
45531f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+64+15];\
45631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+16+1];\
45731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+48+15];\
45831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+32+1];\
45931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+32+15];\
46031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+48+1];\
46131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+16+15];\
46231f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+64+1];\
46331f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+15];\
46431f59170SMatthias Ringwald pstrEncParams->s32DCTY[1]=(SINT32)(s64Temp>>16);\
46531f59170SMatthias Ringwald pstrEncParams->s32DCTY[15]=(SINT32)(s64Temp2>>16);\
466df25739fSMilanka Ringwald }
467df25739fSMilanka Ringwald #define WINDOW_ACCU_8_2_14 \
468df25739fSMilanka Ringwald {\
46931f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+2];\
47031f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+64+14];\
47131f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+16+2];\
47231f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+48+14];\
47331f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+32+2];\
47431f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+32+14];\
47531f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+48+2];\
47631f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+16+14];\
47731f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+64+2];\
47831f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+14];\
47931f59170SMatthias Ringwald pstrEncParams->s32DCTY[2]=(SINT32)(s64Temp>>16);\
48031f59170SMatthias Ringwald pstrEncParams->s32DCTY[14]=(SINT32)(s64Temp2>>16);\
481df25739fSMilanka Ringwald }
482df25739fSMilanka Ringwald #define WINDOW_ACCU_8_3_13 \
483df25739fSMilanka Ringwald {\
48431f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+3];\
48531f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+64+13];\
48631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+16+3];\
48731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+48+13];\
48831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+32+3];\
48931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+32+13];\
49031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+48+3];\
49131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+16+13];\
49231f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+64+3];\
49331f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+13];\
49431f59170SMatthias Ringwald pstrEncParams->s32DCTY[3]=(SINT32)(s64Temp>>16);\
49531f59170SMatthias Ringwald pstrEncParams->s32DCTY[13]=(SINT32)(s64Temp2>>16);\
496df25739fSMilanka Ringwald }
497df25739fSMilanka Ringwald #define WINDOW_ACCU_8_4_12 \
498df25739fSMilanka Ringwald {\
49931f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_4_0*(SINT64)pstrEncParams->s16X[ChOffset+4];\
50031f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_4_0*(SINT64)pstrEncParams->s16X[ChOffset+64+12];\
50131f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_4_1*(SINT64)pstrEncParams->s16X[ChOffset+16+4];\
50231f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_1*(SINT64)pstrEncParams->s16X[ChOffset+48+12];\
50331f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+32+4];\
50431f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+32+12];\
50531f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_4_3*(SINT64)pstrEncParams->s16X[ChOffset+48+4];\
50631f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_3*(SINT64)pstrEncParams->s16X[ChOffset+16+12];\
50731f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_4_4*(SINT64)pstrEncParams->s16X[ChOffset+64+4];\
50831f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_4_4*(SINT64)pstrEncParams->s16X[ChOffset+12];\
50931f59170SMatthias Ringwald pstrEncParams->s32DCTY[4]=(SINT32)(s64Temp>>16);\
51031f59170SMatthias Ringwald pstrEncParams->s32DCTY[12]=(SINT32)(s64Temp2>>16);\
511df25739fSMilanka Ringwald }
512df25739fSMilanka Ringwald #define WINDOW_ACCU_8_5_11 \
513df25739fSMilanka Ringwald {\
51431f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_5_0*(SINT64)pstrEncParams->s16X[ChOffset+5];\
51531f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_5_0*(SINT64)pstrEncParams->s16X[ChOffset+64+11];\
51631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_5_1*(SINT64)pstrEncParams->s16X[ChOffset+16+5];\
51731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_1*(SINT64)pstrEncParams->s16X[ChOffset+48+11];\
51831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_5_2*(SINT64)pstrEncParams->s16X[ChOffset+32+5];\
51931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_2*(SINT64)pstrEncParams->s16X[ChOffset+32+11];\
52031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_5_3*(SINT64)pstrEncParams->s16X[ChOffset+48+5];\
52131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_3*(SINT64)pstrEncParams->s16X[ChOffset+16+11];\
52231f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_5_4*(SINT64)pstrEncParams->s16X[ChOffset+64+5];\
52331f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_5_4*(SINT64)pstrEncParams->s16X[ChOffset+11];\
52431f59170SMatthias Ringwald pstrEncParams->s32DCTY[5]=(SINT32)(s64Temp>>16);\
52531f59170SMatthias Ringwald pstrEncParams->s32DCTY[11]=(SINT32)(s64Temp2>>16);\
526df25739fSMilanka Ringwald }
527df25739fSMilanka Ringwald #define WINDOW_ACCU_8_6_10 \
528df25739fSMilanka Ringwald {\
52931f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_6_0*(SINT64)pstrEncParams->s16X[ChOffset+6];\
53031f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_6_0*(SINT64)pstrEncParams->s16X[ChOffset+64+10];\
53131f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_6_1*(SINT64)pstrEncParams->s16X[ChOffset+16+6];\
53231f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_1*(SINT64)pstrEncParams->s16X[ChOffset+48+10];\
53331f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_6_2*(SINT64)pstrEncParams->s16X[ChOffset+32+6];\
53431f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_2*(SINT64)pstrEncParams->s16X[ChOffset+32+10];\
53531f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_6_3*(SINT64)pstrEncParams->s16X[ChOffset+48+6];\
53631f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_3*(SINT64)pstrEncParams->s16X[ChOffset+16+10];\
53731f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_6_4*(SINT64)pstrEncParams->s16X[ChOffset+64+6];\
53831f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_6_4*(SINT64)pstrEncParams->s16X[ChOffset+10];\
53931f59170SMatthias Ringwald pstrEncParams->s32DCTY[6]=(SINT32)(s64Temp>>16);\
54031f59170SMatthias Ringwald pstrEncParams->s32DCTY[10]=(SINT32)(s64Temp2>>16);\
541df25739fSMilanka Ringwald }
542df25739fSMilanka Ringwald #define WINDOW_ACCU_8_7_9 \
543df25739fSMilanka Ringwald {\
54431f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_7_0*(SINT64)pstrEncParams->s16X[ChOffset+7];\
54531f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_8_SUBBANDS_7_0*(SINT64)pstrEncParams->s16X[ChOffset+64+9];\
54631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_7_1*(SINT64)pstrEncParams->s16X[ChOffset+16+7];\
54731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_1*(SINT64)pstrEncParams->s16X[ChOffset+48+9];\
54831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_7_2*(SINT64)pstrEncParams->s16X[ChOffset+32+7];\
54931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_2*(SINT64)pstrEncParams->s16X[ChOffset+32+9];\
55031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_7_3*(SINT64)pstrEncParams->s16X[ChOffset+48+7];\
55131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_3*(SINT64)pstrEncParams->s16X[ChOffset+16+9];\
55231f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_7_4*(SINT64)pstrEncParams->s16X[ChOffset+64+7];\
55331f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_8_SUBBANDS_7_4*(SINT64)pstrEncParams->s16X[ChOffset+9];\
55431f59170SMatthias Ringwald pstrEncParams->s32DCTY[7]=(SINT32)(s64Temp>>16);\
55531f59170SMatthias Ringwald pstrEncParams->s32DCTY[9]=(SINT32)(s64Temp2>>16);\
556df25739fSMilanka Ringwald }
557df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
558df25739fSMilanka Ringwald {\
55931f59170SMatthias Ringwald s64Temp=(SINT64)WIND_8_SUBBANDS_8_0*(SINT64)(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+64+8]);\
56031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_8_1*(SINT64)(pstrEncParams->s16X[ChOffset+16+8]+pstrEncParams->s16X[ChOffset+48+8]);\
56131f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_8_SUBBANDS_8_2*(SINT64)pstrEncParams->s16X[ChOffset+32+8];\
56231f59170SMatthias Ringwald pstrEncParams->s32DCTY[8]=(SINT32)(s64Temp>>16);\
563df25739fSMilanka Ringwald }
564df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
565df25739fSMilanka Ringwald {\
56631f59170SMatthias Ringwald s64Temp=(SINT64)WIND_4_SUBBANDS_0_1*(SINT64)(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
56731f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_0_2*(SINT64)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]);\
56831f59170SMatthias Ringwald pstrEncParams->s32DCTY[0]=(SINT32)(s64Temp>>16);\
569df25739fSMilanka Ringwald }
570df25739fSMilanka Ringwald #define WINDOW_ACCU_4_1_7 \
571df25739fSMilanka Ringwald {\
57231f59170SMatthias Ringwald s64Temp=(SINT64)WIND_4_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+1];\
57331f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_4_SUBBANDS_1_0*(SINT64)pstrEncParams->s16X[ChOffset+32+7];\
57431f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+8+1];\
57531f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_1*(SINT64)pstrEncParams->s16X[ChOffset+24+7];\
57631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+16+1];\
57731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_2*(SINT64)pstrEncParams->s16X[ChOffset+16+7];\
57831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+24+1];\
57931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_3*(SINT64)pstrEncParams->s16X[ChOffset+8+7];\
58031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+32+1];\
58131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_1_4*(SINT64)pstrEncParams->s16X[ChOffset+7];\
58231f59170SMatthias Ringwald pstrEncParams->s32DCTY[1]=(SINT32)(s64Temp>>16);\
58331f59170SMatthias Ringwald pstrEncParams->s32DCTY[7]=(SINT32)(s64Temp2>>16);\
584df25739fSMilanka Ringwald }
585df25739fSMilanka Ringwald #define WINDOW_ACCU_4_2_6 \
586df25739fSMilanka Ringwald {\
58731f59170SMatthias Ringwald s64Temp=(SINT64)WIND_4_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+2];\
58831f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_4_SUBBANDS_2_0*(SINT64)pstrEncParams->s16X[ChOffset+32+6];\
58931f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+8+2];\
59031f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_1*(SINT64)pstrEncParams->s16X[ChOffset+24+6];\
59131f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+16+2];\
59231f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_2*(SINT64)pstrEncParams->s16X[ChOffset+16+6];\
59331f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+24+2];\
59431f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_3*(SINT64)pstrEncParams->s16X[ChOffset+8+6];\
59531f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+32+2];\
59631f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_2_4*(SINT64)pstrEncParams->s16X[ChOffset+6];\
59731f59170SMatthias Ringwald pstrEncParams->s32DCTY[2]=(SINT32)(s64Temp>>16);\
59831f59170SMatthias Ringwald pstrEncParams->s32DCTY[6]=(SINT32)(s64Temp2>>16);\
599df25739fSMilanka Ringwald }
600df25739fSMilanka Ringwald #define WINDOW_ACCU_4_3_5 \
601df25739fSMilanka Ringwald {\
60231f59170SMatthias Ringwald s64Temp=(SINT64)WIND_4_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+3];\
60331f59170SMatthias Ringwald s64Temp2=(SINT64)WIND_4_SUBBANDS_3_0*(SINT64)pstrEncParams->s16X[ChOffset+32+5];\
60431f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+8+3];\
60531f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_1*(SINT64)pstrEncParams->s16X[ChOffset+24+5];\
60631f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+16+3];\
60731f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_2*(SINT64)pstrEncParams->s16X[ChOffset+16+5];\
60831f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+24+3];\
60931f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_3*(SINT64)pstrEncParams->s16X[ChOffset+8+5];\
61031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+32+3];\
61131f59170SMatthias Ringwald s64Temp2+=(SINT64)WIND_4_SUBBANDS_3_4*(SINT64)pstrEncParams->s16X[ChOffset+5];\
61231f59170SMatthias Ringwald pstrEncParams->s32DCTY[3]=(SINT32)(s64Temp>>16);\
61331f59170SMatthias Ringwald pstrEncParams->s32DCTY[5]=(SINT32)(s64Temp2>>16);\
614df25739fSMilanka Ringwald }
615df25739fSMilanka Ringwald
616df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
617df25739fSMilanka Ringwald {\
61831f59170SMatthias Ringwald s64Temp=(SINT64)WIND_4_SUBBANDS_4_0*(SINT64)(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
61931f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_4_1*(SINT64)(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]);\
62031f59170SMatthias Ringwald s64Temp+=(SINT64)WIND_4_SUBBANDS_4_2*(SINT64)pstrEncParams->s16X[ChOffset+4+16];\
62131f59170SMatthias 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 {\
62631f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_0_1*(SINT32)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+64]);\
62731f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_0_2*(SINT32)(pstrEncParams->s16X[ChOffset+32]-pstrEncParams->s16X[ChOffset+48]);\
62831f59170SMatthias Ringwald pstrEncParams->s32DCTY[0]=(SINT32)s32Temp;\
629df25739fSMilanka Ringwald }
630df25739fSMilanka Ringwald #define WINDOW_ACCU_8_1_15 \
631df25739fSMilanka Ringwald {\
63231f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+1];\
63331f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+64+15];\
63431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+16+1];\
63531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+48+15];\
63631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+32+1];\
63731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+32+15];\
63831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+48+1];\
63931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+16+15];\
64031f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+64+1];\
64131f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+15];\
64231f59170SMatthias Ringwald pstrEncParams->s32DCTY[1]=(SINT32)s32Temp;\
64331f59170SMatthias Ringwald pstrEncParams->s32DCTY[15]=(SINT32)s32Temp2;\
644df25739fSMilanka Ringwald }
645df25739fSMilanka Ringwald #define WINDOW_ACCU_8_2_14 \
646df25739fSMilanka Ringwald {\
64731f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+2];\
64831f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+64+14];\
64931f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+16+2];\
65031f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+48+14];\
65131f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+32+2];\
65231f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+32+14];\
65331f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+48+2];\
65431f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+16+14];\
65531f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+64+2];\
65631f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+14];\
65731f59170SMatthias Ringwald pstrEncParams->s32DCTY[2]=(SINT32)s32Temp;\
65831f59170SMatthias Ringwald pstrEncParams->s32DCTY[14]=(SINT32)s32Temp2;\
659df25739fSMilanka Ringwald }
660df25739fSMilanka Ringwald #define WINDOW_ACCU_8_3_13 \
661df25739fSMilanka Ringwald {\
66231f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+3];\
66331f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+64+13];\
66431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+16+3];\
66531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+48+13];\
66631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+32+3];\
66731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+32+13];\
66831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+48+3];\
66931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+16+13];\
67031f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+64+3];\
67131f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+13];\
67231f59170SMatthias Ringwald pstrEncParams->s32DCTY[3]=(SINT32)s32Temp;\
67331f59170SMatthias Ringwald pstrEncParams->s32DCTY[13]=(SINT32)s32Temp2;\
674df25739fSMilanka Ringwald }
675df25739fSMilanka Ringwald #define WINDOW_ACCU_8_4_12 \
676df25739fSMilanka Ringwald {\
67731f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_4_0*(SINT32)pstrEncParams->s16X[ChOffset+4];\
67831f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_4_0*(SINT32)pstrEncParams->s16X[ChOffset+64+12];\
67931f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_4_1*(SINT32)pstrEncParams->s16X[ChOffset+16+4];\
68031f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_1*(SINT32)pstrEncParams->s16X[ChOffset+48+12];\
68131f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+32+4];\
68231f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+32+12];\
68331f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_4_3*(SINT32)pstrEncParams->s16X[ChOffset+48+4];\
68431f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_3*(SINT32)pstrEncParams->s16X[ChOffset+16+12];\
68531f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_4_4*(SINT32)pstrEncParams->s16X[ChOffset+64+4];\
68631f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_4_4*(SINT32)pstrEncParams->s16X[ChOffset+12];\
68731f59170SMatthias Ringwald pstrEncParams->s32DCTY[4]=(SINT32)s32Temp;\
68831f59170SMatthias Ringwald pstrEncParams->s32DCTY[12]=(SINT32)s32Temp2;\
689df25739fSMilanka Ringwald }
690df25739fSMilanka Ringwald #define WINDOW_ACCU_8_5_11 \
691df25739fSMilanka Ringwald {\
69231f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_5_0*(SINT32)pstrEncParams->s16X[ChOffset+5];\
69331f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_5_0*(SINT32)pstrEncParams->s16X[ChOffset+64+11];\
69431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_5_1*(SINT32)pstrEncParams->s16X[ChOffset+16+5];\
69531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_1*(SINT32)pstrEncParams->s16X[ChOffset+48+11];\
69631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_5_2*(SINT32)pstrEncParams->s16X[ChOffset+32+5];\
69731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_2*(SINT32)pstrEncParams->s16X[ChOffset+32+11];\
69831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_5_3*(SINT32)pstrEncParams->s16X[ChOffset+48+5];\
69931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_3*(SINT32)pstrEncParams->s16X[ChOffset+16+11];\
70031f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_5_4*(SINT32)pstrEncParams->s16X[ChOffset+64+5];\
70131f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_5_4*(SINT32)pstrEncParams->s16X[ChOffset+11];\
70231f59170SMatthias Ringwald pstrEncParams->s32DCTY[5]=(SINT32)s32Temp;\
70331f59170SMatthias Ringwald pstrEncParams->s32DCTY[11]=(SINT32)s32Temp2;\
704df25739fSMilanka Ringwald }
705df25739fSMilanka Ringwald #define WINDOW_ACCU_8_6_10 \
706df25739fSMilanka Ringwald {\
70731f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_6_0*(SINT32)pstrEncParams->s16X[ChOffset+6];\
70831f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_6_0*(SINT32)pstrEncParams->s16X[ChOffset+64+10];\
70931f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_6_1*(SINT32)pstrEncParams->s16X[ChOffset+16+6];\
71031f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_1*(SINT32)pstrEncParams->s16X[ChOffset+48+10];\
71131f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_6_2*(SINT32)pstrEncParams->s16X[ChOffset+32+6];\
71231f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_2*(SINT32)pstrEncParams->s16X[ChOffset+32+10];\
71331f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_6_3*(SINT32)pstrEncParams->s16X[ChOffset+48+6];\
71431f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_3*(SINT32)pstrEncParams->s16X[ChOffset+16+10];\
71531f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_6_4*(SINT32)pstrEncParams->s16X[ChOffset+64+6];\
71631f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_6_4*(SINT32)pstrEncParams->s16X[ChOffset+10];\
71731f59170SMatthias Ringwald pstrEncParams->s32DCTY[6]=(SINT32)s32Temp;\
71831f59170SMatthias Ringwald pstrEncParams->s32DCTY[10]=(SINT32)s32Temp2;\
719df25739fSMilanka Ringwald }
720df25739fSMilanka Ringwald #define WINDOW_ACCU_8_7_9 \
721df25739fSMilanka Ringwald {\
72231f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_7_0*(SINT32)pstrEncParams->s16X[ChOffset+7];\
72331f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_8_SUBBANDS_7_0*(SINT32)pstrEncParams->s16X[ChOffset+64+9];\
72431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_7_1*(SINT32)pstrEncParams->s16X[ChOffset+16+7];\
72531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_1*(SINT32)pstrEncParams->s16X[ChOffset+48+9];\
72631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_7_2*(SINT32)pstrEncParams->s16X[ChOffset+32+7];\
72731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_2*(SINT32)pstrEncParams->s16X[ChOffset+32+9];\
72831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_7_3*(SINT32)pstrEncParams->s16X[ChOffset+48+7];\
72931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_3*(SINT32)pstrEncParams->s16X[ChOffset+16+9];\
73031f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_7_4*(SINT32)pstrEncParams->s16X[ChOffset+64+7];\
73131f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_8_SUBBANDS_7_4*(SINT32)pstrEncParams->s16X[ChOffset+9];\
73231f59170SMatthias Ringwald pstrEncParams->s32DCTY[7]=(SINT32)s32Temp;\
73331f59170SMatthias Ringwald pstrEncParams->s32DCTY[9]=(SINT32)s32Temp2;\
734df25739fSMilanka Ringwald }
735df25739fSMilanka Ringwald #define WINDOW_ACCU_8_8 \
736df25739fSMilanka Ringwald {\
73731f59170SMatthias Ringwald s32Temp=(SINT32)WIND_8_SUBBANDS_8_0*(SINT32)(pstrEncParams->s16X[ChOffset+8]+pstrEncParams->s16X[ChOffset+64+8]);\
73831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_8_1*(SINT32)(pstrEncParams->s16X[ChOffset+16+8]+pstrEncParams->s16X[ChOffset+48+8]);\
73931f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_8_SUBBANDS_8_2*(SINT32)pstrEncParams->s16X[ChOffset+32+8];\
74031f59170SMatthias Ringwald pstrEncParams->s32DCTY[8]=(SINT32)s32Temp;\
741df25739fSMilanka Ringwald }
742df25739fSMilanka Ringwald #define WINDOW_ACCU_4_0 \
743df25739fSMilanka Ringwald {\
74431f59170SMatthias Ringwald s32Temp=(SINT32)WIND_4_SUBBANDS_0_1*(SINT32)(pstrEncParams->s16X[ChOffset+8]-pstrEncParams->s16X[ChOffset+32]);\
74531f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_0_2*(SINT32)(pstrEncParams->s16X[ChOffset+16]-pstrEncParams->s16X[ChOffset+24]);\
74631f59170SMatthias Ringwald pstrEncParams->s32DCTY[0]=(SINT32)(s32Temp);\
747df25739fSMilanka Ringwald }
748df25739fSMilanka Ringwald #define WINDOW_ACCU_4_1_7 \
749df25739fSMilanka Ringwald {\
75031f59170SMatthias Ringwald s32Temp=(SINT32)WIND_4_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+1];\
75131f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_4_SUBBANDS_1_0*(SINT32)pstrEncParams->s16X[ChOffset+32+7];\
75231f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+8+1];\
75331f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_1*(SINT32)pstrEncParams->s16X[ChOffset+24+7];\
75431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+16+1];\
75531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_2*(SINT32)pstrEncParams->s16X[ChOffset+16+7];\
75631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+24+1];\
75731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_3*(SINT32)pstrEncParams->s16X[ChOffset+8+7];\
75831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+32+1];\
75931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_1_4*(SINT32)pstrEncParams->s16X[ChOffset+7];\
76031f59170SMatthias Ringwald pstrEncParams->s32DCTY[1]=(SINT32)(s32Temp);\
76131f59170SMatthias Ringwald pstrEncParams->s32DCTY[7]=(SINT32)(s32Temp2);\
762df25739fSMilanka Ringwald }
763df25739fSMilanka Ringwald #define WINDOW_ACCU_4_2_6 \
764df25739fSMilanka Ringwald {\
76531f59170SMatthias Ringwald s32Temp=(SINT32)WIND_4_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+2];\
76631f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_4_SUBBANDS_2_0*(SINT32)pstrEncParams->s16X[ChOffset+32+6];\
76731f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+8+2];\
76831f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_1*(SINT32)pstrEncParams->s16X[ChOffset+24+6];\
76931f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+16+2];\
77031f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_2*(SINT32)pstrEncParams->s16X[ChOffset+16+6];\
77131f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+24+2];\
77231f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_3*(SINT32)pstrEncParams->s16X[ChOffset+8+6];\
77331f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+32+2];\
77431f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_2_4*(SINT32)pstrEncParams->s16X[ChOffset+6];\
77531f59170SMatthias Ringwald pstrEncParams->s32DCTY[2]=(SINT32)(s32Temp);\
77631f59170SMatthias Ringwald pstrEncParams->s32DCTY[6]=(SINT32)(s32Temp2);\
777df25739fSMilanka Ringwald }
778df25739fSMilanka Ringwald #define WINDOW_ACCU_4_3_5 \
779df25739fSMilanka Ringwald {\
78031f59170SMatthias Ringwald s32Temp=(SINT32)WIND_4_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+3];\
78131f59170SMatthias Ringwald s32Temp2=(SINT32)WIND_4_SUBBANDS_3_0*(SINT32)pstrEncParams->s16X[ChOffset+32+5];\
78231f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+8+3];\
78331f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_1*(SINT32)pstrEncParams->s16X[ChOffset+24+5];\
78431f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+16+3];\
78531f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_2*(SINT32)pstrEncParams->s16X[ChOffset+16+5];\
78631f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+24+3];\
78731f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_3*(SINT32)pstrEncParams->s16X[ChOffset+8+5];\
78831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+32+3];\
78931f59170SMatthias Ringwald s32Temp2+=(SINT32)WIND_4_SUBBANDS_3_4*(SINT32)pstrEncParams->s16X[ChOffset+5];\
79031f59170SMatthias Ringwald pstrEncParams->s32DCTY[3]=(SINT32)(s32Temp);\
79131f59170SMatthias Ringwald pstrEncParams->s32DCTY[5]=(SINT32)(s32Temp2);\
792df25739fSMilanka Ringwald }
793df25739fSMilanka Ringwald
794df25739fSMilanka Ringwald #define WINDOW_ACCU_4_4 \
795df25739fSMilanka Ringwald {\
79631f59170SMatthias Ringwald s32Temp=(SINT32)WIND_4_SUBBANDS_4_0*(SINT32)(pstrEncParams->s16X[ChOffset+4]+pstrEncParams->s16X[ChOffset+4+32]);\
79731f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_4_1*(SINT32)(pstrEncParams->s16X[ChOffset+4+8]+pstrEncParams->s16X[ChOffset+4+24]);\
79831f59170SMatthias Ringwald s32Temp+=(SINT32)WIND_4_SUBBANDS_4_2*(SINT32)pstrEncParams->s16X[ChOffset+4+16];\
79931f59170SMatthias 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 {\
82131f59170SMatthias Ringwald s64Temp=((SINT64)gas32CoeffFor4SBs[i] * (SINT64)pstrEncParams->s16X[ChOffset+i]); \
82231f59170SMatthias Ringwald s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+8)] * (SINT64)pstrEncParams->s16X[ChOffset+i+8]); \
82331f59170SMatthias Ringwald s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+16)] * (SINT64)pstrEncParams->s16X[ChOffset+i+16]); \
82431f59170SMatthias Ringwald s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+24)] * (SINT64)pstrEncParams->s16X[ChOffset+i+24]); \
82531f59170SMatthias Ringwald s64Temp+=((SINT64)gas32CoeffFor4SBs[(i+32)] * (SINT64)pstrEncParams->s16X[ChOffset+i+32]); \
82631f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]=(SINT32)(s64Temp>>16);\
827df25739fSMilanka Ringwald }
828df25739fSMilanka Ringwald #else
829df25739fSMilanka Ringwald #define WINDOW_ACCU_4(i) \
830df25739fSMilanka Ringwald {\
83131f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]=(gas32CoeffFor4SBs[i * 2] * pstrEncParams->s16X[ChOffset+i]) \
83231f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor4SBs[(i * 2) + 1]) * pstrEncParams->s16X[ChOffset+i]) >> 16); \
83331f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+8) * 2] * pstrEncParams->s16X[ChOffset+i+8]) \
83431f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+8) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+8]) >> 16); \
83531f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+16) * 2] * pstrEncParams->s16X[ChOffset+i+16]) \
83631f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+16) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+16]) >> 16); \
83731f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+24) * 2] * pstrEncParams->s16X[ChOffset+i+24]) \
83831f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor4SBs[((i+24) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+24]) >> 16); \
83931f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor4SBs[(i+32) * 2] * pstrEncParams->s16X[ChOffset+i+32]) \
84031f59170SMatthias 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 {\
85431f59170SMatthias Ringwald s64Temp = ((((SINT64)gas32CoeffFor8SBs[i] * (SINT64)pstrEncParams->s16X[ChOffset+i] ))); \
85531f59170SMatthias Ringwald s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+16)] * (SINT64)pstrEncParams->s16X[ChOffset+i+16]))); \
85631f59170SMatthias Ringwald s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+32)] * (SINT64)pstrEncParams->s16X[ChOffset+i+32]))); \
85731f59170SMatthias Ringwald s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+48)] * (SINT64)pstrEncParams->s16X[ChOffset+i+48]))); \
85831f59170SMatthias Ringwald s64Temp+= ((((SINT64)gas32CoeffFor8SBs[(i+64)] * (SINT64)pstrEncParams->s16X[ChOffset+i+64]))); \
85931f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]=(SINT32)(s64Temp>>16);\
860df25739fSMilanka Ringwald }
861df25739fSMilanka Ringwald #else
862df25739fSMilanka Ringwald #define WINDOW_ACCU_8(i) \
863df25739fSMilanka Ringwald {\
86431f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]=(gas32CoeffFor8SBs[i * 2] * pstrEncParams->s16X[ChOffset+i]) \
86531f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor8SBs[(i * 2) + 1]) * pstrEncParams->s16X[ChOffset+i]) >> 16); \
86631f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+16) * 2] * pstrEncParams->s16X[ChOffset+i+16]) \
86731f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+16) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+16]) >> 16); \
86831f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+32) * 2] * pstrEncParams->s16X[ChOffset+i+32]) \
86931f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+32) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+32]) >> 16); \
87031f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+48) * 2] * pstrEncParams->s16X[ChOffset+i+48]) \
87131f59170SMatthias Ringwald + (((SINT32)(UINT16)(gas32CoeffFor8SBs[((i+48) * 2) + 1]) * pstrEncParams->s16X[ChOffset+i+48]) >> 16); \
87231f59170SMatthias Ringwald pstrEncParams->s32DCTY[i]+=(gas32CoeffFor8SBs[(i+64) * 2] * pstrEncParams->s16X[ChOffset+i+64]) \
87331f59170SMatthias 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 /****************************************************************************
891df25739fSMilanka Ringwald * SbcAnalysisFilter - performs Analysis of the input audio stream
892df25739fSMilanka Ringwald *
893df25739fSMilanka Ringwald * RETURNS : N/A
894df25739fSMilanka Ringwald */
SbcAnalysisFilter4(SBC_ENC_PARAMS * pstrEncParams)895df25739fSMilanka Ringwald void SbcAnalysisFilter4(SBC_ENC_PARAMS *pstrEncParams)
896df25739fSMilanka Ringwald {
897df25739fSMilanka Ringwald SINT16 *ps16PcmBuf;
898df25739fSMilanka Ringwald SINT32 *ps32SbBuf;
899df25739fSMilanka Ringwald SINT32 s32Blk,s32Ch;
900df25739fSMilanka Ringwald SINT32 s32NumOfChannels, s32NumOfBlocks;
901df25739fSMilanka Ringwald SINT32 i,*ps32X,*ps32X2;
902df25739fSMilanka Ringwald SINT32 Offset,Offset2,ChOffset;
903df25739fSMilanka Ringwald #if (SBC_ARM_ASM_OPT==TRUE)
904df25739fSMilanka Ringwald register SINT32 s32Hi,s32Hi2;
905df25739fSMilanka Ringwald #else
906df25739fSMilanka Ringwald #if (SBC_IPAQ_OPT==TRUE)
907df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
908df25739fSMilanka Ringwald register SINT64 s64Temp,s64Temp2;
909df25739fSMilanka Ringwald #else
910df25739fSMilanka Ringwald register SINT32 s32Temp,s32Temp2;
911df25739fSMilanka Ringwald #endif
912df25739fSMilanka Ringwald #else
913df25739fSMilanka Ringwald
914df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
915df25739fSMilanka Ringwald SINT64 s64Temp;
916df25739fSMilanka Ringwald #endif
917df25739fSMilanka Ringwald
918df25739fSMilanka Ringwald #endif
919df25739fSMilanka Ringwald #endif
920df25739fSMilanka Ringwald
921df25739fSMilanka Ringwald s32NumOfChannels = pstrEncParams->s16NumOfChannels;
922df25739fSMilanka Ringwald s32NumOfBlocks = pstrEncParams->s16NumOfBlocks;
923df25739fSMilanka Ringwald
924df25739fSMilanka Ringwald ps16PcmBuf = pstrEncParams->ps16NextPcmBuffer;
925df25739fSMilanka Ringwald
926df25739fSMilanka Ringwald ps32SbBuf = pstrEncParams->s32SbBuffer;
927c0ca5c25SMatthias Ringwald Offset2=(SINT32)(pstrEncParams->EncMaxShiftCounter+40);
928df25739fSMilanka Ringwald
929df25739fSMilanka Ringwald for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++)
930df25739fSMilanka Ringwald {
931*55743d68SMatthias Ringwald Offset=(SINT32)(pstrEncParams->EncMaxShiftCounter-pstrEncParams->ShiftCounter);
932df25739fSMilanka Ringwald /* Store new samples */
933df25739fSMilanka Ringwald if (s32NumOfChannels==1)
934df25739fSMilanka Ringwald {
93531f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
93631f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
93731f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
93831f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
939df25739fSMilanka Ringwald
940df25739fSMilanka Ringwald }
941df25739fSMilanka Ringwald else
942df25739fSMilanka Ringwald {
94331f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94431f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94531f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94631f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94731f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94831f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
94931f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
95031f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
951df25739fSMilanka Ringwald }
952df25739fSMilanka Ringwald for (s32Ch=0;s32Ch<s32NumOfChannels;s32Ch++)
953df25739fSMilanka Ringwald {
954c1ab6cc1SMatthias Ringwald ChOffset=(s32Ch*Offset2)+Offset;
955df25739fSMilanka Ringwald
956df25739fSMilanka Ringwald WINDOW_PARTIAL_4
957df25739fSMilanka Ringwald
95831f59170SMatthias Ringwald SBC_FastIDCT4(pstrEncParams->s32DCTY, ps32SbBuf);
959df25739fSMilanka Ringwald ps32SbBuf +=SUB_BANDS_4;
960df25739fSMilanka Ringwald }
961df25739fSMilanka Ringwald if (s32NumOfChannels==1)
962df25739fSMilanka Ringwald {
963*55743d68SMatthias Ringwald if (pstrEncParams->ShiftCounter>=pstrEncParams->EncMaxShiftCounter)
964df25739fSMilanka Ringwald {
965df25739fSMilanka Ringwald SHIFTUP_X4;
966*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter=0;
967df25739fSMilanka Ringwald }
968df25739fSMilanka Ringwald else
969df25739fSMilanka Ringwald {
970*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter+=SUB_BANDS_4;
971df25739fSMilanka Ringwald }
972df25739fSMilanka Ringwald }
973df25739fSMilanka Ringwald else
974df25739fSMilanka Ringwald {
975*55743d68SMatthias Ringwald if (pstrEncParams->ShiftCounter>=pstrEncParams->EncMaxShiftCounter)
976df25739fSMilanka Ringwald {
977df25739fSMilanka Ringwald SHIFTUP_X4_2;
978*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter=0;
979df25739fSMilanka Ringwald }
980df25739fSMilanka Ringwald else
981df25739fSMilanka Ringwald {
982*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter+=SUB_BANDS_4;
983df25739fSMilanka Ringwald }
984df25739fSMilanka Ringwald }
985df25739fSMilanka Ringwald }
986df25739fSMilanka Ringwald }
987df25739fSMilanka Ringwald
988df25739fSMilanka Ringwald /* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// */
SbcAnalysisFilter8(SBC_ENC_PARAMS * pstrEncParams)989df25739fSMilanka Ringwald void SbcAnalysisFilter8 (SBC_ENC_PARAMS *pstrEncParams)
990df25739fSMilanka Ringwald {
991df25739fSMilanka Ringwald SINT16 *ps16PcmBuf;
992df25739fSMilanka Ringwald SINT32 *ps32SbBuf;
993df25739fSMilanka Ringwald SINT32 s32Blk,s32Ch; /* counter for block*/
994df25739fSMilanka Ringwald SINT32 Offset,Offset2;
995df25739fSMilanka Ringwald SINT32 s32NumOfChannels, s32NumOfBlocks;
996df25739fSMilanka Ringwald SINT32 i,*ps32X,*ps32X2;
997df25739fSMilanka Ringwald SINT32 ChOffset;
998df25739fSMilanka Ringwald #if (SBC_ARM_ASM_OPT==TRUE)
999df25739fSMilanka Ringwald register SINT32 s32Hi,s32Hi2;
1000df25739fSMilanka Ringwald #else
1001df25739fSMilanka Ringwald #if (SBC_IPAQ_OPT==TRUE)
1002df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
1003df25739fSMilanka Ringwald register SINT64 s64Temp,s64Temp2;
1004df25739fSMilanka Ringwald #else
1005df25739fSMilanka Ringwald register SINT32 s32Temp,s32Temp2;
1006df25739fSMilanka Ringwald #endif
1007df25739fSMilanka Ringwald #else
1008df25739fSMilanka Ringwald #if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
1009df25739fSMilanka Ringwald SINT64 s64Temp;
1010df25739fSMilanka Ringwald #endif
1011df25739fSMilanka Ringwald #endif
1012df25739fSMilanka Ringwald #endif
1013df25739fSMilanka Ringwald
1014df25739fSMilanka Ringwald s32NumOfChannels = pstrEncParams->s16NumOfChannels;
1015df25739fSMilanka Ringwald s32NumOfBlocks = pstrEncParams->s16NumOfBlocks;
1016df25739fSMilanka Ringwald
1017df25739fSMilanka Ringwald ps16PcmBuf = pstrEncParams->ps16NextPcmBuffer;
1018df25739fSMilanka Ringwald
1019df25739fSMilanka Ringwald ps32SbBuf = pstrEncParams->s32SbBuffer;
1020c0ca5c25SMatthias Ringwald Offset2=(SINT32)(pstrEncParams->EncMaxShiftCounter+80);
1021df25739fSMilanka Ringwald for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++)
1022df25739fSMilanka Ringwald {
1023*55743d68SMatthias Ringwald Offset=(SINT32)(pstrEncParams->EncMaxShiftCounter-pstrEncParams->ShiftCounter);
1024df25739fSMilanka Ringwald /* Store new samples */
1025df25739fSMilanka Ringwald if (s32NumOfChannels==1)
1026df25739fSMilanka Ringwald {
102731f59170SMatthias Ringwald pstrEncParams->s16X[7+Offset] = *ps16PcmBuf; ps16PcmBuf++;
102831f59170SMatthias Ringwald pstrEncParams->s16X[6+Offset] = *ps16PcmBuf; ps16PcmBuf++;
102931f59170SMatthias Ringwald pstrEncParams->s16X[5+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103031f59170SMatthias Ringwald pstrEncParams->s16X[4+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103131f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103231f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103331f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103431f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
1035df25739fSMilanka Ringwald }
1036df25739fSMilanka Ringwald else
1037df25739fSMilanka Ringwald {
103831f59170SMatthias Ringwald pstrEncParams->s16X[7+Offset] = *ps16PcmBuf; ps16PcmBuf++;
103931f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+7+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104031f59170SMatthias Ringwald pstrEncParams->s16X[6+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104131f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+6+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104231f59170SMatthias Ringwald pstrEncParams->s16X[5+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104331f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+5+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104431f59170SMatthias Ringwald pstrEncParams->s16X[4+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104531f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+4+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104631f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104731f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104831f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
104931f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf; ps16PcmBuf++;
105031f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
105131f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf; ps16PcmBuf++;
105231f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
105331f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+0+Offset] = *ps16PcmBuf; ps16PcmBuf++;
1054df25739fSMilanka Ringwald }
1055df25739fSMilanka Ringwald for (s32Ch=0;s32Ch<s32NumOfChannels;s32Ch++)
1056df25739fSMilanka Ringwald {
1057c1ab6cc1SMatthias Ringwald ChOffset=(s32Ch*Offset2)+Offset;
1058df25739fSMilanka Ringwald
1059df25739fSMilanka Ringwald WINDOW_PARTIAL_8
1060df25739fSMilanka Ringwald
106131f59170SMatthias Ringwald SBC_FastIDCT8 (pstrEncParams->s32DCTY, ps32SbBuf);
1062df25739fSMilanka Ringwald
1063df25739fSMilanka Ringwald ps32SbBuf +=SUB_BANDS_8;
1064df25739fSMilanka Ringwald }
1065df25739fSMilanka Ringwald if (s32NumOfChannels==1)
1066df25739fSMilanka Ringwald {
1067*55743d68SMatthias Ringwald if (pstrEncParams->ShiftCounter>=pstrEncParams->EncMaxShiftCounter)
1068df25739fSMilanka Ringwald {
1069df25739fSMilanka Ringwald SHIFTUP_X8;
1070*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter=0;
1071df25739fSMilanka Ringwald }
1072df25739fSMilanka Ringwald else
1073df25739fSMilanka Ringwald {
1074*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter+=SUB_BANDS_8;
1075df25739fSMilanka Ringwald }
1076df25739fSMilanka Ringwald }
1077df25739fSMilanka Ringwald else
1078df25739fSMilanka Ringwald {
1079*55743d68SMatthias Ringwald if (pstrEncParams->ShiftCounter>=pstrEncParams->EncMaxShiftCounter)
1080df25739fSMilanka Ringwald {
1081df25739fSMilanka Ringwald SHIFTUP_X8_2;
1082*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter=0;
1083df25739fSMilanka Ringwald }
1084df25739fSMilanka Ringwald else
1085df25739fSMilanka Ringwald {
1086*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter+=SUB_BANDS_8;
1087df25739fSMilanka Ringwald }
1088df25739fSMilanka Ringwald }
1089df25739fSMilanka Ringwald }
1090df25739fSMilanka Ringwald }
1091df25739fSMilanka Ringwald
SbcAnalysisInit(SBC_ENC_PARAMS * pstrEncParams)10921d3a1229SMatthias Ringwald void SbcAnalysisInit (SBC_ENC_PARAMS *pstrEncParams)
1093df25739fSMilanka Ringwald {
1094*55743d68SMatthias Ringwald pstrEncParams->ShiftCounter=0;
109531f59170SMatthias Ringwald
109631f59170SMatthias Ringwald // s16X must be 32 bits aligned cf
109731f59170SMatthias Ringwald pstrEncParams->s16X = (SINT16*) (pstrEncParams->s32X);
109831f59170SMatthias Ringwald memset(pstrEncParams->s16X,0,ENC_VX_BUFFER_SIZE*sizeof(SINT16));
109931f59170SMatthias Ringwald memset(pstrEncParams->s32DCTY, 0, sizeof(pstrEncParams->s32DCTY));
1100df25739fSMilanka Ringwald }
1101