1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/* ------------------------------------------------------------------
2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Copyright (C) 1998-2009 PacketVideo
3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * you may not use this file except in compliance with the License.
6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * You may obtain a copy of the License at
7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber *
10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Unless required by applicable law or agreed to in writing, software
11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * express or implied.
14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * See the License for the specific language governing permissions
15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * and limitations under the License.
16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * -------------------------------------------------------------------
17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber */
18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*
19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   PacketVideo Corp.
22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   MP3 Decoder Library
23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber   Filename: pvmp3_equalizer.cpp
25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber     Date: 09/21/2007
28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REVISION HISTORY
31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Description:
34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber INPUT AND OUTPUT DEFINITIONS
37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber  Input
39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int32          *inData,           pointer to the spectrum frequency-line
40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    e_equalization equalizerType,     equalization mode
41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int32          *pt_work_buff
42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber  Output
44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    int32          *pt_work_buff      pointer to the equalized frequency-line
45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber FUNCTION DESCRIPTION
48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    Equalizer
50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    Each subband sample is scaled according to a spectrum shape setting
51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    defined by "equalizerType"
52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REQUIREMENTS
55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REFERENCES
59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber PSEUDO-CODE
62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------
64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber*/
65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; INCLUDES
69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_equalizer.h"
72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pv_mp3dec_fxd_op.h"
73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_dec_defs.h"
74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; MACROS
77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Define module specific macros here
78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; DEFINES
83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Include all pre-processor statements here. Include conditional
84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; compile variables also.
85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__0__dB  0.999999970f
87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__1_5dB  0.841395142f
88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__3__dB  0.707106781f
89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__4_5dB  0.595662143f
90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__6__dB  0.500000000f
91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__7_5dB  0.421696503f
92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL__9__dB  0.353553393f
93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_12__dB  0.250000000f
94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_15__dB  0.176776695f
95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_18__dB  0.125000000f
96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_21__dB  0.088388347f
97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_30__dB  0.031250000f
98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_45__dB  0.005524271f
99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#define LEVEL_60__dB  0.000976562f
100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
101183d387706417863076873ec566ca5966d8f5560Chih-Hung Hsieh#define Qmf31( x)    (int32)((x)*(float)0x7FFFFFFF)
102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL FUNCTION DEFINITIONS
106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Function Prototype declaration
107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS
111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Variable declaration - defined here and used outside this module
112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberconst int32 equalizerTbl[8][SUBBANDS_NUMBER] =
115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{
116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  FLAT */
117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB)
139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  BASS BOOST */
141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__1_5dB), Qmf31(LEVEL__3__dB),
145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__4_5dB), Qmf31(LEVEL__6__dB),
147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB)
163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  ROCK */
165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__1_5dB), Qmf31(LEVEL__3__dB),
169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__4_5dB), Qmf31(LEVEL__6__dB),
171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__1_5dB),
177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB)
187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  POP */
189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB),
191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
194d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__1_5dB), Qmf31(LEVEL__0__dB),
195d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
196d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
197d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
198d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
199d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
200d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
201d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
202d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
203d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
204d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
205d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
206d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
207d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
208d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
209d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
210d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB)
211d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
212d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  JAZZ */
213d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
214d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
215d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
216d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
217d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
218d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
219d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
220d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
221d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
222d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
223d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
224d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__1_5dB),
225d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
226d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
227d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
228d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
229d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
230d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
231d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
232d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
233d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
234d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB)
235d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
236d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  CLASSICAL */
237d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
238d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
239d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
240d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
241d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
242d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
243d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB), Qmf31(LEVEL__9__dB),
244d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
245d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
246d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
247d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
248d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__1_5dB),
249d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
250d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
251d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
252d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
253d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
254d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
255d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
256d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
257d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
258d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB)
259d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
260d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  TALK */
261d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
262d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__9__dB),
263d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
264d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__6__dB), Qmf31(LEVEL__6__dB),
265d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
266d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
267d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
268d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
269d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
270d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
271d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
272d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__1_5dB),
273d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
274d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
275d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
276d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
277d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
278d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
279d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
280d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
281d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB), Qmf31(LEVEL__3__dB),
282d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__3__dB)
283d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    },
284d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    /*  FLAT */
285d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
286d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB),
287d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
288d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
289d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
290d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
291d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
292d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
293d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
294d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
295d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
296d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
297d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
298d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
299d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
300d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
301d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
302d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
303d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
304d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
305d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB), Qmf31(LEVEL__0__dB),
306d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        Qmf31(LEVEL__0__dB)
307d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
308d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber};
309d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
310d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
311d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL FUNCTION REFERENCES
312d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare functions defined elsewhere and referenced in this module
313d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
314d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
315d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
316d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
317d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare variables used in this module but defined elsewhere
318d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
319d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
320d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
321d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*----------------------------------------------------------------------------
322d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE
323d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/
324d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
325d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Hubervoid pvmp3_equalizer(int32 *circ_buffer,
326d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                     e_equalization equalizerType,
327d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                     int32 *work_buff)
328d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{
329d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
330d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    if (equalizerType == flat)
331d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
332d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        for (int32 band = 0; band < FILTERBANK_BANDS; band += 2)
333d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
334d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
335d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 *pt_work_buff = &work_buff[band];
336d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 *inData = &circ_buffer[544 - (band<<5)];
337d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
338d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 i;
339d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (i = 0; i < SUBBANDS_NUMBER*FILTERBANK_BANDS; i += FILTERBANK_BANDS << 2)
340d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
341d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp1 = (pt_work_buff[ i ]);
342d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp2 = (pt_work_buff[ i +   FILTERBANK_BANDS ]);
343d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp3 = (pt_work_buff[ i + 2*FILTERBANK_BANDS ]);
344d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp4 = (pt_work_buff[ i + 3*FILTERBANK_BANDS ]);
345d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp1;
346d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp2;
347d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp3;
348d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp4;
349d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
350d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
351d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            inData -= SUBBANDS_NUMBER << 1;
352d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            pt_work_buff++;
353d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
354d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (i = 0; i < SUBBANDS_NUMBER*FILTERBANK_BANDS; i += FILTERBANK_BANDS << 2)
355d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
356d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp1 = (pt_work_buff[ i ]);
357d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp2 = (pt_work_buff[ i +   FILTERBANK_BANDS ]);
358d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp3 = (pt_work_buff[ i + 2*FILTERBANK_BANDS ]);
359d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp4 = (pt_work_buff[ i + 3*FILTERBANK_BANDS ]);
360d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp1;
361d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp2;
362d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp3;
363d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = temp4;
364d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
365d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
366d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
367d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    else
368d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    {
369d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        const int32 *pt_equalizer = equalizerTbl[equalizerType&7];
370d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
371d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
372d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        for (int32 band = 0; band < FILTERBANK_BANDS; band += 3)
373d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        {
374d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 *inData = &circ_buffer[544 - (band<<5)];
375d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
376d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 *pt_work_buff = &work_buff[band];
377d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            int32 i;
378d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
379d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (i = 0; i < SUBBANDS_NUMBER*FILTERBANK_BANDS; i += FILTERBANK_BANDS << 2)
380d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
381d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp1 = (pt_work_buff[ i ]);
382d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp2 = (pt_work_buff[ i +   FILTERBANK_BANDS ]);
383d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp3 = (pt_work_buff[ i + 2*FILTERBANK_BANDS ]);
384d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp4 = (pt_work_buff[ i + 3*FILTERBANK_BANDS ]);
385d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp1 << 1, *(pt_equalizer++));
386d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp2 << 1, *(pt_equalizer++));
387d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp3 << 1, *(pt_equalizer++));
388d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp4 << 1, *(pt_equalizer++));
389d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
390d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
391d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            pt_equalizer -= SUBBANDS_NUMBER;
392d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
393d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            inData -= SUBBANDS_NUMBER << 1;
394d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            pt_work_buff++;
395d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
396d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            for (i = 0; i < SUBBANDS_NUMBER*FILTERBANK_BANDS; i += FILTERBANK_BANDS << 2)
397d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            {
398d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp1 = (pt_work_buff[ i ]);
399d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp2 = (pt_work_buff[ i +   FILTERBANK_BANDS ]);
400d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp3 = (pt_work_buff[ i + 2*FILTERBANK_BANDS ]);
401d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                int32 temp4 = (pt_work_buff[ i + 3*FILTERBANK_BANDS ]);
402d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp1 << 1, *(pt_equalizer++));
403d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp2 << 1, *(pt_equalizer++));
404d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp3 << 1, *(pt_equalizer++));
405d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber                *(inData++) = fxp_mul32_Q32(temp4 << 1, *(pt_equalizer++));
406d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            }
407d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber            pt_equalizer -= SUBBANDS_NUMBER;
408d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
409d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber        }
410d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber    }
411d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber}
412d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
413d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
414d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
415d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber
416