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

DirextX编程

开发平台:

Visual C++

  1. //
  2. // CFilterMpeg2VD.h
  3. //
  4. #ifndef __H_CFilterMpeg2VD__
  5. #define __H_CFilterMpeg2VD__
  6. #include "IMpeg2VD.h"
  7. #include "CMpegController.h"
  8. class CFilterMpeg2VD : public CSource
  9. //   , public ISpecifyPropertyPages
  10. {
  11. friend class CMpegInputPin;
  12. friend class CDecodedStream;
  13. private:
  14. CMpegInputPin *    mMpegInputPin;
  15. CCritSec           m_csReceive;
  16. CMpegController    mMpegController;
  17. BOOL               mIsFlushing;
  18. BOOL               mEOSDelivered;
  19. BOOL               mEOSReceived;
  20. // Bitmap infomation
  21. LONG               mImageWidth;
  22. LONG               mImageHeight;
  23. LONG               mOutputImageSize;
  24. REFERENCE_TIME     mSampleDuration;
  25. private:
  26. CFilterMpeg2VD(TCHAR *tszName, LPUNKNOWN punk, HRESULT *phr);
  27. ~CFilterMpeg2VD();
  28. CDecodedStream * OutputPin() {return (CDecodedStream *) m_paStreams[0];};
  29. public:
  30. static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);
  31. DECLARE_IUNKNOWN;
  32. // Basic COM - used here to reveal our own interfaces
  33. STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
  34. // you need to supply these to access the pins from the enumerator
  35.     // and for default Stop and Pause/Run activation.
  36.     virtual int GetPinCount();
  37.     virtual CBasePin *GetPin(int n);
  38. STDMETHODIMP FindPin(LPCWSTR Id, IPin ** ppPin);
  39. STDMETHODIMP Stop();
  40. STDMETHODIMP Pause();
  41. HRESULT StartStreaming();
  42. HRESULT StopStreaming();
  43. // Input pin's delegating methods
  44. HRESULT Receive(IMediaSample *pSample);
  45. // if you override Receive, you may need to override these three too
  46. HRESULT EndOfStream(void);
  47. HRESULT BeginFlush(void);
  48. HRESULT EndFlush(void);
  49. HRESULT NewSegment(REFERENCE_TIME tStart, REFERENCE_TIME tStop, double dRate);
  50. // Output pin's delegating methods
  51. HRESULT CompleteConnect(PIN_DIRECTION inDirection, IPin * inReceivePin);
  52. // --- ISpecifyPropertyPages ---
  53. // STDMETHODIMP GetPages(CAUUID *pPages);
  54. };
  55. #endif // __H_CFilterMpeg2VD__