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