您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ waveOutUnprepareHeader函数代码示例

51自学网 2021-06-03 09:53:02
  C++
这篇教程C++ waveOutUnprepareHeader函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中waveOutUnprepareHeader函数的典型用法代码示例。如果您正苦于以下问题:C++ waveOutUnprepareHeader函数的具体用法?C++ waveOutUnprepareHeader怎么用?C++ waveOutUnprepareHeader使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了waveOutUnprepareHeader函数的28个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: WINMM_CloseDevice

static voidWINMM_CloseDevice(_THIS){    /* Close up audio */    if (this->hidden != NULL) {        int i;        if (this->hidden->audio_sem) {            CloseHandle(this->hidden->audio_sem);            this->hidden->audio_sem = 0;        }        /* Clean up mixing buffers */        for (i = 0; i < NUM_BUFFERS; ++i) {            if (this->hidden->wavebuf[i].dwUser != 0xFFFF) {                waveOutUnprepareHeader(this->hidden->hout,                                       &this->hidden->wavebuf[i],                                       sizeof(this->hidden->wavebuf[i]));                this->hidden->wavebuf[i].dwUser = 0xFFFF;            }        }        /* Free raw mixing buffer */        SDL_free(this->hidden->mixbuf);        this->hidden->mixbuf = NULL;        if (this->hidden->hin) {            waveInClose(this->hidden->hin);            this->hidden->hin = 0;        }        if (this->hidden->hout) {            waveOutClose(this->hidden->hout);            this->hidden->hout = 0;        }        SDL_free(this->hidden);        this->hidden = NULL;    }}
开发者ID:AMDmi3,项目名称:symwars3,代码行数:40,


示例2: WAVE_Shutdown

/*==============WAVE_ShutdownReset the sound device for exiting===============*/static void WAVE_Shutdown(void){    int     i;    Com_Printf("Shutting down wave sound/n");    if (hWaveOut) {        Com_DPrintf("...resetting waveOut/n");        waveOutReset(hWaveOut);        if (lpWaveHdr) {            Com_DPrintf("...unpreparing headers/n");            for (i = 0; i < WAV_BUFFERS; i++)                waveOutUnprepareHeader(hWaveOut, lpWaveHdr + i, sizeof(WAVEHDR));        }        Com_DPrintf("...closing waveOut/n");        waveOutClose(hWaveOut);        if (hWaveHdr) {            Com_DPrintf("...freeing WAV header/n");            GlobalUnlock(hWaveHdr);            GlobalFree(hWaveHdr);        }        if (hData) {            Com_DPrintf("...freeing WAV buffer/n");            GlobalUnlock(hData);            GlobalFree(hData);        }    }    hWaveOut = 0;    hData = 0;    hWaveHdr = 0;    lpData = NULL;    lpWaveHdr = NULL;    wav_init = false;}
开发者ID:AndreyNazarov,项目名称:q2pro,代码行数:47,


示例3: winsnd_write_postprocess

static void winsnd_write_postprocess(MSFilter *f){	WinSnd *d=(WinSnd*)f->data;	MMRESULT mr;	int i;	if (d->outdev==NULL) return;	mr=waveOutReset(d->outdev);	if (mr != MMSYSERR_NOERROR){		ms_error("waveOutReset() error");		return ;	}	for(i=0;i<WINSND_OUT_NBUFS;++i){		WAVEHDR *hdr=&d->hdrs_write[i];		mblk_t *old;		if (hdr->dwFlags & WHDR_DONE){			mr=waveOutUnprepareHeader(d->outdev,hdr,sizeof(*hdr));			if (mr != MMSYSERR_NOERROR){				ms_error("waveOutUnprepareHeader error");			}			old=(mblk_t*)hdr->dwUser;			if (old) freemsg(old);			hdr->dwUser=0;		}	}	mr=waveOutClose(d->outdev);	if (mr != MMSYSERR_NOERROR){		ms_error("waveOutClose() error");		return ;	}	ms_message("Shutting down sound device (playing: %i) (d->write_rq.q_mcount=%i) (input-output: %i) (notplayed: %i)", d->nbufs_playing, d->write_rq.q_mcount, d->stat_input - d->stat_output, d->stat_notplayed);	flushq(&d->write_rq,0);	d->ready=0;	d->workaround=0;#ifndef DISABLE_SPEEX	if (d->pst!=NULL)	    speex_preprocess_state_destroy(d->pst);	d->pst=NULL;	d->pst_frame_size=0;#endif}
开发者ID:nightfly19,项目名称:renyang-learn,代码行数:40,


示例4: waveOutUnprepareHeader

void Platform_Win32_Sound_SoundStream_WMM::Play()	{	if (playing_)		{		return;		}	for (int i=0; i<WaveBlockCount; i++)		{        if(waveBlocks_[i].dwFlags & WHDR_PREPARED)			{			waveOutUnprepareHeader(hWaveOut_, &waveBlocks_[i], sizeof(WAVEHDR));			}		int bytesToWrite=WaveBlockSize-(int)(waveBlocks_[i].dwUser);		int remainder=0;		if (soundPosition_+bytesToWrite>size_)			{			int roomLeft=size_-soundPosition_;			remainder=bytesToWrite-roomLeft;			bytesToWrite=roomLeft;			}        memcpy(waveBlocks_[i].lpData+waveBlocks_[i].dwUser, static_cast<char*>(soundBuffer_)+soundPosition_,bytesToWrite);		soundPosition_+=bytesToWrite;		soundPosition_%=size_;		if (remainder>0)			{	        memcpy(waveBlocks_[i].lpData+waveBlocks_[i].dwUser+bytesToWrite, static_cast<char*>(soundBuffer_)+soundPosition_,remainder);			soundPosition_+=remainder;			soundPosition_%=size_;			}        waveBlocks_[i].dwBufferLength = WaveBlockSize;        waveOutPrepareHeader(hWaveOut_, &waveBlocks_[i], sizeof(WAVEHDR));        waveOutWrite(hWaveOut_, &waveBlocks_[i], sizeof(WAVEHDR));		EnterCriticalSection(&waveCriticalSection_);        firstUsedWaveBlock_=0;        LeaveCriticalSection(&waveCriticalSection_);        lastUsedWaveBlock_=WaveBlockCount-1;		}	playing_=true;	}
开发者ID:RichardMarks,项目名称:Pixie,代码行数:40,


示例5: MPT_TRACE

bool CWaveDevice::InternalClose()//-------------------------------{	MPT_TRACE();	if(m_hWaveOut)	{		waveOutReset(m_hWaveOut);		m_JustStarted = false;		InterlockedExchange(&m_nBuffersPending, 0);		m_nWriteBuffer = 0;		m_nDoneBuffer = 0;		while(m_nPreparedHeaders > 0)		{			m_nPreparedHeaders--;			waveOutUnprepareHeader(m_hWaveOut, &m_WaveBuffers[m_nPreparedHeaders], sizeof(WAVEHDR));		}		waveOutClose(m_hWaveOut);		m_hWaveOut = NULL;	}	#ifdef _DEBUG		if(m_DriverBugs.load())		{				SendDeviceMessage(LogError, MPT_USTRING("Errors were detected while playing sound:/n") + GetStatistics().text);		}	#endif	m_DriverBugs = 0;	m_Failed = false;	if(m_ThreadWakeupEvent)	{		CloseHandle(m_ThreadWakeupEvent);		m_ThreadWakeupEvent = NULL;	}	{		MPT_LOCK_GUARD<mpt::mutex> guard(m_PositionWraparoundMutex);		MemsetZero(m_PositionLast);		m_PositionWrappedCount = 0;	}	return true;}
开发者ID:Sappharad,项目名称:modizer,代码行数:39,


示例6: audio_flush

/*  * if any buffer is non-empty, send it out * return success when all buffers have been returned empty */int audio_flush(snd_type snd){    buffer_state *cur = (buffer_state *) snd->u.audio.descriptor;    int *index = &(cur->pollee);    LPWAVEHDR whdrs = cur->whdr;    int i = 0;    int test = 0;    int processed = 0;     int numbuf = cur->numofbuffers;    MMRESULT er;        if (snd->write_flag != SND_WRITE) return SND_SUCCESS;    if (cur->posinbuffer > 0) { /* flush final partial buffer of data */        cur->whdr[*index].dwBufferLength = cur->posinbuffer;        if (er = waveOutPrepareHeader(cur->u.h_out, &(cur->whdr[*index]), sizeof(WAVEHDR))) {            mm_error_handler(snd, er, snd_fail);            return !SND_SUCCESS;        }        if (er = waveOutWrite(cur->u.h_out, &(cur->whdr[*index]), sizeof(WAVEHDR))) {            waveOutUnprepareHeader(cur->u.h_out, &(cur->whdr[*index]), sizeof(WAVEHDR));            mm_error_handler(snd, er, snd_fail);            return !SND_SUCCESS;        }        cur->posinbuffer = 0;        if (++(*index) >= cur->numofbuffers){            *index = 0;        }    }    for (i = 0; i < numbuf; i++){         if (whdrs[i].dwFlags & WHDR_DONE) {            test++;        }    }    if (test < numbuf) return !SND_SUCCESS;    else return SND_SUCCESS;}
开发者ID:lackofentropy,项目名称:nyquist,代码行数:43,


示例7: Close

    void Close()    {        // Stop Thread        fprintf(stderr, "* SPU2-X: Waiting for waveOut thread to finish...");        waveout_running = false;        WaitForSingleObject(thread, INFINITE);        CloseHandle(thread);        fprintf(stderr, " Done./n");        //        // Clean up        //        waveOutReset(hwodevice);        for (u32 i = 0; i < numBuffers; i++) {            waveOutUnprepareHeader(hwodevice, &whbuffer[i], sizeof(WAVEHDR));        }        waveOutClose(hwodevice);        safe_delete_array(qbuffer);    }
开发者ID:KitoHo,项目名称:pcsx2,代码行数:22,


示例8: thread_func

DWORD WINAPI thread_func(LPVOID lpParameter){	while (true)	{		// Try to unprepare header		if (waveOutUnprepareHeader(hWaveOut, &(header[nextPlayBlock]), sizeof(WAVEHDR))			!= WAVERR_STILLPLAYING)		{#ifdef USEDSOUND			mzkPlayBlock(myMuzikBlock[nextPlayBlock]);#endif			waveOutPrepareHeader(hWaveOut, &(header[nextPlayBlock]), sizeof(WAVEHDR));			waveOutWrite(hWaveOut, &(header[nextPlayBlock]), sizeof(WAVEHDR));			nextPlayBlock++;			if (nextPlayBlock >= NUM_PLAY_BLOCKS) nextPlayBlock = 0;		}		else		{			Sleep(1);		}	}}
开发者ID:chock-mostlyharmless,项目名称:mostlyharmless,代码行数:22,


示例9: SoundGen_Finalize

void SoundGen_Finalize(){    if (!m_SoundGenInitialized)        return;    while (waveFreeBlockCount < BLOCK_COUNT)        Sleep(10);    for (int i = 0; i < waveFreeBlockCount; i++)    {        if (waveBlocks[i].dwFlags & WHDR_PREPARED)            waveOutUnprepareHeader(hWaveOut, &waveBlocks[i], sizeof(WAVEHDR));    }    DeleteCriticalSection(&waveCriticalSection);    waveOutClose(hWaveOut);    HeapFree(GetProcessHeap(), 0, waveBlocks);    waveBlocks = nullptr;    m_SoundGenInitialized = false;}
开发者ID:nzeemin,项目名称:nemigabtl,代码行数:22,


示例10: SoundGen_FeedDAC

void CALLBACK SoundGen_FeedDAC(unsigned short L, unsigned short R){    unsigned int word;    WAVEHDR* current;    if (!m_SoundGenInitialized)        return;    word = ((unsigned int)R << 16) + L;    memcpy(&buffer[bufcurpos], &word, 4);    bufcurpos += 4;    if (bufcurpos >= BUFSIZE)    {        current = &waveBlocks[waveCurrentBlock];        if (current->dwFlags & WHDR_PREPARED)            waveOutUnprepareHeader(hWaveOut, current, sizeof(WAVEHDR));        memcpy(current->lpData, buffer, BUFSIZE);        current->dwBufferLength = BLOCK_SIZE;        waveOutPrepareHeader(hWaveOut, current, sizeof(WAVEHDR));        waveOutWrite(hWaveOut, current, sizeof(WAVEHDR));        EnterCriticalSection(&waveCriticalSection);        waveFreeBlockCount--;        LeaveCriticalSection(&waveCriticalSection);        while (!waveFreeBlockCount)            Sleep(1);        waveCurrentBlock++;        if (waveCurrentBlock >= BLOCK_COUNT)            waveCurrentBlock = 0;        bufcurpos = 0;    }}
开发者ID:nzeemin,项目名称:nemigabtl,代码行数:39,


示例11: while

DWORD CAudio::AudioThreadProc(){    for (;;)    {        while (m_bContinue&&DataEmpty())        {            DebugPrint("空/n");            WaitForSingleObject(m_hNotEmptyEvent, 100);        }        if (m_bForce || !m_bContinue && DataEmpty())break;        DebugPrint("m_cWaveHdr:index:%u,flags:%u/n", m_dwWaveHdrIndex, m_cWaveHdr[m_dwWaveHdrIndex].dwFlags);        if (m_cWaveHdr[m_dwWaveHdrIndex].dwFlags & WHDR_PREPARED)        {            waveOutUnprepareHeader(m_hWaveOut, m_cWaveHdr + m_dwWaveHdrIndex, sizeof(WAVEHDR));            if (MAX_WAVE_DATA_COUNT == ++m_dwEnd)m_dwEnd = 0;            DebugPrint("减小:%u:%u:%u/n", m_dwStart, m_dwCur, m_dwEnd);            SetEvent(m_hNotFullEvent);        }        m_cWaveHdr[m_dwWaveHdrIndex].lpData = m_cData[m_dwCur].data;        m_cWaveHdr[m_dwWaveHdrIndex].dwBufferLength = (DWORD)m_cData[m_dwCur].len;        if (!m_bAudioStart)        {            m_bAudioStart = true;            SetEvent(m_hStartEvent);            while (!m_bVideoStart)                WaitForSingleObject(m_hStartEvent, 100);        }        waveOutPrepareHeader(m_hWaveOut, m_cWaveHdr + m_dwWaveHdrIndex, sizeof(WAVEHDR));        waveOutWrite(m_hWaveOut, m_cWaveHdr + m_dwWaveHdrIndex, sizeof(WAVEHDR));        if (MAX_WAVE_DATA_COUNT == ++m_dwCur)m_dwCur = 0;        DebugPrint("中间:%u:%u:%u/n", m_dwStart, m_dwCur, m_dwEnd);        if (MAX_WAVE_COUNT == ++m_dwWaveHdrIndex)m_dwWaveHdrIndex = 0;        InterlockedIncrement(&m_dwCount);        while (m_dwCount >= MAX_WAVE_COUNT)WaitForSingleObject(m_hDataEvent, INFINITE);        if (MAX_WAVE_COUNT - 1 != m_dwCount)DebugPrint("%u/n", m_dwCount);    }    while (m_dwCount)WaitForSingleObject(m_hDataEvent, INFINITE);    return 0;}
开发者ID:mewiteor,项目名称:ConsolePlayer,代码行数:39,


示例12: WinMMStopPlayback

static void WinMMStopPlayback(ALCdevice *device){    WinMMData *data = (WinMMData*)device->ExtraData;    void *buffer = NULL;    int i;    if(data->killNow)        return;    // Set flag to stop processing headers    data->killNow = AL_TRUE;    althrd_join(data->thread, &i);    // Release the wave buffers    for(i = 0; i < 4; i++)    {        waveOutUnprepareHeader(data->WaveHandle.Out, &data->WaveBuffer[i], sizeof(WAVEHDR));        if(i == 0) buffer = data->WaveBuffer[i].lpData;        data->WaveBuffer[i].lpData = NULL;    }    free(buffer);}
开发者ID:uberpixel,项目名称:openal-soft,代码行数:22,


示例13: SetEvent

void NativeSoundMix::CloseNativeDevice(){	if ( !isOpen ) return;	SetEvent(playEvent);	// signal the thread to quit	EnterCritical(); // do this after we kill the timer proc to prevent a deadlock	if ( !isOpen ) {		LeaveCritical();		return;	// It is possible for timeKillEvent to call CloseDevice	}	isOpen = false;		HWAVEOUT hW = hWaveOut;	hWaveOut = 0;	// flag that we are shutting down so PollSound will bail	int res = waveOutReset(hW);	FLASHASSERT(res == MMSYSERR_NOERROR);	for ( int i = 0; i < nBuffers; i++ ) {		int limit = 50;		while ( limit-- ) {			int res = waveOutUnprepareHeader(hW, waveHDR+i, sizeof(WAVEHDR));			if ( res != WAVERR_STILLPLAYING ) {				FLASHASSERT(res == MMSYSERR_NOERROR);				break;			}			Sleep(1);		}	}	res = waveOutClose(hW);	FLASHASSERT(res == MMSYSERR_NOERROR);	CloseHandle(playThread);	playThread = 0;	LeaveCritical();}
开发者ID:RaymondLiao,项目名称:elektronika,代码行数:39,


示例14: waveProc

static DWORD WINAPI waveProc(LPVOID arg) {	MSG			msg;	WAVEHDR		*pwh;	(void)		arg;	while (GetMessage(&msg, 0, 0, 0)) {		switch (msg.message) {			case MM_WOM_DONE:				pwh = (WAVEHDR *)msg.lParam;				// Windows - Let go!				waveOutUnprepareHeader(ah, pwh, sizeof(WAVEHDR));				// Give the buffer back to the Audio Free List				gfxSystemLock();				gaudioPlayReleaseDataBlockI((GDataBuffer *)pwh->dwUser);				gfxSystemUnlock();				pwh->lpData = 0;				nQueuedBuffers--;				// Are we stopping?				if (!isRunning) {					// Have we finished yet?					if (!nQueuedBuffers) {						gfxSystemLock();						gaudioPlayDoneI();						gfxSystemUnlock();					}	                break;				}				// Try and get a new block				senddata(pwh);				break;		}	}	return 0;}
开发者ID:bhdminh,项目名称:uGFX,代码行数:38,


示例15: destroyPlayback

void destroyPlayback(){    if(_device){        while(true){            bool done = true;            for(int i=0; i<BufferCount; i++){                if(_buffers[i].isUsed){                    done = false;                }else{                    if(_buffers[i].header.dwFlags & WHDR_PREPARED){                        waveOutUnprepareHeader(_device, &_buffers[i].header, sizeof(WAVEHDR));                    }                }            }            if(done){                break;            }else{                Sleep(10);            }        }        waveOutClose(_device);    }}
开发者ID:Kopakc,项目名称:NoiseCraft,代码行数:23,


示例16: m_dwRelease

DWORD CWaveBuffer::m_dwRelease(){	DWORD dwErr = MMSYSERR_NOERROR;	if(m_hWaveOut != NULL)	{		if((dwErr = waveOutUnprepareHeader(m_hWaveOut, &m_header, sizeof(m_header))) == WAVERR_STILLPLAYING)			return dwErr;		m_hWaveOut = NULL;	}		if(m_hWaveIn != NULL)	{		if((dwErr = waveInUnprepareHeader(m_hWaveIn, &m_header, sizeof(m_header))) == WAVERR_STILLPLAYING)			return dwErr;		m_hWaveIn = NULL;	}	m_header.dwFlags |= WHDR_DONE;	return MMSYSERR_NOERROR;}
开发者ID:wonktnodi,项目名称:webrtc_port,代码行数:23,


示例17: waveOutUnprepareHeader

MMRESULT CDeviceWaveIO::StopBuffers(){	HWAVEOUT hwo = mhandle_out;	HWAVEIN hwi = mhandle_in;	MMRESULT mmres = MMSYSERR_NOERROR;	// Close device - release buffers	for (tint32 iStructIx = 0; iStructIx < miRunningStructs; iStructIx++) {		if (mbOutput) {			MMRESULT mmres1 = waveOutUnprepareHeader(hwo, &mawavehdrOutput[iStructIx], sizeof(WAVEHDR));			if (mmres == MMSYSERR_NOERROR)				mmres = mmres1;		}		if (mbInput) {			MMRESULT mmres2 = waveInUnprepareHeader(hwi, &mawavehdrInput[iStructIx], sizeof(WAVEHDR));			if (mmres == MMSYSERR_NOERROR)				mmres = mmres2;		}	}	return mmres;} // StopBuffers
开发者ID:eriser,项目名称:koblo_software-1,代码行数:23,


示例18: while

DWORD CAudioMgr_recv::AudioOutThreadProc(LPVOID lpParameter){	CAudioMgr_recv* pMgr = (CAudioMgr_recv*)lpParameter;	MSG msg;	while(GetMessage(&msg,0,0,0))	{		switch(msg.message)		{		case IOM_AUDIO:			pMgr->m_audioplay.Play((char*)msg.lParam,(int)msg.wParam);			break;		case WOM_DONE:			{				WAVEHDR* pwh=(WAVEHDR*)msg.lParam;				waveOutUnprepareHeader((HWAVEOUT)msg.wParam,pwh,sizeof(WAVEHDR));				delete []pwh->lpData;				delete pwh;			}			break;		}	}	return msg.wParam;}
开发者ID:MRDUAN1,项目名称:exosip_phone,代码行数:23,


示例19: waveOutReset

void CAudioWave::Shutdown( void ){	int		i;	/////////////////////////////////////////////////////////////////////////////////////////////	if (hWaveOut)	{		waveOutReset (hWaveOut);		if (lpWaveHdr)		{			for (i=0 ; i< WAV_BUFFERS ; i++)				waveOutUnprepareHeader (hWaveOut, lpWaveHdr+i, sizeof(WAVEHDR));		}		waveOutClose (hWaveOut);		if (hWaveHdr)		{			GlobalUnlock(hWaveHdr); 			GlobalFree(hWaveHdr);		}		if (hData)		{			GlobalUnlock(hData);			GlobalFree(hData);		}	}	hWaveOut = 0;	hData = 0;	hWaveHdr = 0;	lpData = NULL;	lpWaveHdr = NULL;}
开发者ID:RaisingTheDerp,项目名称:raisingthebar,代码行数:37,


示例20: wait

staticint wait(struct buffer *buffer){  MMRESULT error;  if (!buffer->playing)    return 0;  switch (WaitForSingleObject(buffer->event_handle, INFINITE)) {  case WAIT_OBJECT_0:    break;  case WAIT_ABANDONED:    audio_error = _("wait abandoned");    return -1;  case WAIT_TIMEOUT:    audio_error = _("wait timeout");    return -1;  case WAIT_FAILED:  default:    audio_error = _("wait failed");    return -1;  }  buffer->playing = 0;  error = waveOutUnprepareHeader(wave_handle, &buffer->wave_header,				 sizeof(buffer->wave_header));  if (error != MMSYSERR_NOERROR) {    audio_error = error_text(error);    return -1;  }  return 0;}
开发者ID:Rambonuaa,项目名称:BoundCheck4,代码行数:37,


示例21: waveInReset

CAudio::~CAudio(){	if (m_bIsWaveInUsed)	{	//	waveInStop(m_hWaveIn);		waveInReset(m_hWaveIn);		for (int i = 0; i < AUDIOCAPBUF_NUM; i++)			waveInUnprepareHeader(m_hWaveIn, m_lpInAudioHdr[i], sizeof(WAVEHDR));		waveInClose(m_hWaveIn);		TerminateThread(m_hThreadCallBack, -1);	}	if (m_bIsWaveOutUsed)	{		waveOutReset(m_hWaveOut);		for (int i = 0; i < AUDIOCAPBUF_NUM; i++)			waveOutUnprepareHeader(m_hWaveOut, m_lpInAudioHdr[i], sizeof(WAVEHDR));		waveOutClose(m_hWaveOut);	}			for (int i = 0; i < AUDIOCAPBUF_NUM; i++)	{		delete [] m_lpInAudioData[i];		delete m_lpInAudioHdr[i];				delete [] m_lpOutAudioData[i];		delete m_lpOutAudioHdr[i];	}	CloseHandle(m_hEventWaveIn);	CloseHandle(m_hStartRecord);	CloseHandle(m_hThreadCallBack);}
开发者ID:cugxiangzhenwei,项目名称:TSP_Zhenwei,代码行数:36,


示例22: winmm_drain_buffer

/** * Wait until the buffer is finished. */static boolwinmm_drain_buffer(struct winmm_output *wo, struct winmm_buffer *buffer,		   GError **error_r){	if ((buffer->hdr.dwFlags & WHDR_DONE) == WHDR_DONE)		/* already finished */		return true;	while (true) {		MMRESULT result = waveOutUnprepareHeader(wo->handle,							 &buffer->hdr,							 sizeof(buffer->hdr));		if (result == MMSYSERR_NOERROR)			return true;		else if (result != WAVERR_STILLPLAYING) {			g_set_error(error_r, winmm_output_quark(), result,				    "waveOutUnprepareHeader() failed");			return false;		}		/* wait some more */		WaitForSingleObject(wo->event, INFINITE);	}}
开发者ID:GunioRobot,项目名称:mpd,代码行数:27,


示例23: win32ao_close

/** * win32ao_close() * Terminate playback. * This function blocks until all data that was written has been played. * Return 0 if happy, -1 if error. */int win32ao_close(void) {	MMRESULT res;	int i;	// commit possible partially filled buffer	if (commit(whoutBufNo))		return -1;	// unpause (no-op if already unpaused)	res = waveOutRestart(waveout);	if (checkWaveOutResult(waveout, res, "waveOutRestart"))		return -1;	// wait for buffers to finish and unprepare them all	for (i = 0; i < whoutBufCnt; ++i) {		while ((whout[i]->dwFlags & WHDR_INQUEUE) != 0) {			// buffer not ready, wait, try again			WaitForSingleObject(whoutEvent, INFINITE);		}		// unprepare the buffer		res = waveOutUnprepareHeader(waveout, whout[i], sizeof(WAVEHDR));		if (checkWaveOutResult(waveout, res, "waveOutUnprepareHeader"))			return -1;		// free memory		free(whout[i]->lpData);		free(whout[i]);	}	free(whout);	// close 	res = waveOutClose(waveout);	if (checkWaveOutResult(waveout, res, "waveOutClose"))		return -1;				return 0;}
开发者ID:BackupTheBerlios,项目名称:nautilus,代码行数:42,


示例24: waveOutUnprepareHeader

void CSoundPlayer::Close(){	if (NULL != soundObj.pWaveHdr && soundObj.initWaveHdr == 0x01)	{		MMRESULT	mmhr;		for( unsigned int i=0; i<soundObj.waveHdrNum; i++ ) 		{			//if (soundObj.pWaveHdr[i].dwBufferLength < 1)		continue;			soundObj.pWaveHdr[i].dwFlags = 0;			mmhr = waveOutUnprepareHeader( soundObj.hWaveOut, &soundObj.pWaveHdr[i], sizeof(WAVEHDR) );			soundObj.pWaveHdr[i].dwBufferLength = 0;		}	}	soundObj.initWaveHdr = 0x00;	if (NULL != soundObj.hWaveOut)	{		waveOutClose(soundObj.hWaveOut);		soundObj.hWaveOut = NULL;	}	//if( soundObj.hNotify ) CloseHandle( soundObj.hNotify );	//soundObj.hNotify = NULL;}
开发者ID:EricChen2013,项目名称:EasyPusher,代码行数:24,


示例25: Streaming

void CSoundManager::Streaming(){	// revisa si hay bloques pendientes que se terminaron: 	for(int i=0;i<cant_bloques;++i)	{		if(waveOutUnprepareHeader(hWaveOut, bloques_pendientes[i], sizeof(WAVEHDR))			!=WAVERR_STILLPLAYING)		{			// ya termino de procesarse, (o dio un error, sea como sea: )			// libero la memoria			delete bloques_pendientes[i]->lpData;			delete bloques_pendientes[i];			// marco el bloque para borrar			bloques_pendientes[i] = NULL;		}	}	int ant_cant = cant_bloques;	// pack de bloques	cant_bloques = 0;	for(i=0;i<ant_cant;++i)		if(bloques_pendientes[i]!=NULL)			bloques_pendientes[cant_bloques++] = bloques_pendientes[i];}
开发者ID:mbanquiero,项目名称:games,代码行数:24,


示例26: pcm_close

void pcm_close(){        if (wout) {                waveOutReset(wout);                for (int i = 0; i < buffers; i++)                        waveOutUnprepareHeader(wout, &hdr[i], sizeof WAVEHDR);                waveOutClose(wout);                wout = 0;        }        if (buf) {                free(buf);                buf = 0;        }        if (hdr) {                free(hdr);                hdr = 0;        }        if (semaph) {                CloseHandle(semaph);                semaph = 0;        }        memset(&pcm, 0, sizeof pcm);}
开发者ID:milot-mirdita,项目名称:PocketGnuBoy,代码行数:24,


示例27: playWaveSingleTime

void playWaveSingleTime(){    WAVEHDR whdr;    MMRESULT  result;    whdr.lpData = pWave;    whdr.dwBufferLength = waveBufferLength;    whdr.dwFlags = WHDR_BEGINLOOP | WHDR_ENDLOOP;    whdr.dwLoops=1;    result = waveOutPrepareHeader(hWaveOut,&whdr,sizeof(WAVEHDR));    if(MMSYSERR_NOERROR !=result)    {        printf_s("Error:waveOutPrepareHeader! ErrorCode:%x",result);        goto freeandend;    }    result = waveOutWrite(hWaveOut,&whdr,sizeof(WAVEHDR));    if(MMSYSERR_NOERROR !=result)    {        printf_s("Error:waveOutWrite! ErrorCode:%x",result);        goto freeandend;    }    Sleep(waveLengthSecond*500);freeandend:    result = waveOutReset(hWaveOut);    if(MMSYSERR_NOERROR !=result)    {        printf_s("Error:waveOutReset! ErrorCode:%x",result);    }    result = waveOutUnprepareHeader(hWaveOut,&whdr,sizeof(WAVEHDR));    if(MMSYSERR_NOERROR !=result)    {        printf_s("Error:waveOutUnprepareHeader! ErrorCode:%x",result);    }    free(pWave);    pWave = NULL;}
开发者ID:kobayosi,项目名称:AudioMiscTest,代码行数:36,


示例28: waveOutUnprepareHeader

void WinSound::fillNextBuffer(void) {	if (isStarted) {		isFilling = TRUE;		// check if the buffer is already prepared (should not !)		if (waveHeader[currentBuffer].dwFlags & WHDR_PREPARED)			waveOutUnprepareHeader(waveOut, &waveHeader[currentBuffer],					sizeof(WAVEHDR));		// Call the user function to fill the buffer		if (userCallback) {			userCallback(soundBuffer[currentBuffer], bufferSize);		}		// Prepare the buffer to be sent to the WaveOut API		waveHeader[currentBuffer].lpData = (char*) soundBuffer[currentBuffer];		waveHeader[currentBuffer].dwBufferLength = bufferSize;		waveOutPrepareHeader(waveOut, &waveHeader[currentBuffer], sizeof(WAVEHDR));		// Send the buffer the the WaveOut queue		waveOutWrite(waveOut, &waveHeader[currentBuffer], sizeof(WAVEHDR));		currentBuffer++;		if (currentBuffer >= WINSOUND_BUFFERCOUNT) {			currentBuffer = 0;		}		isFilling = FALSE;	}}
开发者ID:Clever-Boy,项目名称:batterytech,代码行数:24,



注:本文中的waveOutUnprepareHeader函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ waveOutWrite函数代码示例
C++ waveOutRestart函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。