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

多媒体

开发平台:

Visual C++

  1. // Sound.h: interface for the CSoundIn 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_SOUND_H__69C928C4_1F19_11D2_8045_30460BC10000__INCLUDED_)
  21. #define AFX_SOUND_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. #include "SoundOut.h"
  27. #define MAX_SAMPLES 8192   //>>>>>>>> must also be defined in CFft
  28. #define MAX_VOIE 2
  29. #define MAX_SIZE_SAMPLES  1  // WORD
  30. #define MAX_SIZE_INPUT_BUFFER   MAX_SAMPLES*MAX_VOIE*MAX_SIZE_SAMPLES 
  31. #define DEFAULT_CAL_OFFSET -395 // >>>>> depends of you sound card
  32. #define DEFAULT_CAL_GAIN   1.0
  33. class CSoundIn  
  34. {
  35. public:
  36. // used for int FFT
  37. SHORT  InputBuffer[MAX_SIZE_INPUT_BUFFER];
  38. WAVEINCAPS m_WaveInDevCaps;
  39.     HWAVEIN m_WaveIn;
  40. WAVEHDR m_WaveHeader;
  41.     WAVEFORMATEX m_WaveFormat;
  42. short m_CalOffset;
  43. double m_CalGain;
  44. CSoundOut *pSoundOut;
  45. HANDLE m_WaveInEvent;
  46. CWinThread * m_WaveInThread;
  47. BOOL m_TerminateThread;
  48. UINT m_WaveInSampleRate;
  49. int m_NbMaxSamples;
  50. UINT m_SizeRecord;
  51. WORD  m_Toggle; /*0 or 1 according the buffer currently loaded*/
  52. public :
  53. void StartMic();
  54. void StopMic();
  55. void CloseMic();
  56. void AddBuffer();
  57. public :
  58. virtual void RazBuffers();
  59.     virtual void ComputeSamples(SHORT *);  // calibrate the samples for the basse class 
  60. // this function is overloaded by the parent
  61. // it need to call this function first to calibrate them
  62. //////////////////////////////////////////////////////
  63. // functions members
  64. MMRESULT OpenMic(int nChannel, int nSamplesPerSec, int nBitPerPoint, CSoundOut *pSOut);
  65. void WaveInitFormat(   WORD    nCh, // number of channels (mono, stereo)
  66. DWORD   nSampleRate, // sample rate
  67. WORD    BitsPerSample);
  68. //void CALLBACK waveInProc( HWAVEIN hwi,  UINT uMsg,   DWORD dwInstance,   DWORD dwParam1, DWORD dwParam2 );
  69. CSoundIn();
  70. virtual ~CSoundIn();
  71. };
  72. // global Thread procedure 
  73. UINT WaveInThreadProc( LPVOID pParam);
  74. #endif