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

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

?? wavein.cpp

?? QQ自動(dòng)登陸器源碼 QQ自動(dòng)登陸器.QQ密碼加密算法的實(shí)現(xiàn)
?? CPP
字號(hào):
#include "stdafx.h"
#include "WaveIn.h"
#include "math.h"
#pragma comment(lib,"Winmm")

DWORD CWaveIn::s_dwInstance = 0;

DWORD WINAPI CWaveIn::AudioInThreadProc(LPVOID lpParameter)
{
	TRACE("AudioInThreadProc start.\n");
	CWaveIn *pWaveIn;
	pWaveIn = (CWaveIn *)lpParameter;

	char buffer[1024];
	MSG msg;
	while(GetMessage(&msg,0,0,0))
	{
		switch(msg.message )
		{
		case MM_WIM_OPEN:
			TRACE("MM_WIM_OPEN \n");
			break;
		case MM_WIM_CLOSE:
			TRACE("MM_WIM_CLOSE \n");
			break;
		case MM_WIM_DATA:
			WAVEHDR* pWH=(WAVEHDR*)msg.lParam;
			waveInUnprepareHeader((HWAVEIN)msg.wParam,pWH,sizeof(WAVEHDR));
			
			if(pWH->dwBytesRecorded!=SIZE_AUDIO_FRAME)
				break;

			memcpy(buffer,pWH->lpData,pWH->dwBytesRecorded);
			pWaveIn->GetData (buffer ,pWH->dwBytesRecorded );

			waveInPrepareHeader((HWAVEIN)msg.wParam,pWH,sizeof(WAVEHDR));
			waveInAddBuffer((HWAVEIN)msg.wParam,pWH,sizeof(WAVEHDR));

			break;
		}
	}
	TRACE("AudioInThreadProc exit.\n");
	return msg.wParam;
}

CWaveIn::CWaveIn() :
	m_wChannel(1),
	m_dwSample (WISA_POOR),
	m_wBit(16)
{
	m_hIn=0;
	m_bThreadStart = FALSE;
	m_bDevOpen = FALSE;
	m_bAllocBuffer = FALSE;
	m_bRecord = FALSE;

	m_pHdr = NULL;
	m_dwAudioInId = 0;
	s_dwInstance ++;
}

CWaveIn::~CWaveIn()
{

}

BOOL CWaveIn::CloseDev()
{
	if (!m_bDevOpen)
	{
		TRACE("CWaveIn::CloseDev: Device hasn't opened.\n");
		return FALSE;
	}

	if(!m_hIn)
	{
		TRACE("CWaveIn::CloseDev: Device hasn't opened.\n");
		return FALSE;
	}

	m_mmr=waveInClose(m_hIn);
	if(m_mmr)
	{
		TRACE("CWaveIn::CloseDev: waveInClose error %s.\n",GetLastErrorString());
		m_hIn=0;
		m_bDevOpen = FALSE;
		return FALSE;
	}
	m_hIn=0;
	m_bDevOpen = FALSE;
	return TRUE;
}
BOOL CWaveIn::OpenDev()
{
	if (m_bDevOpen)
	{
		TRACE("CWaveIn::OpenDev: Device has open.\n");
		return FALSE;
	}
	WAVEFORMATEX wfx;
	wfx.wFormatTag = WAVE_FORMAT_PCM;
	wfx.nChannels = m_wChannel;
	wfx.nSamplesPerSec = m_dwSample;
	wfx.nAvgBytesPerSec = m_wChannel * m_dwSample * m_wBit / 8;
	wfx.nBlockAlign = m_wBit * m_wChannel / 8;
	wfx.wBitsPerSample = m_wBit;
	wfx.cbSize = 0;

	m_mmr=waveInOpen(0,WAVE_MAPPER,&wfx,0,0,WAVE_FORMAT_QUERY);
	if(m_mmr)
	{
		TRACE("CWaveIn::OpenDev: waveInOpen error.\n");
		return FALSE;
	}

	m_mmr=waveInOpen(&m_hIn,WAVE_MAPPER,&wfx,m_dwAudioInId,s_dwInstance,CALLBACK_THREAD);
	if(m_mmr)
	{
		TRACE("CWaveIn::OpenDev: waveInOpen error.\n");
		return FALSE;
	}
	m_bDevOpen = TRUE;
	return TRUE;
}

BOOL CWaveIn::StartThread()
{
	if (m_bThreadStart)
	{
		TRACE("CWaveIn::StartThread: Wave in thread has run.\n");
		return FALSE;
	}

	m_hAudioIn=CreateThread(0,0,AudioInThreadProc,this,0,&m_dwAudioInId);
	if(!m_hAudioIn)
	{
		TRACE("CWaveIn::StartThread: Strat wave in thread fail.\n");
		return FALSE;
	}
	m_bThreadStart = TRUE;
	return TRUE;
}

BOOL CWaveIn::StopThread()
{
	if (!m_bThreadStart)
	{
		TRACE("CWaveIn::StopThread: Wave in thread hasn't run.\n");
		return FALSE;
	}

	if(m_hAudioIn)
	{
		int t=50;
		DWORD ExitCode;
		BOOL bEnd=FALSE;
		PostThreadMessage(m_dwAudioInId,WM_QUIT,0,0);
		while(t)
		{
			GetExitCodeThread(m_hAudioIn,&ExitCode);
			if(ExitCode!= STILL_ACTIVE)
			{
				bEnd=TRUE;
				break;
			}
			else
				Sleep(10);
			t--;
		}
		if(!bEnd)
		{
			TerminateThread(m_hAudioIn,0);
			TRACE("CWaveIn::StopThread: TerminateThread wave in thread.\n");
		}
		m_hAudioIn=0;
	}
	m_bThreadStart = FALSE;
	return TRUE;
}

BOOL CWaveIn::StartRec()
{
	BOOL bRet=FALSE;
	if (!StartThread())           
	{
		goto Exit;
	};
	if (!OpenDev())
	{
		goto Exit1;
	};
	if (!PerPareBuffer())
	{
		goto Exit2;
	}
	if (!OpenRecord())
	{
		goto Exit3;
	}
	bRet = TRUE;
	goto Exit;
Exit3:
	FreeBuffer();
Exit2:
	CloseDev ();
Exit1:
	StopThread ();
Exit:
	return bRet;
}

BOOL CWaveIn::StopRec()
{
	CloseRecord ();	
	Sleep(1500);
	//notice delete
	FreeBuffer();
	if (CloseDev())
	{
		StopThread ();
	}

	return TRUE;
}

BOOL CWaveIn::PerPareBuffer()
{
	if (m_bAllocBuffer)
	{
		TRACE("CWaveIn::PerPareBuffer: Buffer has been alloc.\n");
		return FALSE;
	}

	m_mmr=waveInReset(m_hIn);
	if(m_mmr)
	{
		TRACE("CWaveIn::PerPareBuffer: waveInReset error.\n");
		return FALSE;
	}

	UINT i;
	m_pHdr=new WAVEHDR[NUM_BUF];
		
	for(i=0;i<NUM_BUF;i++)
	{
		ZeroMemory(&m_pHdr[i],sizeof(WAVEHDR));
		m_pHdr[i].lpData=new char[SIZE_AUDIO_FRAME];
		m_pHdr[i].dwBufferLength= SIZE_AUDIO_FRAME;
		m_mmr=waveInPrepareHeader(m_hIn,&m_pHdr[i],sizeof(WAVEHDR));
		if(m_mmr)
		{
			TRACE("CWaveIn::PerPareBuffer: waveInPrepareHeader error.\n");
			return FALSE;
		}
		
		m_mmr=waveInAddBuffer(m_hIn,&m_pHdr[i],sizeof(WAVEHDR));
		if(m_mmr)
		{
			TRACE("CWaveIn::PerPareBuffer: waveInAddBuffer error.\n");
			return FALSE;
		}
	}

	m_bAllocBuffer = TRUE;
	return TRUE;
}

BOOL CWaveIn::FreeBuffer()
{
	if (!m_bAllocBuffer)
	{
		TRACE("CWaveIn::FreeBuffer: Buffer hasn't been alloc.\n");
		return FALSE;
	}
	
	UINT i;
	if(!m_pHdr)
	{
		TRACE("CWaveIn::FreeBuffer: m_pHdr is NULL.\n");
		return FALSE;
	}

	for(i=0;i<NUM_BUF;i++)
	{
		m_mmr = waveInUnprepareHeader(m_hIn,&m_pHdr[i],sizeof(WAVEHDR));
		if(m_mmr)
		{
			Sleep(100);
			TRACE("CWaveIn::FreeBuffer: waveInUnprepareHeader error.\n");
			continue;
		}
		TRACE("CWaveIn::FreeBuffer: %d.\n",i);
		
		if(m_pHdr[i].lpData)
			delete []m_pHdr[i].lpData;
	
	}
	delete []m_pHdr;
	m_pHdr = NULL;

	m_bAllocBuffer = FALSE;
	return TRUE;
}

BOOL CWaveIn::OpenRecord()
{
	if (m_bRecord)
	{
		TRACE("CWaveIn::OpenRecord: You may be has begun recored.\n");
		return FALSE;
	}

	if(!m_hIn)
	{
		TRACE("CWaveIn::CloseDev: Device hasn't opened.\n");
		return FALSE;
	}

	m_mmr=waveInStart(m_hIn);
	if(m_mmr)
	{
		TRACE("CWaveIn::OpenRecord: waveInStart error.\n");
		return FALSE;
	}

	m_bRecord = TRUE;
	return TRUE;
}

BOOL CWaveIn::CloseRecord()
{
	if (!m_bRecord)
	{
		TRACE("CWaveIn::CloseRecord: You may be hasn't begun recored.\n");
		return FALSE;
	}

	if(!m_hIn)
	{
		TRACE("CWaveIn::CloseRecord: Device hasn't opened.\n");
		return FALSE;
	}

/*	m_mmr=waveInStop(m_hIn);
	if(m_mmr)
	{
		TRACE("CWaveIn::CloseRecord: waveInStop error.\n");
		return FALSE;
	}
 */	m_mmr=waveInReset(m_hIn);
	if(m_mmr)
	{
		TRACE("CWaveIn::CloseRecord: waveInReset error.\n");
		return FALSE;
	}

	m_bRecord = FALSE;
	return TRUE;
}

void CWaveIn::GetData(char *pBuffer,int iLen)
{
	static int i = 0;
	static SYSTEMTIME time,time1;
	static long l = 0;
	if (i == 0)
	{
		::GetLocalTime (&time);
	}
	::GetLocalTime (&time1);

	int j = time1.wSecond - time.wSecond;
	if (abs(j) >= 1 )
	{
		memcpy(&time,&time1,sizeof(time));
		TRACE("Len / second %d \n",l);
		l = 0;
	}
	l = l + iLen;
	i++;
}


MMRESULT CWaveIn::GetLastMMError()
{
	return m_mmr;
}

CString CWaveIn::GetLastErrorString()
{
	char buffer[256];
	memset(buffer,0,256);
	waveInGetErrorText(m_mmr,buffer,256);
	return buffer;
}

void CWaveIn::SetChannel(WORD wChannel)
{
	m_wChannel = (m_wChannel == wChannel) ? 2:1;
}

void CWaveIn::SetSample(DWORD dwSample)
{
	m_dwSample = dwSample;
}

void CWaveIn::SetBit(WORD wBit)
{
	m_wBit = (wBit == 8) ? 8:16;
}

DWORD CWaveIn::GetInstance()
{
	return s_dwInstance;
}

WORD CWaveIn::GetBit()
{
	return m_wBit;
}

DWORD CWaveIn::GetSample()
{
	return m_dwSample;
}

WORD CWaveIn::GetChannel()
{
	return m_wChannel;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区高清在线观看 | 欧美日韩国产高清一区二区三区 | 国产精品乱人伦一区二区| 精品一区二区三区欧美| 久久色.com| 成人激情校园春色| 亚洲激情av在线| 欧美精品在欧美一区二区少妇| 亚洲大片在线观看| 日韩免费观看高清完整版| 激情深爱一区二区| 国产精品久久久久影视| 色偷偷88欧美精品久久久| 亚洲五月六月丁香激情| 精品视频1区2区3区| 美女精品自拍一二三四| 国产网站一区二区| 91视频国产资源| 日韩国产精品久久久| 久久午夜羞羞影院免费观看| 成人av网站在线观看免费| 亚洲午夜一区二区三区| 亚洲精品一区二区三区四区高清| 丁香婷婷综合网| 亚洲成人av免费| 久久久久亚洲综合| 日本道在线观看一区二区| 日本成人中文字幕在线视频| 亚洲国产精品黑人久久久| 在线日韩av片| 国产精品亚洲午夜一区二区三区| 亚洲欧美国产高清| 欧美电影免费观看高清完整版| 国产成人鲁色资源国产91色综 | 精品日产卡一卡二卡麻豆| 成人黄色免费短视频| 五月天一区二区三区| 亚洲国产精品传媒在线观看| 欧美日韩精品一区视频| 国产精品一区二区久久不卡| 一区二区成人在线观看| 久久亚洲春色中文字幕久久久| 色婷婷精品大视频在线蜜桃视频| 免费人成在线不卡| 亚洲伦在线观看| 久久精品亚洲精品国产欧美kt∨| 欧美午夜不卡视频| 国产成人免费高清| 美国毛片一区二区| 亚洲综合精品自拍| 蜜芽一区二区三区| 亚洲制服欧美中文字幕中文字幕| 精品成人在线观看| 欧美一区中文字幕| 在线观看欧美日本| 91在线云播放| 国产91精品久久久久久久网曝门| 五月婷婷综合激情| 亚洲已满18点击进入久久| 国产精品久99| 国产午夜亚洲精品不卡| 日韩一级片在线观看| 国产91高潮流白浆在线麻豆| 日韩和欧美一区二区三区| 亚洲一区二区高清| 亚洲裸体在线观看| 亚洲免费在线观看| 国产精品伦一区| 国产欧美久久久精品影院| 欧美成人bangbros| 欧美一区二区三区男人的天堂| 欧美色图激情小说| 欧美视频一区二区三区在线观看| 99久久综合狠狠综合久久| 成人免费视频视频在线观看免费 | 精品处破学生在线二十三| 欧美精品一二三区| 欧美日韩一区小说| 欧美天堂亚洲电影院在线播放| 色综合天天做天天爱| 99久久精品国产导航| caoporn国产一区二区| 成人免费视频网站在线观看| 丁香六月综合激情| aaa国产一区| 欧美经典一区二区三区| 精品久久久久久久人人人人传媒 | 成人午夜电影网站| 国产成人av影院| 成人一道本在线| 99riav一区二区三区| 色哟哟日韩精品| 欧美日韩国产精品成人| 日韩一区二区在线免费观看| 日韩美一区二区三区| 久久影视一区二区| 国产精品久久久久久户外露出| 国产精品高清亚洲| 美国毛片一区二区三区| 国产精品99久久久久久宅男| 波多野洁衣一区| 欧美在线一二三四区| 制服丝袜成人动漫| 久久蜜臀中文字幕| 亚洲欧美自拍偷拍色图| 午夜a成v人精品| 国产一区二区伦理片| 99r精品视频| 69久久夜色精品国产69蝌蚪网| 精品嫩草影院久久| 国产精品久久久久久久久图文区| 亚洲伊人伊色伊影伊综合网| 美腿丝袜亚洲综合| 成人涩涩免费视频| 欧美日韩不卡视频| 久久久久久久久99精品| 伊人夜夜躁av伊人久久| 蜜臀av在线播放一区二区三区 | 国产日产欧美一区二区三区| 亚洲欧洲99久久| 奇米在线7777在线精品| 波多野结衣在线一区| 欧美日韩一二三| 国产人伦精品一区二区| 一区二区三区加勒比av| 精品一区二区在线视频| 91久久久免费一区二区| 欧美精品一区视频| 亚洲国产乱码最新视频| 国产成人啪午夜精品网站男同| 欧美色涩在线第一页| 欧美精彩视频一区二区三区| 日韩成人一级大片| 96av麻豆蜜桃一区二区| 久久久久亚洲综合| 日韩不卡手机在线v区| 色婷婷综合久色| 久久人人超碰精品| 免费不卡在线观看| 在线这里只有精品| 欧美韩日一区二区三区四区| 麻豆91免费观看| 欧美午夜精品一区二区三区| 中文字幕av一区二区三区| 蜜臀av一区二区在线免费观看| 在线精品亚洲一区二区不卡| 亚洲国产精品精华液2区45| 欧美亚洲国产一区二区三区va| 欧美高清在线一区二区| 国产乱子伦视频一区二区三区| 91精品国产91热久久久做人人| 一区二区三区在线高清| 成人app在线观看| 国产日韩欧美一区二区三区综合| 免费成人av在线| 欧美一级高清大全免费观看| 亚洲国产精品久久久久婷婷884 | 麻豆国产精品一区二区三区| 欧美色图天堂网| 亚洲青青青在线视频| 99视频在线精品| 国产精品免费视频网站| 国产精品66部| 久久精品视频网| 国产精品一区二区久久不卡| 久久久一区二区三区| 国产乱人伦精品一区二区在线观看| 欧美v国产在线一区二区三区| 日韩激情在线观看| 91精品国产一区二区三区蜜臀| 亚洲大片一区二区三区| 欧美日韩久久一区| 日日嗨av一区二区三区四区| 欧美一区二区福利在线| 麻豆成人免费电影| 精品毛片乱码1区2区3区| 激情六月婷婷久久| 久久精品一级爱片| 播五月开心婷婷综合| 亚洲女人****多毛耸耸8| 色婷婷精品久久二区二区蜜臀av| 亚洲精品国产a久久久久久| 欧美视频在线播放| 日韩av不卡一区二区| 精品999久久久| 成人性色生活片免费看爆迷你毛片| 国产精品美日韩| 在线观看日韩毛片| 热久久一区二区| 日本一区二区动态图| 欧洲在线/亚洲| 国产欧美一区二区精品忘忧草| 午夜欧美2019年伦理| 欧美三级乱人伦电影| 五月开心婷婷久久| 精品国精品国产尤物美女| 成人免费看视频| 亚洲一区二区视频在线| 日韩一级高清毛片| 国产精品亚洲一区二区三区在线|