www.pudn.com > hmmPlatform.rar > SmallFileWaveOut.h


#pragma once 
#include "filewaveout.h" 
 
#ifndef _SAMLLFILEWAVEOUT_H_ 
#define _SAMLLFILEWAVEOUT_H_ 
 
////////////////////////////////////////////////////////////////////////// 
// 负责小文件播放,裸音频数据全部保存在内存中 
// 
// 功能:	实现内存中的裸音频数据的播放 
// 创建人:	陈文凯 (chwkai@gmail.com) 
// 创建日期:2005年5月30日 
// 修改人: 
// 修改日期: 
// 版本 
class CSmallFileWaveOut : 
	public CFileWaveOut 
{ 
public: 
	CSmallFileWaveOut(void); 
	~CSmallFileWaveOut(void); 
 
protected: 
	////////////////////////////////////////////////////////////////////////// 
	// 打开输出设备,设置回调方式,并分配播放缓冲,读入全部裸音频数据 
	BOOL Init(WAVEFORMATEX fmt, DWORD hWnd); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 清除缓冲区,初始化数据 
	void Dispose(); 
 
public: 
 
	////////////////////////////////////////////////////////////////////////// 
	// 处理WOM_DONE消息,继续播放下一个缓冲块 
	LRESULT OnDone(DWORD dwParam); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 获得指定范围内的样本点 
	void GetSamples(WAVEHDR* pWaveHdr, unsigned int nFrom, unsigned int nCount = 0) const; 
 
	////////////////////////////////////////////////////////////////////////// 
	// 播放指定范围内的样本点 
	void PlaySamples(unsigned int nFrom, unsigned int nCount);  
 
	////////////////////////////////////////////////////////////////////////// 
	// 播放音频逻数据 
	void Start(); 
 
	////////////////////////////////////////////////////////////////////////// 
	// 停止播放,关闭输出设备, UnPrepare缓冲块 
	void Stop(); 
 
private: 
	WAVEHDR m_playBuffer;		// 用于播放的buffer; 
	WAVEHDR m_allocData;		// 全部裸音频数据 
}; 
 
#endif