SmallFileWaveOut.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:2k
- #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