2 #include <mof/sound/DirectSoundDevice.hpp>
4 #include <mof/ConsoleIO.hpp>
12 DirectSoundDevice::DirectSoundDevice(HWND hWnd)
13 : pSound_(NULL), primary_buffer_(NULL)
17 hr = DirectSoundCreate8( NULL, &pSound_, NULL );
19 *ConsoleOut::getInstance() << _T("Failed --- CreateDirectSound");
23 if( FAILED(hr = pSound_->SetCooperativeLevel( hWnd, DSSCL_PRIORITY ))) {
24 throw std::runtime_error("failed to set cooperative level");
28 ZeroMemory(&desc, sizeof(desc));
29 desc.dwSize = sizeof(desc);
30 desc.dwFlags = DSBCAPS_PRIMARYBUFFER;
31 desc.dwBufferBytes = 0;// バッファサイズは自動設定される
32 desc.lpwfxFormat = NULL;
33 if (FAILED(hr = pSound_->CreateSoundBuffer(&desc, &primary_buffer_, NULL))) {
34 throw std::runtime_error("failed to create a primary buffer");
39 caps.dwSize = sizeof(DSBCAPS);
40 primary_buffer_->GetCaps(&caps);
41 DEBUG_PRINT("primary size" << caps.dwBufferBytes);
43 primary_buffer_->Play(0, 0xffffffff, DSBPLAY_LOOPING);
47 DirectSoundDevice::~DirectSoundDevice()
49 primary_buffer_->Release();
54 LPDIRECTSOUND8 DirectSoundDevice::raw() const {return pSound_;}
57 LPDIRECTSOUNDBUFFER DirectSoundDevice::primary_buffer() const {return primary_buffer_;}