亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? windev.cpp

?? evc編寫(xiě)的wave文件波形播放
?? CPP
字號(hào):
#include <windows.h>
#include <mmsystem.h>

#include "waveinfo.h"
#include "winDev.h"

void prerecord(recctx *pctx)
{
	long bps=1;

	pctx->wfm.wFormatTag=WAVE_FORMAT_PCM;
	pctx->wfm.cbSize=sizeof(WAVEFORMATEX);

	pctx->wfm.nChannels=pctx->info.channel;
	bps*=pctx->info.channel;
	
	pctx->wfm.wBitsPerSample=pctx->info.bitspersample;
	bps*=(pctx->info.bitspersample >> 1);

	pctx->wfm.nBlockAlign=(unsigned short)bps;

	pctx->wfm.nSamplesPerSec=pctx->info.freq;
	bps*=pctx->info.freq;

	pctx->wfm.nAvgBytesPerSec=bps;
}

void CALLBACK waveinproc(HWAVEIN hwi,
						 UINT uMsg,
						 DWORD dwInstance,
						 DWORD dwParam1,
						 DWORD dwParam2)
{
	recctx *pctx=(recctx *)dwInstance;

	if(pctx == NULL || pctx->cbdatain == NULL)
		return;

	if(uMsg == WIM_DATA)
	{
		WAVEHDR *pwh;

		pwh=(WAVEHDR *)dwParam1;
		pctx->cbdatain(pctx,(unsigned char *)pwh->lpData,pwh->dwBytesRecorded);

		waveInPrepareHeader(pctx->hdev,pwh,sizeof(WAVEHDR));
		waveInAddBuffer(pctx->hdev,pwh,sizeof(WAVEHDR));
	}
}

int startrecord(recctx *pctx,
				int	(*datainproc)(recctx *pctx,unsigned char *buf,int buflen))
{
	int i;
	MMRESULT result;
	
	prerecord(pctx);
	pctx->cbdatain=datainproc;

	result=waveInOpen(&(pctx->hdev),
					  pctx->devid,
					  &(pctx->wfm),
					  (unsigned long)waveinproc,
					  (unsigned long)pctx,
					  CALLBACK_FUNCTION);

	if(result != MMSYSERR_NOERROR)
		goto ERROR_END;

	for(i=0;i<WAVEIN_BUF_NUM;i++)
	{
		//Alloc buffers
		memset(pctx->wh+i,0,sizeof(WAVEHDR));
		pctx->wh[i].lpData=(char *)malloc(WAVEIN_BUF_SIZE);
		pctx->wh[i].dwBufferLength=WAVEIN_BUF_SIZE;

		//Prepare buffers
		result=waveInPrepareHeader(pctx->hdev,pctx->wh+i,sizeof(WAVEHDR));
		if(result != MMSYSERR_NOERROR)
			goto ERROR_END;

		//Add buffers
		result=waveInAddBuffer(pctx->hdev,pctx->wh+i,sizeof(WAVEHDR));
		if(result != MMSYSERR_NOERROR)
			goto ERROR_END;
	}

	//Start recording
	result=waveInStart(pctx->hdev);
	if(result != MMSYSERR_NOERROR)
		goto ERROR_END;

	return 1;

ERROR_END:
	for(i=0;i<WAVEIN_BUF_NUM;i++)
	{
		if(pctx->wh[i].lpData != NULL)
		{
			waveInUnprepareHeader(pctx->hdev,pctx->wh+i,sizeof(WAVEHDR));
			free(pctx->wh[i].lpData);
		}
	}
	if(pctx->hdev != NULL)
	{
		waveInClose(pctx->hdev);
		pctx->hdev=NULL;
	}
	return 0;
}

int stoprecord(recctx *pctx)
{
	int i;

	if(pctx->hdev == NULL)
		return 0;

	MMRESULT result;

	//Reset buffers
	//result=waveInReset(pctx->hdev);

	//Stop
	result=waveInStop(pctx->hdev);

	for(i=0;i<WAVEIN_BUF_NUM;i++)
	{
		//Unprepare and release buffers
		waveInUnprepareHeader(pctx->hdev,pctx->wh+i,sizeof(WAVEHDR));
		free(pctx->wh[i].lpData);
	}

	//Close device
	result=waveInClose(pctx->hdev);
	pctx->hdev=NULL;

	return 1;
}

void preplay(playctx *pctx)
{
	long bps=1;

	pctx->wfm.wFormatTag=WAVE_FORMAT_PCM;
	pctx->wfm.cbSize=sizeof(WAVEFORMATEX);

	pctx->wfm.nChannels=pctx->info.channel;
	bps*=pctx->info.channel;
	
	pctx->wfm.wBitsPerSample=pctx->info.bitspersample;
	bps*=(pctx->info.bitspersample >> 1);

	pctx->wfm.nBlockAlign=(unsigned short)bps;

	pctx->wfm.nSamplesPerSec=pctx->info.freq;
	bps*=pctx->info.freq;

	pctx->wfm.nAvgBytesPerSec=bps;

	pctx->event=CreateEvent(NULL,FALSE,FALSE,NULL);
}

DWORD WINAPI waveoutloop(LPVOID param)
{
	playctx *pctx=(playctx *)param;
	int len;
	int bs=0;

	while(1)
	{
		if(waveOutPrepareHeader(pctx->hdev,pctx->wh+bs,sizeof(WAVEHDR)) != MMSYSERR_NOERROR)
			break;
		len=pctx->cbdataout(pctx,(unsigned char *)pctx->wh[bs].lpData,WAVEOUT_BUF_SIZE);
		if(len != 0)
		{
			pctx->wh[bs].dwBufferLength=len;
			if(WaitForSingleObject(pctx->event,INFINITE) == WAIT_OBJECT_0)
			{
				waveOutWrite(pctx->hdev,pctx->wh,sizeof(WAVEHDR));// != MMSYSERR_NOERROR)
				bs=1-bs;
			}
			else
				break;
		}
	}

	return 0;
}

void CALLBACK waveoutproc(HWAVEIN hwo,
						  UINT uMsg,
						  DWORD dwInstance,
						  DWORD dwParam1,
						  DWORD dwParam2)
{
	playctx *pctx=(playctx *)dwInstance;

	if(pctx == NULL || pctx->cbdataout == NULL)
		return;

	if(uMsg == WOM_DONE)
	{
		WAVEHDR *pwh;

		pwh=(WAVEHDR *)dwParam1;
		//pctx->cbdataout(pctx,(unsigned char *)pwh->lpData,pwh->dwBytesRecorded);
		SetEvent(pctx->event);
	}
}

int startplay(playctx *pctx,
			  unsigned long	(*dataproc)(playctx *pctx,unsigned char *buf,int buflen))
{
	int i;
	MMRESULT result;

	preplay(pctx);
	pctx->cbdataout=dataproc;

	result=waveOutOpen(&(pctx->hdev),
					   pctx->devid,
					   &(pctx->wfm),
					   (unsigned long)waveoutproc,
					   (unsigned long)pctx,
					   CALLBACK_FUNCTION);

	if(result != MMSYSERR_NOERROR)
		goto ERROR_END;

	//Alloc buffers
	for(i=0;i<WAVEOUT_BUF_NUM;i++)
	{
		memset(pctx->wh+i,0,sizeof(WAVEHDR));
		pctx->wh[i].lpData=(char *)malloc(WAVEOUT_BUF_SIZE);
		pctx->wh[i].dwBufferLength=WAVEOUT_BUF_SIZE;
	}

	pctx->thread=CreateThread(NULL,
							  0,
							  waveoutloop,
							  pctx,
							  0,
							  NULL);

	SetEvent(pctx->event);

	return 1;

ERROR_END:
	for(i=0;i<WAVEOUT_BUF_NUM;i++)
	{
		if(pctx->wh[i].lpData != NULL)
		{
			free(pctx->wh[i].lpData);
		}
	}
	if(pctx->hdev != NULL)
	{
		waveOutClose(pctx->hdev);
		pctx->hdev=NULL;
	}
	return 0;
}

int stopplay(playctx *pctx)
{
	int i;

	if(pctx->hdev == NULL)
		return 0;

	MMRESULT result;

	result=waveOutReset(pctx->hdev);

	//Unprepare and release buffers
	for(i=0;i<WAVEOUT_BUF_NUM;i++)
	{
		waveOutUnprepareHeader(pctx->hdev,pctx->wh+i,sizeof(WAVEHDR));
	}

	//Close device
	result=waveOutClose(pctx->hdev);
	for(i=0;i<WAVEOUT_BUF_NUM;i++)
	{
		free(pctx->wh[i].lpData);
	}

	CloseHandle(pctx->event);
	WaitForSingleObject(pctx->event,INFINITE);

	pctx->hdev=NULL;

	return 1;
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
悠悠色在线精品| 国产a级毛片一区| 国产91对白在线观看九色| 在线亚洲一区二区| 久久精子c满五个校花| 婷婷综合在线观看| jlzzjlzz国产精品久久| 久久免费视频一区| 久久激情五月婷婷| 欧美美女直播网站| 最新不卡av在线| 国产成人在线观看免费网站| 欧美肥妇free| 亚洲午夜久久久久久久久电影院| 成人亚洲一区二区一| 日韩欧美你懂的| 日本欧美一区二区三区| 欧美在线影院一区二区| 亚洲欧美日韩精品久久久久| 成人少妇影院yyyy| 久久精品亚洲乱码伦伦中文| 久久国产精品99久久久久久老狼| 在线综合亚洲欧美在线视频 | 99re视频精品| 国产喷白浆一区二区三区| 捆绑调教一区二区三区| 欧美一区二区日韩| 日本不卡视频一二三区| 精品视频在线看| 午夜精品一区二区三区免费视频| 在线观看亚洲成人| 一区二区三区在线视频播放| 99re热视频精品| 日日摸夜夜添夜夜添精品视频| 欧美性猛交xxxx乱大交退制版| 亚洲男人电影天堂| 在线欧美日韩国产| 亚洲无人区一区| 欧美日韩高清不卡| 视频一区中文字幕国产| 日韩欧美国产高清| 国产激情一区二区三区| 欧美激情一区二区三区四区| 成人av免费在线观看| 亚洲天堂中文字幕| 欧美日韩亚洲综合| 久久99在线观看| 国产精品色一区二区三区| 972aa.com艺术欧美| 亚洲一区二区三区四区在线 | 亚洲美女免费在线| 欧美日韩卡一卡二| 精品亚洲免费视频| 国产精品久久久久久久久快鸭| 91美女在线看| 蜜臀av一区二区在线免费观看| 久久这里只有精品6| av一区二区不卡| 亚洲成人av福利| 久久久精品免费观看| 色综合久久综合网97色综合| 视频一区欧美日韩| 欧美国产精品中文字幕| 91激情五月电影| 国产在线精品免费av| 亚洲人快播电影网| 日韩色视频在线观看| 99re热视频精品| 99久久精品国产导航| 久久精品久久99精品久久| 日本一区二区成人在线| 欧美军同video69gay| 成人污视频在线观看| 午夜电影网一区| 国产农村妇女毛片精品久久麻豆| 在线国产电影不卡| 国产风韵犹存在线视精品| 亚洲永久精品大片| 国产精品色哟哟| wwww国产精品欧美| 在线播放中文字幕一区| 99精品久久99久久久久| 国产麻豆午夜三级精品| 日韩精品色哟哟| 亚洲精品中文字幕乱码三区| 国产校园另类小说区| 欧美一区二区三区色| 91福利社在线观看| 成人黄色网址在线观看| 青青青爽久久午夜综合久久午夜| 亚洲女同ⅹxx女同tv| 日本一区二区久久| 欧美成人乱码一区二区三区| 欧美三级电影在线观看| 99在线精品视频| 国产不卡在线视频| 久久av中文字幕片| av在线这里只有精品| 国产精品91xxx| 国产自产高清不卡| 秋霞电影网一区二区| 亚洲第一在线综合网站| 亚洲一区在线观看网站| 日韩一区欧美一区| 欧美激情一区不卡| 国产欧美精品在线观看| 久久影院午夜论| 久久精品日韩一区二区三区| 精品久久免费看| 久久综合狠狠综合| 久久人人97超碰com| 久久精品网站免费观看| 国产欧美一区二区三区在线看蜜臀| 欧美成人福利视频| 久久免费电影网| 国产视频不卡一区| 中文字幕 久热精品 视频在线| 国产视频一区在线观看| 国产欧美日韩中文久久| 国产精品毛片大码女人| 中文字幕亚洲不卡| 一区二区三区日韩欧美| 一区二区三区在线观看视频| 亚洲精品视频在线看| 一级特黄大欧美久久久| 午夜电影网一区| 在线视频欧美精品| 欧美欧美午夜aⅴ在线观看| 91精品中文字幕一区二区三区| 91精品国产乱码| 日韩精品中文字幕在线一区| 337p日本欧洲亚洲大胆精品| 久久久久97国产精华液好用吗| 中文字幕欧美国产| 亚洲欧美国产77777| 亚洲二区在线视频| 极品少妇xxxx偷拍精品少妇| 大胆亚洲人体视频| 欧美亚洲国产一区二区三区| 欧美一区二区成人| 久久精品亚洲麻豆av一区二区 | 久久精品欧美日韩| 亚洲免费三区一区二区| 日韩国产成人精品| 国产精品自拍三区| 在线免费观看日本欧美| 欧美一区二区三区影视| 亚洲国产精品精华液ab| 亚洲在线中文字幕| 国产精品69毛片高清亚洲| 欧洲av一区二区嗯嗯嗯啊| 欧美大度的电影原声| 日韩美女视频19| 久久精品国产色蜜蜜麻豆| 91色.com| 精品国产一区久久| 一区二区三区.www| 国产高清一区日本| 欧美精品vⅰdeose4hd| 国产欧美一区二区精品秋霞影院| 伊人性伊人情综合网| 国内精品国产三级国产a久久| 在线免费观看成人短视频| 久久精品视频一区| 首页国产丝袜综合| 日本精品免费观看高清观看| 亚洲精品一区二区精华| 亚洲国产成人精品视频| av电影在线观看不卡 | 欧美精品免费视频| 中文字幕日本乱码精品影院| 老司机精品视频导航| 欧美午夜一区二区三区免费大片| 国产无一区二区| 精品一区二区在线免费观看| 欧美日韩国产大片| 亚洲精品国产视频| 成人国产亚洲欧美成人综合网| 欧美一区二区三区思思人| 亚洲最大的成人av| 大胆亚洲人体视频| 国产日韩精品久久久| 国产一区三区三区| 欧美成人艳星乳罩| 久久99精品一区二区三区| 91精品婷婷国产综合久久性色| 亚洲六月丁香色婷婷综合久久| 成人av网站免费| 国产精品视频一二三区| 国产激情精品久久久第一区二区| 欧美大片在线观看一区| 蜜臀va亚洲va欧美va天堂 | 在线观看日韩毛片| 亚洲欧美色图小说| 99re视频这里只有精品| 中文字幕一区三区| 色婷婷av一区二区三区gif| 成人欧美一区二区三区黑人麻豆 | 久久精品亚洲精品国产欧美kt∨| 国产真实乱对白精彩久久|