WmvWriter.h 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // WmvWriter.h: interface for the WmvWriter class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_)
  5. #define AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include "winmedia.h"
  10. #include <Vfw.h>
  11. //#include "logfile.h"
  12. //#include "SpBase.h"
  13. #define _ENABLE_VBR_
  14. class CWmvWriter
  15. {
  16. public:
  17. CWmvWriter();
  18. virtual ~CWmvWriter();
  19. private://内部成员变量
  20. IWMProfileManager * mProfileManager;
  21. IWMProfile * mProfile;
  22. IWMWriter *m_pWriter;
  23. INSSBuffer *m_pVideoSample;
  24. INSSBuffer *m_pAudioSample;
  25. INSSBuffer *m_pTextSample;
  26. QWORD m_lStartTime;
  27. GUID m_guidVideoType;
  28. int m_height;
  29. int m_width;
  30. int m_colorbit;
  31. int m_nfps;
  32. int m_nmaxspacing;
  33. DWORD m_VideoInputNum;
  34. DWORD m_AudioInputNum;
  35. DWORD m_ScriptInputNum;
  36. //CLogFile*log;
  37. private: //公共调用接口
  38. HRESULT InitWriter(int width,int height,int nfps,int nSanplePsec,int nchannels,int nBitPerSample,
  39. int nmaxspacing,int nquality,int nOutBitRate, int iAudioType);
  40. HRESULT SetInfo(BSTR filename,int width,int height,int colorbit,int nSanplePsec,int nchannels,int nBitPerSample);
  41. HRESULT Start();
  42. HRESULT Stop();
  43. HRESULT ReceiveVideo(BYTE*pData,DWORD len);
  44. HRESULT ReceiveAudio(BYTE*pData,DWORD len);
  45. HRESULT ReceiveText(char*text,DWORD len);
  46. private://内部成员函数
  47. HRESULT SetSysProfile(REFGUID guid);//设置系统生成器配置
  48. HRESULT SetProfile(IWMProfile*pProfile);
  49. HRESULT ConfigAudioInput();
  50. HRESULT ConfigAudioInput(GUID guidSubType, WAVEFORMATEX * inWave);
  51. HRESULT ConfigVideoInput();
  52. HRESULT ConfigVideoInput(GUID guidSubType, WMVIDEOINFOHEADER * inVideo);
  53. HRESULT CWmvWriter::FindInputFormat(DWORD dwInput, GUID guidSubType,
  54. IWMInputMediaProps** ppProps, WM_MEDIA_TYPE** ppMediaType);
  55. HRESULT IdentifyInputsByNumber(void);
  56. HRESULT CreateProfile(int width,int height,int nfps,int nSanplePsec,int nchannels,int nBitPerSample,
  57. int nmaxspacing,int nquality,int nOutBitRate, int iAudioType);
  58. BOOL IsCodecAvailable(GUID inMajortype, GUID inSubtype, BYTE ** outMt);
  59. HRESULT GetMediaTypeDetails(IWMMediaProps * pProps, BYTE** outDetails);
  60. HRESULT wmCopyMediaType(WM_MEDIA_TYPE** ppmtDest, WM_MEDIA_TYPE* pmtSrc);
  61. QWORD GetTimeStamp();//得到当前时间戳
  62. HRESULT ConnectionStreamType(WCHAR * inConnectionName, GUID* outType);
  63. public:
  64. BOOL InitWmvWriter(char* filename,int width,int height,int colorbit,int nfps,
  65. int nSanplePsec,int nchannels,int nBitPerSample,int nmaxspacing,int nquality,int nOutBitRate, int iAudioType);
  66. BOOL StartWrite();
  67. BOOL End();
  68. BOOL ReceiveAudioData(BYTE*pData,DWORD len);
  69. BOOL ReceiveVideoData(BYTE*pData,DWORD len);
  70. };
  71. #endif // !defined(AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_)