summaryrefslogtreecommitdiffstats
path: root/arm-fm-22k/lib_src/eas_data.h
blob: 0a47d043b416fa2725772b9145b08fc14069bfde (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*----------------------------------------------------------------------------
 *
 * File: 
 * eas_data.h
 *
 * Contents and purpose:
 * This header defines all types, to support dynamic allocation of the
 * memory resources needed for persistent EAS data.
 *
 * Copyright 2004 Sonic Network Inc.

 * 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: 842 $
 *   $Date: 2007-08-23 14:32:31 -0700 (Thu, 23 Aug 2007) $
 *----------------------------------------------------------------------------
*/

#ifndef _EAS_DATA_H
#define _EAS_DATA_H

#include "eas_types.h"
#include "eas_synthcfg.h"
#include "eas.h"
#include "eas_audioconst.h"
#include "eas_sndlib.h"
#include "eas_pcm.h"
#include "eas_pcmdata.h"
#include "eas_synth.h"
#include "eas_miditypes.h"
#include "eas_effects.h"

#ifdef AUX_MIXER
#include "eas_auxmixdata.h"
#endif

#ifdef JET_INTERFACE
#include "jet.h"
#endif

#ifdef _METRICS_ENABLED
#include "eas_perf.h"
#endif

#ifndef MAX_NUMBER_STREAMS
#define MAX_NUMBER_STREAMS			4
#endif

/* flags for S_EAS_STREAM */
#define STREAM_FLAGS_PARSED			1
#define STREAM_FLAGS_PAUSE			2
#define STREAM_FLAGS_LOCATE			4
#define STREAM_FLAGS_RESUME			8

/* structure for parsing a stream */
typedef struct s_eas_stream_tag
{
	void							*pParserModule;
	EAS_U32							time;
	EAS_U32							frameLength;
	EAS_I32							repeatCount;
	EAS_VOID_PTR					handle;
	EAS_U8							volume;
	EAS_BOOL8						streamFlags;
} S_EAS_STREAM;

/* default master volume is -10dB */
#define DEFAULT_VOLUME				90
#define DEFAULT_STREAM_VOLUME		100
#define DEFAULT_STREAM_GAIN			14622

/* 10 dB of boost available for individual parsers */
#define STREAM_VOLUME_HEADROOM		10

/* amalgamated persistent data type */
typedef struct s_eas_data_tag
{
#ifdef _CHECKED_BUILD
	EAS_U32							handleCheck;
#endif
	EAS_HW_DATA_HANDLE				hwInstData;

	S_EFFECTS_MODULE				effectsModules[NUM_EFFECTS_MODULES];

#ifdef _METRICS_ENABLED	
	S_METRICS_INTERFACE				*pMetricsModule;
	EAS_VOID_PTR					pMetricsData;
#endif

	EAS_I32							*pMixBuffer;
	EAS_PCM							*pOutputAudioBuffer;

#ifdef AUX_MIXER
	S_EAS_AUX_MIXER					auxMixer;
#endif

#ifdef _MAXIMIZER_ENABLED
	EAS_VOID_PTR					pMaximizerData;
#endif

	S_EAS_STREAM					streams[MAX_NUMBER_STREAMS];
	
	S_PCM_STATE						*pPCMStreams;

	S_VOICE_MGR						*pVoiceMgr;

#ifdef JET_INTERFACE
	JET_DATA_HANDLE					jetHandle;
#endif
	
	EAS_U32							renderTime;
	EAS_I16							masterGain;
	EAS_U8							masterVolume;
	EAS_BOOL8						staticMemoryModel;
	EAS_BOOL8						searchHeaderFlag;
} S_EAS_DATA;

#endif