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#ifndef __LVC_MIXER_H__
192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define __LVC_MIXER_H__
202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
212c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
232c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentextern "C" {
242c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
252c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
262c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
272c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#include "LVM_Types.h"
282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   INSTANCE MEMORY TYPE DEFINITION
312c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
332c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* LVMixer3_st structure stores Instance parameters for one audio stream */
34d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
35d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuritypedef struct
36d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri{
37d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVM_FLOAT       PrivateParams[3];   /* Private Instance params for \
38d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                           Audio Stream shift parameter */
39d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVM_INT16       CallbackSet;        /* Boolean.  Should be set by calling application \
40d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                           each time the target value is updated */
41d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVM_INT16       CallbackParam;      /* Parameter that will be used in the calback function */
42d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    void            *pCallbackHandle;   /* Pointer to the instance of the callback function */
43d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    void            *pGeneralPurpose;   /* Pointer for general purpose usage */
44d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVM_Callback    pCallBack;          /* Pointer to the callback function */
45d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri} LVMixer3_FLOAT_st;
46d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
472c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
482c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
492c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT32       PrivateParams[4];   /* Private Instance params for Audio Stream */
502c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16       CallbackSet;        /* Boolean.  Should be set by calling application each time the target value is updated */
512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_INT16       CallbackParam;      /* Parameter that will be used in the calback function */
522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    void            *pCallbackHandle;   /* Pointer to the instance of the callback function */
532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    void            *pGeneralPurpose;   /* Pointer for general purpose usage */
542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVM_Callback    pCallBack;          /* Pointer to the callback function */
552c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVMixer3_st;
56d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
57d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
58d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuritypedef struct
59d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri{
60d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVMixer3_FLOAT_st     MixerStream[1];    /* Instance Params for one Audio Stream */
61d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri} LVMixer3_1St_FLOAT_st;
62d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
632c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
642c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVMixer3_st     MixerStream[1];    /* Instance Params for one Audio Stream */
662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVMixer3_1St_st;
67d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
68d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
69d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuritypedef struct
70d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri{
71d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri    LVMixer3_FLOAT_st     MixerStream[2];    /* Instance Params for two Audio Streams */
72d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri} LVMixer3_2St_FLOAT_st;
73d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
742c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
752c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
762c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVMixer3_st     MixerStream[2];    /* Instance Params for two Audio Streams */
772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVMixer3_2St_st;
78d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
79d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifndef BUILD_FLOAT
802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurenttypedef struct
812c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent{
822c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent    LVMixer3_st     MixerStream[3];    /* Instance Params for three Audio Streams */
832c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent} LVMixer3_3St_st;
84d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
852c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************
862c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent   FUNCTION PROTOTYPES (HIGH LEVEL FUNCTIONS)
872c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent***********************************************************************************/
882c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
892c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Function names should be unique within first 16 characters  */
902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define    LVMixer3_MixSoft_1St_D16C31_SAT   LVMixer3_1St_D16C31_SAT_MixSoft
912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define    LVMixer3_MixInSoft_D16C31_SAT     LVMixer3_D16C31_SAT_MixInSoft
922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define    LVMixer3_MixSoft_2St_D16C31_SAT   LVMixer3_2St_D16C31_SAT_MixSoft
932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#define    LVMixer3_MixSoft_3St_D16C31_SAT   LVMixer3_3St_D16C31_SAT_MixSoft
942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
952c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** General functions ************************************************************/
972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************/
992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* This time constant calculation function assumes the mixer will be called with  */
1002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* large block sizes. When the block size is small, especially if less than 4,    */
1012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* then the calculation will give an incorrect value for alpha, see the mixer     */
1022c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* documentation for further details.                                             */
1032c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* ********************************************************************************/
104d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
105d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_Mixer_SetTarget( LVMixer3_FLOAT_st *pStream,
106d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                          LVM_FLOAT        TargetGain);
107d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_Mixer_SetTarget( LVMixer3_st *pStream,
1092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_INT32           TargetGain);
110d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
111d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
112d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh KaturiLVM_FLOAT LVC_Mixer_GetTarget( LVMixer3_FLOAT_st *pStream);
113d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1142c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVM_INT32 LVC_Mixer_GetTarget( LVMixer3_st *pStream);
115d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
1162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
117d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
118d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh KaturiLVM_FLOAT LVC_Mixer_GetCurrent( LVMixer3_FLOAT_st *pStream);
119d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1202c8e5cab3faa6d360e222b7a6c40a80083d021acEric LaurentLVM_INT32 LVC_Mixer_GetCurrent( LVMixer3_st *pStream);
121d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
1222c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
123d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
124d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_Mixer_Init( LVMixer3_FLOAT_st *pStream,
125d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                     LVM_FLOAT           TargetGain,
126d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                     LVM_FLOAT           CurrentGain);
127d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1282c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_Mixer_Init( LVMixer3_st *pStream,
1292c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_INT32           TargetGain,
1302c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_INT32           CurrentGain);
131d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
1322c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
133d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
134d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_Mixer_SetTimeConstant( LVMixer3_FLOAT_st *pStream,
135d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                LVM_INT32           Tc_millisec,
136d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                LVM_Fs_en           Fs,
137d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                LVM_INT16           NumChannels);
138d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1392c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_Mixer_SetTimeConstant( LVMixer3_st *pStream,
1402c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_INT32           Tc_millisec,
1412c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_Fs_en           Fs,
1422c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                LVM_INT16           NumChannels);
143d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
144d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri
145d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
146d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_Mixer_VarSlope_SetTimeConstant( LVMixer3_FLOAT_st *pStream,
147d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                         LVM_INT32           Tc_millisec,
148d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                         LVM_Fs_en           Fs,
149d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                         LVM_INT16           NumChannels);
150d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1512c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_Mixer_VarSlope_SetTimeConstant( LVMixer3_st *pStream,
1522c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT32           Tc_millisec,
1532c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_Fs_en           Fs,
1542c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           NumChannels);
155d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
1562c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
1572c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/*** 16 bit functions *************************************************************/
1582c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
159d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
160d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_MixSoft_1St_D16C31_SAT( LVMixer3_1St_FLOAT_st *pInstance,
161d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 const LVM_FLOAT           *src,
162d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 LVM_FLOAT           *dst,
163d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 LVM_INT16           n);
164d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1652c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_MixSoft_1St_D16C31_SAT( LVMixer3_1St_st *pInstance,
1662c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                  const LVM_INT16           *src,
1672c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           *dst,
1682c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           n);
169d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
170d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri
171d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
172d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_MixInSoft_D16C31_SAT( LVMixer3_1St_FLOAT_st *pInstance,
173d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                               LVM_FLOAT           *src,
174d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                               LVM_FLOAT           *dst,
175d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                               LVM_INT16           n);
176d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1772c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_MixInSoft_D16C31_SAT( LVMixer3_1St_st *pInstance,
1782c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           *src,
1792c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           *dst,
1802c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           n);
181d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
182d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri
183d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
184d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_MixSoft_2St_D16C31_SAT( LVMixer3_2St_FLOAT_st *pInstance,
185d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 const LVM_FLOAT             *src1,
186d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 LVM_FLOAT             *src2,
187d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 LVM_FLOAT             *dst,  /* dst cannot be equal to src2 */
188d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                 LVM_INT16             n);
189d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
1902c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_MixSoft_2St_D16C31_SAT( LVMixer3_2St_st *pInstance,
1912c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                const LVM_INT16             *src1,
1922c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                      LVM_INT16             *src2,
1932c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                      LVM_INT16             *dst,  /* dst cannot be equal to src2 */
1942c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                      LVM_INT16             n);
195d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
1962c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************/
1972c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* For applying different gains to Left and right chennals                        */
1982c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* MixerStream[0] applies to Left channel                                         */
1992c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* MixerStream[1] applies to Right channel                                        */
2002c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/* Gain values should not be more that 1.0                                        */
2012c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************/
202d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#ifdef BUILD_FLOAT
203d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katurivoid LVC_MixSoft_1St_2i_D16C31_SAT( LVMixer3_2St_FLOAT_st         *pInstance,
204d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                    const   LVM_FLOAT           *src,
205d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                    LVM_FLOAT           *dst,   /* dst can be equal to src */
206d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri                                    LVM_INT16           n);     /* Number of stereo samples */
207d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#else
2082c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurentvoid LVC_MixSoft_1St_2i_D16C31_SAT( LVMixer3_2St_st         *pInstance,
2092c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                const   LVM_INT16           *src,
2102c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           *dst,   /* dst can be equal to src */
2112c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent                                        LVM_INT16           n);     /* Number of stereo samples */
212d7d013446a64c6de9f0f2dfe098a721b140e0b48Ramesh Katuri#endif
2132c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#ifdef __cplusplus
2142c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent}
2152c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif /* __cplusplus */
2162c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2172c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent/**********************************************************************************/
2182c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
2192c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent#endif //#ifndef __LVC_MIXER_H__
2202c8e5cab3faa6d360e222b7a6c40a80083d021acEric Laurent
221