You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.5 KiB
138 lines
4.5 KiB
/*----------------------------------------------------------------------------
|
|
*
|
|
* 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 */
|
|
|