CDXGraph.h
上传用户:tuheem
上传日期:2007-05-01
资源大小:21889k
文件大小:2k
- //
- // CDXGraph.h
- //
- #ifndef __H_CDXGraph__
- #define __H_CDXGraph__
- // Filter graph notification to the specified window
- #define WM_GRAPHNOTIFY (WM_USER+20)
- class CDXGraph
- {
- private:
- IGraphBuilder * mGraph;
- IMediaControl * mMediaControl;
- IMediaEventEx * mEvent;
- IBasicVideo * mBasicVideo;
- IBasicAudio * mBasicAudio;
- IVideoWindow * mVideoWindow;
- IMediaSeeking * mSeeking;
- DWORD mObjectTableEntry;
- public:
- CDXGraph();
- virtual ~CDXGraph();
- public:
- virtual bool Create(void);
- virtual void Release(void);
- virtual bool Attach(IGraphBuilder * inGraphBuilder);
- HRESULT QueryInterface(REFIID inIID, void ** ppvObject);
- IGraphBuilder * GetGraph(void); // Not outstanding reference count
- IMediaEventEx * GetEventHandle(void);
- 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);
- // 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);
- bool RenderFile(const char * inFile);
- private:
- void AddToObjectTable(void) ;
- void RemoveFromObjectTable(void);
-
- bool QueryInterfaces(void);
- };
- #endif // __H_CDXGraph__