www.pudn.com > vc-network-communication.rar > AudioRec.cpp


//NetTalk 
/*------------------------------------------------------------------------------*\ 
 ============================= 
   模块名称: AidopRec.cpp 
 ============================= 
  
 [版权] 
  
   2000-2002  115软件工厂  版权所有 
                                               
\*------------------------------------------------------------------------------*/ 
#include "WndX.h" 
#include "WaveShow.h" 
#include "UDPSocket.h"	 
#include "WaveIn.h" 
#include "AudioRec.h" 
#include "stdio.h" 
 
 
/*------------------------------------------------------------------------------*/ 
 
CAudioRec::CAudioRec() 
{ 
	 
 
} 
/*------------------------------------------------------------------------------*/ 
CAudioRec::~CAudioRec() 
{ 
	Destroy(); 
} 
/*------------------------------------------------------------------------------*/ 
//开始录音 
BOOL CAudioRec::Start() 
{ 
	BOOL bRet=FALSE; 
	if(!m_hIn) 
		goto RET; 
	if(!AllocBuffer()) 
		goto RET; 
	m_mmr=waveInStart(m_hIn); 
	if(m_mmr) 
		goto RET;	 
	 
	bRet=TRUE; 
	 
RET: 
 
	return bRet; 
} 
 
/*------------------------------------------------------------------------------*/ 
//停止录音 
BOOL CAudioRec::Stop() 
{ 
	BOOL bRet=FALSE; 
	 
	if(!m_hIn) 
		goto RET; 
	 
	m_mmr=waveInReset(m_hIn); 
	if(m_mmr) 
		goto RET; 
	if(!FreeBuffer()) 
		goto RET; 
	bRet=TRUE; 
RET: 
 
	return TRUE; 
} 
 
/*------------------------------------------------------------------------------*/ 
//为录音分配一组内存 
BOOL CAudioRec::AllocBuffer() 
{ 
	BOOL bRet=FALSE; 
	UINT i; 
	 
	m_pHdr=new WAVEHDR[NUM_BUF]; 
	//为了使录音连续,采用多个缓冲区 
	for(i=0;i