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. class CDXGraph
  9. {
  10. private:
  11. IGraphBuilder *     mGraph;  
  12. IMediaControl * mMediaControl;
  13. IMediaEventEx * mEvent;
  14. IBasicVideo * mBasicVideo;
  15. IBasicAudio * mBasicAudio;
  16. IVideoWindow  * mVideoWindow;
  17. IMediaSeeking * mSeeking;
  18. DWORD mObjectTableEntry; 
  19. public:
  20. CDXGraph();
  21. virtual ~CDXGraph();
  22. public:
  23. virtual bool Create(void);
  24. virtual void Release(void);
  25. virtual bool Attach(IGraphBuilder * inGraphBuilder);
  26. IGraphBuilder * GetGraph(void); // Not outstanding reference count
  27. IMediaEventEx * GetEventHandle(void);
  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. bool ResizeVideoWindow(long inLeft, long inTop, long inWidth, long inHeight);
  33. void HandleEvent(WPARAM inWParam, LPARAM inLParam);
  34. bool Run(void);        // Control filter graph
  35. bool Stop(void);
  36. bool Pause(void);
  37. bool IsRunning(void);  // Filter graph status
  38. bool IsStopped(void);
  39. bool IsPaused(void);
  40. bool SetFullScreen(BOOL inEnabled);
  41. bool GetFullScreen(void);
  42. // IMediaSeeking
  43. bool GetCurrentPosition(double * outPosition);
  44. bool GetStopPosition(double * outPosition);
  45. bool SetCurrentPosition(double inPosition);
  46. bool SetStartStopPosition(double inStart, double inStop);
  47. bool GetDuration(double * outDuration);
  48. bool SetPlaybackRate(double inRate);
  49. // Attention: range from -10000 to 0, and 0 is FULL_VOLUME.
  50. bool SetAudioVolume(long inVolume);
  51. long GetAudioVolume(void);
  52. // Attention: range from -10000(left) to 10000(right), and 0 is both.
  53. bool SetAudioBalance(long inBalance);
  54. long GetAudioBalance(void);
  55. bool RenderFile(const char * inFile);
  56. bool SnapshotBitmap(const char * outFile);
  57. private:
  58. void AddToObjectTable(void) ;
  59. void RemoveFromObjectTable(void);
  60. bool QueryInterfaces(void);
  61. };
  62. #endif // __H_CDXGraph__