www.pudn.com > audioTest.rar > WaveBuffer.cpp


// WaveBuffer.cpp: implementation of the CWaveBuffer class. 
// 
////////////////////////////////////////////////////////////////////// 
 
#include "stdafx.h" 
#include "WaveBuffer.h" 
 
#ifdef _DEBUG 
#undef THIS_FILE 
static char THIS_FILE[]=__FILE__; 
#define new DEBUG_NEW 
#endif 
 
////////////////////////////////////////////////////////////////////// 
// Construction/Destruction 
////////////////////////////////////////////////////////////////////// 
 
CWaveBuffer::CWaveBuffer():m_dwNum(0),m_pBuffer(NULL),m_nSampleSize(0) 
{ 
 
} 
 
CWaveBuffer::~CWaveBuffer() 
{ 
	m_dwNum=0L; 
	delete[] m_pBuffer; 
	m_pBuffer=NULL; 
} 
////////////////////////////////////////// 
//返回缓存 
void * CWaveBuffer::GetBuffer() const 
{ 
	return m_pBuffer; 
} 
/////////////////////////////////////// 
//得到采样率大小 
DWORD CWaveBuffer::GetNumSamples() const 
{ 
	return m_dwNum; 
} 
//////////////////////////////////////// 
//把pBuffer中的内容拷贝到m_pBuffer中去 
void CWaveBuffer::CopyBuffer(void *pBuffer,DWORD dwNumSamples,int nSize) 
{ 
	ASSERT(dwNumSamples >=0); 
	ASSERT(nSize); 
	if(!m_pBuffer) 
	{ 
		SetNumSamples(dwNumSamples,nSize); 
	} 
	if(__min(m_dwNum,dwNumSamples)* nSize>0) 
	{ 
		ZeroMemory(m_pBuffer,m_dwNum * m_nSampleSize); 
		CopyMemory(m_pBuffer,pBuffer,__min(m_dwNum,dwNumSamples)*nSize); 
	} 
} 
///////////////////////////////////////////////// 
//设置采样率,dwNumSamples为采样频率,nSize为指定数据格式的最小单元 
void CWaveBuffer::SetNumSamples(DWORD dwNumSamples,int nSize)// 
{ 
	ASSERT(dwNumSamples >=0); 
	ASSERT(nSize >0); 
	void *pBuffer=NULL; 
	pBuffer = new char[nSize*dwNumSamples]; 
	SetBuffer(pBuffer,dwNumSamples,nSize); 
} 
///////////////////////////////////////////////////// 
//对m_pBuffer进行重新设置 
void CWaveBuffer::SetBuffer(void *pBuffer,DWORD dwNumSamples,int nSize) 
{ 
	ASSERT(dwNumSamples >=0); 
	ASSERT(nSize); 
	delete []m_pBuffer; 
	m_pBuffer=pBuffer; 
	m_dwNum= dwNumSamples; 
	m_nSampleSize = nSize; 
} 
/////////////////////////////////////////////////////// 
//得到一次采样的大小 
int CWaveBuffer::GetSampleSize() const 
{ 
	return m_nSampleSize; 
}