www.pudn.com > OS.rar > SndSACM.h, change:2007-01-21,size:9142b


#ifndef	__SndSACM_h__ 
#define	__SndSACM_h__ 
 
//	write your header here 
#include "system_head.h" 
//================================================================= 
//				constants definition 
//================================================================= 
 
//Codec 
#define C_CODEC_MS01			0 
#define C_CODEC_MS02			1 
#define C_CODEC_A1600			2 
#define C_CODEC_S200			3 
#define C_CODEC_S200TTS			4 
#define C_CODEC_S320			5 
#define C_CODEC_S320TTS			6 
#define C_CODEC_S480			7 
#define C_CODEC_S530			8 
#define C_CODEC_S600			9 
#define C_CODEC_S600TTS			10 
#define C_CODEC_S720			11 
#define C_CODEC_S480_2			12 
#define C_CODEC_DVR				13 
#define C_CODEC_DVR1600PLAY		14 
#define C_CODEC_A4800			15 
#define C_CODEC_MP3				16 
#define C_CODEC_ETTS			17 
#define C_CODEC_CTTS			18 
#define C_CODEC_CTTS_ETTS		19 
#define C_CODEC_A1600_Skip		20 
#define C_CODEC_DVR520			21 
#define C_CODEC_DVR4800			22 
#define C_CODEC_A1800			23 
#define C_CODEC_DVR1800			24 
#define C_CODEC_A3200			25 
#define C_CODEC_A1800_SKIP		26		//A2400 skip play codec number 
#define C_CODEC_DVR3200		    27 
 
// DAC output 
#define	C_DAC1					1	//use DAC1 
#define C_DAC2					2	//USE DAC2,if use DAC1 and DAC2,you can write as DAC1+DAC2 
 
//Snd status 
#define	C_Snd_Stop				0	//SACM or ETTS or CTTS stop 
#define	C_Snd_Playing			1	//SACM or ETTS or CTTS playing 
#define	C_Snd_Pause				2	//SACM or ETTS or CTTS pause 
#define	C_Snd_DVRing			3	//DVRing 
 
//================================================================= 
//				Error definition 
//================================================================= 
 
#define RTN_SND_OK				0	//OK 
#define RTN_SND_ERROR			-1	//commen fail 
 
//================================================================= 
//				struct definition 
//================================================================= 
 
typedef struct { 
	void (*GetData)(int *short_this, unsigned long dest_addr,unsigned int length); 
} DATA_SOURCE_St; 
 
typedef struct { 
	unsigned int (*WriteData)(int *short_this, unsigned long src_addr,unsigned int length); 
	void (*EndHeader)( int *short_this, unsigned long length); 
	unsigned long (*GetMaxLength)( int *short_this ); 
} DATA_DEST_St; 
 
typedef struct { 
	unsigned int (*PlayMemory)(int,unsigned long); 
	unsigned int (*PlaySource)(int,DATA_SOURCE_St*); 
	unsigned int (*PlayIndex)(int,int); 
	void (*SetVolume)(unsigned int); 
	unsigned int  (*GetVolume)(void); 
	void (*SetSpeed)(int); 
	int  (*GetSpeed)(void); 
} SOUND_AP_St; 
 
extern SOUND_AP_St SACM_CM; 
extern SOUND_AP_St S200TTS_CM; 
extern SOUND_AP_St S320TTS_CM; 
 
//================================================================= 
//				API 
//================================================================= 
 
extern int GetSoundLibVersion(void); 
extern void Snd_Init( int *SACMstack, int SACMstacksize );	//init sound,if use ,must init in system initial 
extern void Snd_SACM_Install(void); 
extern void Snd_SACM_Uninstall(void); 
extern unsigned int Snd_GetPlayID( void ); 
extern int Snd_GetCodec(void);								//as before,if =-1,then stop status 
extern unsigned int Snd_Stop( unsigned int PlayID );		//stop 
extern unsigned int Snd_Pause( unsigned int PlayID );		//pause 
extern unsigned int Snd_Resume( unsigned int PlayID );		//resume 
extern unsigned int Snd_GetStatus(void);					//status: Playing,Stop,Pause 
 
extern unsigned long User_GetDecodeLength(void);			//Get current decoded length in words 
 
//Set Parameter API 
extern void Snd_SetVolume( unsigned int _VolumeIndex );		//volume range 0~15 
extern unsigned int Snd_GetVolume( void ); 
extern void Snd_SetSpeed( int _SpeedIndex );				//speed range -12~+12 
extern int Snd_GetSpeed( void ); 
extern void Snd_SetDACStatus( unsigned int );				//use DAC1 or DAC1+DAC2 
extern unsigned int Snd_GetDACStatus( void ); 
 
extern void Snd_SACM_SetVolume( unsigned int _VolumeIndex );//as Snd_SetVolume 
extern unsigned int Snd_SACM_GetVolume( void ); 
extern void Snd_SACM_SetSpeed( int _SpeedIndex );			//as Snd_SetSpeed 
extern int Snd_SACM_GetSpeed( void ); 
extern void	Snd_SACM_SetDACStatus( unsigned int _DacStatus );//as Snd_SetDACStatus 
extern unsigned int Snd_SACM_GetDACStatus( void ); 
extern void Snd_SetDVR_BitRate(unsigned int DVRBitRate); 
extern unsigned int Snd_GetDVR_BitRate(void); 
 
extern int Snd_MP3_SetVolume( unsigned int _VolumeIndex ); 
 
//for S200 
extern void Snd_SACM_SetPitch0(unsigned int);				//S200 Pitch 0 
extern void Snd_SACM_SetPitch1(unsigned int);				//S200 Pitch 1 
extern void Snd_SACM_SetVoice(unsigned int);				//S200 voice 
extern unsigned int Snd_SACM_GetPitch0(void); 
extern unsigned int Snd_SACM_GetPitch1(void); 
extern unsigned int Snd_SACM_GetVoice(void); 
 
//For User Use 
//===============DVR520=================== 
//Parament: vadthr = 0: 函数功能无效; vadthr > 0: 函数功能有效; 
//			vadthr = 0x400:	The default value, 静音时提高了压缩率 
//							正常压缩为7个words/桢,这时压缩为2个words/桢 
//			vadthr一般设置为0x400附近 
extern void SACM_DVR520_VADTHR(unsigned int vadthr); 
 
//for S320 
extern void Snd_SACM_SetPitch(unsigned int);				//S320 pitch 
extern unsigned int Snd_SACM_GetPitch(void); 
extern void Snd_SACM_SetSpectrum(unsigned int);				//S320 Spectrum 
extern unsigned int Snd_SACM_GetSpectrum(void); 
 
//Play API 
extern unsigned int Snd_SACM_PlayMemory( int _CodecType, unsigned char * DataPtr ); 
 
extern unsigned int Snd_MP3_PlayMemory( unsigned char * _DataPtr1, unsigned char * _DataPtr2 ); 
 
extern unsigned int Snd_TTS_PlayMemory( int _Syllable, unsigned char * DataPtr ); 
extern unsigned int Snd_SACM_PlaySource( int _CodecType, DATA_SOURCE_St *dsource ); 
extern unsigned int Snd_SACM_PlayMP3Source(long length, DATA_SOURCE_St *dsource); 
extern unsigned int Snd_TTS_PlaySource( int _SyllableNum, DATA_SOURCE_St *dsource ); 
extern unsigned int Snd_SACM_PlayIndex( int _CodecType, int _iSpeechIndex ); 
extern unsigned int Snd_TTS_PlayIndex( int _Syllable, int _iSpeechIndex ); 
extern unsigned int Snd_SACM_RecMemory( int _CodecType, unsigned long StartPtr, unsigned long EndPtr ); 
extern unsigned int Snd_SACM_RecDest( int _CodecType, DATA_DEST_St *ddest ); 
 
extern unsigned long Snd_A1600_GetTotalTime(unsigned int * DataPtr); 
extern unsigned long Snd_A1600_GetCurrentTime(void); 
extern unsigned int Snd_A1600_Skip_PlayMemory( int _CodecType, LPTR DataPtr, unsigned long StartTime, unsigned long EndTime ); 
extern unsigned long Snd_A1600_GetTotalTime_NoLen(unsigned long DataPtr); 
 
//================================================================ 
extern void SACM_DVR1800_BITRATE(int BitRate); 
extern unsigned long Snd_A1800_GetTotalTime(unsigned int * DataPtr); 
extern unsigned long Snd_A1800_GetCurrentTime(void); 
extern unsigned long Snd_A1800_GetCurrentLength(void); 
#ifdef FARRELEASE 
	extern unsigned int Snd_A1800_Skip_PlayMemory( int _CodecType, unsigned int * _DataPtr, unsigned long StartTime, unsigned long EndTime ); 
	extern unsigned long Snd_A1800_GetTotalTime_NoLen(unsigned int * DataPtr); 
#else 
	extern unsigned int Snd_A1800_Skip_PlayMemory( int _CodecType, LPTR DataPtr, unsigned long StartTime, unsigned long EndTime ); 
	extern unsigned long Snd_A1800_GetTotalTime_NoLen(unsigned long DataPtr); 
#endif 
 
//=============add for declaration error========================== 
extern void USER_SetStartIndex(int); 
extern void SACM_Speed(unsigned int); 
extern void SACM_Speed_Init(void); 
extern void SACM_Middle_Play(int,int,int); 
extern void SACM_Middle_PlayPCM(void); 
//================================================================ 
 
//For MP3 Play: 
void MeadiaPlayer_SetEQmode(int EQMode); 
void SndMP3_Resume(long length1, long length2); 
void User_ClearMP3AB(long length);		//For AB Play use only 
void SndMP3_Pause(void); 
//End of MP3 Play Function 
//================================================================ 
 
//================================================================ 
//For Cob Test Use 
//DVR & Play Both: 
extern void SACM_Codec(int);				//设置录放音的Codec类型 
 
//DVR: 
//设置录音的起始和结束地址 
//Paraments:	StartAddr	The start address of the record 
//Paraments:	EndAddr		The end address of the record 
extern void USER_DVR1600_SetRecMemory(unsigned long StartAddr, unsigned long EndAddr); 
//录音函数 
//Paraments:	Moniter		Play while Record, Moniter = 0, Usually 
//				Mic			Record according Mic or other channel == 0, Usually 
//				BitRate		Bit Rate, == 3, Usually 
extern void SACM_Rec(int Moniter, int Mic, int BitRate); 
//Play: 
//Set the Start address of the Memory Play 
extern void USER_SetMemoryAddr(unsigned long); 
//Play function 
//Paraments:	Manual		Manual or Autal, Usually == -1 
//				DAC_Config	C_DAC1 or C_DAC2 or C_DAC1 + C_DAC2 
//				Ramp		Ramp Up(1) or Down(2), Here == 3 
extern void SACM_Play(int Manual, int DAC_Config, int Ramp); 
 
//IRQ0 Service Function: 
extern void Snd_SACM_AudioFIFO_ISR(void); 
//Decode Service Loop: 
extern void SACM_DECODE_ServiceLoop(void); 
//================================================================= 
//				END 
//================================================================= 
#endif