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