LVCS_Private.h revision 2c8e5cab3faa6d360e222b7a6c40a80083d021ac
14370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* 24370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * Copyright (C) 2004-2010 NXP Software 34370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * Copyright (C) 2010 The Android Open Source Project 44370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * 54370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 64370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * you may not use this file except in compliance with the License. 74370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * You may obtain a copy of the License at 84370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * 94370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * http://www.apache.org/licenses/LICENSE-2.0 104370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * 114370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * Unless required by applicable law or agreed to in writing, software 124370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * distributed under the License is distributed on an "AS IS" BASIS, 134370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 144370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * See the License for the specific language governing permissions and 154370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com * limitations under the License. 164370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com */ 174370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 18c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/************************************************************************************ 19c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org 204370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com $Author: beq07716 $ 214370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com $Revision: 1001 $ 2287f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org $Date: 2010-06-28 13:23:02 +0200 (Mon, 28 Jun 2010) $ 2387f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org 2487f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org*************************************************************************************/ 2587f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org 2687f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org/************************************************************************************/ 274370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 2887f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org/* Header file for the private layer interface of concert sound. */ 294370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 304370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* This files includes all definitions, types, structures and function */ 314370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* prototypes required by the execution layer. */ 324370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 3387f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org/************************************************************************************/ 344370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 354370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#ifndef __LVCS_PRIVATE_H__ 364370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define __LVCS_PRIVATE_H__ 374370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 384370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#ifdef __cplusplus 394370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comextern "C" { 4087f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org#endif /* __cplusplus */ 414370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 424370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 43c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/************************************************************************************/ 44c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/* */ 454370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Includes */ 464370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 474370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/************************************************************************************/ 484370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 494370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#include "LVCS.h" /* Calling or Application layer definitions */ 5087f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org#include "LVCS_StereoEnhancer.h" /* Stereo enhancer module definitions */ 514370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#include "LVCS_ReverbGenerator.h" /* Reverberation module definitions */ 524370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#include "LVCS_Equaliser.h" /* Equaliser module definitions */ 53c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org#include "LVCS_BypassMix.h" /* Bypass Mixer module definitions */ 54c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org#include "LVM_Timer.h" 554370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 564370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 574370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/************************************************************************************/ 584370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 594370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Defines */ 6087f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org/* */ 614370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/************************************************************************************/ 624370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 6387f982c80833eeebf541becec8e27b96c8c889f7junov@chromium.org/* Configuration switch controls */ 644370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_STEREOENHANCESWITCH 0x0001 /* Stereo enhancement enable control */ 654370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_REVERBSWITCH 0x0002 /* Reverberation enable control */ 66c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org#define LVCS_EQUALISERSWITCH 0x0004 /* Equaliser enable control */ 67c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org#define LVCS_BYPASSMIXSWITCH 0x0008 /* Bypass mixer enable control */ 684370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 694370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Memory */ 704370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_SCRATCHBUFFERS 6 /* Number of buffers required for inplace processing */ 714370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 724370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* General */ 734370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_INVALID 0xFFFF /* Invalid init parameter */ 744370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_BYPASS_MIXER_TC 100 /* Bypass mixer time */ 754370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 764370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Access to external coefficients table */ 774370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_NR_OF_FS 9 784370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#define LVCS_NR_OF_CHAN_CFG 2 794370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 804370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 81c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/************************************************************************************/ 824370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 834370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Types */ 844370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 85c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/************************************************************************************/ 864370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 874370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef LVM_UINT16 LVCS_Configuration_t; /* Internal algorithm configuration */ 884370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 894370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef enum 904370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com{ 91c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org LVCS_HEADPHONE = 0, 924370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_DEVICE_MAX = LVM_MAXENUM 934370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com} LVCS_OutputDevice_en; 944370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 954370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 964370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/************************************************************************************/ 97c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/* */ 985e5a095a94281167056da707b03930f135748d71junov@chromium.org/* Structures */ 994370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* */ 1004370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/************************************************************************************/ 101c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org 1024370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Volume correction structure */ 1034370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef struct 1044370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com{ 1055e5a095a94281167056da707b03930f135748d71junov@chromium.org LVM_INT16 CompFull; /* Post CS compression 100% effect */ 1065e5a095a94281167056da707b03930f135748d71junov@chromium.org LVM_INT16 CompMin; /* Post CS compression 0% effect */ 1075e5a095a94281167056da707b03930f135748d71junov@chromium.org LVM_INT16 GainFull; /* CS gain correct 100% effect */ 1085e5a095a94281167056da707b03930f135748d71junov@chromium.org LVM_INT16 GainMin; /* CS gain correct 0% effect */ 1095e5a095a94281167056da707b03930f135748d71junov@chromium.org} LVCS_VolCorrect_t; 1105e5a095a94281167056da707b03930f135748d71junov@chromium.org 111c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org/* Instance structure */ 1124370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef struct 1134370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com{ 1144370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com /* Public parameters */ 1154370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_MemTab_t MemoryTable; /* Instance memory allocation table */ 1164370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_Params_t Params; /* Instance parameters */ 1174370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_Capabilities_t Capabilities; /* Initialisation capabilities */ 118c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org 1194370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com /* Private parameters */ 1204370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_OutputDevice_en OutputDevice; /* Selected output device type */ 1214370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_VolCorrect_t VolCorrect; /* Volume correction settings */ 122c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org LVM_INT16 TransitionGain; /* Transition gain */ 1234370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1245e5a095a94281167056da707b03930f135748d71junov@chromium.org /* Sub-block configurations */ 1254370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_StereoEnhancer_t StereoEnhancer; /* Stereo enhancer configuration */ 1264370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_ReverbGenerator_t Reverberation; /* Reverberation configuration */ 1275e5a095a94281167056da707b03930f135748d71junov@chromium.org LVCS_Equaliser_t Equaliser; /* Equaliser configuration */ 1284370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVCS_BypassMix_t BypassMix; /* Bypass mixer configuration */ 1294370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1304370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com /* Bypass variable */ 1314370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVMixer3_2St_st MSBypassMixer; /* Bypass mixer used in transitions in MS mode */ 1324370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVM_INT16 bInOperatingModeTransition; /* Operating mode transition flag */ 1334370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVM_INT16 bTimerDone; /* Timer completion flag */ 134c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org LVM_Timer_Params_t TimerParams; /* Timer parameters */ 1354370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVM_Timer_Instance_t TimerInstance; /* Timer instance */ 1364370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 137c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org} LVCS_Instance_t; 1384370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1394370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Coefficient Structure */ 1404370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef struct 1414370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com{ 1424370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com Biquad_Instance_t EqualiserBiquadInstance; 143c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org Biquad_Instance_t ReverbBiquadInstance; 144c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org Biquad_Instance_t SEBiquadInstanceMid; 1454370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com Biquad_Instance_t SEBiquadInstanceSide; 1464370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1474370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com} LVCS_Coefficient_t; 1484370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1494370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com/* Data Structure */ 1504370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comtypedef struct 1514370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com{ 1524370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com Biquad_2I_Order2_Taps_t EqualiserBiquadTaps; 1534370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com Biquad_2I_Order2_Taps_t ReverbBiquadTaps; 154c16ca92fd1ca609eb2902d14727bec78848ba767junov@chromium.org Biquad_1I_Order1_Taps_t SEBiquadTapsMid; 1555e5a095a94281167056da707b03930f135748d71junov@chromium.org Biquad_1I_Order2_Taps_t SEBiquadTapsSide; 1564370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1574370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com} LVCS_Data_t; 1584370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1594370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1604370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.comvoid LVCS_TimerCallBack ( void* hInstance, 1614370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com void* pCallBackParams, 1624370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com LVM_INT32 CallbackParam); 1634370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1644370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1654370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#ifdef __cplusplus 1664370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com} 1674370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#endif /* __cplusplus */ 1684370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1694370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com#endif /* PRIVATE_H */ 1704370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1714370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com 1724370aedf7f55af74e9ebb4ad1c2e010c08236dfajunov@google.com