Record.h
上传用户:mony888
上传日期:2022-07-26
资源大小:1247k
文件大小:2k
源码类别:

Windows CE

开发平台:

Visual C++

  1. #ifndef _RECORD_H_
  2. #define _RECORD_H_
  3. #include <windows.h>
  4. #include <dsound.h>
  5. #include "codectypes.h"
  6. #include "AudioFile.h"
  7. #define WM_RECDING  WM_USER + 800
  8. #define WM_STOPRECD  WM_USER + 801
  9. typedef struct  {
  10. // RiffHdr riffHdr;
  11. char fileID[4];
  12. DWORD fileleth;
  13. char wavTag[4];
  14. char FmtHdrID[4];
  15. DWORD  FmtHdrLeth;
  16. // ChunkHdr FmtHdr;
  17. WORD FormatTag;
  18. WORD Channels;
  19. DWORD SamplesPerSec;
  20. DWORD AvgBytesPerSec;
  21. WORD BlockAlign;
  22. WORD BitsPerSample;
  23. // ChunkFmtBody FmtBody;
  24. char DataHdrID[4];
  25. DWORD  DataHdrLeth;
  26. // ChunkHdr DataHdr;
  27. } WaveHdr;
  28. struct buf_Mode {
  29. BYTE ucSize;
  30. BYTE ucUsed;
  31. };
  32. enum BufMode { _2to4, _4to8, _8to16 };
  33. class Record
  34. {
  35. public:
  36. virtual ~Record();
  37. MMRESULT ToRec();
  38. MMRESULT InitRecord(WAVEFORMATEX & wfx);
  39. MMRESULT OpenMic();
  40. MMRESULT SetBufSiz(DWORD dwBufSiz);
  41. MMRESULT ClosMic();
  42. MMRESULT ClosRecord();
  43. MMRESULT ToPlay(LPCTSTR pszFileName);
  44. MMRESULT ToPaus();
  45. MMRESULT ToStop();
  46. void SetCodecInterface(CodecInterfaceType& CodecInterf);
  47. friend extern Record & Recorder(BufMode ModeKey = _4to8, DWORD dwBufSiz = 1600 /* 100ms sample data */);
  48. HANDLE m_fh;
  49. DWORD m_dwPCMSiz;
  50. protected:
  51. Record(BufMode ModeKey, DWORD dwBufSiz);
  52. CodecInterfaceType* m_pCodecInterf;
  53. const BYTE m_BUFBLKSIZE;
  54. const BYTE m_BUFBLKUSED;
  55. DWORD m_BufSiz;
  56. UINT m_uiDeviceId;
  57. WAVEFORMATEX m_wfx;
  58. DWORD m_dwWaitTime;                                     // The time wait to check buffer.
  59. PWAVEHDR m_pDataHdr;                                    // Pointer to waveHeader(wave data header) array.
  60. BYTE m_BufNO;
  61. HWAVEIN m_hwi;                                          // Handle of the wave in device.
  62. HANDLE m_hevDone;                                       // Handle of the event in recording.
  63. PBYTE m_pEncData;
  64. DWORD m_EncDataSiz;
  65. CodecContext m_Data;
  66. private:
  67. };
  68. #endif