// WmvWriter.h: interface for the WmvWriter class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_) #define AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "winmedia.h" #include //#include "logfile.h" //#include "SpBase.h" #define _ENABLE_VBR_ class CWmvWriter { public: CWmvWriter(); virtual ~CWmvWriter(); private://内部成员变量 IWMProfileManager * mProfileManager; IWMProfile * mProfile; IWMWriter *m_pWriter; INSSBuffer *m_pVideoSample; INSSBuffer *m_pAudioSample; INSSBuffer *m_pTextSample; QWORD m_lStartTime; GUID m_guidVideoType; int m_height; int m_width; int m_colorbit; int m_nfps; int m_nmaxspacing; DWORD m_VideoInputNum; DWORD m_AudioInputNum; DWORD m_ScriptInputNum; //CLogFile*log; private: //公共调用接口 HRESULT InitWriter(int width,int height,int nfps,int nSanplePsec,int nchannels,int nBitPerSample, int nmaxspacing,int nquality,int nOutBitRate, int iAudioType); HRESULT SetInfo(BSTR filename,int width,int height,int colorbit,int nSanplePsec,int nchannels,int nBitPerSample); HRESULT Start(); HRESULT Stop(); HRESULT ReceiveVideo(BYTE*pData,DWORD len); HRESULT ReceiveAudio(BYTE*pData,DWORD len); HRESULT ReceiveText(char*text,DWORD len); private://内部成员函数 HRESULT SetSysProfile(REFGUID guid);//设置系统生成器配置 HRESULT SetProfile(IWMProfile*pProfile); HRESULT ConfigAudioInput(); HRESULT ConfigAudioInput(GUID guidSubType, WAVEFORMATEX * inWave); HRESULT ConfigVideoInput(); HRESULT ConfigVideoInput(GUID guidSubType, WMVIDEOINFOHEADER * inVideo); HRESULT CWmvWriter::FindInputFormat(DWORD dwInput, GUID guidSubType, IWMInputMediaProps** ppProps, WM_MEDIA_TYPE** ppMediaType); HRESULT IdentifyInputsByNumber(void); HRESULT CreateProfile(int width,int height,int nfps,int nSanplePsec,int nchannels,int nBitPerSample, int nmaxspacing,int nquality,int nOutBitRate, int iAudioType); BOOL IsCodecAvailable(GUID inMajortype, GUID inSubtype, BYTE ** outMt); HRESULT GetMediaTypeDetails(IWMMediaProps * pProps, BYTE** outDetails); HRESULT wmCopyMediaType(WM_MEDIA_TYPE** ppmtDest, WM_MEDIA_TYPE* pmtSrc); QWORD GetTimeStamp();//得到当前时间戳 HRESULT ConnectionStreamType(WCHAR * inConnectionName, GUID* outType); public: BOOL InitWmvWriter(char* filename,int width,int height,int colorbit,int nfps, int nSanplePsec,int nchannels,int nBitPerSample,int nmaxspacing,int nquality,int nOutBitRate, int iAudioType); BOOL StartWrite(); BOOL End(); BOOL ReceiveAudioData(BYTE*pData,DWORD len); BOOL ReceiveVideoData(BYTE*pData,DWORD len); }; #endif // !defined(AFX_WMVWRITER_H__1DC92438_F088_481C_B60B_5BED8B2A9F58__INCLUDED_)