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;
}