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