www.pudn.com > AVChat1.rar > CDXGraph.h
// // CDXGraph.h // #ifndef __H_CDXGraph__ #define __H_CDXGraph__ // Filter graph notification to the specified window #define WM_GRAPHNOTIFY (WM_USER+20) #include#include "CMsgStation.h" class CDXGraph : public CMsgStation { private: IGraphBuilder * mGraph; IMediaControl * mMediaControl; IMediaEventEx * mEvent; IBasicVideo * mBasicVideo; IBasicAudio * mBasicAudio; IVideoWindow * mVideoWindow; IMediaSeeking * mSeeking; DWORD mObjectTableEntry; // For fast reference! enum {GS_Stopped, GS_Paused, GS_Running} mGraphState; public: CDXGraph(); virtual ~CDXGraph(); public: virtual BOOL Create(void); virtual void Release(void); virtual BOOL Attach(IGraphBuilder * inGraphBuilder); IGraphBuilder * GetGraph(void); // Not outstanding reference count BOOL AddFilter(IBaseFilter * inFilter, LPCWSTR inName); BOOL ConnectFilters(IPin * inOutputPin, IPin * inInputPin, const AM_MEDIA_TYPE * inMediaType = 0); void DisconnectFilters(IPin * inOutputPin); BOOL SetDisplayWindow(HWND inWindow); BOOL SetNotifyWindow(HWND inWindow); BOOL ResizeVideoWindow(long inLeft, long inTop, long inWidth, long inHeight); void HandleEvent(WPARAM inWParam, LPARAM inLParam); BOOL Run(void); // Control filter graph BOOL Stop(void); BOOL Pause(void); BOOL IsRunning(void); // Filter graph status BOOL IsStopped(void); BOOL IsPaused(void); BOOL SetFullScreen(BOOL inEnabled); BOOL GetFullScreen(void); BOOL SetSyncSource(IBaseFilter * inFilter); BOOL SetDefaultSyncSource(void); // IMediaSeeking BOOL GetCurrentPosition(double * outPosition); BOOL GetStopPosition(double * outPosition); BOOL SetCurrentPosition(double inPosition); BOOL SetStartStopPosition(double inStart, double inStop); BOOL GetDuration(double * outDuration); BOOL SetPlaybackRate(double inRate); // Attention: range from -10000 to 0, and 0 is FULL_VOLUME. BOOL SetAudioVolume(long inVolume); long GetAudioVolume(void); // Attention: range from -10000(left) to 10000(right), and 0 is both. BOOL SetAudioBalance(long inBalance); long GetAudioBalance(void); // When using VMR, it's reliable! BOOL GetCurrentImage(const char * inFile); private: void AddToObjectTable(void) ; void RemoveFromObjectTable(void); BOOL QueryInterfaces(void); }; #endif // __H_CDXGraph__