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