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

DirextX编程

开发平台:

Visual C++

  1. //
  2. // CDecodedStream.h
  3. //
  4. #ifndef __H_CDecodedStream__
  5. #define __H_CDecodedStream__
  6. class CFilterMpeg2VD;
  7. class CMpegController;
  8. class CDecodedStream : public CSourceStream
  9. {
  10. friend class CFilterMpeg2VD;
  11. private:
  12. CFilterMpeg2VD *     mDecodeFilter;
  13. CMpegController *    mMpegController;
  14.  
  15. // implement IMediaPosition by passing upstream
  16.     IUnknown *   mPosition;
  17. BOOL         mFlushing;
  18. ULONG        mSamplesSent;
  19. CCritSec     mDataAccess;
  20. public:
  21. CDecodedStream(TCHAR * inObjectName, HRESULT * outResult, CFilterMpeg2VD * inFilter);
  22. ~CDecodedStream();
  23. void SetController(CMpegController * inController);
  24. // override to expose IMediaPosition
  25.     STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
  26. STDMETHODIMP BeginFlush(void);
  27. STDMETHODIMP EndFlush(void);
  28. STDMETHODIMP EndOfStream(void);
  29. HRESULT StopThreadSafely(void);
  30. HRESULT RunThreadSafely(void);
  31. protected:
  32. // Override this to provide the worker thread a means
  33.     // of processing a buffer
  34.     virtual HRESULT FillBuffer(IMediaSample *pSample); // PURE
  35. virtual HRESULT DecideBufferSize(IMemAllocator * pAllocator,
  36. ALLOCATOR_PROPERTIES *pprop); // PURE
  37. virtual HRESULT CheckMediaType(const CMediaType *mtOut);
  38. virtual HRESULT GetMediaType(int iPosition, CMediaType *pMediaType);
  39. // IQualityControl
  40. STDMETHODIMP Notify(IBaseFilter * pSender, Quality q);
  41. HRESULT CompleteConnect(IPin *pReceivePin);
  42. STDMETHODIMP QueryId(LPWSTR * Id);
  43. virtual HRESULT DoBufferProcessingLoop(void);
  44. virtual HRESULT OnThreadStartPlay(void);
  45. virtual HRESULT OnThreadDestroy(void);
  46. HRESULT DeliverCurrentPicture(IMediaSample * pSample);
  47. // Media type
  48. public:
  49.     CMediaType& CurrentMediaType(void) { return m_mt; }
  50. };
  51. #endif // __H_CDecodedStream__