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*c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->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*c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+38); \ 173*c0ca5c25SMatthias Ringwald ps32X2=(SINT32 *)(pstrEncParams->s16X+(pstrEncParams->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*c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->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*c0ca5c25SMatthias Ringwald ps32X=(SINT32 *)(pstrEncParams->s16X+pstrEncParams->EncMaxShiftCounter+78); \ 196*c0ca5c25SMatthias Ringwald ps32X2=(SINT32 *)(pstrEncParams->s16X+(pstrEncParams->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 {\ 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 static SINT16 ShiftCounter=0; 891*c0ca5c25SMatthias Ringwald 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; 929*c0ca5c25SMatthias Ringwald Offset2=(SINT32)(pstrEncParams->EncMaxShiftCounter+40); 930df25739fSMilanka Ringwald 931df25739fSMilanka Ringwald for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++) 932df25739fSMilanka Ringwald { 933*c0ca5c25SMatthias Ringwald Offset=(SINT32)(pstrEncParams->EncMaxShiftCounter-ShiftCounter); 934df25739fSMilanka Ringwald /* Store new samples */ 935df25739fSMilanka Ringwald if (s32NumOfChannels==1) 936df25739fSMilanka Ringwald { 93731f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 93831f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 93931f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 94031f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++; 941df25739fSMilanka Ringwald 942df25739fSMilanka Ringwald } 943df25739fSMilanka Ringwald else 944df25739fSMilanka Ringwald { 94531f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 94631f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 94731f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 94831f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 94931f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 95031f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 95131f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++; 95231f59170SMatthias 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 96031f59170SMatthias Ringwald SBC_FastIDCT4(pstrEncParams->s32DCTY, ps32SbBuf); 961df25739fSMilanka Ringwald ps32SbBuf +=SUB_BANDS_4; 962df25739fSMilanka Ringwald } 963df25739fSMilanka Ringwald if (s32NumOfChannels==1) 964df25739fSMilanka Ringwald { 965*c0ca5c25SMatthias Ringwald if (ShiftCounter>=pstrEncParams->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 { 977*c0ca5c25SMatthias Ringwald if (ShiftCounter>=pstrEncParams->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; 1022*c0ca5c25SMatthias Ringwald Offset2=(SINT32)(pstrEncParams->EncMaxShiftCounter+80); 1023df25739fSMilanka Ringwald for (s32Blk=0; s32Blk <s32NumOfBlocks; s32Blk++) 1024df25739fSMilanka Ringwald { 1025*c0ca5c25SMatthias Ringwald Offset=(SINT32)(pstrEncParams->EncMaxShiftCounter-ShiftCounter); 1026df25739fSMilanka Ringwald /* Store new samples */ 1027df25739fSMilanka Ringwald if (s32NumOfChannels==1) 1028df25739fSMilanka Ringwald { 102931f59170SMatthias Ringwald pstrEncParams->s16X[7+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103031f59170SMatthias Ringwald pstrEncParams->s16X[6+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103131f59170SMatthias Ringwald pstrEncParams->s16X[5+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103231f59170SMatthias Ringwald pstrEncParams->s16X[4+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103331f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103431f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103531f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 103631f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++; 1037df25739fSMilanka Ringwald } 1038df25739fSMilanka Ringwald else 1039df25739fSMilanka Ringwald { 104031f59170SMatthias Ringwald pstrEncParams->s16X[7+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104131f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+7+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104231f59170SMatthias Ringwald pstrEncParams->s16X[6+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104331f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+6+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104431f59170SMatthias Ringwald pstrEncParams->s16X[5+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104531f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+5+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104631f59170SMatthias Ringwald pstrEncParams->s16X[4+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104731f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+4+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104831f59170SMatthias Ringwald pstrEncParams->s16X[3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 104931f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+3+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105031f59170SMatthias Ringwald pstrEncParams->s16X[2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105131f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+2+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105231f59170SMatthias Ringwald pstrEncParams->s16X[1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105331f59170SMatthias Ringwald pstrEncParams->s16X[Offset2+1+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105431f59170SMatthias Ringwald pstrEncParams->s16X[0+Offset] = *ps16PcmBuf; ps16PcmBuf++; 105531f59170SMatthias 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 106331f59170SMatthias Ringwald SBC_FastIDCT8 (pstrEncParams->s32DCTY, ps32SbBuf); 1064df25739fSMilanka Ringwald 1065df25739fSMilanka Ringwald ps32SbBuf +=SUB_BANDS_8; 1066df25739fSMilanka Ringwald } 1067df25739fSMilanka Ringwald if (s32NumOfChannels==1) 1068df25739fSMilanka Ringwald { 1069*c0ca5c25SMatthias Ringwald if (ShiftCounter>=pstrEncParams->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 { 1081*c0ca5c25SMatthias Ringwald if (ShiftCounter>=pstrEncParams->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; 109731f59170SMatthias Ringwald 109831f59170SMatthias Ringwald // s16X must be 32 bits aligned cf 109931f59170SMatthias Ringwald pstrEncParams->s16X = (SINT16*) (pstrEncParams->s32X); 110031f59170SMatthias Ringwald memset(pstrEncParams->s16X,0,ENC_VX_BUFFER_SIZE*sizeof(SINT16)); 110131f59170SMatthias Ringwald memset(pstrEncParams->s32DCTY, 0, sizeof(pstrEncParams->s32DCTY)); 1102df25739fSMilanka Ringwald } 1103