资源描述:
《C++编程:XAudio2_API应用示例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C++编程:XAudio2API应用示例作者:LuoJun声明:此文档未引用任何书籍期刊,无版权问题,可随意转载更新日期:2012/8/31XAudio2是一个跨平台的API,在Xbox360及Windows中得到支持。在Xbox360上,XAudio2作为一个静态库编译到游戏可执行文件中。在Windows上,XAudio2提供一个动态链接库(DLL)。以下例子只使用了其中的一部分功能,并不全面。详情请看微软技术页的XAudio2编程相关(英文)。使用XAudio2来播放未压缩的PCM音频数据的
2、过程并不复杂,主要有以下几个步骤:1.建立XAudio2引擎使用XAudio2Create函数,该函数的功能是创建一个XAudio2对象(IXAudio2接口)。原型:HRESULTXAudio2Create(IXAudio2**ppXAudio2,//这里返回XAudio2对象的指针UINT32Flags,//此处必须为0XAUDIO2_PROCESSORXAudio2Processor//指定所用CPU,默认:XAUDIO2_DEFAULT_PROCESSOR);示例:XAudio2Crea
3、te(&pXAudio2,0,XAUDIO2_DEFAULT_PROCESSOR);2.使用第1步建立的引擎建立MasteringVoice使用IXAudio2成员函数CreateMasteringVoice,该函数功能是创建并设置一个MasteringVoice原型:HRESULTCreateMasteringVoice(IXAudio2MasteringVoice**ppMasteringVoice,//这里返回MasteringVoice对象指针UINT32InputChannels=XA
4、UDIO2_DEFAULT_CHANNELS,//设置声道数,可选UINT32InputSampleRate=XAUDIO2_DEFAULT_SAMPLERATE,//设置采样率,可选UINT32Flags=0,//必须是0,可选LPCWSTRszDeviceId=NULL,//设备,可选,NULL代表全局默认输出设备constXAUDIO2_EFFECT_CHAIN*pEffectChain=NULL,//音效,可选AUDIO_STREAM_CATEGORYStreamCategory=Aud
5、ioCategory_GameEffects//流类型,可选);示例:pXAudio2->CreateMasteringVoice(&pMasterVoice);3.使用第一步建立的引擎建立SourceVoice(或SubmixVoice,以下按SourceVoice举例)使用IXAudio2成员函数CreateSourceVoice,该函数功能是创建并设置一个SourceVoice原型:HRESULTCreateSourceVoice(IXAudio2SourceVoice**ppSource
6、Voice,//这里返回IXAudio2SourceVoice对象指针constWAVEFORMATEX*pSourceFormat,//PCM音频格式(下面讲到)UINT32Flags=0,//SourceVoide工作方式,可选floatMaxFrequencyRatio=XAUDIO2_DEFAULT_FREQ_RATIO,//声调,可选,默认为1IXAudio2VoiceCallback*pCallback=NULL,//回调类指针,可选constXAUDIO2_VOICE_SENDS*
7、pSendList=NULL,//目标格式设置,可选constXAUDIO2_EFFECT_CHAIN*pEffectChain=NULL//音效设置,可选);示例:pXAudio2->CreateSourceVoice(&pSourceVoice,&format,0,XAUDIO2_DEFAULT_FREQ_RATIO,NULL,NULL,NULL);其中format这样设置:(位数为bits,声道数为channels,采样率为hz)WAVEFORMATEXformat;format.wFor
8、matTag=WAVE_FORMAT_PCM;//PCM格式format.wBitsPerSample=bits;//位数format.nChannels=channels;//声道数format.nSamplesPerSec=hz;//采样率format.nBlockAlign=bits*channels/8;//数据块调整format.nAvgBytesPerSec=format.nBlockAlign*hz;//平均传输速率format.cbSize=0;//附加信息1.呈交音频数据使用I