www.pudn.com > 摄像头捕获C++类.rar > MyCapVideo.h


//MyCapVideo.h 
 
#pragma once 
 
#include "Dshow.h" 
 
#define SAFE_RELEASE(x) { if (x) x->Release(); x = NULL; } 
 
class MyCapVideo 
{ 
public: 
 
	enum EnumType 
	{ 
		EnumAudioCapFilter, 
		EnumAudioCompressFilter, 
		EnumVideoCapFilter, 
		EnumVideoCompressFilter 
	} ; 
 
public: 
 
	char szCaptureFile[MAX_PATH]; 
	WORD wCapFileSize; // size in Meg 
 
	ICaptureGraphBuilder2 *pBuilder; 
	IGraphBuilder *pFg; 
	IBaseFilter *pVCap, *pACap; 
	IBaseFilter *pVCP,*pACP; //压缩 
	IBaseFilter *pAM; //Avi Muxer 
	IBaseFilter *pFW; //File Writter 
	IFileSinkFilter *pSink; 
 
	IBaseFilter *pRender; 
	IConfigAviMux *pConfigAviMux; 
 
	IVideoWindow *pVW; 
	IMediaControl *pMC; 
	IMediaEventEx *pME; 
	IAMDroppedFrames *pDF; 
	IAMVideoCompression *pVC; 
	IAMVfwCaptureDialogs *pDlg; 
	IAMStreamConfig *pASC; // for audio cap 
	IAMStreamConfig *pVSC; // for video cap 
 
	int iMasterStream; 
	BOOL fCaptureGraphBuilt; 
	BOOL fPreviewGraphBuilt; 
	BOOL fCapturing; 
	BOOL fPreviewing; 
	BOOL fCapAudio; 
	int iVideoDevice; 
	int iAudioDevice; 
	double FrameRate; 
	BOOL fWantPreview; 
	long lCapStartTime; 
	long lCapStopTime; 
	char achFriendlyName[120]; 
	BOOL fUseTimeLimit; 
	DWORD dwTimeLimit; 
//  debug 
	DWORD g_dwGraphRegister; 
	BOOL bGraphBuilt; //是否创建过 
 
public: 
	MyCapVideo(); 
	~MyCapVideo(); 
 
 
	HRESULT GetInterfaces(void); 
	void CloseInterfaces(void); 
 
	void SetCapDevice(); 
	int EnumFilters(EnumType enum_type, bool Visit(MyCapVideo *m_cap,IBaseFilter *pFilter,CString Name)); 
 
	/* 
	int EnumVideoCapFilters(IBaseFilter **pVCap,CString &Name); 
	int EnumVideoCompressFilters(IBaseFilter **pCCap,CString &Name); 
	int EnumAudioCapFilters(IBaseFilter **pVCap,CString &Name); 
	int EnumAudioCompressFilters(IBaseFilter **pACP,CString &Name); 
	*/	 
 
	HRESULT ConnectFilters(IBaseFilter* pUpFilter, IBaseFilter* pDownFilter); 
 
	HRESULT AddGraphToRot(IUnknown *pUnkGraph, DWORD *pdwRegister) ; 
	void RemoveGraphFromRot(DWORD pdwRegister); 
 
	bool MyCapVideo::CaptureToFile(LPTSTR AviFileName); 
	bool MyCapVideo::StopCapture(); 
 
 
}; 
 
bool SetAudioDevice(MyCapVideo *m_cap,IBaseFilter *pFilter,CString Name); 
bool SetAudioCompress(MyCapVideo *m_cap,IBaseFilter *pFilter,CString Name); 
bool SetVideoDevice(MyCapVideo *m_cap,IBaseFilter *pFilter,CString Name); 
bool SetVideoCompress(MyCapVideo *m_cap,IBaseFilter *pFilter,CString Name);