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); } }
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; }