1/*----------------------------------------------------------------------------
2 *
3 * File:
4 * eas_data.h
5 *
6 * Contents and purpose:
7 * This header defines all types, to support dynamic allocation of the
8 * memory resources needed for persistent EAS data.
9 *
10 * Copyright 2004 Sonic Network Inc.
11
12 * Licensed under the Apache License, Version 2.0 (the "License");
13 * you may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 *      http://www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 *
24 *----------------------------------------------------------------------------
25 * Revision Control:
26 *   $Revision: 842 $
27 *   $Date: 2007-08-23 14:32:31 -0700 (Thu, 23 Aug 2007) $
28 *----------------------------------------------------------------------------
29*/
30
31#ifndef _EAS_DATA_H
32#define _EAS_DATA_H
33
34#define JET_INTERFACE
35
36#include "eas_types.h"
37#include "eas_synthcfg.h"
38#include "eas.h"
39#include "eas_audioconst.h"
40#include "eas_sndlib.h"
41#include "eas_pcm.h"
42#include "eas_pcmdata.h"
43#include "eas_synth.h"
44#include "eas_miditypes.h"
45#include "eas_effects.h"
46
47#ifdef AUX_MIXER
48#include "eas_auxmixdata.h"
49#endif
50
51#ifdef JET_INTERFACE
52#include "jet.h"
53#endif
54
55#ifdef _METRICS_ENABLED
56#include "eas_perf.h"
57#endif
58
59#ifndef MAX_NUMBER_STREAMS
60#define MAX_NUMBER_STREAMS          4
61#endif
62
63/* flags for S_EAS_STREAM */
64#define STREAM_FLAGS_PARSED         1
65#define STREAM_FLAGS_PAUSE          2
66#define STREAM_FLAGS_LOCATE         4
67#define STREAM_FLAGS_RESUME         8
68
69/* structure for parsing a stream */
70typedef struct s_eas_stream_tag
71{
72    void                            *pParserModule;
73    EAS_U32                         time;
74    EAS_U32                         frameLength;
75    EAS_I32                         repeatCount;
76    EAS_VOID_PTR                    handle;
77    EAS_U8                          volume;
78    EAS_BOOL8                       streamFlags;
79} S_EAS_STREAM;
80
81/* default master volume is -10dB */
82#define DEFAULT_VOLUME              90
83#define DEFAULT_STREAM_VOLUME       100
84#define DEFAULT_STREAM_GAIN         14622
85
86/* 10 dB of boost available for individual parsers */
87#define STREAM_VOLUME_HEADROOM      10
88
89/* amalgamated persistent data type */
90typedef struct s_eas_data_tag
91{
92#ifdef _CHECKED_BUILD
93    EAS_U32                         handleCheck;
94#endif
95    EAS_HW_DATA_HANDLE              hwInstData;
96
97    S_EFFECTS_MODULE                effectsModules[NUM_EFFECTS_MODULES];
98
99#ifdef _METRICS_ENABLED
100    S_METRICS_INTERFACE             *pMetricsModule;
101    EAS_VOID_PTR                    pMetricsData;
102#endif
103
104    EAS_I32                         *pMixBuffer;
105    EAS_PCM                         *pOutputAudioBuffer;
106
107#ifdef AUX_MIXER
108    S_EAS_AUX_MIXER                 auxMixer;
109#endif
110
111#ifdef _MAXIMIZER_ENABLED
112    EAS_VOID_PTR                    pMaximizerData;
113#endif
114
115    S_EAS_STREAM                    streams[MAX_NUMBER_STREAMS];
116
117    S_PCM_STATE                     *pPCMStreams;
118
119    S_VOICE_MGR                     *pVoiceMgr;
120
121#ifdef JET_INTERFACE
122    JET_DATA_HANDLE                 jetHandle;
123#endif
124
125    EAS_U32                         renderTime;
126    EAS_I16                         masterGain;
127    EAS_U8                          masterVolume;
128    EAS_BOOL8                       staticMemoryModel;
129    EAS_BOOL8                       searchHeaderFlag;
130} S_EAS_DATA;
131
132#endif
133
134