SmallFileWaveOut.h
上传用户:goak128
上传日期:2013-07-17
资源大小:155k
文件大小:2k
源码类别:

控制台编程

开发平台:

C/C++

  1. #pragma once
  2. #include "filewaveout.h"
  3. #ifndef _SAMLLFILEWAVEOUT_H_
  4. #define _SAMLLFILEWAVEOUT_H_
  5. //////////////////////////////////////////////////////////////////////////
  6. // 负责小文件播放,裸音频数据全部保存在内存中
  7. //
  8. // 功能: 实现内存中的裸音频数据的播放
  9. // 创建人: 陈文凯 (chwkai@gmail.com)
  10. // 创建日期:2005年5月30日
  11. // 修改人:
  12. // 修改日期:
  13. // 版本
  14. class CSmallFileWaveOut :
  15. public CFileWaveOut
  16. {
  17. public:
  18. CSmallFileWaveOut(void);
  19. ~CSmallFileWaveOut(void);
  20. protected:
  21. //////////////////////////////////////////////////////////////////////////
  22. // 打开输出设备,设置回调方式,并分配播放缓冲,读入全部裸音频数据
  23. BOOL Init(WAVEFORMATEX fmt, DWORD hWnd);
  24. //////////////////////////////////////////////////////////////////////////
  25. // 清除缓冲区,初始化数据
  26. void Dispose();
  27. public:
  28. //////////////////////////////////////////////////////////////////////////
  29. // 处理WOM_DONE消息,继续播放下一个缓冲块
  30. LRESULT OnDone(DWORD dwParam);
  31. //////////////////////////////////////////////////////////////////////////
  32. // 获得指定范围内的样本点
  33. void GetSamples(WAVEHDR* pWaveHdr, unsigned int nFrom, unsigned int nCount = 0) const;
  34. //////////////////////////////////////////////////////////////////////////
  35. // 播放指定范围内的样本点
  36. void PlaySamples(unsigned int nFrom, unsigned int nCount); 
  37. //////////////////////////////////////////////////////////////////////////
  38. // 播放音频逻数据
  39. void Start();
  40. //////////////////////////////////////////////////////////////////////////
  41. // 停止播放,关闭输出设备, UnPrepare缓冲块
  42. void Stop();
  43. private:
  44. WAVEHDR m_playBuffer; // 用于播放的buffer;
  45. WAVEHDR m_allocData; // 全部裸音频数据
  46. };
  47. #endif