예제 #1
0
void GetProcessedBuffer(void* abuf,unsigned int length,int channel)
{
	short* buf=(short*) abuf;
	//Control Volume
	if (channels[channel].effects[PSPAALIB_EFFECT_STEREO_BY_POSITION])
	{
		channels[channel].volume=GetVolumes(channels[channel].position,observerPosition,observerFront);
	}
	else if(!channels[channel].effects[PSPAALIB_EFFECT_VOLUME_MANUAL])
	{
		channels[channel].volume=(AalibVolume){1.0f,1.0f};
	}
	if (channels[channel].effects[PSPAALIB_EFFECT_STRENGTH_BY_POSITION])
	{
		channels[channel].audioStrength=GetStrengthByPosition(channels[channel].position,observerPosition);
	}
	else
	{
		channels[channel].audioStrength=1.0f;
	}
	//Control Play Speed
	if (channels[channel].effects[PSPAALIB_EFFECT_DOPPLER])
	{
		channels[channel].playSpeed=GetDopplerPlaySpeed(channels[channel].position,channels[channel].velocity,observerPosition,observerVelocity);
	}
	else if (!channels[channel].effects[PSPAALIB_EFFECT_PLAYSPEED])
	{
		channels[channel].playSpeed=1.0f;
	}
	if (!channels[channel].effects[PSPAALIB_EFFECT_AMPLIFY])
	{
		channels[channel].ampValue=1.0f;
	}
	//Get Buffer
	if ((channels[channel].effects[PSPAALIB_EFFECT_PLAYSPEED])||(channels[channel].effects[PSPAALIB_EFFECT_DOPPLER])||(channels[channel].effects[PSPAALIB_EFFECT_MIX]))
	{		
		short* tempBuf;
		tempBuf=malloc((int)(length*channels[channel].playSpeed*2*sizeof(short)));
		GetRawBuffer(tempBuf,length*channels[channel].playSpeed,channels[channel].ampValue,channel);
		GetBufferSpeedEffect(buf,tempBuf,length,channels[channel].playSpeed,channels[channel].effects[PSPAALIB_EFFECT_MIX]);
		free(tempBuf);
	}
	else
	{
		GetRawBuffer(buf,length,channels[channel].ampValue,channel);
	}
}
예제 #2
0
파일: SApp.cpp 프로젝트: janwasy/soui
BOOL SApplication::_LoadXmlDocment( LPCTSTR pszXmlName ,LPCTSTR pszType ,pugi::xml_document & xmlDoc)
{
    DWORD dwSize=GetRawBufferSize(pszType,pszXmlName);
    if(dwSize==0) return FALSE;

    CMyBuffer<char> strXml;
    strXml.Allocate(dwSize);
    GetRawBuffer(pszType,pszXmlName,strXml,dwSize);

    pugi::xml_parse_result result= xmlDoc.load_buffer(strXml,strXml.size(),pugi::parse_default,pugi::encoding_utf8);
    SASSERT_FMTW(result,L"parse xml error! xmlName=%s,desc=%s,offset=%d",pszXmlName,result.description(),result.offset);
    return result;
}