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