C++程序  |  132行  |  3.19 KB

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