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