SampleGrabberCB.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef __SAMPLE_GRABBER_CB__
  2. #define __SAMPLE_GRABBER_CB__
  3. #pragma once
  4. #include <Dshow.h>
  5. // 别名,为解决:无法打开包括文件:"dxtrans.h": No such file or directory
  6. #pragma include_alias( "dxtrans.h", "qedit.h" )
  7. #define __IDxtCompositor_INTERFACE_DEFINED__
  8. #define __IDxtAlphaSetter_INTERFACE_DEFINED__
  9. #define __IDxtJpeg_INTERFACE_DEFINED__
  10. #define __IDxtKey_INTERFACE_DEFINED__
  11. // VS2008以上,需要将Qedit放到本地目录;
  12. #if _MSC_VER > 1500
  13. #include "qedit.h"
  14. #else
  15. #include <Qedit.h>
  16. #endif
  17. #pragma comment(lib, "Strmiids.lib")
  18. extern BOOL bOneShot;//全局变量
  19. class CSampleGrabberCB :public ISampleGrabberCB
  20. {
  21. public:
  22. CSampleGrabberCB(void);
  23. ~CSampleGrabberCB(void);
  24. public:
  25. long lWidth;
  26. long lHeight;
  27. TCHAR m_szFileName[MAX_PATH];// 位图文件名称
  28. STDMETHODIMP_(ULONG) AddRef() { return 2; }
  29. STDMETHODIMP_(ULONG) Release() { return 1; }
  30. STDMETHODIMP QueryInterface(REFIID riid, void ** ppv)
  31. {
  32. if( riid == IID_ISampleGrabberCB || riid == IID_IUnknown )
  33. {
  34. *ppv = (void *)this;
  35. return NOERROR;
  36. }
  37. return E_NOINTERFACE;
  38. }
  39. STDMETHODIMP SampleCB( double SampleTime, IMediaSample * pSample ){
  40. return 0;
  41. }
  42. STDMETHODIMP BufferCB( double dblSampleTime, BYTE * pBuffer, long lBufferSize );
  43. BOOL SaveBitmap(BYTE * pBuffer, long lBufferSize );
  44. };
  45. extern CSampleGrabberCB mCB;
  46. #endif