WmvWriter.h 2.8 KB

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