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