00001
00034 #pragma once
00035 #include <DirectShow/stdafx.h>
00036 #include <DirectShow/CStatusInterface.h>
00037 #include <DirectShow/CSettingsInterface.h>
00038
00039 using namespace std;
00040
00041 class CCustomBaseFilter : public CTransformFilter, public CSettingsInterface, public CStatusInterface
00042 {
00044 DECLARE_IUNKNOWN;
00045
00046 public:
00047 CCustomBaseFilter(TCHAR *pObjectName, LPUNKNOWN lpUnk, CLSID clsid);
00048 virtual ~CCustomBaseFilter(void);
00049
00051 virtual HRESULT CheckInputType(const CMediaType *pMediaType);
00052
00055 virtual HRESULT SetMediaType(PIN_DIRECTION direction, const CMediaType *pmt);
00056
00058
00064 HRESULT Transform(IMediaSample *pSource, IMediaSample *pDest);
00065
00067 STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void **ppv);
00068
00070 STDMETHODIMP GetParameter( const char* szParamName, char* szResult, int& length );
00071 STDMETHODIMP SetParameter( const char* szParamName, const char* szValue);
00072
00075 virtual void InitialiseInputTypes() PURE;
00076
00077 protected:
00083 void AddInputType(const GUID* pType, const GUID* pSubType, const GUID* pFormat);
00084
00089 virtual DWORD ApplyTransform(BYTE* pBufferIn, BYTE* pBufferOut) PURE;
00090
00092 VIDEOINFOHEADER m_videoInHeader;
00094 VIDEOINFOHEADER m_videoOutHeader;
00095
00097 int m_nInHeight;
00099 int m_nInWidth;
00101 int m_nInPixels;
00103 int m_nOutHeight;
00105 int m_nOutWidth;
00107 int m_nOutPixels;
00109 int m_nBitCount;
00110
00111 private:
00112
00113 GUIDList_t m_vInTypes;
00114 GUIDList_t m_vInSubTypes;
00115 GUIDList_t m_vInFormats;
00116 };