/*---------------------------------------------------------------------------- * * File: * eas_mixer.h * * Contents and purpose: * This file contains the critical components of the mix engine that * must be optimized for best performance. * * Copyright Sonic Network Inc. 2005 * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * *---------------------------------------------------------------------------- * Revision Control: * $Revision: 706 $ * $Date: 2007-05-31 17:22:51 -0700 (Thu, 31 May 2007) $ *---------------------------------------------------------------------------- */ #ifndef _EAS_MIXER_H #define _EAS_MIXER_H //3 dls: This module is in the midst of being converted from a synth //3 specific module to a general purpose mix engine #define MIX_FLAGS_STEREO_SOURCE 1 #define MIX_FLAGS_STEREO_OUTPUT 2 #define NUM_MIXER_GUARD_BITS 4 #include "eas_effects.h" extern void SynthMasterGain( long *pInputBuffer, EAS_PCM *pOutputBuffer, EAS_U16 nGain, EAS_U16 nNumLoopSamples); /*---------------------------------------------------------------------------- * EAS_MixEngineInit() *---------------------------------------------------------------------------- * Purpose: * Prepares the mix engine for work, allocates buffers, locates effects modules, etc. * * Inputs: * pEASData - instance data * pInstData - pointer to variable to receive instance data handle * * Outputs: * * Side Effects: * *---------------------------------------------------------------------------- */ EAS_RESULT EAS_MixEngineInit (EAS_DATA_HANDLE pEASData); /*---------------------------------------------------------------------------- * EAS_MixEnginePrep() *---------------------------------------------------------------------------- * Purpose: * Performs prep before synthesize a buffer of audio, such as clearing * audio buffers, etc. * * Inputs: * psEASData - pointer to overall EAS data structure * * Outputs: * * Side Effects: * *---------------------------------------------------------------------------- */ void EAS_MixEnginePrep (EAS_DATA_HANDLE pEASData, EAS_I32 nNumSamplesToAdd); /*---------------------------------------------------------------------------- * EAS_MixEnginePost *---------------------------------------------------------------------------- * Purpose: * This routine does the post-processing after all voices have been * synthesized. It calls any sweeteners and does the final mixdown to * the output buffer. * * Inputs: * * Outputs: * * Notes: *---------------------------------------------------------------------------- */ void EAS_MixEnginePost (EAS_DATA_HANDLE pEASData, EAS_I32 nNumSamplesToAdd); /*---------------------------------------------------------------------------- * EAS_MixEngineShutdown() *---------------------------------------------------------------------------- * Purpose: * Shuts down effects modules and deallocates memory * * Inputs: * pEASData - instance data * pInstData - instance data handle * * Outputs: * * Side Effects: * *---------------------------------------------------------------------------- */ EAS_RESULT EAS_MixEngineShutdown (EAS_DATA_HANDLE pEASData); #ifdef UNIFIED_MIXER /*---------------------------------------------------------------------------- * EAS_MixStream *---------------------------------------------------------------------------- * Mix a 16-bit stream into a 32-bit buffer * * pInputBuffer 16-bit input buffer * pMixBuffer 32-bit mix buffer * numSamples number of samples to mix * gainLeft initial gain left or mono * gainRight initial gain right * gainLeft left gain increment per sample * gainRight right gain increment per sample * flags bit 0 = stereo source * bit 1 = stereo output *---------------------------------------------------------------------------- */ 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); #endif #endif /* #ifndef _EAS_MIXER_H */