WaveIn.h
上传用户:amei960
上传日期:2007-02-05
资源大小:143k
文件大小:1k
源码类别:

Audio

开发平台:

Visual C++

  1. #ifndef _WAVEIN_H_
  2. #define _WAVEIN_H_
  3. #define HERTZ_POOR 8000
  4. #define HERTZ_LOW 11025
  5. #define HERTZ_NORMAL 22050
  6. #define HERTZ_HIGH 44100
  7. #define NUM_BUF 5
  8. #define SIZE_AUDIO_FRAME 4800
  9. //#define SIZE_AUDIO_PACKED 240
  10. #include <mmsystem.h>
  11. //音频输入(得到音频数据)-从硬件上得到音频数据
  12. class CWaveIn
  13. {
  14. private:
  15. WAVEINCAPS  waveCaps;
  16. BOOL bDevOpen;
  17. BOOL bStartData;
  18. BOOL bBuffer;
  19. HWAVEIN m_hWave;
  20. WAVEHDR* m_pHead;
  21. HWND m_hWnd;
  22. private:
  23.     WORD nChannels; 
  24.     DWORD dwHertZ; 
  25.     WORD wBits;
  26. private:
  27. BOOL Open();
  28. BOOL StartData();
  29. void Close();
  30. void CloseData();
  31. BOOL PerpareBuffer();
  32. void UnperpareBuffer();
  33. void FreeBuffer();
  34. public:
  35. CWaveIn();
  36. ~CWaveIn();
  37. //check
  38. public:
  39. BOOL IsExistDevice();
  40. WAVEINCAPS * GetDeviceCap();
  41. BOOL IsOpen() { return bDevOpen;}
  42. //setting
  43. public:
  44. enum CHANNEL { SINGLE ,  STEREO };
  45. inline void SetChannel(CHANNEL Channel);
  46. inline void SetHertZ(DWORD HertZ);
  47. inline void SetBit(WORD Bits);
  48. inline void SetHwnd(HWND hWnd);
  49. //operation
  50. public:
  51. BOOL Start();
  52. void Stop();
  53. };
  54. inline void CWaveIn::SetChannel(CHANNEL Channel)
  55. {
  56. switch( Channel )
  57. {
  58. case SINGLE:
  59. nChannels = 1;
  60. break;
  61. case STEREO:
  62. nChannels = 2;
  63. break;
  64. }
  65. }
  66. inline void CWaveIn::SetHertZ(DWORD HertZ)
  67. {
  68. dwHertZ = HertZ;
  69. }
  70. inline void CWaveIn::SetBit(WORD Bits)
  71. {
  72. wBits = Bits;
  73. }
  74. inline void CWaveIn::SetHwnd(HWND hWnd)
  75. {
  76. m_hWnd = hWnd;
  77. }
  78. #endif