www.pudn.com > 8202T_PDVD_4X16.rar > applause.c, change:2007-08-27,size:4308b
/******************************************************************************
File Name : applause.c
Version : Initial Draft
Author : SUPPORT_NEWFNTLIB
Created : 2007/1/11
Last Modified :
Description : xxxx for applause test
Function List :
History Information Description
Date Author Modification
2007/1/11 SUPPORT_NEWFNTLIB Created function
******************************************************************************/
#include "user_init.h"
#ifdef SUPPORT_APPLAUSE
#include "global.h"
#include "Audcodec.h"
#include "dsp3_def.h"
#include "memmap0.h"
#include "applause.inc"
#ifdef IC_8202L
//#define SECLAP_GOTEFFECTBUF() (SDRAM_BASE +(PCM_YS * 1024) + ((((A_SUPYA2*1024) - (PCM_YS * 1024))/96)*96))
BYTE * SECLAP_GOTEFFECTBUF(void)
{
extern UINT8 gIsMidiSelMenu;
if ((gIsMidiSelMenu))//(cd_type_loaded == CDROM)&&
{
return (BYTE*)SJScorePCMBuf();//((SJScorePCMBuf()) + (((SJScorePCMBuf() - (SDRAM_BASE +(PCM_YS * 1024)))/96)*96));
}
else
{
#ifdef SUPPORT_DIVX6
return (BYTE*)((SDRAM_BASE +(PCM_YS * 1024) + (((((DIVX6_MEMORY_YA - (((sizeof(SECHAP_SDData)/sizeof(SECHAP_SDData[0])) + 1023)>>10))*1024) - (PCM_YS * 1024))/96)*96)) );
#else //3944
#define APPBUFFERYA (A_DEINTLACE_YA + (405 <<1) +(203 <<1))
return (BYTE*)((SDRAM_BASE +(PCM_YS * 1024) + (((((APPBUFFERYA)*1024) - (PCM_YS * 1024))/96)*96)));
//return (BYTE*)((SDRAM_BASE +(PCM_YS * 1024) + (((((A_FILE_BUF_YA - (((sizeof(SECHAP_SDData)/sizeof(SECHAP_SDData[0])) + 1023)>>10))*1024) - (PCM_YS * 1024))/96)*96)));
#endif
}
}
#else
#define SECLAP_GOTEFFECTBUF() (SDRAM_BASE +(PCM_YS * 1024) + ((((A_DEINTLACE_YA*1024) - (PCM_YS * 1024))/96)*96))
#endif
#define SECLAP_GOTSDEFFCTCNT(x) (2)//((x)/(11250))) //soundeffect wav's format is 11250 point and 16 bit Mono
BYTE * pSDEFFECTBUF;
UINT32 CntToResumeVolume = 0; //when play effect, we would limite volume, set this variable to resume it
#ifdef USE_SMALLSCORE_PCM
int CntScorePolling;
#endif
#include "osd.h"
inline void SECLAP_PollingResme()
{
if (CntToResumeVolume)
{
CntToResumeVolume--;
if (CntToResumeVolume == 0)
{
#ifdef USE_SMALLSCORE_PCM
printf("CntScorePolling %d\n",CntScorePolling);
CntScorePolling --;
if (CntScorePolling > 0)
{
printf("Cnt Polling time\n");
// SECLAP_LoadSoundPCM();
AUDIF_Set_Volume(12); //set to turn down main volume
DSP_AudioIOControl(SNDEFFECT,pSDEFFECTBUF-(SDRAM_BASE+1024*PCM_YS),sizeof(SECHAP_SDData)/sizeof(BYTE));
CntToResumeVolume = SECLAP_GOTSDEFFCTCNT(sizeof(SECHAP_SDData)/sizeof(BYTE));
if (CntScorePolling) CntToResumeVolume = 1;
return;
}
else
#endif
AUDIF_Set_Volume(audio_volume); //set to turn down main volume
}
}
}
void SECLAP_PlayClap()
{
// printf("Curren Mode %d CntToResumeVolume %d\n",coding_mode_now,CntToResumeVolume);
if ((coding_mode_now == AUDIF_CODING_MODE_MP3)||
(coding_mode_now == AUDIF_CODING_MODE_AC3))
{
if (CntToResumeVolume) return;
SECLAP_LoadSoundPCM();
printf("Play Applause!!!\n");
AUDIF_Set_Volume(12); //set to turn down main volume
DSP_AudioIOControl(SNDEFFECT,pSDEFFECTBUF-(SDRAM_BASE+1024*PCM_YS),sizeof(SECHAP_SDData)/sizeof(SECHAP_SDData[0]));
CntToResumeVolume = SECLAP_GOTSDEFFCTCNT(sizeof(SECHAP_SDData)/sizeof(SECHAP_SDData[0])) ; //add 500ms in lap
#ifdef USE_SMALLSCORE_PCM
CntScorePolling = SCORE_APPLAUSEREPTIME;
#endif
}
}
//this func would be replace with new
void SECLAP_LoadSoundPCM(void)
{
// if (SDEFFECT.loc&&SDEFFECT.size)
{
pSDEFFECTBUF = SECLAP_GOTEFFECTBUF();
//readFile(pSDEFFECTBUF,SDEFFECT.loc,SDEFFECT.size);
memcpy(pSDEFFECTBUF,SECHAP_SDData,sizeof(SECHAP_SDData)/sizeof(SECHAP_SDData[0]));
}
}
#endif /*SUPPORT_APPLAUSE*/