/******************************************************************************
 *
 *  Copyright (C) 1999-2012 Broadcom Corporation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at:
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 ******************************************************************************/

/******************************************************************************
 *
 *  This file contains the code that performs Analysis of the input audio
 *  stream.
 *
 ******************************************************************************/
#include <string.h>
#include "sbc_enc_func_declare.h"
#include "sbc_encoder.h"
/*#include <math.h>*/

#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
#define WIND_4_SUBBANDS_0_1                                              \
  (int32_t)0x01659F45 /* gas32CoeffFor4SBs[8] = -gas32CoeffFor4SBs[32] = \
                         0x01659F45 */
#define WIND_4_SUBBANDS_0_2                                               \
  (int32_t)0x115B1ED2 /* gas32CoeffFor4SBs[16] = -gas32CoeffFor4SBs[24] = \
                         0x115B1ED2 */
#define WIND_4_SUBBANDS_1_0 \
  (int32_t)0x001194E6 /* gas32CoeffFor4SBs[1 et 39] = 0x001194E6 */
#define WIND_4_SUBBANDS_1_1 \
  (int32_t)0x029DBAA3 /* gas32CoeffFor4SBs[9 et 31] = 0x029DBAA3 */
#define WIND_4_SUBBANDS_1_2 \
  (int32_t)0x18F55C90 /* gas32CoeffFor4SBs[17 et 23] = 0x18F55C90 */
#define WIND_4_SUBBANDS_1_3 \
  (int32_t)0xF60FAF37 /* gas32CoeffFor4SBs[15 et 25] = 0xF60FAF37 */
#define WIND_4_SUBBANDS_1_4 \
  (int32_t)0xFF9BB9D5 /* gas32CoeffFor4SBs[7 et 33] = 0xFF9BB9D5 */
#define WIND_4_SUBBANDS_2_0 \
  (int32_t)0x0030E2D3 /* gas32CoeffFor4SBs[2 et 38] = 0x0030E2D3 */
#define WIND_4_SUBBANDS_2_1 \
  (int32_t)0x03B23341 /* gas32CoeffFor4SBs[10 et 30] = 0x03B23341 */
#define WIND_4_SUBBANDS_2_2 \
  (int32_t)0x1F91CA46 /* gas32CoeffFor4SBs[18 et 22] = 0x1F91CA46 */
#define WIND_4_SUBBANDS_2_3 \
  (int32_t)0xFC4F91D4 /* gas32CoeffFor4SBs[14 et 26] = 0xFC4F91D4 */
#define WIND_4_SUBBANDS_2_4 \
  (int32_t)0x003D239B /* gas32CoeffFor4SBs[6 et 34] = 0x003D239B */
#define WIND_4_SUBBANDS_3_0 \
  (int32_t)0x00599403 /* gas32CoeffFor4SBs[3 et 37] = 0x00599403 */
#define WIND_4_SUBBANDS_3_1 \
  (int32_t)0x041EEE40 /* gas32CoeffFor4SBs[11 et 29] = 0x041EEE40 */
#define WIND_4_SUBBANDS_3_2 \
  (int32_t)0x2412F251 /* gas32CoeffFor4SBs[19 et 21] = 0x2412F251 */
#define WIND_4_SUBBANDS_3_3 \
  (int32_t)0x00C8F2BC /* gas32CoeffFor4SBs[13 et 27] = 0x00C8F2BC */
#define WIND_4_SUBBANDS_3_4 \
  (int32_t)0x007F88E4 /* gas32CoeffFor4SBs[5 et 35] = 0x007F88E4 */
#define WIND_4_SUBBANDS_4_0 \
  (int32_t)0x007DBCC8 /* gas32CoeffFor4SBs[4 et 36] = 0x007DBCC8 */
#define WIND_4_SUBBANDS_4_1 \
  (int32_t)0x034FEE2C /* gas32CoeffFor4SBs[12 et 28] = 0x034FEE2C */
#define WIND_4_SUBBANDS_4_2 \
  (int32_t)0x25AC1FF2 /* gas32CoeffFor4SBs[20] = 0x25AC1FF2 */

#define WIND_8_SUBBANDS_0_1 (int32_t)0x00B97348 /* 16 0x00B97348 */
#define WIND_8_SUBBANDS_0_2 (int32_t)0x08B4307A /* 32 0x08B4307A */
#define WIND_8_SUBBANDS_1_0 (int32_t)0x00052173 /* 1 et 79 = 0x00052173 */
#define WIND_8_SUBBANDS_1_1 (int32_t)0x01071B96 /* 17 et 63 = 0x01071B96 */
#define WIND_8_SUBBANDS_1_2 (int32_t)0x0A9F3E9A /* 33 et 47 = 0x0A9F3E9A*/
#define WIND_8_SUBBANDS_1_3 (int32_t)0xF9312891 /* 31 et 49 = 0xF9312891 */
#define WIND_8_SUBBANDS_1_4 (int32_t)0xFF8D6793 /* 15 et 65 = 0xFF8D6793 */
#define WIND_8_SUBBANDS_2_0 (int32_t)0x000B3F71 /* 2 et 78 = 0x000B3F71 */
#define WIND_8_SUBBANDS_2_1 (int32_t)0x0156B3CA /* 18 et 62 = 0x0156B3CA */
#define WIND_8_SUBBANDS_2_2 (int32_t)0x0C7D59B6 /* 34 et 46 = 0x0C7D59B6 */
#define WIND_8_SUBBANDS_2_3 (int32_t)0xFAFF95FC /* 30 et 50 = 0xFAFF95FC */
#define WIND_8_SUBBANDS_2_4 (int32_t)0xFFC9F10E /* 14 et 66 = 0xFFC9F10E */
#define WIND_8_SUBBANDS_3_0 (int32_t)0x00122C7D /* 3 et 77 = 0x00122C7D*/
#define WIND_8_SUBBANDS_3_1 (int32_t)0x01A1B38B /* 19 et 61 = 0x01A1B38B */
#define WIND_8_SUBBANDS_3_2 (int32_t)0x0E3BB16F /* 35 et 45 = 0x0E3BB16F */
#define WIND_8_SUBBANDS_3_3 (int32_t)0xFCA86E7E /* 29 et 51 = 0xFCA86E7E */
#define WIND_8_SUBBANDS_3_4 (int32_t)0xFFFA2413 /* 13 et 67 = 0xFFFA2413 */
#define WIND_8_SUBBANDS_4_0 (int32_t)0x001AFF89 /* 4 et 66 = 0x001AFF89 */
#define WIND_8_SUBBANDS_4_1 (int32_t)0x01E0224C /* 20 et 60 = 0x01E0224C */
#define WIND_8_SUBBANDS_4_2 (int32_t)0x0FC721F9 /* 36 et 44 = 0x0FC721F9 */
#define WIND_8_SUBBANDS_4_3 (int32_t)0xFE20435D /* 28 et 52 = 0xFE20435D */
#define WIND_8_SUBBANDS_4_4 (int32_t)0x001D8FD2 /* 12 et 68 = 0x001D8FD2 */
#define WIND_8_SUBBANDS_5_0 (int32_t)0x00255A62 /* 5 et 75 = 0x00255A62 */
#define WIND_8_SUBBANDS_5_1 (int32_t)0x0209291F /* 21 et 59 = 0x0209291F */
#define WIND_8_SUBBANDS_5_2 (int32_t)0x110ECEF0 /* 37 et 43 = 0x110ECEF0 */
#define WIND_8_SUBBANDS_5_3 (int32_t)0xFF5EEB73 /* 27 et  53 = 0xFF5EEB73 */
#define WIND_8_SUBBANDS_5_4 (int32_t)0x0034F8B6 /* 11 et 69 = 0x0034F8B6 */
#define WIND_8_SUBBANDS_6_0 (int32_t)0x003060F4 /* 6 et 74 = 0x003060F4 */
#define WIND_8_SUBBANDS_6_1 (int32_t)0x02138653 /* 22 et 58 = 0x02138653 */
#define WIND_8_SUBBANDS_6_2 (int32_t)0x120435FA /* 38 et 42 = 0x120435FA */
#define WIND_8_SUBBANDS_6_3 (int32_t)0x005FD0FF /* 26 et 54 = 0x005FD0FF */
#define WIND_8_SUBBANDS_6_4 (int32_t)0x00415B75 /* 10 et 70 = 0x00415B75 */
#define WIND_8_SUBBANDS_7_0 (int32_t)0x003A72E7 /* 7 et 73 = 0x003A72E7 */
#define WIND_8_SUBBANDS_7_1 (int32_t)0x01F5F424 /* 23 et 57 = 0x01F5F424 */
#define WIND_8_SUBBANDS_7_2 (int32_t)0x129C226F /* 39 et 41 = 0x129C226F */
#define WIND_8_SUBBANDS_7_3 (int32_t)0x01223EBA /* 25 et 55 = 0x01223EBA */
#define WIND_8_SUBBANDS_7_4 (int32_t)0x0044EF48 /* 9 et 71 = 0x0044EF48 */
#define WIND_8_SUBBANDS_8_0 (int32_t)0x0041EC6A /* 8 et 72 = 0x0041EC6A */
#define WIND_8_SUBBANDS_8_1 (int32_t)0x01A7ECEF /* 24 et 56 = 0x01A7ECEF */
#define WIND_8_SUBBANDS_8_2 (int32_t)0x12CF6C75 /* 40 = 0x12CF6C75 */
#else
#define WIND_4_SUBBANDS_0_1                                          \
  (int16_t)0x0166 /* gas32CoeffFor4SBs[8] = -gas32CoeffFor4SBs[32] = \
                     0x01659F45 */
#define WIND_4_SUBBANDS_0_2                                           \
  (int16_t)0x115B /* gas32CoeffFor4SBs[16] = -gas32CoeffFor4SBs[24] = \
                     0x115B1ED2 */
#define WIND_4_SUBBANDS_1_0 \
  (int16_t)0x0012 /* gas32CoeffFor4SBs[1 et 39] = 0x001194E6 */
#define WIND_4_SUBBANDS_1_1 \
  (int16_t)0x029E /* gas32CoeffFor4SBs[9 et 31] = 0x029DBAA3 */
#define WIND_4_SUBBANDS_1_2 \
  (int16_t)0x18F5 /* gas32CoeffFor4SBs[17 et 23] = 0x18F55C90 */
#define WIND_4_SUBBANDS_1_3 \
  (int16_t)0xF610 /* gas32CoeffFor4SBs[15 et 25] = 0xF60FAF37 */
#define WIND_4_SUBBANDS_1_4 \
  (int16_t)0xFF9C /* gas32CoeffFor4SBs[7 et 33] = 0xFF9BB9D5 */
#define WIND_4_SUBBANDS_2_0 \
  (int16_t)0x0031 /* gas32CoeffFor4SBs[2 et 38] = 0x0030E2D3 */
#define WIND_4_SUBBANDS_2_1 \
  (int16_t)0x03B2 /* gas32CoeffFor4SBs[10 et 30] = 0x03B23341 */
#define WIND_4_SUBBANDS_2_2 \
  (int16_t)0x1F91 /* gas32CoeffFor4SBs[18 et 22] = 0x1F91CA46 */
#define WIND_4_SUBBANDS_2_3 \
  (int16_t)0xFC50 /* gas32CoeffFor4SBs[14 et 26] = 0xFC4F91D4 */
#define WIND_4_SUBBANDS_2_4 \
  (int16_t)0x003D /* gas32CoeffFor4SBs[6 et 34] = 0x003D239B */
#define WIND_4_SUBBANDS_3_0 \
  (int16_t)0x005A /* gas32CoeffFor4SBs[3 et 37] = 0x00599403 */
#define WIND_4_SUBBANDS_3_1 \
  (int16_t)0x041F /* gas32CoeffFor4SBs[11 et 29] = 0x041EEE40 */
#define WIND_4_SUBBANDS_3_2 \
  (int16_t)0x2413 /* gas32CoeffFor4SBs[19 et 21] = 0x2412F251 */
#define WIND_4_SUBBANDS_3_3 \
  (int16_t)0x00C9 /* gas32CoeffFor4SBs[13 et 27] = 0x00C8F2BC */
#define WIND_4_SUBBANDS_3_4 \
  (int16_t)0x0080 /* gas32CoeffFor4SBs[5 et 35] = 0x007F88E4 */
#define WIND_4_SUBBANDS_4_0 \
  (int16_t)0x007E /* gas32CoeffFor4SBs[4 et 36] = 0x007DBCC8 */
#define WIND_4_SUBBANDS_4_1 \
  (int16_t)0x0350 /* gas32CoeffFor4SBs[12 et 28] = 0x034FEE2C */
#define WIND_4_SUBBANDS_4_2 \
  (int16_t)0x25AC /* gas32CoeffFor4SBs[20] = 25AC1FF2 */

#define WIND_8_SUBBANDS_0_1 (int16_t)0x00B9 /* 16 0x12CF6C75 */
#define WIND_8_SUBBANDS_0_2 (int16_t)0x08B4 /* 32 0x08B4307A */
#define WIND_8_SUBBANDS_1_0 (int16_t)0x0005 /* 1 et 79 = 0x00052173 */
#define WIND_8_SUBBANDS_1_1 (int16_t)0x0107 /* 17 et 63 = 0x01071B96 */
#define WIND_8_SUBBANDS_1_2 (int16_t)0x0A9F /* 33 et 47 = 0x0A9F3E9A*/
#define WIND_8_SUBBANDS_1_3 (int16_t)0xF931 /* 31 et 49 = 0xF9312891 */
#define WIND_8_SUBBANDS_1_4 (int16_t)0xFF8D /* 15 et 65 = 0xFF8D6793 */
#define WIND_8_SUBBANDS_2_0 (int16_t)0x000B /* 2 et 78 = 0x000B3F71 */
#define WIND_8_SUBBANDS_2_1 (int16_t)0x0157 /* 18 et 62 = 0x0156B3CA */
#define WIND_8_SUBBANDS_2_2 (int16_t)0x0C7D /* 34 et 46 = 0x0C7D59B6 */
#define WIND_8_SUBBANDS_2_3 (int16_t)0xFB00 /* 30 et 50 = 0xFAFF95FC */
#define WIND_8_SUBBANDS_2_4 (int16_t)0xFFCA /* 14 et 66 = 0xFFC9F10E */
#define WIND_8_SUBBANDS_3_0 (int16_t)0x0012 /* 3 et 77 = 0x00122C7D*/
#define WIND_8_SUBBANDS_3_1 (int16_t)0x01A2 /* 19 et 61 = 0x01A1B38B */
#define WIND_8_SUBBANDS_3_2 (int16_t)0x0E3C /* 35 et 45 = 0x0E3BB16F */
#define WIND_8_SUBBANDS_3_3 (int16_t)0xFCA8 /* 29 et 51 = 0xFCA86E7E */
#define WIND_8_SUBBANDS_3_4 (int16_t)0xFFFA /* 13 et 67 = 0xFFFA2413 */
#define WIND_8_SUBBANDS_4_0 (int16_t)0x001B /* 4 et 66 = 0x001AFF89 */
#define WIND_8_SUBBANDS_4_1 (int16_t)0x01E0 /* 20 et 60 = 0x01E0224C */
#define WIND_8_SUBBANDS_4_2 (int16_t)0x0FC7 /* 36 et 44 = 0x0FC721F9 */
#define WIND_8_SUBBANDS_4_3 (int16_t)0xFE20 /* 28 et 52 = 0xFE20435D */
#define WIND_8_SUBBANDS_4_4 (int16_t)0x001E /* 12 et 68 = 0x001D8FD2 */
#define WIND_8_SUBBANDS_5_0 (int16_t)0x0025 /* 5 et 75 = 0x00255A62 */
#define WIND_8_SUBBANDS_5_1 (int16_t)0x0209 /* 21 et 59 = 0x0209291F */
#define WIND_8_SUBBANDS_5_2 (int16_t)0x110F /* 37 et 43 = 0x110ECEF0 */
#define WIND_8_SUBBANDS_5_3 (int16_t)0xFF5F /* 27 et  53 = 0xFF5EEB73 */
#define WIND_8_SUBBANDS_5_4 (int16_t)0x0035 /* 11 et 69 = 0x0034F8B6 */
#define WIND_8_SUBBANDS_6_0 (int16_t)0x0030 /* 6 et 74 = 0x003060F4 */
#define WIND_8_SUBBANDS_6_1 (int16_t)0x0214 /* 22 et 58 = 0x02138653 */
#define WIND_8_SUBBANDS_6_2 (int16_t)0x1204 /* 38 et 42 = 0x120435FA */
#define WIND_8_SUBBANDS_6_3 (int16_t)0x0060 /* 26 et 54 = 0x005FD0FF */
#define WIND_8_SUBBANDS_6_4 (int16_t)0x0041 /* 10 et 70 = 0x00415B75 */
#define WIND_8_SUBBANDS_7_0 (int16_t)0x003A /* 7 et 73 = 0x003A72E7 */
#define WIND_8_SUBBANDS_7_1 (int16_t)0x01F6 /* 23 et 57 = 0x01F5F424 */
#define WIND_8_SUBBANDS_7_2 (int16_t)0x129C /* 39 et 41 = 0x129C226F */
#define WIND_8_SUBBANDS_7_3 (int16_t)0x0122 /* 25 et 55 = 0x01223EBA */
#define WIND_8_SUBBANDS_7_4 (int16_t)0x0045 /* 9 et 71 = 0x0044EF48 */
#define WIND_8_SUBBANDS_8_0 (int16_t)0x0042 /* 8 et 72 = 0x0041EC6A */
#define WIND_8_SUBBANDS_8_1 (int16_t)0x01A8 /* 24 et 56 = 0x01A7ECEF */
#define WIND_8_SUBBANDS_8_2 (int16_t)0x12CF /* 40 = 0x12CF6C75 */
#endif

#if (SBC_USE_ARM_PRAGMA == TRUE)
#pragma arm section zidata = "sbc_s32_analysis_section"
#endif
static int32_t s32DCTY[16] = {0};
static int32_t s32X[ENC_VX_BUFFER_SIZE / 2];
static int16_t* s16X =
    (int16_t*)s32X; /* s16X must be 32 bits aligned cf  SHIFTUP_X8_2*/
#if (SBC_USE_ARM_PRAGMA == TRUE)
#pragma arm section zidata
#endif

/* This macro is for 4 subbands */
#define SHIFTUP_X4                                      \
  {                                                     \
    ps32X = (int32_t*)(s16X + EncMaxShiftCounter + 38); \
    for (i = 0; i < 9; i++) {                           \
      *ps32X = *(ps32X - 2 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
      *ps32X = *(ps32X - 2 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
    }                                                   \
  }
#define SHIFTUP_X4_2                                            \
  {                                                             \
    ps32X = (int32_t*)(s16X + EncMaxShiftCounter + 38);         \
    ps32X2 = (int32_t*)(s16X + (EncMaxShiftCounter << 1) + 78); \
    for (i = 0; i < 9; i++) {                                   \
      *ps32X = *(ps32X - 2 - (ShiftCounter >> 1));              \
      *(ps32X2) = *(ps32X2 - 2 - (ShiftCounter >> 1));          \
      ps32X--;                                                  \
      ps32X2--;                                                 \
      *ps32X = *(ps32X - 2 - (ShiftCounter >> 1));              \
      *(ps32X2) = *(ps32X2 - 2 - (ShiftCounter >> 1));          \
      ps32X--;                                                  \
      ps32X2--;                                                 \
    }                                                           \
  }

/* This macro is for 8 subbands */
#define SHIFTUP_X8                                      \
  {                                                     \
    ps32X = (int32_t*)(s16X + EncMaxShiftCounter + 78); \
    for (i = 0; i < 9; i++) {                           \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));      \
      ps32X--;                                          \
    }                                                   \
  }
#define SHIFTUP_X8_2                                             \
  {                                                              \
    ps32X = (int32_t*)(s16X + EncMaxShiftCounter + 78);          \
    ps32X2 = (int32_t*)(s16X + (EncMaxShiftCounter << 1) + 158); \
    for (i = 0; i < 9; i++) {                                    \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));               \
      *(ps32X2) = *(ps32X2 - 4 - (ShiftCounter >> 1));           \
      ps32X--;                                                   \
      ps32X2--;                                                  \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));               \
      *(ps32X2) = *(ps32X2 - 4 - (ShiftCounter >> 1));           \
      ps32X--;                                                   \
      ps32X2--;                                                  \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));               \
      *(ps32X2) = *(ps32X2 - 4 - (ShiftCounter >> 1));           \
      ps32X--;                                                   \
      ps32X2--;                                                  \
      *ps32X = *(ps32X - 4 - (ShiftCounter >> 1));               \
      *(ps32X2) = *(ps32X2 - 4 - (ShiftCounter >> 1));           \
      ps32X--;                                                   \
      ps32X2--;                                                  \
    }                                                            \
  }

#if (SBC_ARM_ASM_OPT == TRUE)
#define WINDOW_ACCU_8_0                                                                                                                                                                                      \
  {                                                                                                                                                                                                          \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_0_1,(s16X[ChOffset+16]-s16X[ChOffset+64]);\
        MLA s32Hi,WIND_8_SUBBANDS_0_2,(s16X[ChOffset+32]-s16X[ChOffset+48]),s32Hi;\
        MOV s32DCTY[0],s32Hi; \
    }                                                                                                                                                                                                        \
  }
#define WINDOW_ACCU_8_1_15                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_1_0,s16X[ChOffset+1];\
        MUL s32Hi2,WIND_8_SUBBANDS_1_0,s16X[ChOffset+64+15];\
        MLA s32Hi,WIND_8_SUBBANDS_1_1,s16X[ChOffset+16+1],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_1_1,s16X[ChOffset+48+15],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_1_2,s16X[ChOffset+32+1],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_1_2,s16X[ChOffset+32+15],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_1_3,s16X[ChOffset+48+1],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_1_3,s16X[ChOffset+16+15],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_1_4,s16X[ChOffset+64+1],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_1_4,s16X[ChOffset+15],s32Hi2;\
        MOV s32DCTY[1],s32Hi;\
        MOV s32DCTY[15],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_2_14                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_2_0,s16X[ChOffset+2];\
        MUL s32Hi2,WIND_8_SUBBANDS_2_0,s16X[ChOffset+64+14];\
        MLA s32Hi,WIND_8_SUBBANDS_2_1,s16X[ChOffset+16+2],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_2_1,s16X[ChOffset+48+14],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_2_2,s16X[ChOffset+32+2],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_2_2,s16X[ChOffset+32+14],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_2_3,s16X[ChOffset+48+2],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_2_3,s16X[ChOffset+16+14],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_2_4,s16X[ChOffset+64+2],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_2_4,s16X[ChOffset+14],s32Hi2;\
        MOV s32DCTY[2],s32Hi;\
        MOV s32DCTY[14],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_3_13                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_3_0,s16X[ChOffset+3];\
        MUL s32Hi2,WIND_8_SUBBANDS_3_0,s16X[ChOffset+64+13];\
        MLA s32Hi,WIND_8_SUBBANDS_3_1,s16X[ChOffset+16+3],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_3_1,s16X[ChOffset+48+13],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_3_2,s16X[ChOffset+32+3],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_3_2,s16X[ChOffset+32+13],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_3_3,s16X[ChOffset+48+3],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_3_3,s16X[ChOffset+16+13],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_3_4,s16X[ChOffset+64+3],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_3_4,s16X[ChOffset+13],s32Hi2;\
        MOV s32DCTY[3],s32Hi;\
        MOV s32DCTY[13],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_4_12                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_4_0,s16X[ChOffset+4];\
        MUL s32Hi2,WIND_8_SUBBANDS_4_0,s16X[ChOffset+64+12];\
        MLA s32Hi,WIND_8_SUBBANDS_4_1,s16X[ChOffset+16+4],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_4_1,s16X[ChOffset+48+12],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_4_2,s16X[ChOffset+32+4],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_4_2,s16X[ChOffset+32+12],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_4_3,s16X[ChOffset+48+4],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_4_3,s16X[ChOffset+16+12],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_4_4,s16X[ChOffset+64+4],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_4_4,s16X[ChOffset+12],s32Hi2;\
        MOV s32DCTY[4],s32Hi;\
        MOV s32DCTY[12],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_5_11                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_5_0,s16X[ChOffset+5];\
        MUL s32Hi2,WIND_8_SUBBANDS_5_0,s16X[ChOffset+64+11];\
        MLA s32Hi,WIND_8_SUBBANDS_5_1,s16X[ChOffset+16+5],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_5_1,s16X[ChOffset+48+11],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_5_2,s16X[ChOffset+32+5],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_5_2,s16X[ChOffset+32+11],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_5_3,s16X[ChOffset+48+5],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_5_3,s16X[ChOffset+16+11],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_5_4,s16X[ChOffset+64+5],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_5_4,s16X[ChOffset+11],s32Hi2;\
        MOV s32DCTY[5],s32Hi;\
        MOV s32DCTY[11],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_6_10                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_6_0,s16X[ChOffset+6];\
        MUL s32Hi2,WIND_8_SUBBANDS_6_0,s16X[ChOffset+64+10];\
        MLA s32Hi,WIND_8_SUBBANDS_6_1,s16X[ChOffset+16+6],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_6_1,s16X[ChOffset+48+10],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_6_2,s16X[ChOffset+32+6],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_6_2,s16X[ChOffset+32+10],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_6_3,s16X[ChOffset+48+6],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_6_3,s16X[ChOffset+16+10],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_6_4,s16X[ChOffset+64+6],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_6_4,s16X[ChOffset+10],s32Hi2;\
        MOV s32DCTY[6],s32Hi;\
        MOV s32DCTY[10],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_8_7_9                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_7_0,s16X[ChOffset+7];\
        MUL s32Hi2,WIND_8_SUBBANDS_7_0,s16X[ChOffset+64+9];\
        MLA s32Hi,WIND_8_SUBBANDS_7_1,s16X[ChOffset+16+7],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_7_1,s16X[ChOffset+48+9],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_7_2,s16X[ChOffset+32+7],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_7_2,s16X[ChOffset+32+9],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_7_3,s16X[ChOffset+48+7],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_7_3,s16X[ChOffset+16+9],s32Hi2;\
        MLA s32Hi,WIND_8_SUBBANDS_7_4,s16X[ChOffset+64+7],s32Hi;\
        MLA s32Hi2,WIND_8_SUBBANDS_7_4,s16X[ChOffset+9],s32Hi2;\
        MOV s32DCTY[7],s32Hi;\
        MOV s32DCTY[9],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \
  }
#define WINDOW_ACCU_8_8                                                                                                                                                                                                                                                             \
  {                                                                                                                                                                                                                                                                                 \
    __asm {\
        MUL s32Hi,WIND_8_SUBBANDS_8_0,(s16X[ChOffset+8]+s16X[ChOffset+8+64]);\
        MLA s32Hi,WIND_8_SUBBANDS_8_1,(s16X[ChOffset+8+16]+s16X[ChOffset+8+64]),s32Hi;\
        MLA s32Hi,WIND_8_SUBBANDS_8_2,s16X[ChOffset+8+32],s32Hi;\
        MOV s32DCTY[8],s32Hi; \
    }                                                                                                                                                                                                                                                                               \
  }
#define WINDOW_ACCU_4_0                                                                                                                                                                                     \
  {                                                                                                                                                                                                         \
    __asm {\
        MUL s32Hi,WIND_4_SUBBANDS_0_1,(s16X[ChOffset+8]-s16X[ChOffset+32]);\
        MLA s32Hi,WIND_4_SUBBANDS_0_2,(s16X[ChOffset+16]-s16X[ChOffset+24]),s32Hi;\
        MOV s32DCTY[0],s32Hi; \
    }                                                                                                                                                                                                       \
  }
#define WINDOW_ACCU_4_1_7                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \
    __asm {\
        MUL s32Hi,WIND_4_SUBBANDS_1_0,s16X[ChOffset+1];\
        MUL s32Hi2,WIND_4_SUBBANDS_1_0,s16X[ChOffset+32+7];\
        MLA s32Hi,WIND_4_SUBBANDS_1_1,s16X[ChOffset+8+1],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_1_1,s16X[ChOffset+24+7],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_1_2,s16X[ChOffset+16+1],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_1_2,s16X[ChOffset+16+7],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_1_3,s16X[ChOffset+24+1],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_1_3,s16X[ChOffset+8+7],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_1_4,s16X[ChOffset+32+1],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_1_4,s16X[ChOffset+7],s32Hi2;\
        MOV s32DCTY[1],s32Hi;\
        MOV s32DCTY[7],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \
  }
#define WINDOW_ACCU_4_2_6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \
    __asm {\
        MUL s32Hi,WIND_4_SUBBANDS_2_0,s16X[ChOffset+2];\
        MUL s32Hi2,WIND_4_SUBBANDS_2_0,s16X[ChOffset+32+6];\
        MLA s32Hi,WIND_4_SUBBANDS_2_1,s16X[ChOffset+8+2],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_2_1,s16X[ChOffset+24+6],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_2_2,s16X[ChOffset+16+2],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_2_2,s16X[ChOffset+16+6],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_2_3,s16X[ChOffset+24+2],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_2_3,s16X[ChOffset+8+6],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_2_4,s16X[ChOffset+32+2],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_2_4,s16X[ChOffset+6],s32Hi2;\
        MOV s32DCTY[2],s32Hi;\
        MOV s32DCTY[6],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \
  }
#define WINDOW_ACCU_4_3_5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           \
  {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 \
    __asm {\
        MUL s32Hi,WIND_4_SUBBANDS_3_0,s16X[ChOffset+3];\
        MUL s32Hi2,WIND_4_SUBBANDS_3_0,s16X[ChOffset+32+5];\
        MLA s32Hi,WIND_4_SUBBANDS_3_1,s16X[ChOffset+8+3],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_3_1,s16X[ChOffset+24+5],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_3_2,s16X[ChOffset+16+3],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_3_2,s16X[ChOffset+16+5],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_3_3,s16X[ChOffset+24+3],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_3_3,s16X[ChOffset+8+5],s32Hi2;\
        MLA s32Hi,WIND_4_SUBBANDS_3_4,s16X[ChOffset+32+3],s32Hi;\
        MLA s32Hi2,WIND_4_SUBBANDS_3_4,s16X[ChOffset+5],s32Hi2;\
        MOV s32DCTY[3],s32Hi;\
        MOV s32DCTY[5],s32Hi2; \
    }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \
  }
#define WINDOW_ACCU_4_4                                                                                                                                                                                                                                                            \
  {                                                                                                                                                                                                                                                                                \
    __asm {\
        MUL s32Hi,WIND_4_SUBBANDS_4_0,(s16X[ChOffset+4]+s16X[ChOffset+4+32]);\
        MLA s32Hi,WIND_4_SUBBANDS_4_1,(s16X[ChOffset+4+8]+s16X[ChOffset+4+24]),s32Hi;\
        MLA s32Hi,WIND_4_SUBBANDS_4_2,s16X[ChOffset+4+16],s32Hi;\
        MOV s32DCTY[4],s32Hi; \
    }                                                                                                                                                                                                                                                                              \
  }

#define WINDOW_PARTIAL_4 \
  {                      \
    WINDOW_ACCU_4_0;     \
    WINDOW_ACCU_4_1_7;   \
    WINDOW_ACCU_4_2_6;   \
    WINDOW_ACCU_4_3_5;   \
    WINDOW_ACCU_4_4;     \
  }

#define WINDOW_PARTIAL_8 \
  {                      \
    WINDOW_ACCU_8_0;     \
    WINDOW_ACCU_8_1_15;  \
    WINDOW_ACCU_8_2_14;  \
    WINDOW_ACCU_8_3_13;  \
    WINDOW_ACCU_8_4_12;  \
    WINDOW_ACCU_8_5_11;  \
    WINDOW_ACCU_8_6_10;  \
    WINDOW_ACCU_8_7_9;   \
    WINDOW_ACCU_8_8;     \
  }

#else
#if (SBC_IPAQ_OPT == TRUE)

#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
#define WINDOW_ACCU_8_0                                              \
  {                                                                  \
    s64Temp = (int64_t)WIND_8_SUBBANDS_0_1 *                         \
              (int64_t)(s16X[ChOffset + 16] - s16X[ChOffset + 64]);  \
    s64Temp += (int64_t)WIND_8_SUBBANDS_0_2 *                        \
               (int64_t)(s16X[ChOffset + 32] - s16X[ChOffset + 48]); \
    s32DCTY[0] = (int32_t)(s64Temp >> 16);                           \
  }
#define WINDOW_ACCU_8_1_15                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_1_0 * (int64_t)s16X[ChOffset + 1];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_1_0 * (int64_t)s16X[ChOffset + 64 + 15];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_1_1 * (int64_t)s16X[ChOffset + 16 + 1];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_1_1 * (int64_t)s16X[ChOffset + 48 + 15];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_1_2 * (int64_t)s16X[ChOffset + 32 + 1];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_1_2 * (int64_t)s16X[ChOffset + 32 + 15];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_1_3 * (int64_t)s16X[ChOffset + 48 + 1];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_1_3 * (int64_t)s16X[ChOffset + 16 + 15];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_1_4 * (int64_t)s16X[ChOffset + 64 + 1];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_1_4 * (int64_t)s16X[ChOffset + 15]; \
    s32DCTY[1] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[15] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_2_14                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_2_0 * (int64_t)s16X[ChOffset + 2];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_2_0 * (int64_t)s16X[ChOffset + 64 + 14];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_2_1 * (int64_t)s16X[ChOffset + 16 + 2];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_2_1 * (int64_t)s16X[ChOffset + 48 + 14];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_2_2 * (int64_t)s16X[ChOffset + 32 + 2];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_2_2 * (int64_t)s16X[ChOffset + 32 + 14];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_2_3 * (int64_t)s16X[ChOffset + 48 + 2];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_2_3 * (int64_t)s16X[ChOffset + 16 + 14];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_2_4 * (int64_t)s16X[ChOffset + 64 + 2];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_2_4 * (int64_t)s16X[ChOffset + 14]; \
    s32DCTY[2] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[14] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_3_13                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_3_0 * (int64_t)s16X[ChOffset + 3];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_3_0 * (int64_t)s16X[ChOffset + 64 + 13];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_3_1 * (int64_t)s16X[ChOffset + 16 + 3];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_3_1 * (int64_t)s16X[ChOffset + 48 + 13];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_3_2 * (int64_t)s16X[ChOffset + 32 + 3];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_3_2 * (int64_t)s16X[ChOffset + 32 + 13];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_3_3 * (int64_t)s16X[ChOffset + 48 + 3];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_3_3 * (int64_t)s16X[ChOffset + 16 + 13];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_3_4 * (int64_t)s16X[ChOffset + 64 + 3];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_3_4 * (int64_t)s16X[ChOffset + 13]; \
    s32DCTY[3] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[13] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_4_12                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_4_0 * (int64_t)s16X[ChOffset + 4];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_4_0 * (int64_t)s16X[ChOffset + 64 + 12];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_4_1 * (int64_t)s16X[ChOffset + 16 + 4];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_4_1 * (int64_t)s16X[ChOffset + 48 + 12];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_4_2 * (int64_t)s16X[ChOffset + 32 + 4];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_4_2 * (int64_t)s16X[ChOffset + 32 + 12];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_4_3 * (int64_t)s16X[ChOffset + 48 + 4];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_4_3 * (int64_t)s16X[ChOffset + 16 + 12];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_4_4 * (int64_t)s16X[ChOffset + 64 + 4];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_4_4 * (int64_t)s16X[ChOffset + 12]; \
    s32DCTY[4] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[12] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_5_11                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_5_0 * (int64_t)s16X[ChOffset + 5];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_5_0 * (int64_t)s16X[ChOffset + 64 + 11];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_5_1 * (int64_t)s16X[ChOffset + 16 + 5];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_5_1 * (int64_t)s16X[ChOffset + 48 + 11];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_5_2 * (int64_t)s16X[ChOffset + 32 + 5];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_5_2 * (int64_t)s16X[ChOffset + 32 + 11];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_5_3 * (int64_t)s16X[ChOffset + 48 + 5];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_5_3 * (int64_t)s16X[ChOffset + 16 + 11];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_5_4 * (int64_t)s16X[ChOffset + 64 + 5];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_5_4 * (int64_t)s16X[ChOffset + 11]; \
    s32DCTY[5] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[11] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_6_10                                                   \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_6_0 * (int64_t)s16X[ChOffset + 6];    \
    s64Temp2 =                                                               \
        (int64_t)WIND_8_SUBBANDS_6_0 * (int64_t)s16X[ChOffset + 64 + 10];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_6_1 * (int64_t)s16X[ChOffset + 16 + 6];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_6_1 * (int64_t)s16X[ChOffset + 48 + 10];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_6_2 * (int64_t)s16X[ChOffset + 32 + 6];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_6_2 * (int64_t)s16X[ChOffset + 32 + 10];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_6_3 * (int64_t)s16X[ChOffset + 48 + 6];     \
    s64Temp2 +=                                                              \
        (int64_t)WIND_8_SUBBANDS_6_3 * (int64_t)s16X[ChOffset + 16 + 10];    \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_6_4 * (int64_t)s16X[ChOffset + 64 + 6];     \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_6_4 * (int64_t)s16X[ChOffset + 10]; \
    s32DCTY[6] = (int32_t)(s64Temp >> 16);                                   \
    s32DCTY[10] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_7_9                                                   \
  {                                                                         \
    s64Temp = (int64_t)WIND_8_SUBBANDS_7_0 * (int64_t)s16X[ChOffset + 7];   \
    s64Temp2 =                                                              \
        (int64_t)WIND_8_SUBBANDS_7_0 * (int64_t)s16X[ChOffset + 64 + 9];    \
    s64Temp +=                                                              \
        (int64_t)WIND_8_SUBBANDS_7_1 * (int64_t)s16X[ChOffset + 16 + 7];    \
    s64Temp2 +=                                                             \
        (int64_t)WIND_8_SUBBANDS_7_1 * (int64_t)s16X[ChOffset + 48 + 9];    \
    s64Temp +=                                                              \
        (int64_t)WIND_8_SUBBANDS_7_2 * (int64_t)s16X[ChOffset + 32 + 7];    \
    s64Temp2 +=                                                             \
        (int64_t)WIND_8_SUBBANDS_7_2 * (int64_t)s16X[ChOffset + 32 + 9];    \
    s64Temp +=                                                              \
        (int64_t)WIND_8_SUBBANDS_7_3 * (int64_t)s16X[ChOffset + 48 + 7];    \
    s64Temp2 +=                                                             \
        (int64_t)WIND_8_SUBBANDS_7_3 * (int64_t)s16X[ChOffset + 16 + 9];    \
    s64Temp +=                                                              \
        (int64_t)WIND_8_SUBBANDS_7_4 * (int64_t)s16X[ChOffset + 64 + 7];    \
    s64Temp2 += (int64_t)WIND_8_SUBBANDS_7_4 * (int64_t)s16X[ChOffset + 9]; \
    s32DCTY[7] = (int32_t)(s64Temp >> 16);                                  \
    s32DCTY[9] = (int32_t)(s64Temp2 >> 16);                                 \
  }
#define WINDOW_ACCU_8_8                                                      \
  {                                                                          \
    s64Temp = (int64_t)WIND_8_SUBBANDS_8_0 *                                 \
              (int64_t)(s16X[ChOffset + 8] + s16X[ChOffset + 64 + 8]);       \
    s64Temp += (int64_t)WIND_8_SUBBANDS_8_1 *                                \
               (int64_t)(s16X[ChOffset + 16 + 8] + s16X[ChOffset + 48 + 8]); \
    s64Temp +=                                                               \
        (int64_t)WIND_8_SUBBANDS_8_2 * (int64_t)s16X[ChOffset + 32 + 8];     \
    s32DCTY[8] = (int32_t)(s64Temp >> 16);                                   \
  }
#define WINDOW_ACCU_4_0                                              \
  {                                                                  \
    s64Temp = (int64_t)WIND_4_SUBBANDS_0_1 *                         \
              (int64_t)(s16X[ChOffset + 8] - s16X[ChOffset + 32]);   \
    s64Temp += (int64_t)WIND_4_SUBBANDS_0_2 *                        \
               (int64_t)(s16X[ChOffset + 16] - s16X[ChOffset + 24]); \
    s32DCTY[0] = (int32_t)(s64Temp >> 16);                           \
  }
#define WINDOW_ACCU_4_1_7                                                      \
  {                                                                            \
    s64Temp = (int64_t)WIND_4_SUBBANDS_1_0 * (int64_t)s16X[ChOffset + 1];      \
    s64Temp2 =                                                                 \
        (int64_t)WIND_4_SUBBANDS_1_0 * (int64_t)s16X[ChOffset + 32 + 7];       \
    s64Temp += (int64_t)WIND_4_SUBBANDS_1_1 * (int64_t)s16X[ChOffset + 8 + 1]; \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_1_1 * (int64_t)s16X[ChOffset + 24 + 7];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_1_2 * (int64_t)s16X[ChOffset + 16 + 1];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_1_2 * (int64_t)s16X[ChOffset + 16 + 7];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_1_3 * (int64_t)s16X[ChOffset + 24 + 1];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_1_3 * (int64_t)s16X[ChOffset + 8 + 7];        \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_1_4 * (int64_t)s16X[ChOffset + 32 + 1];       \
    s64Temp2 += (int64_t)WIND_4_SUBBANDS_1_4 * (int64_t)s16X[ChOffset + 7];    \
    s32DCTY[1] = (int32_t)(s64Temp >> 16);                                     \
    s32DCTY[7] = (int32_t)(s64Temp2 >> 16);                                    \
  }
#define WINDOW_ACCU_4_2_6                                                      \
  {                                                                            \
    s64Temp = (int64_t)WIND_4_SUBBANDS_2_0 * (int64_t)s16X[ChOffset + 2];      \
    s64Temp2 =                                                                 \
        (int64_t)WIND_4_SUBBANDS_2_0 * (int64_t)s16X[ChOffset + 32 + 6];       \
    s64Temp += (int64_t)WIND_4_SUBBANDS_2_1 * (int64_t)s16X[ChOffset + 8 + 2]; \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_2_1 * (int64_t)s16X[ChOffset + 24 + 6];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_2_2 * (int64_t)s16X[ChOffset + 16 + 2];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_2_2 * (int64_t)s16X[ChOffset + 16 + 6];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_2_3 * (int64_t)s16X[ChOffset + 24 + 2];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_2_3 * (int64_t)s16X[ChOffset + 8 + 6];        \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_2_4 * (int64_t)s16X[ChOffset + 32 + 2];       \
    s64Temp2 += (int64_t)WIND_4_SUBBANDS_2_4 * (int64_t)s16X[ChOffset + 6];    \
    s32DCTY[2] = (int32_t)(s64Temp >> 16);                                     \
    s32DCTY[6] = (int32_t)(s64Temp2 >> 16);                                    \
  }
#define WINDOW_ACCU_4_3_5                                                      \
  {                                                                            \
    s64Temp = (int64_t)WIND_4_SUBBANDS_3_0 * (int64_t)s16X[ChOffset + 3];      \
    s64Temp2 =                                                                 \
        (int64_t)WIND_4_SUBBANDS_3_0 * (int64_t)s16X[ChOffset + 32 + 5];       \
    s64Temp += (int64_t)WIND_4_SUBBANDS_3_1 * (int64_t)s16X[ChOffset + 8 + 3]; \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_3_1 * (int64_t)s16X[ChOffset + 24 + 5];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_3_2 * (int64_t)s16X[ChOffset + 16 + 3];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_3_2 * (int64_t)s16X[ChOffset + 16 + 5];       \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_3_3 * (int64_t)s16X[ChOffset + 24 + 3];       \
    s64Temp2 +=                                                                \
        (int64_t)WIND_4_SUBBANDS_3_3 * (int64_t)s16X[ChOffset + 8 + 5];        \
    s64Temp +=                                                                 \
        (int64_t)WIND_4_SUBBANDS_3_4 * (int64_t)s16X[ChOffset + 32 + 3];       \
    s64Temp2 += (int64_t)WIND_4_SUBBANDS_3_4 * (int64_t)s16X[ChOffset + 5];    \
    s32DCTY[3] = (int32_t)(s64Temp >> 16);                                     \
    s32DCTY[5] = (int32_t)(s64Temp2 >> 16);                                    \
  }

#define WINDOW_ACCU_4_4                                                     \
  {                                                                         \
    s64Temp = (int64_t)WIND_4_SUBBANDS_4_0 *                                \
              (int64_t)(s16X[ChOffset + 4] + s16X[ChOffset + 4 + 32]);      \
    s64Temp += (int64_t)WIND_4_SUBBANDS_4_1 *                               \
               (int64_t)(s16X[ChOffset + 4 + 8] + s16X[ChOffset + 4 + 24]); \
    s64Temp +=                                                              \
        (int64_t)WIND_4_SUBBANDS_4_2 * (int64_t)s16X[ChOffset + 4 + 16];    \
    s32DCTY[4] = (int32_t)(s64Temp >> 16);                                  \
  }
#else /* SBC_IS_64_MULT_IN_WINDOW_ACCU == FALSE */
#define WINDOW_ACCU_8_0                                              \
  {                                                                  \
    s32Temp = (int32_t)WIND_8_SUBBANDS_0_1 *                         \
              (int32_t)(s16X[ChOffset + 16] - s16X[ChOffset + 64]);  \
    s32Temp += (int32_t)WIND_8_SUBBANDS_0_2 *                        \
               (int32_t)(s16X[ChOffset + 32] - s16X[ChOffset + 48]); \
    s32DCTY[0] = (int32_t)s32Temp;                                   \
  }
#define WINDOW_ACCU_8_1_15                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_1_0 * (int32_t)s16X[ChOffset + 1];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_1_0 * (int32_t)s16X[ChOffset + 64 + 15];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_1_1 * (int32_t)s16X[ChOffset + 16 + 1];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_1_1 * (int32_t)s16X[ChOffset + 48 + 15];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_1_2 * (int32_t)s16X[ChOffset + 32 + 1];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_1_2 * (int32_t)s16X[ChOffset + 32 + 15];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_1_3 * (int32_t)s16X[ChOffset + 48 + 1];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_1_3 * (int32_t)s16X[ChOffset + 16 + 15];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_1_4 * (int32_t)s16X[ChOffset + 64 + 1];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_1_4 * (int32_t)s16X[ChOffset + 15]; \
    s32DCTY[1] = (int32_t)s32Temp;                                           \
    s32DCTY[15] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_2_14                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_2_0 * (int32_t)s16X[ChOffset + 2];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_2_0 * (int32_t)s16X[ChOffset + 64 + 14];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_2_1 * (int32_t)s16X[ChOffset + 16 + 2];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_2_1 * (int32_t)s16X[ChOffset + 48 + 14];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_2_2 * (int32_t)s16X[ChOffset + 32 + 2];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_2_2 * (int32_t)s16X[ChOffset + 32 + 14];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_2_3 * (int32_t)s16X[ChOffset + 48 + 2];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_2_3 * (int32_t)s16X[ChOffset + 16 + 14];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_2_4 * (int32_t)s16X[ChOffset + 64 + 2];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_2_4 * (int32_t)s16X[ChOffset + 14]; \
    s32DCTY[2] = (int32_t)s32Temp;                                           \
    s32DCTY[14] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_3_13                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_3_0 * (int32_t)s16X[ChOffset + 3];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_3_0 * (int32_t)s16X[ChOffset + 64 + 13];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_3_1 * (int32_t)s16X[ChOffset + 16 + 3];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_3_1 * (int32_t)s16X[ChOffset + 48 + 13];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_3_2 * (int32_t)s16X[ChOffset + 32 + 3];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_3_2 * (int32_t)s16X[ChOffset + 32 + 13];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_3_3 * (int32_t)s16X[ChOffset + 48 + 3];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_3_3 * (int32_t)s16X[ChOffset + 16 + 13];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_3_4 * (int32_t)s16X[ChOffset + 64 + 3];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_3_4 * (int32_t)s16X[ChOffset + 13]; \
    s32DCTY[3] = (int32_t)s32Temp;                                           \
    s32DCTY[13] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_4_12                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_4_0 * (int32_t)s16X[ChOffset + 4];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_4_0 * (int32_t)s16X[ChOffset + 64 + 12];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_4_1 * (int32_t)s16X[ChOffset + 16 + 4];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_4_1 * (int32_t)s16X[ChOffset + 48 + 12];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_4_2 * (int32_t)s16X[ChOffset + 32 + 4];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_4_2 * (int32_t)s16X[ChOffset + 32 + 12];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_4_3 * (int32_t)s16X[ChOffset + 48 + 4];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_4_3 * (int32_t)s16X[ChOffset + 16 + 12];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_4_4 * (int32_t)s16X[ChOffset + 64 + 4];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_4_4 * (int32_t)s16X[ChOffset + 12]; \
    s32DCTY[4] = (int32_t)s32Temp;                                           \
    s32DCTY[12] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_5_11                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_5_0 * (int32_t)s16X[ChOffset + 5];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_5_0 * (int32_t)s16X[ChOffset + 64 + 11];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_5_1 * (int32_t)s16X[ChOffset + 16 + 5];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_5_1 * (int32_t)s16X[ChOffset + 48 + 11];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_5_2 * (int32_t)s16X[ChOffset + 32 + 5];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_5_2 * (int32_t)s16X[ChOffset + 32 + 11];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_5_3 * (int32_t)s16X[ChOffset + 48 + 5];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_5_3 * (int32_t)s16X[ChOffset + 16 + 11];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_5_4 * (int32_t)s16X[ChOffset + 64 + 5];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_5_4 * (int32_t)s16X[ChOffset + 11]; \
    s32DCTY[5] = (int32_t)s32Temp;                                           \
    s32DCTY[11] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_6_10                                                   \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_6_0 * (int32_t)s16X[ChOffset + 6];    \
    s32Temp2 =                                                               \
        (int32_t)WIND_8_SUBBANDS_6_0 * (int32_t)s16X[ChOffset + 64 + 10];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_6_1 * (int32_t)s16X[ChOffset + 16 + 6];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_6_1 * (int32_t)s16X[ChOffset + 48 + 10];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_6_2 * (int32_t)s16X[ChOffset + 32 + 6];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_6_2 * (int32_t)s16X[ChOffset + 32 + 10];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_6_3 * (int32_t)s16X[ChOffset + 48 + 6];     \
    s32Temp2 +=                                                              \
        (int32_t)WIND_8_SUBBANDS_6_3 * (int32_t)s16X[ChOffset + 16 + 10];    \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_6_4 * (int32_t)s16X[ChOffset + 64 + 6];     \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_6_4 * (int32_t)s16X[ChOffset + 10]; \
    s32DCTY[6] = (int32_t)s32Temp;                                           \
    s32DCTY[10] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_7_9                                                   \
  {                                                                         \
    s32Temp = (int32_t)WIND_8_SUBBANDS_7_0 * (int32_t)s16X[ChOffset + 7];   \
    s32Temp2 =                                                              \
        (int32_t)WIND_8_SUBBANDS_7_0 * (int32_t)s16X[ChOffset + 64 + 9];    \
    s32Temp +=                                                              \
        (int32_t)WIND_8_SUBBANDS_7_1 * (int32_t)s16X[ChOffset + 16 + 7];    \
    s32Temp2 +=                                                             \
        (int32_t)WIND_8_SUBBANDS_7_1 * (int32_t)s16X[ChOffset + 48 + 9];    \
    s32Temp +=                                                              \
        (int32_t)WIND_8_SUBBANDS_7_2 * (int32_t)s16X[ChOffset + 32 + 7];    \
    s32Temp2 +=                                                             \
        (int32_t)WIND_8_SUBBANDS_7_2 * (int32_t)s16X[ChOffset + 32 + 9];    \
    s32Temp +=                                                              \
        (int32_t)WIND_8_SUBBANDS_7_3 * (int32_t)s16X[ChOffset + 48 + 7];    \
    s32Temp2 +=                                                             \
        (int32_t)WIND_8_SUBBANDS_7_3 * (int32_t)s16X[ChOffset + 16 + 9];    \
    s32Temp +=                                                              \
        (int32_t)WIND_8_SUBBANDS_7_4 * (int32_t)s16X[ChOffset + 64 + 7];    \
    s32Temp2 += (int32_t)WIND_8_SUBBANDS_7_4 * (int32_t)s16X[ChOffset + 9]; \
    s32DCTY[7] = (int32_t)s32Temp;                                          \
    s32DCTY[9] = (int32_t)s32Temp2;                                         \
  }
#define WINDOW_ACCU_8_8                                                      \
  {                                                                          \
    s32Temp = (int32_t)WIND_8_SUBBANDS_8_0 *                                 \
              (int32_t)(s16X[ChOffset + 8] + s16X[ChOffset + 64 + 8]);       \
    s32Temp += (int32_t)WIND_8_SUBBANDS_8_1 *                                \
               (int32_t)(s16X[ChOffset + 16 + 8] + s16X[ChOffset + 48 + 8]); \
    s32Temp +=                                                               \
        (int32_t)WIND_8_SUBBANDS_8_2 * (int32_t)s16X[ChOffset + 32 + 8];     \
    s32DCTY[8] = (int32_t)s32Temp;                                           \
  }
#define WINDOW_ACCU_4_0                                              \
  {                                                                  \
    s32Temp = (int32_t)WIND_4_SUBBANDS_0_1 *                         \
              (int32_t)(s16X[ChOffset + 8] - s16X[ChOffset + 32]);   \
    s32Temp += (int32_t)WIND_4_SUBBANDS_0_2 *                        \
               (int32_t)(s16X[ChOffset + 16] - s16X[ChOffset + 24]); \
    s32DCTY[0] = (int32_t)(s32Temp);                                 \
  }
#define WINDOW_ACCU_4_1_7                                                      \
  {                                                                            \
    s32Temp = (int32_t)WIND_4_SUBBANDS_1_0 * (int32_t)s16X[ChOffset + 1];      \
    s32Temp2 =                                                                 \
        (int32_t)WIND_4_SUBBANDS_1_0 * (int32_t)s16X[ChOffset + 32 + 7];       \
    s32Temp += (int32_t)WIND_4_SUBBANDS_1_1 * (int32_t)s16X[ChOffset + 8 + 1]; \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_1_1 * (int32_t)s16X[ChOffset + 24 + 7];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_1_2 * (int32_t)s16X[ChOffset + 16 + 1];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_1_2 * (int32_t)s16X[ChOffset + 16 + 7];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_1_3 * (int32_t)s16X[ChOffset + 24 + 1];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_1_3 * (int32_t)s16X[ChOffset + 8 + 7];        \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_1_4 * (int32_t)s16X[ChOffset + 32 + 1];       \
    s32Temp2 += (int32_t)WIND_4_SUBBANDS_1_4 * (int32_t)s16X[ChOffset + 7];    \
    s32DCTY[1] = (int32_t)(s32Temp);                                           \
    s32DCTY[7] = (int32_t)(s32Temp2);                                          \
  }
#define WINDOW_ACCU_4_2_6                                                      \
  {                                                                            \
    s32Temp = (int32_t)WIND_4_SUBBANDS_2_0 * (int32_t)s16X[ChOffset + 2];      \
    s32Temp2 =                                                                 \
        (int32_t)WIND_4_SUBBANDS_2_0 * (int32_t)s16X[ChOffset + 32 + 6];       \
    s32Temp += (int32_t)WIND_4_SUBBANDS_2_1 * (int32_t)s16X[ChOffset + 8 + 2]; \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_2_1 * (int32_t)s16X[ChOffset + 24 + 6];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_2_2 * (int32_t)s16X[ChOffset + 16 + 2];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_2_2 * (int32_t)s16X[ChOffset + 16 + 6];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_2_3 * (int32_t)s16X[ChOffset + 24 + 2];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_2_3 * (int32_t)s16X[ChOffset + 8 + 6];        \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_2_4 * (int32_t)s16X[ChOffset + 32 + 2];       \
    s32Temp2 += (int32_t)WIND_4_SUBBANDS_2_4 * (int32_t)s16X[ChOffset + 6];    \
    s32DCTY[2] = (int32_t)(s32Temp);                                           \
    s32DCTY[6] = (int32_t)(s32Temp2);                                          \
  }
#define WINDOW_ACCU_4_3_5                                                      \
  {                                                                            \
    s32Temp = (int32_t)WIND_4_SUBBANDS_3_0 * (int32_t)s16X[ChOffset + 3];      \
    s32Temp2 =                                                                 \
        (int32_t)WIND_4_SUBBANDS_3_0 * (int32_t)s16X[ChOffset + 32 + 5];       \
    s32Temp += (int32_t)WIND_4_SUBBANDS_3_1 * (int32_t)s16X[ChOffset + 8 + 3]; \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_3_1 * (int32_t)s16X[ChOffset + 24 + 5];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_3_2 * (int32_t)s16X[ChOffset + 16 + 3];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_3_2 * (int32_t)s16X[ChOffset + 16 + 5];       \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_3_3 * (int32_t)s16X[ChOffset + 24 + 3];       \
    s32Temp2 +=                                                                \
        (int32_t)WIND_4_SUBBANDS_3_3 * (int32_t)s16X[ChOffset + 8 + 5];        \
    s32Temp +=                                                                 \
        (int32_t)WIND_4_SUBBANDS_3_4 * (int32_t)s16X[ChOffset + 32 + 3];       \
    s32Temp2 += (int32_t)WIND_4_SUBBANDS_3_4 * (int32_t)s16X[ChOffset + 5];    \
    s32DCTY[3] = (int32_t)(s32Temp);                                           \
    s32DCTY[5] = (int32_t)(s32Temp2);                                          \
  }

#define WINDOW_ACCU_4_4                                                     \
  {                                                                         \
    s32Temp = (int32_t)WIND_4_SUBBANDS_4_0 *                                \
              (int32_t)(s16X[ChOffset + 4] + s16X[ChOffset + 4 + 32]);      \
    s32Temp += (int32_t)WIND_4_SUBBANDS_4_1 *                               \
               (int32_t)(s16X[ChOffset + 4 + 8] + s16X[ChOffset + 4 + 24]); \
    s32Temp +=                                                              \
        (int32_t)WIND_4_SUBBANDS_4_2 * (int32_t)s16X[ChOffset + 4 + 16];    \
    s32DCTY[4] = (int32_t)(s32Temp);                                        \
  }
#endif
#define WINDOW_PARTIAL_4 \
  {                      \
    WINDOW_ACCU_4_0;     \
    WINDOW_ACCU_4_1_7;   \
    WINDOW_ACCU_4_2_6;   \
    WINDOW_ACCU_4_3_5;   \
    WINDOW_ACCU_4_4;     \
  }

#define WINDOW_PARTIAL_8 \
  {                      \
    WINDOW_ACCU_8_0;     \
    WINDOW_ACCU_8_1_15;  \
    WINDOW_ACCU_8_2_14;  \
    WINDOW_ACCU_8_3_13;  \
    WINDOW_ACCU_8_4_12;  \
    WINDOW_ACCU_8_5_11;  \
    WINDOW_ACCU_8_6_10;  \
    WINDOW_ACCU_8_7_9;   \
    WINDOW_ACCU_8_8;     \
  }
#else
#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
#define WINDOW_ACCU_4(i)                                                     \
  {                                                                          \
    s64Temp = ((int64_t)gas32CoeffFor4SBs[i] * (int64_t)s16X[ChOffset + i]); \
    s64Temp += ((int64_t)gas32CoeffFor4SBs[(i + 8)] *                        \
                (int64_t)s16X[ChOffset + i + 8]);                            \
    s64Temp += ((int64_t)gas32CoeffFor4SBs[(i + 16)] *                       \
                (int64_t)s16X[ChOffset + i + 16]);                           \
    s64Temp += ((int64_t)gas32CoeffFor4SBs[(i + 24)] *                       \
                (int64_t)s16X[ChOffset + i + 24]);                           \
    s64Temp += ((int64_t)gas32CoeffFor4SBs[(i + 32)] *                       \
                (int64_t)s16X[ChOffset + i + 32]);                           \
    s32DCTY[i] = (int32_t)(s64Temp >> 16);                                   \
    /*printf("s32DCTY4: 0x%x \n", s32DCTY[i]);*/                             \
  }
#else
#define WINDOW_ACCU_4(i)                                                 \
  {                                                                      \
    s32DCTY[i] = (gas32CoeffFor4SBs[i * 2] * s16X[ChOffset + i]) +       \
                 (((int32_t)(uint16_t)(gas32CoeffFor4SBs[(i * 2) + 1]) * \
                   s16X[ChOffset + i]) >>                                \
                  16);                                                   \
    s32DCTY[i] +=                                                        \
        (gas32CoeffFor4SBs[(i + 8) * 2] * s16X[ChOffset + i + 8]) +      \
        (((int32_t)(uint16_t)(gas32CoeffFor4SBs[((i + 8) * 2) + 1]) *    \
          s16X[ChOffset + i + 8]) >>                                     \
         16);                                                            \
    s32DCTY[i] +=                                                        \
        (gas32CoeffFor4SBs[(i + 16) * 2] * s16X[ChOffset + i + 16]) +    \
        (((int32_t)(uint16_t)(gas32CoeffFor4SBs[((i + 16) * 2) + 1]) *   \
          s16X[ChOffset + i + 16]) >>                                    \
         16);                                                            \
    s32DCTY[i] +=                                                        \
        (gas32CoeffFor4SBs[(i + 24) * 2] * s16X[ChOffset + i + 24]) +    \
        (((int32_t)(uint16_t)(gas32CoeffFor4SBs[((i + 24) * 2) + 1]) *   \
          s16X[ChOffset + i + 24]) >>                                    \
         16);                                                            \
    s32DCTY[i] +=                                                        \
        (gas32CoeffFor4SBs[(i + 32) * 2] * s16X[ChOffset + i + 32]) +    \
        (((int32_t)(uint16_t)(gas32CoeffFor4SBs[((i + 32) * 2) + 1]) *   \
          s16X[ChOffset + i + 32]) >>                                    \
         16);                                                            \
  }
#endif
#define WINDOW_PARTIAL_4 \
  {                      \
    WINDOW_ACCU_4(0);    \
    WINDOW_ACCU_4(1);    \
    WINDOW_ACCU_4(2);    \
    WINDOW_ACCU_4(3);    \
    WINDOW_ACCU_4(4);    \
    WINDOW_ACCU_4(5);    \
    WINDOW_ACCU_4(6);    \
    WINDOW_ACCU_4(7);    \
  }

#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
#define WINDOW_ACCU_8(i)                                                    \
  {                                                                         \
    s64Temp =                                                               \
        ((((int64_t)gas32CoeffFor8SBs[i] * (int64_t)s16X[ChOffset + i])));  \
    s64Temp += ((((int64_t)gas32CoeffFor8SBs[(i + 16)] *                    \
                  (int64_t)s16X[ChOffset + i + 16])));                      \
    s64Temp += ((((int64_t)gas32CoeffFor8SBs[(i + 32)] *                    \
                  (int64_t)s16X[ChOffset + i + 32])));                      \
    s64Temp += ((((int64_t)gas32CoeffFor8SBs[(i + 48)] *                    \
                  (int64_t)s16X[ChOffset + i + 48])));                      \
    s64Temp += ((((int64_t)gas32CoeffFor8SBs[(i + 64)] *                    \
                  (int64_t)s16X[ChOffset + i + 64])));                      \
    /*printf("s32DCTY8: %d= 0x%x * %d\n", s32DCTY[i], gas32CoeffFor8SBs[i], \
     * s16X[ChOffset+i]);*/                                                 \
    s32DCTY[i] = (int32_t)(s64Temp >> 16);                                  \
  }
#else
#define WINDOW_ACCU_8(i)                                                       \
  {                                                                            \
    s32DCTY[i] = (gas32CoeffFor8SBs[i * 2] * s16X[ChOffset + i]) +             \
                 (((int32_t)(uint16_t)(gas32CoeffFor8SBs[(i * 2) + 1]) *       \
                   s16X[ChOffset + i]) >>                                      \
                  16);                                                         \
    s32DCTY[i] +=                                                              \
        (gas32CoeffFor8SBs[(i + 16) * 2] * s16X[ChOffset + i + 16]) +          \
        (((int32_t)(uint16_t)(gas32CoeffFor8SBs[((i + 16) * 2) + 1]) *         \
          s16X[ChOffset + i + 16]) >>                                          \
         16);                                                                  \
    s32DCTY[i] +=                                                              \
        (gas32CoeffFor8SBs[(i + 32) * 2] * s16X[ChOffset + i + 32]) +          \
        (((int32_t)(uint16_t)(gas32CoeffFor8SBs[((i + 32) * 2) + 1]) *         \
          s16X[ChOffset + i + 32]) >>                                          \
         16);                                                                  \
    s32DCTY[i] +=                                                              \
        (gas32CoeffFor8SBs[(i + 48) * 2] * s16X[ChOffset + i + 48]) +          \
        (((int32_t)(uint16_t)(gas32CoeffFor8SBs[((i + 48) * 2) + 1]) *         \
          s16X[ChOffset + i + 48]) >>                                          \
         16);                                                                  \
    s32DCTY[i] +=                                                              \
        (gas32CoeffFor8SBs[(i + 64) * 2] * s16X[ChOffset + i + 64]) +          \
        (((int32_t)(uint16_t)(gas32CoeffFor8SBs[((i + 64) * 2) + 1]) *         \
          s16X[ChOffset + i + 64]) >>                                          \
         16);                                                                  \
    /*printf("s32DCTY8: %d = 0x%4x%4x * %d\n", s32DCTY[i], gas32CoeffFor8SBs[i \
     * * 2], (gas32CoeffFor8SBs[(i * 2) + 1]), s16X[ChOffset+i]);*/            \
    /*s32DCTY[i]=(int32_t)(s64Temp>>16);*/                                     \
  }
#endif
#define WINDOW_PARTIAL_8 \
  {                      \
    WINDOW_ACCU_8(0);    \
    WINDOW_ACCU_8(1);    \
    WINDOW_ACCU_8(2);    \
    WINDOW_ACCU_8(3);    \
    WINDOW_ACCU_8(4);    \
    WINDOW_ACCU_8(5);    \
    WINDOW_ACCU_8(6);    \
    WINDOW_ACCU_8(7);    \
    WINDOW_ACCU_8(8);    \
    WINDOW_ACCU_8(9);    \
    WINDOW_ACCU_8(10);   \
    WINDOW_ACCU_8(11);   \
    WINDOW_ACCU_8(12);   \
    WINDOW_ACCU_8(13);   \
    WINDOW_ACCU_8(14);   \
    WINDOW_ACCU_8(15);   \
  }
#endif
#endif

static int16_t ShiftCounter = 0;
extern int16_t EncMaxShiftCounter;
/****************************************************************************
* SbcAnalysisFilter - performs Analysis of the input audio stream
*
* RETURNS : N/A
*/
void SbcAnalysisFilter4(SBC_ENC_PARAMS* pstrEncParams, int16_t* input) {
  int16_t* ps16PcmBuf;
  int32_t* ps32SbBuf;
  int32_t s32Blk, s32Ch;
  int32_t s32NumOfChannels, s32NumOfBlocks;
  int32_t i, *ps32X, *ps32X2;
  int32_t Offset, Offset2, ChOffset;
#if (SBC_ARM_ASM_OPT == TRUE)
  register int32_t s32Hi, s32Hi2;
#else
#if (SBC_IPAQ_OPT == TRUE)
#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
  register int64_t s64Temp, s64Temp2;
#else
  register int32_t s32Temp, s32Temp2;
#endif
#else

#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
  int64_t s64Temp;
#endif

#endif
#endif

  s32NumOfChannels = pstrEncParams->s16NumOfChannels;
  s32NumOfBlocks = pstrEncParams->s16NumOfBlocks;

  ps16PcmBuf = input;

  ps32SbBuf = pstrEncParams->s32SbBuffer;
  Offset2 = (int32_t)(EncMaxShiftCounter + 40);
  for (s32Blk = 0; s32Blk < s32NumOfBlocks; s32Blk++) {
    Offset = (int32_t)(EncMaxShiftCounter - ShiftCounter);
    /* Store new samples */
    if (s32NumOfChannels == 1) {
      s16X[3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
    } else {
      s16X[3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
    }
    for (s32Ch = 0; s32Ch < s32NumOfChannels; s32Ch++) {
      ChOffset = s32Ch * Offset2 + Offset;

      WINDOW_PARTIAL_4

      SBC_FastIDCT4(s32DCTY, ps32SbBuf);

      ps32SbBuf += SUB_BANDS_4;
    }
    if (s32NumOfChannels == 1) {
      if (ShiftCounter >= EncMaxShiftCounter) {
        SHIFTUP_X4;
        ShiftCounter = 0;
      } else {
        ShiftCounter += SUB_BANDS_4;
      }
    } else {
      if (ShiftCounter >= EncMaxShiftCounter) {
        SHIFTUP_X4_2;
        ShiftCounter = 0;
      } else {
        ShiftCounter += SUB_BANDS_4;
      }
    }
  }
}

/* ////////////////////////////////////////////////////////////////////////// */
void SbcAnalysisFilter8(SBC_ENC_PARAMS* pstrEncParams, int16_t* input) {
  int16_t* ps16PcmBuf;
  int32_t* ps32SbBuf;
  int32_t s32Blk, s32Ch; /* counter for block*/
  int32_t Offset, Offset2;
  int32_t s32NumOfChannels, s32NumOfBlocks;
  int32_t i, *ps32X, *ps32X2;
  int32_t ChOffset;
#if (SBC_ARM_ASM_OPT == TRUE)
  register int32_t s32Hi, s32Hi2;
#else
#if (SBC_IPAQ_OPT == TRUE)
#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
  register int64_t s64Temp, s64Temp2;
#else
  register int32_t s32Temp, s32Temp2;
#endif
#else
#if (SBC_IS_64_MULT_IN_WINDOW_ACCU == TRUE)
  int64_t s64Temp;
#endif
#endif
#endif

  s32NumOfChannels = pstrEncParams->s16NumOfChannels;
  s32NumOfBlocks = pstrEncParams->s16NumOfBlocks;

  ps16PcmBuf = input;

  ps32SbBuf = pstrEncParams->s32SbBuffer;
  Offset2 = (int32_t)(EncMaxShiftCounter + 80);
  for (s32Blk = 0; s32Blk < s32NumOfBlocks; s32Blk++) {
    Offset = (int32_t)(EncMaxShiftCounter - ShiftCounter);
    /* Store new samples */
    if (s32NumOfChannels == 1) {
      s16X[7 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[6 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[5 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[4 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
    } else {
      s16X[7 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 7 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[6 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 6 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[5 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 5 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[4 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 4 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 3 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 2 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 1 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
      s16X[Offset2 + 0 + Offset] = *ps16PcmBuf;
      ps16PcmBuf++;
    }
    for (s32Ch = 0; s32Ch < s32NumOfChannels; s32Ch++) {
      ChOffset = s32Ch * Offset2 + Offset;

      WINDOW_PARTIAL_8

      SBC_FastIDCT8(s32DCTY, ps32SbBuf);

      ps32SbBuf += SUB_BANDS_8;
    }
    if (s32NumOfChannels == 1) {
      if (ShiftCounter >= EncMaxShiftCounter) {
        SHIFTUP_X8;
        ShiftCounter = 0;
      } else {
        ShiftCounter += SUB_BANDS_8;
      }
    } else {
      if (ShiftCounter >= EncMaxShiftCounter) {
        SHIFTUP_X8_2;
        ShiftCounter = 0;
      } else {
        ShiftCounter += SUB_BANDS_8;
      }
    }
  }
}

void SbcAnalysisInit(void) {
  memset(s16X, 0, ENC_VX_BUFFER_SIZE * sizeof(int16_t));
  ShiftCounter = 0;
}
