| /*---------------------------------------------------------------------------- |
| * |
| * 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 */ |
| |