1*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 2*f81fb7c4SAndroid Build Coastguard Worker * 3*f81fb7c4SAndroid Build Coastguard Worker * File: 4*f81fb7c4SAndroid Build Coastguard Worker * eas_mixer.h 5*f81fb7c4SAndroid Build Coastguard Worker * 6*f81fb7c4SAndroid Build Coastguard Worker * Contents and purpose: 7*f81fb7c4SAndroid Build Coastguard Worker * This file contains the critical components of the mix engine that 8*f81fb7c4SAndroid Build Coastguard Worker * must be optimized for best performance. 9*f81fb7c4SAndroid Build Coastguard Worker * 10*f81fb7c4SAndroid Build Coastguard Worker * Copyright Sonic Network Inc. 2005 11*f81fb7c4SAndroid Build Coastguard Worker 12*f81fb7c4SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 13*f81fb7c4SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 14*f81fb7c4SAndroid Build Coastguard Worker * You may obtain a copy of the License at 15*f81fb7c4SAndroid Build Coastguard Worker * 16*f81fb7c4SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 17*f81fb7c4SAndroid Build Coastguard Worker * 18*f81fb7c4SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 19*f81fb7c4SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 20*f81fb7c4SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 21*f81fb7c4SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 22*f81fb7c4SAndroid Build Coastguard Worker * limitations under the License. 23*f81fb7c4SAndroid Build Coastguard Worker * 24*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 25*f81fb7c4SAndroid Build Coastguard Worker * Revision Control: 26*f81fb7c4SAndroid Build Coastguard Worker * $Revision: 706 $ 27*f81fb7c4SAndroid Build Coastguard Worker * $Date: 2007-05-31 17:22:51 -0700 (Thu, 31 May 2007) $ 28*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 29*f81fb7c4SAndroid Build Coastguard Worker */ 30*f81fb7c4SAndroid Build Coastguard Worker 31*f81fb7c4SAndroid Build Coastguard Worker #ifndef _EAS_MIXER_H 32*f81fb7c4SAndroid Build Coastguard Worker #define _EAS_MIXER_H 33*f81fb7c4SAndroid Build Coastguard Worker 34*f81fb7c4SAndroid Build Coastguard Worker //3 dls: This module is in the midst of being converted from a synth 35*f81fb7c4SAndroid Build Coastguard Worker //3 specific module to a general purpose mix engine 36*f81fb7c4SAndroid Build Coastguard Worker 37*f81fb7c4SAndroid Build Coastguard Worker #define MIX_FLAGS_STEREO_SOURCE 1 38*f81fb7c4SAndroid Build Coastguard Worker #define MIX_FLAGS_STEREO_OUTPUT 2 39*f81fb7c4SAndroid Build Coastguard Worker #define NUM_MIXER_GUARD_BITS 4 40*f81fb7c4SAndroid Build Coastguard Worker 41*f81fb7c4SAndroid Build Coastguard Worker #include "eas_effects.h" 42*f81fb7c4SAndroid Build Coastguard Worker 43*f81fb7c4SAndroid Build Coastguard Worker extern void SynthMasterGain( long *pInputBuffer, EAS_PCM *pOutputBuffer, EAS_U16 nGain, EAS_U16 nNumLoopSamples); 44*f81fb7c4SAndroid Build Coastguard Worker 45*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 46*f81fb7c4SAndroid Build Coastguard Worker * EAS_MixEngineInit() 47*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 48*f81fb7c4SAndroid Build Coastguard Worker * Purpose: 49*f81fb7c4SAndroid Build Coastguard Worker * Prepares the mix engine for work, allocates buffers, locates effects modules, etc. 50*f81fb7c4SAndroid Build Coastguard Worker * 51*f81fb7c4SAndroid Build Coastguard Worker * Inputs: 52*f81fb7c4SAndroid Build Coastguard Worker * pEASData - instance data 53*f81fb7c4SAndroid Build Coastguard Worker * pInstData - pointer to variable to receive instance data handle 54*f81fb7c4SAndroid Build Coastguard Worker * 55*f81fb7c4SAndroid Build Coastguard Worker * Outputs: 56*f81fb7c4SAndroid Build Coastguard Worker * 57*f81fb7c4SAndroid Build Coastguard Worker * Side Effects: 58*f81fb7c4SAndroid Build Coastguard Worker * 59*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 60*f81fb7c4SAndroid Build Coastguard Worker */ 61*f81fb7c4SAndroid Build Coastguard Worker EAS_RESULT EAS_MixEngineInit (EAS_DATA_HANDLE pEASData); 62*f81fb7c4SAndroid Build Coastguard Worker 63*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 64*f81fb7c4SAndroid Build Coastguard Worker * EAS_MixEnginePrep() 65*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 66*f81fb7c4SAndroid Build Coastguard Worker * Purpose: 67*f81fb7c4SAndroid Build Coastguard Worker * Performs prep before synthesize a buffer of audio, such as clearing 68*f81fb7c4SAndroid Build Coastguard Worker * audio buffers, etc. 69*f81fb7c4SAndroid Build Coastguard Worker * 70*f81fb7c4SAndroid Build Coastguard Worker * Inputs: 71*f81fb7c4SAndroid Build Coastguard Worker * psEASData - pointer to overall EAS data structure 72*f81fb7c4SAndroid Build Coastguard Worker * 73*f81fb7c4SAndroid Build Coastguard Worker * Outputs: 74*f81fb7c4SAndroid Build Coastguard Worker * 75*f81fb7c4SAndroid Build Coastguard Worker * Side Effects: 76*f81fb7c4SAndroid Build Coastguard Worker * 77*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 78*f81fb7c4SAndroid Build Coastguard Worker */ 79*f81fb7c4SAndroid Build Coastguard Worker void EAS_MixEnginePrep (EAS_DATA_HANDLE pEASData, EAS_I32 nNumSamplesToAdd); 80*f81fb7c4SAndroid Build Coastguard Worker 81*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 82*f81fb7c4SAndroid Build Coastguard Worker * EAS_MixEnginePost 83*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 84*f81fb7c4SAndroid Build Coastguard Worker * Purpose: 85*f81fb7c4SAndroid Build Coastguard Worker * This routine does the post-processing after all voices have been 86*f81fb7c4SAndroid Build Coastguard Worker * synthesized. It calls any sweeteners and does the final mixdown to 87*f81fb7c4SAndroid Build Coastguard Worker * the output buffer. 88*f81fb7c4SAndroid Build Coastguard Worker * 89*f81fb7c4SAndroid Build Coastguard Worker * Inputs: 90*f81fb7c4SAndroid Build Coastguard Worker * 91*f81fb7c4SAndroid Build Coastguard Worker * Outputs: 92*f81fb7c4SAndroid Build Coastguard Worker * 93*f81fb7c4SAndroid Build Coastguard Worker * Notes: 94*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 95*f81fb7c4SAndroid Build Coastguard Worker */ 96*f81fb7c4SAndroid Build Coastguard Worker void EAS_MixEnginePost (EAS_DATA_HANDLE pEASData, EAS_I32 nNumSamplesToAdd); 97*f81fb7c4SAndroid Build Coastguard Worker 98*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 99*f81fb7c4SAndroid Build Coastguard Worker * EAS_MixEngineShutdown() 100*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 101*f81fb7c4SAndroid Build Coastguard Worker * Purpose: 102*f81fb7c4SAndroid Build Coastguard Worker * Shuts down effects modules and deallocates memory 103*f81fb7c4SAndroid Build Coastguard Worker * 104*f81fb7c4SAndroid Build Coastguard Worker * Inputs: 105*f81fb7c4SAndroid Build Coastguard Worker * pEASData - instance data 106*f81fb7c4SAndroid Build Coastguard Worker * pInstData - instance data handle 107*f81fb7c4SAndroid Build Coastguard Worker * 108*f81fb7c4SAndroid Build Coastguard Worker * Outputs: 109*f81fb7c4SAndroid Build Coastguard Worker * 110*f81fb7c4SAndroid Build Coastguard Worker * Side Effects: 111*f81fb7c4SAndroid Build Coastguard Worker * 112*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 113*f81fb7c4SAndroid Build Coastguard Worker */ 114*f81fb7c4SAndroid Build Coastguard Worker EAS_RESULT EAS_MixEngineShutdown (EAS_DATA_HANDLE pEASData); 115*f81fb7c4SAndroid Build Coastguard Worker 116*f81fb7c4SAndroid Build Coastguard Worker #ifdef UNIFIED_MIXER 117*f81fb7c4SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------- 118*f81fb7c4SAndroid Build Coastguard Worker * EAS_MixStream 119*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 120*f81fb7c4SAndroid Build Coastguard Worker * Mix a 16-bit stream into a 32-bit buffer 121*f81fb7c4SAndroid Build Coastguard Worker * 122*f81fb7c4SAndroid Build Coastguard Worker * pInputBuffer 16-bit input buffer 123*f81fb7c4SAndroid Build Coastguard Worker * pMixBuffer 32-bit mix buffer 124*f81fb7c4SAndroid Build Coastguard Worker * numSamples number of samples to mix 125*f81fb7c4SAndroid Build Coastguard Worker * gainLeft initial gain left or mono 126*f81fb7c4SAndroid Build Coastguard Worker * gainRight initial gain right 127*f81fb7c4SAndroid Build Coastguard Worker * gainLeft left gain increment per sample 128*f81fb7c4SAndroid Build Coastguard Worker * gainRight right gain increment per sample 129*f81fb7c4SAndroid Build Coastguard Worker * flags bit 0 = stereo source 130*f81fb7c4SAndroid Build Coastguard Worker * bit 1 = stereo output 131*f81fb7c4SAndroid Build Coastguard Worker *---------------------------------------------------------------------------- 132*f81fb7c4SAndroid Build Coastguard Worker */ 133*f81fb7c4SAndroid Build Coastguard Worker void EAS_MixStream (EAS_PCM *pInputBuffer, EAS_I32 *pMixBuffer, EAS_I32 numSamples, EAS_I32 gainLeft, EAS_I32 gainRight, EAS_I32 gainIncLeft, EAS_I32 gainIncRight, EAS_I32 flags); 134*f81fb7c4SAndroid Build Coastguard Worker #endif 135*f81fb7c4SAndroid Build Coastguard Worker 136*f81fb7c4SAndroid Build Coastguard Worker #endif /* #ifndef _EAS_MIXER_H */ 137*f81fb7c4SAndroid Build Coastguard Worker 138