xref: /aosp_15_r20/external/sonivox/arm-wt-22k/lib_src/eas_mixer.h (revision f81fb7c475c4b71ff83bdcc517de2a8c174e4e5c)
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