CDXGraph.h
上传用户:hhs829
上传日期:2022-06-17
资源大小:586k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //
  2. // CDXGraph.h
  3. //
  4. #ifndef __H_CDXGraph__
  5. #define __H_CDXGraph__
  6. // Filter graph notification to the specified window
  7. #define WM_GRAPHNOTIFY  (WM_USER+20)
  8. #include <streams.h>
  9. class CDXGraph
  10. {
  11. private:
  12. IGraphBuilder *     mGraph;
  13. IMediaControl * mMediaControl;
  14. IMediaEventEx * mEvent;
  15. IBasicVideo * mBasicVideo;
  16. IBasicAudio * mBasicAudio;
  17. IVideoWindow  * mVideoWindow;
  18. IMediaSeeking * mSeeking;
  19. DWORD mObjectTableEntry;
  20. public:
  21. CDXGraph();
  22. virtual ~CDXGraph();
  23. public:
  24. virtual bool Create(void);
  25. virtual void Release(void);
  26. virtual bool Attach(IGraphBuilder * inGraphBuilder);
  27. IGraphBuilder * GetGraph(void); // Not outstanding reference count
  28. bool ConnectFilters(IPin * inOutputPin, IPin * inInputPin, const AM_MEDIA_TYPE * inMediaType = 0);
  29. void DisconnectFilters(IPin * inOutputPin);
  30. bool SetDisplayWindow(HWND inWindow);
  31. bool SetNotifyWindow(HWND inWindow);
  32. void HandleEvent(WPARAM inWParam, LPARAM inLParam);
  33. bool Run(void);        // Control filter graph
  34. bool Stop(void);
  35. bool Pause(void);
  36. bool IsRunning(void);  // Filter graph status
  37. bool IsStopped(void);
  38. bool IsPaused(void);
  39. bool SetFullScreen(BOOL inEnabled);
  40. bool GetFullScreen(void);
  41. bool SetSyncSource(IBaseFilter * inFilter);
  42. bool SetDefaultSyncSource(void);
  43. // IMediaSeeking
  44. bool GetCurrentPosition(double * outPosition);
  45. bool SetCurrentPosition(double inPosition);
  46. bool GetDuration(double * outDuration);
  47. bool RenderFile(const char * inFile);
  48. bool WaitForCompletion(void);
  49. private:
  50. void AddToObjectTable(void) ;
  51. void RemoveFromObjectTable(void);
  52. bool QueryInterfaces(void);
  53. };
  54. #endif // __H_CDXGraph__