LVCS_Private.h revision 09d5ca3766d4bab91cdaad7206716a5747ebad77
12c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* 22c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2004-2010 NXP Software 32c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Copyright (C) 2010 The Android Open Source Project 42c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 52c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Licensed under the Apache License, Version 2.0 (the "License"); 62c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * you may not use this file except in compliance with the License. 72c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * You may obtain a copy of the License at 82c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 92c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * http://www.apache.org/licenses/LICENSE-2.0 102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * 112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * Unless required by applicable law or agreed to in writing, software 122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * distributed under the License is distributed on an "AS IS" BASIS, 132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * See the License for the specific language governing permissions and 152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent * limitations under the License. 162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent */ 172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************ 192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 2009d5ca3766d4bab91cdaad7206716a5747ebad77Eric Laurent $Author: beq06068 $ 2109d5ca3766d4bab91cdaad7206716a5747ebad77Eric Laurent $Revision: 1307 $ 2209d5ca3766d4bab91cdaad7206716a5747ebad77Eric Laurent $Date: 2010-07-22 17:41:25 +0200 (Thu, 22 Jul 2010) $ 232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent*************************************************************************************/ 252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Header file for the private layer interface of concert sound. */ 292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This files includes all definitions, types, structures and function */ 312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* prototypes required by the execution layer. */ 322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifndef __LVCS_PRIVATE_H__ 362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define __LVCS_PRIVATE_H__ 372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" { 402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Includes */ 462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS.h" /* Calling or Application layer definitions */ 502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS_StereoEnhancer.h" /* Stereo enhancer module definitions */ 512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS_ReverbGenerator.h" /* Reverberation module definitions */ 522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS_Equaliser.h" /* Equaliser module definitions */ 532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVCS_BypassMix.h" /* Bypass Mixer module definitions */ 542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Timer.h" 552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Defines */ 602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Configuration switch controls */ 642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_STEREOENHANCESWITCH 0x0001 /* Stereo enhancement enable control */ 652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_REVERBSWITCH 0x0002 /* Reverberation enable control */ 662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_EQUALISERSWITCH 0x0004 /* Equaliser enable control */ 672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_BYPASSMIXSWITCH 0x0008 /* Bypass mixer enable control */ 682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Memory */ 702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_SCRATCHBUFFERS 6 /* Number of buffers required for inplace processing */ 712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* General */ 732c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_INVALID 0xFFFF /* Invalid init parameter */ 742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_BYPASS_MIXER_TC 100 /* Bypass mixer time */ 752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Access to external coefficients table */ 772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_NR_OF_FS 9 782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define LVCS_NR_OF_CHAN_CFG 2 792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Types */ 842c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef LVM_UINT16 LVCS_Configuration_t; /* Internal algorithm configuration */ 882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef enum 902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_HEADPHONE = 0, 922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_DEVICE_MAX = LVM_MAXENUM 932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVCS_OutputDevice_en; 942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Structures */ 992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* */ 1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/************************************************************************************/ 1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Volume correction structure */ 1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1042c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1052c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 CompFull; /* Post CS compression 100% effect */ 1062c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 CompMin; /* Post CS compression 0% effect */ 1072c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 GainFull; /* CS gain correct 100% effect */ 1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 GainMin; /* CS gain correct 0% effect */ 1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVCS_VolCorrect_t; 1102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Instance structure */ 1122c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Public parameters */ 1152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_MemTab_t MemoryTable; /* Instance memory allocation table */ 1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_Params_t Params; /* Instance parameters */ 1172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_Capabilities_t Capabilities; /* Initialisation capabilities */ 1182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Private parameters */ 1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_OutputDevice_en OutputDevice; /* Selected output device type */ 1212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_VolCorrect_t VolCorrect; /* Volume correction settings */ 1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 TransitionGain; /* Transition gain */ 1232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Sub-block configurations */ 1252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_StereoEnhancer_t StereoEnhancer; /* Stereo enhancer configuration */ 1262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_ReverbGenerator_t Reverberation; /* Reverberation configuration */ 1272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_Equaliser_t Equaliser; /* Equaliser configuration */ 1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVCS_BypassMix_t BypassMix; /* Bypass mixer configuration */ 1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent /* Bypass variable */ 13109d5ca3766d4bab91cdaad7206716a5747ebad77Eric Laurent LVM_INT16 MSTarget0; /* Mixer state control variable for smooth transtion */ 13209d5ca3766d4bab91cdaad7206716a5747ebad77Eric Laurent LVM_INT16 MSTarget1; /* Mixer state control variable for smooth transtion */ 1332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 bInOperatingModeTransition; /* Operating mode transition flag */ 1342c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT16 bTimerDone; /* Timer completion flag */ 1352c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_Timer_Params_t TimerParams; /* Timer parameters */ 1362c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_Timer_Instance_t TimerInstance; /* Timer instance */ 1372c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1382c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVCS_Instance_t; 1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Coefficient Structure */ 1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1432c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t EqualiserBiquadInstance; 1442c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t ReverbBiquadInstance; 1452c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t SEBiquadInstanceMid; 1462c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_Instance_t SEBiquadInstanceSide; 1472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVCS_Coefficient_t; 1492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Data Structure */ 1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct 1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{ 1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_2I_Order2_Taps_t EqualiserBiquadTaps; 1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_2I_Order2_Taps_t ReverbBiquadTaps; 1552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_1I_Order1_Taps_t SEBiquadTapsMid; 1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent Biquad_1I_Order2_Taps_t SEBiquadTapsSide; 1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVCS_Data_t; 1592c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1602c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1612c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVCS_TimerCallBack ( void* hInstance, 1622c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent void* pCallBackParams, 1632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent LVM_INT32 CallbackParam); 1642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus 1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} 1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */ 1692c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1702c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* PRIVATE_H */ 1712c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 1722c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent 173