日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

【XAuido2】播放wav和ogg格式音频文件

發布時間:2024/9/30 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【XAuido2】播放wav和ogg格式音频文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通過MSDN的文檔可以知道,XAuido2出了最新的再發行版本,可以兼容win7。而DirectX SDK的XAudio2.7版本已經是2010年的產物了。需要下載庫的我有上傳資源在CSDN~

封裝之后,不僅可播放wav文件,也可以播放ogg文件。不過解析ogg格式需要配置libogg、libvorbis、libvorbisfile三個庫,在ogg的官網下載配置即可。

https://xiph.org/downloads/

并且我分為音樂和音效兩個混音,可以分別控制音量大小,符合一般游戲的需求。

并且我還是用X3DAudio實現了簡單的3D音效封裝,代碼如下:

標頭DNDSound:

// //name: DNDSound //author: Lveyou //date: 17-11-11//other: //17-11-11: 簡單封裝zplaylib庫 - Lveyou //18-08-09: 改為 XAudio2 播放 wav文件 - Lveyou //#ifndef _DND_SOUND_H_ #define _DND_SOUND_H_#include "DNDDLL.h" #include "DNDTypedef.h" #include "DNDString.h" #include "DNDGame.h" #include "DNDDebug.h"namespace DND {class DLL_API Voice{friend class Voice_imp;public:virtual void Play() = 0;//傳入256無限循環virtual void PlayLoop(UINT32 num = 256) = 0;virtual void Pause() = 0;virtual void SetVolume(float volume) = 0;virtual void SetFrequencyRatio(float ratio) = 0;//是否沒有播放virtual bool IsEnd() = 0;//設置是否播放完成后再刪除,默認為truevirtual void SetDeleteWaitEnd(bool delete_wait_end) = 0;private:virtual ~Voice() {}};class DLL_API Sound{public:virtual void SetOpen(bool open = true) = 0;virtual bool IsOpen() = 0;virtual void Load(const String& name, const String& path) = 0;//0為音效、1為音樂(group id)virtual Voice* Create(const String& name,UINT32 group_id = 0, bool dsp = false, float scaler = 64.0f) = 0;//刪除音效virtual void Delete(Voice* voice) = 0;//傳入-1代表總音量,0為音效、1為音樂(group id)virtual void SetVolume(float v, UINT32 group_id = -1) = 0;virtual float GetVolume(UINT32 group_id = -1) = 0;//此方法返//virtual Voice* GetVoice(const String& name) = 0;//請判斷是播放狀態再調用virtual void UpdateDSP(Voice* voice,Vector3 voice_pos, Vector3 listener_pos,Vector3 voice_v = Vector3(), Vector3 listener_v = Vector3()) = 0;};inline void snd_play(const String& name, UINT32 group_id = 0, float volume = 1.0f){if (name.IsEmpty())return;//auto* voice = Game::Get()->sound->Create(name, group_id);if (voice){if (volume != 1.0f)voice->SetVolume(volume);voice->Play();}else{debug_err(String(L"DND: 音效獲取失敗") + name);return;}Game::Get()->sound->Delete(voice);} }#endif

?實現標頭:

// //name: DNDSound imp //author: Lveyou //date: 18-08-09//other: //18-08-09: 實現 - Lveyou //20-12-28: 使用XAuido2.9再發行版本,兼容win7 - Lveyou //#ifndef _DND_SOUND_IMP_H_ #define _DND_SOUND_IMP_H_//#ifdef USE_DX_SDK //#include <..\dx11_sdk\include\XAudio2.h> //#include <..\dx11_sdk\include\X3DAudio.h> //#else //#include <XAudio2.h> //#include <X3DAudio.h> //#endif #include <..\XAudio2.9Redist\include\XAudio2.h> #include <..\XAudio2.9Redist\include\X3DAudio.h>#include <map> #include <list> using namespace std;#include "DNDSound.h" #include "DNDThread.h"namespace DND {class VoiceData{public: WAVEFORMATEXTENSIBLE _wfx;XAUDIO2_BUFFER _buffer;VoiceData(){ZeroMemory(&_wfx, sizeof(_wfx));ZeroMemory(&_buffer, sizeof(_buffer));}};class VoiceCallback;class Voice_imp : public Voice//, public Thread{public:virtual void Play() override;virtual void PlayLoop(UINT32 num) override;virtual void Pause() override;virtual void SetVolume(float volume) override;virtual void SetFrequencyRatio(float ratio) override;virtual bool IsEnd() override;virtual void SetDeleteWaitEnd(bool delete_wait_end) override;//virtual void _run() override;bool _is_valid(){return _sourceVoice;}IXAudio2SourceVoice* _sourceVoice;VoiceCallback* _voiceCallBack;bool _end;//為true代表需要提交bool _deleteWaitEnd;//等待結束再刪除UINT32 _groupID;//XAUDIO2_BUFFER* _bufferRef;//X3DAUDIO_EMITTER* _emitter;Voice_imp();~Voice_imp();};//回調class VoiceCallback : public IXAudio2VoiceCallback{public:Voice_imp* _voice;HANDLE hBufferEndEvent;VoiceCallback() : hBufferEndEvent(CreateEvent(NULL, FALSE, FALSE, NULL)) {}~VoiceCallback() { CloseHandle(hBufferEndEvent); }//Called when the voice has just finished playing a contiguous audio stream.void STDMETHODCALLTYPE OnStreamEnd(){SetEvent(hBufferEndEvent);}//Unused methods are stubsvoid STDMETHODCALLTYPE OnVoiceProcessingPassEnd() { }void STDMETHODCALLTYPE OnVoiceProcessingPassStart(UINT32 SamplesRequired) { }void STDMETHODCALLTYPE OnBufferEnd(void * pBufferContext) { //debug_err(L"DND: VoiceCallback: OnBufferEnd "); /*_voice->_sourceVoice->Stop(0);if (FAILED(_voice->_sourceVoice->SubmitSourceBuffer(_voice->_bufferRef))){debug_err(L"DND: VoiceCallback: 提交SourceBuffer失敗: ");}else*///直接標記為播放結束_voice->_end = true;}void STDMETHODCALLTYPE OnBufferStart(void * pBufferContext) { }void STDMETHODCALLTYPE OnLoopEnd(void * pBufferContext) { 停止循環//_voice->_sourceVoice->Stop(XAUDIO2_PLAY_TAILS);指明它已經播放結束了//_voice->_ready = true;//debug_err(L"DND: VoiceCallback: OnLoopEnd ");}void STDMETHODCALLTYPE OnVoiceError(void * pBufferContext, HRESULT Error) { }};class Sound_imp : public Sound{public:virtual void SetOpen(bool open = true) override;virtual bool IsOpen() override;virtual void Load(const String& name, const String& path) override;virtual Voice* Create(const String& name, UINT32 group_id = 0, bool dsp = false, float scaler = 64.0f) override;virtual void Delete(Voice* voice) override;virtual void SetVolume(float v, UINT32 group_id = -1) override;virtual float GetVolume(UINT32 group_id = -1) override;//virtual Voice* GetVoice(const String& name) override;virtual void UpdateDSP(Voice* voice,Vector3 voice_pos, Vector3 listener_pos, Vector3 voice_v = Vector3(), Vector3 listener_v = Vector3()) override;void _init();//失敗返回一個空Voice,防止指針操作崩潰Voice* _get_voice_invalid();bool _is_voice_valid(Voice* v);Sound_imp(){_xaudio2 = NULL;_masterVoice = NULL;_open = false;_inited = false;}public:IXAudio2* _xaudio2;IXAudio2MasteringVoice* _masterVoice;//子混音IXAudio2SubmixVoice * _submixVoice[2];//0為音效、1為音樂(group id)XAUDIO2_SEND_DESCRIPTOR _sendArray0[1];XAUDIO2_SEND_DESCRIPTOR _sendArray1[1];XAUDIO2_VOICE_SENDS _voiceSends[2];//設備信息//UINT32 _cannelMask;//主混音X3DAUDIO_HANDLE _x3dInstance;XAUDIO2_VOICE_DETAILS _voiceDetails;//name -> datamap<String, VoiceData*> _mapVoiceData;//所有音頻//map<String, list<Voice_imp*>> _mapAllVoice;//刪除列表list<Voice_imp*> _listDelete;//聽者信息X3DAUDIO_LISTENER _listener;X3DAUDIO_DSP_SETTINGS _dsp;bool _open;bool _inited;}; }#endif

?源:

#include "DNDSound_imp.h" #include "DNDDebug.h" #include "DNDStreamOutput.h" #include "DNDSystem.h"#include "vorbis\codec.h" #include "vorbis\vorbisfile.h"//#ifdef _WIN32 //#include <io.h> //#include <fcntl.h> //#endif//#include <fstream> #include <io.h>namespace DND { #ifdef _XBOX //Big-Endian #define fourccRIFF 'RIFF' #define fourccDATA 'data' #define fourccFMT 'fmt ' #define fourccWAVE 'WAVE' #define fourccXWMA 'XWMA' #define fourccDPDS 'dpds' #endif#ifndef _XBOX //Little-Endian #define fourccRIFF 'FFIR' #define fourccDATA 'atad' #define fourccFMT ' tmf' #define fourccWAVE 'EVAW' #define fourccXWMA 'AMWX' #define fourccDPDS 'sdpd' #endifHRESULT FindChunk(FILE* fp, DWORD fourcc, DWORD & dwChunkSize, DWORD & dwChunkDataPosition){HRESULT hr = S_OK;/*if (INVALID_SET_FILE_POINTER == SetFilePointer(hFile, 0, NULL, FILE_BEGIN))return HRESULT_FROM_WIN32(GetLastError());*/if (0 != fseek(fp, 0, SEEK_SET))return S_FALSE;DWORD dwChunkType;DWORD dwChunkDataSize;DWORD dwRIFFDataSize = 0;DWORD dwFileType;DWORD bytesRead = 0;DWORD dwOffset = 0;while (hr == S_OK){DWORD dwRead;/*if (0 == ReadFile(hFile, &dwChunkType, sizeof(DWORD), &dwRead, NULL))hr = HRESULT_FROM_WIN32(GetLastError());if (0 == ReadFile(hFile, &dwChunkDataSize, sizeof(DWORD), &dwRead, NULL))hr = HRESULT_FROM_WIN32(GetLastError());*/dwRead = fread(&dwChunkType, sizeof(DWORD), 1, fp);dwRead = fread(&dwChunkDataSize, sizeof(DWORD), 1, fp);switch (dwChunkType){case fourccRIFF:dwRIFFDataSize = dwChunkDataSize;dwChunkDataSize = 4;/*if (0 == ReadFile(hFile, &dwFileType, sizeof(DWORD), &dwRead, NULL))hr = HRESULT_FROM_WIN32(GetLastError());*/dwRead = fread(&dwFileType, sizeof(DWORD), 1, fp);break;default:/*if (INVALID_SET_FILE_POINTER == SetFilePointer(hFile, dwChunkDataSize, NULL, FILE_CURRENT))return HRESULT_FROM_WIN32(GetLastError());*/if (0 != fseek(fp, dwChunkDataSize, SEEK_CUR))return S_FALSE;break;}dwOffset += sizeof(DWORD) * 2;if (dwChunkType == fourcc){dwChunkSize = dwChunkDataSize;dwChunkDataPosition = dwOffset;return S_OK;}dwOffset += dwChunkDataSize;if (bytesRead >= dwRIFFDataSize) return S_FALSE;}return S_OK;}HRESULT ReadChunkData(FILE* fp, void * buffer, DWORD buffersize, DWORD bufferoffset){HRESULT hr = S_OK;/* if (INVALID_SET_FILE_POINTER == SetFilePointer(hFile, bufferoffset, NULL, FILE_BEGIN))return HRESULT_FROM_WIN32(GetLastError());*/if (0 != fseek(fp, bufferoffset, SEEK_SET))return S_FALSE;//DWORD dwRead;/*if (0 == ReadFile(hFile, buffer, buffersize, &dwRead, NULL))hr = HRESULT_FROM_WIN32(GetLastError());*/fread(buffer, buffersize, 1, fp);return hr;}void Sound_imp::SetOpen(bool open /*= true*/){_open = open;if(_open)_init();}bool Sound_imp::IsOpen(){return _open;}////以上代碼copy自dx sdk文檔void Sound_imp::Load(const String& name, const String& path){if (!_open)return;String name_format = path;int index = name_format.FindEnd(L'.');if(index != -1)name_format.CutHead(index);int file_type = 0;if (name_format == L".wav")file_type = 1;else if (name_format == L".ogg")file_type = 2;if (file_type == 1){FILE* file = NULL;if (Game::Get()->sys->GetFile(path, file) == -1){debug_err(String(L"DND: wav文件加載失敗: ") + path);return;}//HANDLE hFile = (HANDLE)_get_osfhandle((int)file);/*HANDLE hFile = CreateFile(file,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);*//*if (INVALID_HANDLE_VALUE == hFile){debug_err(String(L"DND: wav文件獲取文件句柄失敗: ") + path);return;}*/if (0 != fseek(file, 0, SEEK_SET))//INVALID_SET_FILE_POINTER == SetFilePointer(hFile, 0, NULL, FILE_BEGIN)){debug_err(String(L"DND: wav文件加載失敗2: ") + path);fclose(file);return;}DWORD dwChunkSize;DWORD dwChunkPosition;//check the file type, should be fourccWAVE or 'XWMA'FindChunk(file, fourccRIFF, dwChunkSize, dwChunkPosition);DWORD filetype;ReadChunkData(file, &filetype, sizeof(DWORD), dwChunkPosition);if (filetype != fourccWAVE){debug_err(String(L"DND: 音效文件加載失敗,不是wav文件: ") + path);fclose(file);return;}VoiceData* ret = new VoiceData;if (S_OK != FindChunk(file, fourccFMT, dwChunkSize, dwChunkPosition)){debug_err(String(L"DND: 加載wav文件fourccFMT失敗: ") + path);fclose(file);return;}if (S_OK != ReadChunkData(file, &(ret->_wfx), dwChunkSize, dwChunkPosition)){debug_err(String(L"DND: 加載wav文件_wfx失敗: ") + path);fclose(file);return;};//fill out the audio data buffer with the contents of the fourccDATA chunkif (S_OK != FindChunk(file, fourccDATA, dwChunkSize, dwChunkPosition)){debug_err(String(L"DND: 加載wav文件fourccDATA失敗: ") + path);fclose(file);return;};BYTE * pDataBuffer = new BYTE[dwChunkSize];if (S_OK != ReadChunkData(file, pDataBuffer, dwChunkSize, dwChunkPosition)){debug_err(String(L"DND: 加載wav文件pDataBuffer失敗: ") + path);fclose(file);return;};(ret->_buffer).AudioBytes = dwChunkSize; //buffer containing audio data(ret->_buffer).pAudioData = pDataBuffer; //size of the audio buffer in bytes(ret->_buffer).Flags = 0;// XAUDIO2_END_OF_STREAM; // tell the source voice not to expect any data after this buffer(ret->_buffer).LoopCount = 0;// XAUDIO2_LOOP_INFINITE_mapVoiceData[name] = ret;//至少一個準備播放//_mapAllVoice[name].push_back((Voice_imp*)Create(name));//CloseHandle(hFile);fclose(file);}else if(file_type == 2){FILE* file = NULL;if(Game::Get()->sys->GetFile(path, file) == -1){debug_err(String(L"DND: ogg文件加載失敗: ") + path);return;}/*char temp[1024] = {0};name.GetMultiByteStr(temp, 1024);if (fopen_s(&file, temp, "rb") == NULL){debug_err(String(L"DND: ogg文件加載失敗: ") + path);return;}*/OggVorbis_File vf;int eof = 0;int current_section;//#ifdef _WIN32 // _setmode(_fileno(stdin), _O_BINARY); // _setmode(_fileno(stdout), _O_BINARY); //#endifint ov_ret = ov_open_callbacks(file, &vf, NULL, 0, OV_CALLBACKS_NOCLOSE);if (ov_ret < 0){debug_err(String(L"DND: 音效文件加載失敗,不是ogg文件: ") + path);fclose(file);return;}VoiceData* ret = new VoiceData;//寫入wfx{vorbis_info *vi = ov_info(&vf, -1);//只需要填充Foramt這一個結構,其他被截斷了ret->_wfx.Format.cbSize = 0;ret->_wfx.Format.wFormatTag = WAVE_FORMAT_PCM;ret->_wfx.Format.nChannels = vi->channels;//聲道數ret->_wfx.Format.nSamplesPerSec = vi->rate;//采樣率ret->_wfx.Format.wBitsPerSample = 16; //msdn: 如果wFormatTag是WAVE_FORMAT_PCM,則wBitsPerSample應該等于8或16ret->_wfx.Format.nBlockAlign = ret->_wfx.Format.nChannels * ret->_wfx.Format.wBitsPerSample / 8;//msdn: 如果wFormatTag是WAVE_FORMAT_PCM或WAVE_FORMAT_EXTENSIBLE,則nBlockAlign必須等于nChannels和wBitsPerSample的乘積除以8(每字節位數)ret->_wfx.Format.nAvgBytesPerSec = ret->_wfx.Format.nSamplesPerSec * ret->_wfx.Format.nBlockAlign;//msdn: 如果wFormatTag是WAVE_FORMAT_PCM,則nAvgBytesPerSec應該等于nSamplesPerSec和nBlockAlign的乘積}//寫入bufferchar pcmout[4096];StreamOutput o;o.SetDelete(false);while (!eof) {long ret = ov_read(&vf, pcmout, sizeof(pcmout), 0, 2, 1, &current_section);if (ret == 0) {/* EOF */eof = 1;}else if (ret < 0) {/* error in the stream. Not a problem, just reporting it incase we (the app) cares. In this case, we don't. */}else {/* we don't bother dealing with sample rate changes, etc, butyou'll have to*/o.Write(pcmout, ret);//fwrite(pcmout, 1, ret, stdout);}}(ret->_buffer).AudioBytes = o.GetLength(); //buffer containing audio data(ret->_buffer).pAudioData = o.GetBuffer(); //size of the audio buffer in bytes(ret->_buffer).Flags = 0;// XAUDIO2_END_OF_STREAM; // tell the source voice not to expect any data after this buffer(ret->_buffer).LoopCount = 0;_mapVoiceData[name] = ret;//至少一個準備播放//_mapAllVoice[name].push_back((Voice_imp*)Create(name));ov_clear(&vf);fclose(file);}else{debug_err(String(L"DND: 音效文件加載失敗,不支持的格式: ") + name_format);return;}}DND::Voice* Sound_imp::Create(const String& name, UINT32 group_id, bool dsp, float scaler){if (!_open)return _get_voice_invalid();Voice_imp* ret = new Voice_imp;ret->_voiceCallBack = new VoiceCallback; ret->_voiceCallBack->_voice = ret;ret->_groupID = group_id;auto& iter = _mapVoiceData.find(name);if (iter == _mapVoiceData.end()){debug_err(String(L"DND: Sound::Create: 音頻沒有加載: ") + name);delete ret;return _get_voice_invalid();}if (FAILED(_xaudio2->CreateSourceVoice(&(ret->_sourceVoice), (WAVEFORMATEX*)&(iter->second->_wfx),0, XAUDIO2_DEFAULT_FREQ_RATIO, ret->_voiceCallBack, &_voiceSends[group_id], NULL))){debug_err(String(L"DND: Sound::Create: 創建SourceVoice失敗: ") + name);delete ret;return _get_voice_invalid();}ret->_bufferRef = &(iter->second->_buffer);/*if (FAILED(ret->_sourceVoice->SubmitSourceBuffer(ret->_bufferRef))){debug_err(String(L"DND: Sound::Create: 提交SourceBuffer失敗: ") + name);delete ret;return NULL;}*///dspif (dsp){XAUDIO2_VOICE_DETAILS voice_detail;ret->_sourceVoice->GetVoiceDetails(&voice_detail);if (voice_detail.InputChannels != 2){debug_err(String(L"DND: Sound::Create: 音頻文件通道數不為2,不能創建DSP效果: ") + name);return ret;}ret->_emitter = new X3DAUDIO_EMITTER;ZeroMemory(ret->_emitter, sizeof(X3DAUDIO_EMITTER));ret->_emitter->ChannelCount = 2;ret->_emitter->CurveDistanceScaler = scaler;FLOAT32* p_cas = new FLOAT32[2];for (UINT32 i = 0; i != 2; ++i)p_cas[i] = 0;ret->_emitter->pChannelAzimuths = p_cas;ret->_emitter->OrientFront = {0.0f, 0.0f, 1.0f};ret->_emitter->OrientTop = { 0.0f, -1.0f, 0.0f };}return ret;}void Sound_imp::SetVolume(float v, UINT32 group_id){if (!_open)return;//_masterVoice->SetVolume(v);if (group_id == -1)_masterVoice->SetVolume(v);else_submixVoice[group_id]->SetVolume(v);}float Sound_imp::GetVolume(UINT32 group_id){if (!_open)return 0;float ret;if(group_id == -1)_masterVoice->GetVolume(&ret);else_submixVoice[group_id]->GetVolume(&ret);//_masterVoice->GetVolume(&ret);return ret;}//DND::Voice* Sound_imp::GetVoice(const String& name)//{// auto& iter = _mapAllVoice.find(name);// if (iter == _mapAllVoice.end())// return NULL;// for (auto& iter2 : iter->second)// {// if (iter2->_ready)// return iter2;// }// Voice* ret = Create(name);// iter->second.push_back((Voice_imp*)ret);// return ret;//}void Sound_imp::UpdateDSP(Voice* voice, Vector3 voice_pos, Vector3 listener_pos, Vector3 voice_v /*= Vector3()*/, Vector3 listener_v /*= Vector3()*/){if (!_is_voice_valid(voice))return;Voice_imp* p = (Voice_imp*)voice;if (p && p->_emitter){//設置速度與位置p->_emitter->Position.x = voice_pos.a;p->_emitter->Position.y = voice_pos.b;p->_emitter->Position.z = voice_pos.c;p->_emitter->Velocity.x = voice_v.a;p->_emitter->Velocity.y = voice_v.b;p->_emitter->Velocity.z = voice_v.c;_listener.Position.x = listener_pos.a;_listener.Position.y = listener_pos.b;_listener.Position.z = listener_pos.c;_listener.Velocity.x = listener_v.a;_listener.Velocity.y = listener_v.b;_listener.Velocity.z = listener_v.c;//計算X3DAudioCalculate(_x3dInstance, &_listener, p->_emitter,X3DAUDIO_CALCULATE_MATRIX//| X3DAUDIO_CALCULATE_DOPPLER/*| X3DAUDIO_CALCULATE_LPF_DIRECT| X3DAUDIO_CALCULATE_REVERB*/,&_dsp);//應用效果p->_sourceVoice->SetOutputMatrix(_submixVoice[p->_groupID], 2, _voiceDetails.InputChannels, _dsp.pMatrixCoefficients);//p->_sourceVoice->SetFrequencyRatio(_dsp.DopplerFactor);/*p->_sourceVoice->SetOutputMatrix(_submixVoice[p->_groupID], 2, _voiceDetails.InputChannels, &_dsp.ReverbLevel);*//*XAUDIO2_FILTER_PARAMETERS FilterParameters = { LowPassFilter, 2.0f * sinf(X3DAUDIO_PI / 6.0f * _dsp.LPFDirectCoefficient), 1.0f };p->_sourceVoice->SetFilterParameters(&FilterParameters);*/}}void Sound_imp::_init(){if (_inited)return;_inited = true;#ifndef _XBOXCoInitializeEx(NULL, COINIT_MULTITHREADED); #endifHRESULT hr;if (FAILED(hr = XAudio2Create(&_xaudio2, 0, XAUDIO2_DEFAULT_PROCESSOR))){dnd_assert(L"DND: XAudio2 初始化失敗!");return;}//#define USE_DX_SDK_SND#ifdef USE_DX_SDK_SND//獲取設備詳情XAUDIO2_DEVICE_DETAILS device_details;_xaudio2->GetDeviceDetails(0, &device_details);debug_msg(String::Format(L"DND: 音頻設備: %ws-%ws", device_details.DisplayName, device_details.DeviceID)); #endif//直接使用0,全局音頻設備if (FAILED(hr = _xaudio2->CreateMasteringVoice(&_masterVoice, XAUDIO2_DEFAULT_CHANNELS,XAUDIO2_DEFAULT_SAMPLERATE, 0, 0, NULL))){dnd_assert(L"DND: XAudio2 創建 MasterVoice 失敗!");return;}//獲取主控詳情_masterVoice->GetVoiceDetails(&_voiceDetails);//子混音(應和主混音通道數一致)if (FAILED(hr = _xaudio2->CreateSubmixVoice(&(_submixVoice[0]),_voiceDetails.InputChannels,_voiceDetails.InputSampleRate, 0, 0, 0))){dnd_assert(L"DND: XAudio2 創建 SubmixVoice0 失敗!");return;}if (FAILED(hr = _xaudio2->CreateSubmixVoice(&(_submixVoice[1]), _voiceDetails.InputChannels,_voiceDetails.InputSampleRate, 0, 0, 0))){dnd_assert(L"DND: XAudio2 創建 SubmixVoice1 失敗!");return;}_sendArray0[0] = { 0, _submixVoice[0] };_sendArray1[0] = { 0, _submixVoice[1] };_voiceSends[0] = { 1, _sendArray0 };_voiceSends[1] = { 1, _sendArray1 };//初始化X3DAudioDWORD dwChannelMask; #ifdef USE_DX_SDK_SNDdwChannelMask = device_details.OutputFormat.dwChannelMask; #else_masterVoice->GetChannelMask(&dwChannelMask); #endifX3DAudioInitialize(dwChannelMask, X3DAUDIO_SPEED_OF_SOUND, _x3dInstance);//聽者只有一個ZeroMemory(&_listener, sizeof(X3DAUDIO_LISTENER));_listener.OrientFront = { 0.0f,0.0f,-1.0f };_listener.OrientTop = { 0.0f,-1.0f,0.0f };//dspZeroMemory(&_dsp, sizeof(X3DAUDIO_DSP_SETTINGS));FLOAT32 * matrix = new FLOAT32[2 * _voiceDetails.InputChannels];FLOAT32* dtimes = new FLOAT32[_voiceDetails.InputChannels];_dsp.SrcChannelCount = 2;_dsp.DstChannelCount = _voiceDetails.InputChannels;_dsp.pMatrixCoefficients = matrix;_dsp.pDelayTimes = dtimes;/*_dsp.EmitterToListenerDistance = 1.0f / 64.0f;_dsp.EmitterVelocityComponent = 1.0f / 64.0f;_dsp.ListenerVelocityComponent = 1.0f / 64.0f;*/}void Sound_imp::Delete(Voice* voice){if (!voice)return;Voice_imp* p = (Voice_imp*)voice;if (p->_sourceVoice == NULL){delete p;return;}if (!p->_deleteWaitEnd || p->_end){p->_sourceVoice->Stop();delete p;}else{_listDelete.push_back(p);}}DND::Voice* Sound_imp::_get_voice_invalid(){Voice_imp* ret = new Voice_imp();return ret;}bool Sound_imp::_is_voice_valid(Voice* v){return v && ((Voice_imp*)v)->_sourceVoice;}void Voice_imp::Play(){if (!_is_valid())return;if (_end){_bufferRef->LoopCount = 0;if (FAILED(_sourceVoice->SubmitSourceBuffer(_bufferRef))){debug_err(String(L"DND: Voice::Play: 提交SourceBuffer失敗: "));return;}_sourceVoice->Start(0, XAUDIO2_COMMIT_NOW);_end = false;}/*WaitForSingleObject(_voiceCallBack->hBufferEndEvent, INFINITE);Thread::Start();*///_sourceVoice->SetChannelVolumes(,)}void Voice_imp::PlayLoop(UINT32 num){if (!_is_valid())return;if (_end){//結束了則重新提交_bufferRef->LoopCount = num - 1;if (FAILED(_sourceVoice->SubmitSourceBuffer(_bufferRef))){debug_err(String(L"DND: Voice::PlayLoop: 提交SourceBuffer失敗: "));return;}_sourceVoice->Start(0, XAUDIO2_COMMIT_NOW);_end = false;}}void Voice_imp::Pause(){if (!_is_valid())return;_sourceVoice->Stop(0, XAUDIO2_COMMIT_NOW);}void Voice_imp::SetVolume(float volume){if (!_is_valid())return;_sourceVoice->SetVolume(volume);}bool Voice_imp::IsEnd(){return _end;}void Voice_imp::SetDeleteWaitEnd(bool delete_wait_end){_deleteWaitEnd = delete_wait_end;}Voice_imp::Voice_imp(){_sourceVoice = NULL;_voiceCallBack = NULL;_end = true;_deleteWaitEnd = true;_groupID = 0;_emitter = NULL;_bufferRef = NULL;}Voice_imp::~Voice_imp(){if (_sourceVoice)_sourceVoice->DestroyVoice();//先于_sourceVoice釋放會導致深不可測的bugdelete _voiceCallBack;if (_emitter)delete[] _emitter->pChannelAzimuths;delete _emitter;}void Voice_imp::SetFrequencyRatio(float ratio){if (!_is_valid())return;_sourceVoice->SetFrequencyRatio(ratio);//_sourceVoice->}/*void Voice_imp::_run(){}*/}

?

總結

以上是生活随笔為你收集整理的【XAuido2】播放wav和ogg格式音频文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

人成免费网站 | 免费av网站观看 | 免费观看xxxx9999片 | 欧洲一区精品 | 在线观看精品视频 | 久久精品99久久 | 手机av电影在线观看 | 91av中文字幕 | 久久久资源 | 国产色网| 欧美激情另类文学 | 国产精品一区在线观看你懂的 | 久久综合久色欧美综合狠狠 | www.日韩免费 | 中文字幕在线免费观看视频 | 天天做天天干 | 日韩毛片在线免费观看 | 精品婷婷 | 97在线观看免费视频 | 成人小电影在线看 | 欧美a在线看 | 午夜婷婷综合 | 九九九视频精品 | 在线观看福利网站 | 国产a网站 | 一级片免费在线 | .国产精品成人自产拍在线观看6 | 国产小视频福利在线 | 久久免费视频3 | 国产资源网站 | 999久久久久久久久 69av视频在线观看 | 久精品视频| 亚洲免费av在线播放 | 日韩欧美综合视频 | 在线观看免费国产小视频 | 亚洲综合色av | 天天综合天天做天天综合 | 久久久久激情电影 | 99久久婷婷国产一区二区三区 | 91豆麻精品91久久久久久 | 日本精品久久久一区二区三区 | 天堂av免费观看 | 久久免费美女视频 | 国产成人免费高清 | 成年人在线免费看 | 久久99精品久久久久蜜臀 | 91高清视频 | 日韩免费在线视频观看 | 特级西西444www高清大视频 | 丁香五月亚洲综合在线 | av片子在线观看 | 福利一区视频 | 五月天综合网站 | 免费在线观看av网站 | 99久久影院 | 2024av| 成人久久 | 午夜精品久久 | 国产高清在线一区 | 久久久久免费精品国产 | 国产粉嫩在线 | 在线观看色网 | 国产欧美在线一区二区三区 | 日本中文字幕视频 | 99热在线精品观看 | 国产一级二级三级在线观看 | 亚洲精品在线一区二区 | 在线只有精品 | 欧美一区免费观看 | 国产精品久久久免费 | 亚洲精品一区二区网址 | 国产精品一区二区久久久 | 人人添人人澡 | 久久九精品 | 久久国产影视 | 日韩av电影中文字幕在线观看 | 国产在线观看免费观看 | 国产乱对白刺激视频不卡 | 涩涩成人在线 | 性日韩欧美在线视频 | 免费看毛片网站 | 色是在线视频 | 免费看色的网站 | 91在线看 | www黄在线 | 久久久国产网站 | 青青河边草观看完整版高清 | a视频在线观看免费 | 国产91免费看 | 久久毛片高清国产 | 色噜噜狠狠狠狠色综合久不 | 成人在线超碰 | 成人在线网站观看 | 成 人 黄 色视频免费播放 | 久久xx视频 | 黄网站免费大全入口 | 日韩欧美在线免费观看 | 欧美激情第八页 | 美女视频a美女大全免费下载蜜臀 | 中文字幕色综合网 | 人人插超碰 | 91精品一区二区三区蜜桃 | 国产精品一区二区三区四 | 国内精品久久久久国产 | 中文字幕在线免费 | 日韩在线短视频 | 色5月婷婷| 亚洲激情精品 | 黄色精品久久久 | 午夜精品久久久久久久爽 | 视频一区二区视频 | 18国产精品福利片久久婷 | 亚洲一级电影在线观看 | 91成人免费看片 | 久久久久激情 | 国产精品手机在线 | 在线看片一区 | 欧美成亚洲 | 激情五月婷婷激情 | 91看片在线看片 | 大胆欧美gogo免费视频一二区 | 国产成人精品不卡 | 亚洲精品国产精品乱码不99热 | 婷婷伊人五月 | av成人免费观看 | 欧美一级片在线 | 日韩在线免费视频 | a天堂免费 | 91麻豆视频 | 久久久精品免费观看 | 日日草视频| 毛片精品免费在线观看 | 亚洲麻豆精品 | 欧美一级电影在线观看 | 亚洲精选视频免费看 | 欧洲精品一区二区 | 久久久国产精品一区二区中文 | 99久久精品国产毛片 | 国产精品久久久久久久久大全 | 亚洲国产视频a | 欧美日韩亚洲在线观看 | 亚洲精品在线视频观看 | 黄色a视频| 国产精品一区二区久久精品爱涩 | 高清不卡免费视频 | 久久久不卡影院 | 亚洲一级黄色大片 | 国产亚洲精品久久久久秋 | 国产精品一区二区久久久 | 欧美网站黄色 | 91在线看片 | 在线观看亚洲 | 国产69精品久久久久99 | 欧美日本不卡高清 | 五月天免费网站 | 免费网站在线观看成人 | 欧美亚洲xxx | 中文字幕在线字幕中文 | 国产中文字幕久久 | 久久精彩 | 精品av在线播放 | 九九热re| 精品专区 | 欧美日韩精品在线免费观看 | 天天综合网 天天 | 91污污 | 日韩精品一区二区三区不卡 | 成年人毛片在线观看 | 久久九九久久精品 | 99精品国产福利在线观看免费 | 色狠狠操| 久久久久久免费毛片精品 | 国色天香在线观看 | 在线黄网站 | 91亚洲国产成人久久精品网站 | 97色婷婷成人综合在线观看 | 欧美日韩高清不卡 | 9在线观看免费高清完整版 玖玖爱免费视频 | 久久精品国产免费观看 | 亚洲一级二级三级 | 国内精品久久久久久久97牛牛 | 日韩免费电影 | 精品国产一区二区三区四区在线观看 | 免费一级特黄录像 | 一区二区欧美在线观看 | 亚洲精品在 | 欧美一二区视频 | 久久精品专区 | 国产欧美精品一区二区三区四区 | av网在线观看 | www.xxxx变态.com | 色com网| 99热最新在线 | 久久久久免费看 | 五月婷在线观看 | 久久在线免费视频 | 24小时日本在线www免费的 | 色噜噜狠狠狠狠色综合久不 | 麻豆精品视频 | 不卡av电影在线 | 国产黄网站在线观看 | 中文有码在线 | 9999国产精品| 日韩久久在线 | 久久激五月天综合精品 | 亚洲乱码精品久久久久 | 免费韩国av | 亚洲欧美成人在线 | 97视频网址 | 午夜精品一区二区三区在线观看 | 免费看黄色小说的网站 | 天天射天天干天天插 | 日韩大片在线播放 | 国产视频69 | 免费观看一区 | 成人片在线播放 | 91香蕉视频| 亚洲aaa级 | 五月婷婷另类国产 | 亚洲观看黄色网 | 国产网站色| 亚洲高清精品在线 | 91看片网址| 国产老太婆免费交性大片 | 亚洲人人精品 | 香蕉视频导航 | 亚洲五月六月 | 五月天婷婷在线观看视频 | 狠狠干.com| 97视频在线观看网址 | 日韩国产精品毛片 | 超碰公开97 | 国产一区欧美日韩 | 日韩在线视频一区 | 久久久久久国产一区二区三区 | 国产黄色免费观看 | 在线之家免费在线观看电影 | 久久av在线 | 77国产精品 | 国产亚洲va综合人人澡精品 | 婷婷色综 | 中文字幕在线一二 | 亚洲精品视频二区 | 特级aaa毛片 | 成片免费观看视频 | 亚洲国产中文字幕 | 日韩av福利在线 | 亚洲精品国久久99热 | 中文字幕av电影下载 | 国产亚洲综合在线 | 日韩久久久久久久 | 色视频在线免费观看 | 日韩欧美高清在线 | av先锋中文字幕 | 午夜精品久久久久久久久久久久久久 | 福利视频入口 | 国产色秀视频 | 国产一级二级视频 | 欧美另类一二三四区 | 欧美一区二区在线免费观看 | 国产一区私人高清影院 | 国产99久久久国产精品 | 中文字幕在线资源 | 国产96av | 精品免费视频. | 国产精品欧美久久久久天天影视 | 成人免费av电影 | 国产精品久久久久久久av电影 | www.天天操.com | 大胆欧美gogo免费视频一二区 | 久久久久亚洲精品国产 | 国产淫a | 日韩精品久久中文字幕 | 亚洲精品国产片 | 国产一区二区高清不卡 | 亚洲免费一级 | 国产精品 久久 | 免费裸体视频网 | 免费在线观看成人av | 91成人免费观看视频 | 一区二区三区三区在线 | 波多野结衣在线视频免费观看 | 亚洲精品久久久久久久不卡四虎 | 免费在线观看中文字幕 | 日韩av影视| 99在线热播精品免费99热 | 欧美一二三在线 | 欧美一二在线 | 最近中文字幕久久 | 91麻豆精品国产91久久久无需广告 | 国产成人一区二区三区在线观看 | 免费在线激情电影 | 人人网人人爽 | 在线观看韩国av | 国产专区在线看 | 在线你懂 | 亚洲成人黄色 | 亚洲精品久久久久久中文传媒 | 国产在线欧美在线 | 日日干夜夜骑 | 看av在线| 国内精品美女在线观看 | 久久久国产日韩 | 免费看片在线观看 | 最新色视频 | 色噜噜色噜噜 | 综合天天色 | 天天操夜夜操夜夜操 | 欧美极度另类性三渗透 | 久久无码av一区二区三区电影网 | 亚洲成人麻豆 | 国产高清不卡av | 香蕉视频国产在线 | 在线观看视频免费大全 | 日韩国产精品一区 | 色大片免费看 | 在线观看国产www | 亚洲成人在线免费 | 亚洲精品国产精品国自产观看浪潮 | 亚洲精品综合欧美二区变态 | 日p视频在线观看 | 在线观看免费高清视频大全追剧 | 国产精品毛片久久久久久久久久99999999 | 亚洲成a人片77777kkkk1在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 欧美日韩精品在线观看 | 婷婷av综合 | 天天玩天天干 | 成年人免费在线观看 | 亚洲高清资源 | 天堂网在线视频 | 欧美激情精品 | av福利在线免费观看 | 欧美午夜理伦三级在线观看 | 高清国产午夜精品久久久久久 | 亚洲免费激情 | 人交video另类hd | 欧美激情精品 | 久久夜靖品 | 9草在线 | 综合在线色 | 国产艹b视频 | 91豆麻精品91久久久久久 | 三级免费黄色 | 中国黄色一级大片 | 天天综合网 天天 | 久久撸在线视频 | 在线观看国产中文字幕 | 午夜在线国产 | 最新av观看 | 国产精品va | 国产精品久久久久婷婷二区次 | 亚洲不卡123 | 国产乱对白刺激视频在线观看女王 | 久久久久久久久久久久久久av | 西西44人体做爰大胆视频 | 国产人免费人成免费视频 | 色视频在线免费 | 日日夜夜免费精品视频 | 久久久久久久久久伊人 | 中文字幕久久久精品 | 欧美成人亚洲 | 国产一区在线不卡 | 91麻豆网站 | 亚洲黄色一级大片 | 奇米先锋| 国产不卡精品 | 亚州精品成人 | 狠狠地操 | 国产精品国产三级国产aⅴ无密码 | 天天干夜夜擦 | 亚洲最新av在线网站 | 久久国产a | 欧美激情视频久久 | 国内三级在线观看 | 天天插天天色 | 超薄丝袜一二三区 | 麻豆系列在线观看 | 视频国产精品 | 蜜臀aⅴ国产精品久久久国产 | 国产二区免费视频 | 国产一区不卡在线 | 国产 日韩 在线 亚洲 字幕 中文 | 亚洲精品视频播放 | 黄色免费网站 | 久久蜜臀一区二区三区av | 欧美日韩3p | 国产亚洲欧美精品久久久久久 | 一级黄色免费网站 | 狠狠色丁香婷婷综合久久片 | 欧美精品在线观看免费 | 亚洲男男gaygay无套同网址 | 五月天激情综合 | 久久久久久久久久久久久9999 | 永久免费毛片在线观看 | 欧美日韩一区二区在线观看 | 99久在线精品99re8热视频 | 婷婷午夜激情 | 亚洲精品毛片一级91精品 | 日日麻批40分钟视频免费观看 | 精品1区二区| 日韩久久久久久久 | 久草视频一区 | 亚洲japanese制服美女 | 国产精品永久在线观看 | 亚洲不卡123 | 四虎海外影库www4hu | 国产视频资源 | 国产成人三级在线播放 | 91丨porny丨九色 | 91九色性视频 | 久久久www成人免费毛片 | 中文字幕精品久久 | 成人在线超碰 | 免费成人av在线 | 欧美色久 | 波多野结衣视频网址 | 爱射综合 | 在线看日韩 | 欧美日韩精品在线一区二区 | 亚洲国产中文在线 | 欧美日韩一区二区三区免费视频 | 91亚洲精品国偷拍 | 又色又爽又黄高潮的免费视频 | 久久有精品| 欧美精品日韩 | 色噜噜日韩精品欧美一区二区 | 久久久久97国产 | 2021国产精品 | 91精品一区在线观看 | 亚洲综合在线一区二区三区 | 国产破处在线播放 | 日韩免费视频观看 | 高清av中文字幕 | 中文字幕在线看视频国产 | 91av视频网 | 天天操狠狠操夜夜操 | 波多在线视频 | 日韩视频免费播放 | 2021国产精品视频 | 91探花在线 | 久久手机免费视频 | 在线观看深夜福利 | 五月天久久综合网 | 日韩特级黄色片 | 日本免费一二三区 | 国产精品一区二区电影 | 99精品久久精品一区二区 | 在线国产不卡 | 福利视频午夜 | 天天色天天射综合网 | 亚洲精品在线观看网站 | 欧美精品做受xxx性少妇 | 久久9视频| ww视频在线观看 | av大全在线| 欧美俄罗斯性视频 | 日韩欧美一区二区三区视频 | 亚洲国产精久久久久久久 | 日本免费一二三区 | 亚洲mv大片欧洲mv大片免费 | 91色九色 | 精品国产伦一区二区三区免费 | 久一在线 | 美国人与动物xxxx | 亚洲欧美色婷婷 | 国产精品久久久久久欧美 | 国产精品嫩草69影院 | 六月天综合网 | 97碰在线 | av黄色成人 | 欧美视频在线二区 | 亚洲精品视频在线观看网站 | 丁香在线| 7777精品伊人久久久大香线蕉 | 亚洲精品网址在线观看 | 亚洲成人av片 | 久久久免费精品国产一区二区 | 伊人宗合网 | 亚洲精品午夜久久久久久久 | 中文字幕一区二区三区乱码在线 | 国产精品国产三级国产aⅴ9色 | 亚洲成人精品国产 | 97自拍超碰 | 国色天香在线观看 | 中文字幕中文字幕在线中文字幕三区 | 国产精品久久久久久麻豆一区 | 中文字幕人成不卡一区 | 久久久18| 最新中文字幕在线观看视频 | 综合国产视频 | 欧美日韩午夜在线 | 欧美电影黄色 | 欧美精品一区在线 | 国产精品久久久久9999 | 亚洲欧美视屏 | 久久久国产一区 | 色婷婷九月| 欧美一区日韩一区 | 久久涩涩网站 | 免费日韩在线 | 日韩欧美大片免费观看 | 精品国产一区二区在线 | www.久久久| 久久久麻豆精品一区二区 | 欧美a级成人淫片免费看 | 国产精品九九九九九九 | 在线不卡a | 精品国产一区二区三区久久影院 | 久久免费视频在线 | 久久久999精品视频 国产美女免费观看 | 在线视频精品 | 亚洲精品免费在线视频 | 精品爱爱| 日韩欧美在线不卡 | 麻豆超碰| 在线日韩中文 | 99久久999久久久精玫瑰 | 欧美日韩在线第一页 | 国产色综合 | 久久五月婷婷丁香社区 | 国产一区欧美日韩 | 美女精品国产 | 国产精品久久艹 | 日韩欧美一区视频 | 在线a人片免费观看视频 | av三级在线免费观看 | 久久国产精品一区二区三区 | 亚洲国产精品500在线观看 | 在线免费黄色av | 精品久久久亚洲 | 欧美激情精品久久久久久变态 | 国产尤物一区二区三区 | 国内视频在线观看 | 美女在线免费观看视频 | 五月视频| 国产91丝袜在线播放动漫 | .精品久久久麻豆国产精品 亚洲va欧美 | 丁香婷婷在线 | 亚洲午夜精品一区 | 很污的网站 | 欧美日韩在线观看视频 | 欧美亚洲专区 | 国产精品mm | 天天操天天插 | 女人18片毛片90分钟 | 国产精品久久久久久久久久久久久 | 8x8x在线观看视频 | 狠狠色噜噜狠狠狠合久 | 久久伊99综合婷婷久久伊 | 国产96在线观看 | 久艹在线免费观看 | 西西444www大胆高清视频 | 色综合久久精品 | 色.www| 欧美一级淫片videoshd | 久久久影片 | 天天操综 | 免费看日韩片 | 国产精品久久久久久久久久不蜜月 | 精品国产一区二区在线 | 奇米影视在线99精品 | 国产成人在线综合 | 日韩午夜在线观看 | 国产一级片播放 | 亚洲成人av在线电影 | 国产精品刺激对白麻豆99 | 91香蕉视频污在线 | 久久久久久久久久伊人 | 天天射天天干天天插 | 日韩网站在线看片你懂的 | 日本精品一区二区三区在线播放视频 | 99久久精品免费 | 国产免费观看视频 | 九九亚洲精品 | 成人免费视频免费观看 | 二区三区在线观看 | 狠狠操狠狠干2017 | 五月天com | 特级毛片网 | 成人久久18免费网站麻豆 | 91亚洲精品久久久中文字幕 | 一区二区视频免费在线观看 | 欧美一级久久久久 | 91av电影网| 久久国产手机看片 | 成人丝袜 | 精品视频免费在线 | 2024av| 精品欧美一区二区精品久久 | 91在线观看欧美日韩 | 看黄色.com| 婷婷激情欧美 | 亚洲精品午夜国产va久久成人 | 在线天堂亚洲 | 亚洲国产免费网站 | 国产 在线 日韩 | 999久久久欧美日韩黑人 | 成人网中文字幕 | 亚州精品在线视频 | 中文字幕中文字幕在线中文字幕三区 | 毛片网站免费在线观看 | 久久综合综合久久综合 | 国产精品99免费看 | 午夜免费在线观看 | 国产精品久久久久一区二区国产 | 亚洲国产色一区 | 激情文学综合丁香 | 伊人久久国产 | 91亚洲精品久久久蜜桃借种 | www.久草视频 | 西西444www高清大胆 | 欧美va天堂va视频va在线 | 天天摸天天操天天舔 | 午夜视频在线观看网站 | 国产精品毛片久久久久久 | 日韩欧美网址 | 亚洲天堂精品视频 | 国产精品av在线免费观看 | 日韩videos高潮hd | 99精品国产福利在线观看免费 | 国产亚洲精品av | 亚洲h在线播放在线观看h | 九九久久影院 | 日韩视频一区二区在线观看 | 在线看av的网址 | 四虎免费在线观看视频 | 婷婷丁香花 | 精品久久久久国产免费第一页 | 亚洲视频电影在线 | 精品亚洲免费视频 | 国产91粉嫩白浆在线观看 | 午夜国产福利在线 | 天天爱天天色 | 久久伊人国产精品 | 精品9999 | www.午夜| 欧美资源 | 久久视频精品在线观看 | 亚洲黄色激情小说 | 97精产国品一二三产区在线 | 国产精品成人自拍 | 亚洲精品午夜一区人人爽 | 国产在线国产 | 国产原创中文在线 | 日韩av电影免费在线观看 | 在线国产91| 999成人网 | 久草免费在线 | 久久久久久久久久影院 | 欧美日韩高清 | 天天干,天天射,天天操,天天摸 | 99免费在线观看视频 | 欧美日韩精品久久久 | 视频福利在线观看 | 天天操天天干天天操天天干 | 国产日产精品一区二区三区四区的观看方式 | 黄污在线观看 | 97超碰人人澡 | 久久任你操 | 午夜婷婷网 | a黄色 | 久久久免费精品视频 | 久久久久久久久久网 | www黄色 | 精品国产网址 | 91视频 - x99av| 高清一区二区 | 久久xx视频| 国产在线不卡视频 | 天天操天天添 | 超碰999| 天堂在线v| 欧美一区二区三区在线视频观看 | 国产精品18久久久久久久 | 久久精品超碰 | 精品国产乱子伦一区二区 | 亚洲综合小说电影qvod | 天天操欧美| 日本黄网站 | 中文字幕日韩伦理 | 国产 成人 久久 | 人人爱爱人人 | 欧美黑吊大战白妞欧美 | 免费视频久久久久久久 | 又黄又爽的视频在线观看网站 | 国产成人av在线 | 精品一区二区在线免费观看 | 国产亚洲一级高清 | 色噜噜在线观看视频 | 性色av免费看 | 日本久久电影网 | a√国产免费a | 99久久99精品 | 免费网站在线观看成人 | 91福利社区在线观看 | 欧美在线视频免费 | 亚洲国产精品成人综合 | 天天看天天干 | 月下香电影 | 午夜久久影视 | 综合激情网| 亚洲永久精品在线观看 | 欧美精品在线免费 | 探花国产在线 | 国产成人一区二区三区影院在线 | 99热国产在线中文 | 成人免费观看视频大全 | 13日本xxxxxⅹxxx20 | 不卡av在线 | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产综合视频在线观看 | 国产精品在线看 | 国产成人精品综合 | 午夜国产一区二区三区四区 | 久草视频在线免费播放 | 日韩一区在线免费观看 | 亚洲国产中文字幕在线 | 成人福利av | 日日干美女 | 黄色小说在线免费观看 | 摸阴视频| 久一网站 | 麻豆传媒视频在线 | 激情五月五月婷婷 | 国产在线一区观看 | 中文字幕丰满人伦在线 | 美女免费黄视频网站 | 婷婷草 | 狂野欧美激情性xxxx欧美 | 视频在线一区 | 久久www免费人成看片高清 | 热久久免费视频 | 亚洲视频网站在线观看 | 国产午夜小视频 | 99视频精品全部免费 在线 | 久久久久女人精品毛片 | 三级午夜片 | 日韩电影一区二区三区 | 天天爱天天干天天爽 | 国产精品久久久久久久妇 | 色婷婷av一区 | 久久99在线 | 午夜10000 | 欧美日韩在线观看一区 | 亚洲国产日韩av | 日韩理论片 | 99av在线视频 | 99色精品视频 | 99热在线观看免费 | 欧美日韩不卡在线观看 | 特黄免费av | 亚洲精品av在线 | 丁香在线视频 | 婷婷综合导航 | 免费视频成人 | 亚洲一级片在线看 | 日韩免费一区二区三区 | 在线免费观看黄色av | 日韩精品一区二区电影 | 日本乱视频| 国产91精品欧美 | 久草视频资源 | 人人澡av| 99视频精品 | 国产人成一区二区三区影院 | 亚洲欧美视频 | 午夜精品剧场 | 亚洲精品乱码久久久一二三 | 免费在线h | 亚洲日本色| 蜜桃视频在线观看一区 | 国产99在线播放 | 国产精品igao视频网入口 | 国产一区二区三精品久久久无广告 | 国产精品麻豆欧美日韩ww | 日韩激情视频在线观看 | 色就色,综合激情 | 国内精品视频一区二区三区八戒 | 欧美色就是色 | 国产成人一二片 | 丰满少妇一级片 | 精品亚洲午夜久久久久91 | 日韩激情一二三区 | 欧美性色19p | 久久99爱视频 | 日韩欧美区| av噜噜噜在线播放 | 中文字幕资源网在线观看 | 天天操夜夜曰 | 日韩电影中文字幕 | 天天射天天射 | 成人黄色在线观看视频 | 深夜福利视频在线观看 | www最近高清中文国语在线观看 | 一区二区三区在线不卡 | 国产成人久久av | 欧美一区二区日韩一区二区 | 成人免费视频网站在线观看 | 黄色免费在线视频 | 免费日韩一级片 | 五月天国产精品 | 国产精品丝袜久久久久久久不卡 | 人人爽影院| 久久视频99 | 99精品视频在线观看 | 日韩激情小视频 | 另类老妇性bbwbbw高清 | 精品一区二区久久久久久久网站 | 中文有码在线视频 | 综合网天天色 | 国产黄色一级大片 | 亚洲一级二级 | 久久国产品 | 色婷婷婷 | 国产97碰免费视频 | 在线看v片成人 | 免费毛片aaaaaa | 亚洲精品福利在线观看 | 国产精品黄色av | 综合激情伊人 | 欧美精品做受xxx性少妇 | 天天射天天操天天色 | av黄色在线| 久久久精品国产一区二区电影四季 | 在线精品观看国产 | 亚洲粉嫩av | 欧美激情va永久在线播放 | av黄色国产 | 91视频免费国产 | 最近中文字幕视频网 | 日韩欧美国产激情在线播放 | 亚洲成人黄 | 久久尤物电影视频在线观看 | 欧美一级片免费 | 亚洲国产成人高清精品 | av在线免费播放 | 欧美午夜精品久久久久 | 少妇av片| 最新av中文字幕 | 日韩精品aaa| 日韩午夜精品福利 | 成人免费在线观看av | 国产成人精品一区二区三区免费 | 国产精品手机在线播放 | 三级免费黄 | a级片韩国 | 日韩丝袜在线观看 | 成人免费视频网址 | 中文字幕亚洲精品在线观看 | 日本在线观看一区二区三区 | 国产精品网站 | 欧美一级艳片视频免费观看 | 精品不卡av | 国产精品理论在线观看 | 99久久日韩精品视频免费在线观看 | 天天爱天天操 | 国产精品国产亚洲精品看不卡 | 欧美成人91 | 免费看三片 | 91.麻豆视频 | 欧美在线观看视频免费 | 97色噜噜| 激情小说 五月 | 国产高清免费在线观看 | 91久久精品一区二区三区 | 亚洲精品在线观看视频 | 91欧美国产 | 日本精品一区二区三区在线播放视频 | 91c网站色版视频 | 欧美日在线观看 | 日韩va亚洲va欧美va久久 | 天天操夜操视频 | 91色九色| 五月婷婷激情综合网 | 特级西西www44高清大胆图片 | 久久新 | 夜添久久精品亚洲国产精品 | 这里只有精品视频在线观看 | av免费在线观 | 久久视频在线观看免费 | 超碰在线9 | 亚洲理论片 | 精品电影一区 | 91污在线观看 | 国产精品久久久久av免费 | 在线视频 91 | 欧美在线视频二区 | www.夜色321.com| 久久久久久国产精品免费 | 日韩欧美视频一区二区三区 | 韩日电影在线 | 久久综合久久综合久久 | 免费电影一区二区三区 | 天天玩天天干 | 精品毛片一区二区免费看 | 美女视频黄是免费的 | 有码中文在线 | av片子在线观看 | 午夜精品一区二区三区在线观看 | 欧美一级性视频 | 国产精品麻豆一区二区三区 | 欧美国产日韩一区二区三区 | 蜜臀精品久久久久久蜜臀 | 超碰国产97| 免费观看性生活大片3 | 2017狠狠干 | 日韩激情中文字幕 | bbb搡bbb爽爽爽 | 亚洲影视九九影院在线观看 | 久久久久国产精品一区二区 | bbw av| 婷婷久久综合九色综合 | 国产一线天在线观看 | 色九九在线| 欧美日韩一区二区三区在线免费观看 | 一级性视频 | 男女视频国产 | 欧美黑吊大战白妞欧美 | 亚洲午夜精品一区 | 欧美一级久久久 | 亚洲好视频 | 日韩性片| 日本黄色一级电影 | 国产婷婷精品av在线 | 韩国精品福利一区二区三区 | 最新日韩视频在线观看 | 久久中文精品视频 | 亚洲国产精品一区二区尤物区 | 亚洲精品 在线视频 | 伊人影院99 | 久章草在线观看 | 日韩在线电影观看 | 久久精品亚洲精品国产欧美 | 中文字幕精品www乱入免费视频 | 尤物一区二区三区 | 亚洲欧美日本一区二区三区 | 91最新在线| 日韩区欠美精品av视频 | 国产欧美中文字幕 | 日韩精品免费在线 | 天天操天天干天天操天天干 | 日韩在线视频网 | 91探花系列在线播放 | 黄色在线网站噜噜噜 | www.色的| 精品免费视频123区 午夜久久成人 | 婷婷综合激情 | 天天操天天干天天综合网 | 日韩黄色在线观看 | 日韩精品电影在线播放 | 一色屋精品视频在线观看 | 99视频精品免费观看, | 国产精品去看片 | 色狠狠综合天天综合综合 | 天天操综 | 国产精品日韩高清 | 麻豆视频免费入口 | 一二三精品视频 | 色一级片| 夜色成人av| 亚洲精品视频免费在线 | 成人片在线播放 | 最新高清无码专区 | 中文字幕五区 | 狠狠狠色| 在线观看日韩精品视频 | 在线观看成人av | 香蕉影院在线 | 久热精品国产 | 91丨porny丨九色 | 一区中文字幕在线观看 | 精品中文字幕视频 | 在线www色 | 欧美日韩精品在线一区二区 | www.在线观看视频 | 在线观看深夜视频 | 激情综合网五月婷婷 | 日韩黄色影院 | 国产在线观看99 | a在线一区 | 国产香蕉视频在线观看 | 国产精品久久久久久久午夜片 | 天天色天天骑天天射 | 日本中文字幕网址 | 久久男人影院 | 9幺看片 | 国产一区二区日本 | 麻豆精品视频 | 国产色婷婷精品综合在线手机播放 | 久产久精国产品 | 色a综合 | 久久久午夜精品理论片中文字幕 | 久久综合影音 | 一级片免费观看 | 91亚洲永久精品 | 91麻豆传媒 | 免费国产在线精品 |