本文整理汇总了C++中IXAudio2SourceVoice::Stop方法的典型用法代码示例。如果您正苦于以下问题:C++ IXAudio2SourceVoice::Stop方法的具体用法?C++ IXAudio2SourceVoice::Stop怎么用?C++ IXAudio2SourceVoice::Stop使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IXAudio2SourceVoice
的用法示例。
在下文中一共展示了IXAudio2SourceVoice::Stop方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
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;
}
}
示例2: pause
virtual const char* pause( bool pausing )
{
if ( pausing )
{
if ( ! paused )
{
paused = true;
HRESULT hr = sVoice->Stop( 0 );
if ( FAILED(hr) )
{
close();
reopen_count = 60 * 5;
}
}
}
else
{
if ( paused )
{
paused = false;
HRESULT hr = sVoice->Start( 0 );
if ( FAILED(hr) )
{
close();
reopen_count = 60 * 5;
}
}
}
return 0;
}
示例3: CloseHandle
static void
XAUDIO2_CloseDevice(_THIS)
{
if (_this->hidden != NULL) {
IXAudio2 *ixa2 = _this->hidden->ixa2;
IXAudio2SourceVoice *source = _this->hidden->source;
IXAudio2MasteringVoice *mastering = _this->hidden->mastering;
if (source != NULL) {
source->Stop();
source->FlushSourceBuffers();
source->DestroyVoice();
}
if (ixa2 != NULL) {
ixa2->StopEngine();
}
if (mastering != NULL) {
mastering->DestroyVoice();
}
if (ixa2 != NULL) {
ixa2->Release();
}
SDL_free(_this->hidden->mixbuf);
if (_this->hidden->semaphore != NULL) {
CloseHandle(_this->hidden->semaphore);
}
SDL_free(_this->hidden);
_this->hidden = NULL;
}
}
示例4: stopMusic
void GameAudio::stopMusic(MusicTypes musicType)
{
if (musicRegistrationMap[musicType] == true)
{
IXAudio2SourceVoice *sourceVoice = musicMap[musicType];
sourceVoice->Stop();
sourceVoice->FlushSourceBuffers();
}
}
示例5: close
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;
}
示例6:
void StreamingVoiceContext2_7::Stop()
{
if (m_source_voice)
m_source_voice->Stop();
}
示例7: StreamProc
//.........这里部分代码省略.........
CoUninitialize();
return -3;
}
//create the voice
IXAudio2SourceVoice* source = NULL;
if(FAILED(XAudio2->CreateSourceVoice(&source, &inFile.waveFormat.Format, 0, 2.0f, &callback)))
{
SetEvent(sc->VoiceLoadEvent);
CoUninitialize();
return -5;
}
//fill and queue the maximum number of buffers (except the one needed for reading new wave data)
bool somethingsWrong = false;
XAUDIO2_VOICE_STATE voiceState = {0};
source->GetState(&voiceState);
while(voiceState.BuffersQueued < STREAMINGWAVE_BUFFER_COUNT - 1 && !somethingsWrong)
{
//read and fill the next buffer to present
switch(inFile.prepare())
{
case StreamingWave::PR_EOF:
//if end of file, loop the file read
inFile.resetFile(); //intentionally fall-through to loop sound
case StreamingWave::PR_SUCCESS:
//present the next available buffer
inFile.swap();
//submit another buffer
source->SubmitSourceBuffer(inFile.buffer());
source->GetState(&voiceState);
break;
case StreamingWave::PR_FAILURE:
somethingsWrong = true;
break;
}
}
//return the created voice through the context pointer
sc->pVoice = &source;
//signal that the voice has prepared for streaming, and ready to start
SetEvent(sc->VoiceLoadEvent);
//group the events for the Wait function
HANDLE Events[2] = {callback.BufferEndEvent, QuitEvent};
bool quitting = false;
while(!quitting)
{
//wait until either the source voice is ready for another buffer, or the abort signal is set
DWORD eventFired = WaitForMultipleObjects(2, Events, FALSE, INFINITE);
switch(eventFired)
{
case 0: //buffer ended event for source voice
//reset the event manually
ResetEvent(Events[0]);
//make sure there's a full number of buffers
source->GetState(&voiceState);
while(voiceState.BuffersQueued < STREAMINGWAVE_BUFFER_COUNT - 1 && !somethingsWrong)
{
//read and fill the next buffer to present
switch(inFile.prepare())
{
case StreamingWave::PR_EOF:
//if end of file, loop the file read
inFile.resetFile(); //intentionally fall-through to loop sound
case StreamingWave::PR_SUCCESS:
//present the next available buffer
inFile.swap();
//submit another buffer
source->SubmitSourceBuffer(inFile.buffer());
source->GetState(&voiceState);
break;
case StreamingWave::PR_FAILURE:
somethingsWrong = true;
break;
}
}
break;
default: //something's wrong...
quitting = true;
}
}
//stop and destroy the voice
source->Stop();
source->FlushSourceBuffers();
source->DestroyVoice();
//close the streaming wave file;
//this is done automatically in the class destructor,
//so this is redundant
inFile.close();
//cleanup
CoUninitialize();
return 0;
}