SOUNDOUT.H
上传用户:huifengb
上传日期:2007-12-27
资源大小:334k
文件大小:2k
源码类别:

多媒体

开发平台:

Visual C++

  1. // SoundOut.h: interface for the CSound class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. /*
  5.    
  6.     This program is Copyright  Developped by Yannick Sustrac
  7.                    yannstrc@mail.dotcom.fr
  8.         http://www.mygale.org/~yannstrc/
  9.  
  10. This program is free software; you can redistribute it and/or modify it under the terms
  11. of the GNU General Public License as published by the Free Software Foundation; either
  12. version 2 of the License, or (at your option) any later version.
  13. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
  14. without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  15. See the GNU General Public License for more details.
  16. You should have received a copy of the GNU General Public License along with this program;
  17. if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. */
  19. //////////////////////////////////////////////////////////////////////////////////////////    
  20. #if !defined(AFX_SOUNDOUT_H__69C928C4_1F19_11D2_8045_30460BC10000__INCLUDED_)
  21. #define AFX_SOUNDOUT_H__69C928C4_1F19_11D2_8045_30460BC10000__INCLUDED_
  22. #if _MSC_VER >= 1000
  23. #pragma once
  24. #endif // _MSC_VER >= 1000
  25. #include <mmsystem.h>
  26. #define MAX_OUTPUT_SAMPLES 100000   
  27. #define MAX_VOIE 2
  28. #define MAX_SIZE_SAMPLES  1  // WORD
  29. #define MAX_SIZE_OUTPUT_BUFFER   MAX_OUTPUT_SAMPLES*MAX_VOIE*MAX_SIZE_SAMPLES 
  30. class CSoundOut  
  31. {
  32. public:
  33. SHORT  OutputBuffer[MAX_SIZE_OUTPUT_BUFFER];
  34. WAVEOUTCAPS m_WaveOutDevCaps;
  35.     HWAVEOUT m_WaveOut;
  36. WAVEHDR m_WaveHeader;
  37.     WAVEFORMATEX m_WaveFormat;
  38. HANDLE m_WaveOutEvent;
  39. CWinThread * m_WaveOutThread;
  40. BOOL m_TerminateThread;
  41. UINT m_WaveOutSampleRate;
  42. int  m_NbMaxSamples;
  43. UINT m_SizeRecord;
  44. //////////////////////////////////////////////////////
  45. // functions members
  46. public :
  47. void StartOutput();
  48. void StopOutput();
  49. void CloseOutput();
  50. void AddBuffer();
  51. void SendBuffer(short *psOutPutBuffer);
  52. public :
  53. virtual void RazBuffers();
  54.     virtual void ComputeSamples(SHORT *);  
  55. MMRESULT OpenOutput();
  56. void WaveInitFormat(    WORD    nCh,  // number of channels (mono, stereo)
  57. DWORD   nSampleRate, // sample rate
  58. WORD    BitsPerSample);
  59. CSoundOut();
  60. virtual ~CSoundOut();
  61. };
  62. // Unique global Thread procedure  for the sound Output
  63. UINT WaveOutThreadProc( LPVOID pParam);
  64. #endif