void XAudio2_Output::close() { initialized = false; if( sVoice ) { if( playing ) { HRESULT hr = sVoice->Stop( 0 ); ASSERT( hr == S_OK ); } sVoice->DestroyVoice(); sVoice = NULL; } if( buffers ) { free( buffers ); buffers = NULL; } if( mVoice ) { mVoice->DestroyVoice(); mVoice = NULL; } if( xaud ) { xaud->Release(); xaud = NULL; } }
bool GetXA2Devices(wxArrayString &names, wxArrayString &ids) { HRESULT hr; IXAudio2 *xa = NULL; UINT32 flags = 0; #ifdef _DEBUG flags = XAUDIO2_DEBUG_ENGINE; #endif hr = XAudio2Create( &xa, flags ); if( hr != S_OK ) { wxLogError( _("The XAudio2 interface failed to initialize!") ); return false; } GetXA2Devices(xa, &names, &ids, NULL); xa->Release(); return true; }
void release() { if (pXAPO) { pXAPO->Release(); pXAPO = nullptr; } if (masteringVoice) { masteringVoice->DestroyVoice(); masteringVoice = nullptr; } if (xAudio2) { xAudio2->Release(); xAudio2 = nullptr; } }
void close() { if( sVoice ) { if( !paused ) { sVoice->Stop( 0 ); } sVoice->DestroyVoice(); } if( mVoice ) { mVoice->DestroyVoice(); } if( xaud ) { xaud->Release(); xaud = NULL; } delete [] sample_buffer; sample_buffer = NULL; delete [] samples_in_buffer; samples_in_buffer = NULL; }
BOOL XAudio2_Config::OnInitDialog() { CDialog::OnInitDialog(); m_combo_dev.ResetContent(); m_slider_buffer.SetRange( 2, 10, FALSE ); m_slider_buffer.SetTicFreq( 1 ); m_slider_buffer.SetPos( (int)m_buffer_count ); CString info; int pos = m_slider_buffer.GetPos(); info.Format( _T("%i frames = %.2f ms"), pos, (float)pos / 60.0f * 1000.0f ); m_info_buffer.SetWindowText( info ); HRESULT hr; IXAudio2 *xa = NULL; UINT32 flags = 0; #ifdef _DEBUG flags = XAUDIO2_DEBUG_ENGINE; #endif hr = XAudio2Create( &xa, flags ); if( hr != S_OK ) { systemMessage( IDS_XAUDIO2_FAILURE, NULL ); } else { UINT32 dev_count = 0; hr = xa->GetDeviceCount( &dev_count ); if( hr != S_OK ) { systemMessage( IDS_XAUDIO2_CANNOT_ENUMERATE_DEVICES, NULL ); } else { XAUDIO2_DEVICE_DETAILS dd; for( UINT32 i = 0; i < dev_count; i++ ) { hr = xa->GetDeviceDetails( i, &dd ); if( hr != S_OK ) { continue; } else { #ifdef _UNICODE int id = m_combo_dev.AddString( dd.DisplayName ); #else CHAR temp[256]; ZeroMemory( temp, sizeof( temp ) ); WideCharToMultiByte( CP_ACP, WC_NO_BEST_FIT_CHARS, dd.DisplayName, -1, temp, sizeof( temp ) - 1, NULL, NULL ); int id = m_combo_dev.AddString( temp ); #endif if( id < 0 ) { systemMessage( IDS_XAUDIO2_CANNOT_ENUMERATE_DEVICES, NULL ); break; } else { m_combo_dev.SetItemData( id, i ); } } } // select the currently configured device { int count = m_combo_dev.GetCount(); if( count > 0 ) { for( int i = 0; i < count; i++ ) { if( m_combo_dev.GetItemData( i ) == m_selected_device_index ) { m_combo_dev.SetCurSel( i ); break; } } } // } } xa->Release(); xa = NULL; } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }