filter.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. // {0305F095-9C24-47C0-B055-1F241D4B1945}
  3. DEFINE_GUID(CLSID_VideoHozFlip,
  4. 0x305f095, 0x9c24, 0x47c0, 0xb0, 0x55, 0x1f, 0x24, 0x1d, 0x4b, 0x19, 0x45);
  5. // {5C9E728D-A3D5-422C-8403-792B640B83F2}
  6. DEFINE_GUID(CLSID_VideoGrabberRender,
  7. 0x5c9e728d, 0xa3d5, 0x422c, 0x84, 0x3, 0x79, 0x2b, 0x64, 0xb, 0x83, 0xf2);
  8. #include <streams.h>
  9. class VideoHozFlipFilter : public CTransInPlaceFilter
  10. {
  11. public:
  12. VideoHozFlipFilter(LPUNKNOWN punk, HRESULT *phr);
  13. DECLARE_IUNKNOWN;
  14. static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);
  15. virtual HRESULT Transform(IMediaSample *pSample);
  16. virtual HRESULT CheckInputType(const CMediaType *mtIn);
  17. };
  18. class VideoGrabberRenderFilter : public CBaseRenderer
  19. {
  20. public:
  21. VideoGrabberRenderFilter(LPUNKNOWN punk, HRESULT *phr);
  22. DECLARE_IUNKNOWN;
  23. void SetCallback(void (*on_sample)(void *user_data, void *pData), void *user_data)
  24. {
  25. m_on_sample = on_sample;
  26. m_user_data = user_data;
  27. }
  28. static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);
  29. virtual HRESULT DoRenderSample(IMediaSample *pMediaSample);
  30. virtual HRESULT CheckMediaType(const CMediaType *);
  31. private:
  32. void (*m_on_sample)(void *user_data, void *pData);
  33. void *m_user_data;
  34. };