123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- #ifndef __TRANSFRM__
- #define __TRANSFRM__
- class CTransformFilter;
- class CTransformInputPin : public CBaseInputPin
- {
- friend class CTransformFilter;
- protected:
- CTransformFilter *m_pTransformFilter;
- public:
- CTransformInputPin(
- __in_opt LPCTSTR pObjectName,
- __inout CTransformFilter *pTransformFilter,
- __inout HRESULT * phr,
- __in_opt LPCWSTR pName);
- #ifdef UNICODE
- CTransformInputPin(
- __in_opt LPCSTR pObjectName,
- __inout CTransformFilter *pTransformFilter,
- __inout HRESULT * phr,
- __in_opt LPCWSTR pName);
- #endif
- STDMETHODIMP QueryId(__deref_out LPWSTR * Id)
- {
- return AMGetWideString(L"In", Id);
- }
-
- HRESULT CheckConnect(IPin *pPin);
- HRESULT BreakConnect();
- HRESULT CompleteConnect(IPin *pReceivePin);
-
- HRESULT CheckMediaType(const CMediaType* mtIn);
-
- HRESULT SetMediaType(const CMediaType* mt);
-
-
-
-
- STDMETHODIMP Receive(IMediaSample * pSample);
-
-
- STDMETHODIMP EndOfStream(void);
-
- STDMETHODIMP BeginFlush(void);
-
- STDMETHODIMP EndFlush(void);
- STDMETHODIMP NewSegment(
- REFERENCE_TIME tStart,
- REFERENCE_TIME tStop,
- double dRate);
-
- virtual HRESULT CheckStreaming();
-
- public:
- CMediaType& CurrentMediaType() { return m_mt; };
- };
- class CTransformOutputPin : public CBaseOutputPin
- {
- friend class CTransformFilter;
- protected:
- CTransformFilter *m_pTransformFilter;
- public:
-
- IUnknown * m_pPosition;
- CTransformOutputPin(
- __in_opt LPCTSTR pObjectName,
- __inout CTransformFilter *pTransformFilter,
- __inout HRESULT * phr,
- __in_opt LPCWSTR pName);
- #ifdef UNICODE
- CTransformOutputPin(
- __in_opt LPCSTR pObjectName,
- __inout CTransformFilter *pTransformFilter,
- __inout HRESULT * phr,
- __in_opt LPCWSTR pName);
- #endif
- ~CTransformOutputPin();
-
- STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, __deref_out void **ppv);
-
- STDMETHODIMP QueryId(__deref_out LPWSTR * Id)
- {
- return AMGetWideString(L"Out", Id);
- }
-
- HRESULT CheckConnect(IPin *pPin);
- HRESULT BreakConnect();
- HRESULT CompleteConnect(IPin *pReceivePin);
-
- HRESULT CheckMediaType(const CMediaType* mtOut);
-
- HRESULT SetMediaType(const CMediaType *pmt);
-
-
- HRESULT DecideBufferSize(
- IMemAllocator * pAlloc,
- __inout ALLOCATOR_PROPERTIES *pProp);
-
- HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType);
-
- STDMETHODIMP Notify(IBaseFilter * pSender, Quality q);
-
- public:
- CMediaType& CurrentMediaType() { return m_mt; };
- };
- class AM_NOVTABLE CTransformFilter : public CBaseFilter
- {
- public:
-
-
- virtual int GetPinCount();
- virtual CBasePin * GetPin(int n);
- STDMETHODIMP FindPin(LPCWSTR Id, __deref_out IPin **ppPin);
-
-
- STDMETHODIMP Stop();
- STDMETHODIMP Pause();
- public:
- CTransformFilter(__in_opt LPCTSTR , __inout_opt LPUNKNOWN, REFCLSID clsid);
- #ifdef UNICODE
- CTransformFilter(__in_opt LPCSTR , __inout_opt LPUNKNOWN, REFCLSID clsid);
- #endif
- ~CTransformFilter();
-
-
-
-
- virtual HRESULT Transform(IMediaSample * pIn, IMediaSample *pOut);
-
- virtual HRESULT CheckInputType(const CMediaType* mtIn) PURE;
-
- virtual HRESULT CheckTransform(const CMediaType* mtIn, const CMediaType* mtOut) PURE;
-
-
-
- virtual HRESULT DecideBufferSize(
- IMemAllocator * pAllocator,
- __inout ALLOCATOR_PROPERTIES *pprop) PURE;
-
- virtual HRESULT GetMediaType(int iPosition, __inout CMediaType *pMediaType) PURE;
-
-
-
-
- virtual HRESULT StartStreaming();
- virtual HRESULT StopStreaming();
-
- virtual HRESULT AlterQuality(Quality q);
-
- virtual HRESULT SetMediaType(PIN_DIRECTION direction,const CMediaType *pmt);
-
- virtual HRESULT CheckConnect(PIN_DIRECTION dir,IPin *pPin);
- virtual HRESULT BreakConnect(PIN_DIRECTION dir);
- virtual HRESULT CompleteConnect(PIN_DIRECTION direction,IPin *pReceivePin);
-
- virtual HRESULT Receive(IMediaSample *pSample);
-
- HRESULT InitializeOutputSample(IMediaSample *pSample, __deref_out IMediaSample **ppOutSample);
-
- virtual HRESULT EndOfStream(void);
- virtual HRESULT BeginFlush(void);
- virtual HRESULT EndFlush(void);
- virtual HRESULT NewSegment(
- REFERENCE_TIME tStart,
- REFERENCE_TIME tStop,
- double dRate);
- #ifdef PERF
-
-
- virtual void RegisterPerfId()
- {m_idTransform = MSR_REGISTER(TEXT("Transform"));}
- #endif
- protected:
- #ifdef PERF
- int m_idTransform;
- #endif
- BOOL m_bEOSDelivered;
- BOOL m_bSampleSkipped;
- BOOL m_bQualityChanged;
-
- CCritSec m_csFilter;
-
-
-
-
-
-
-
-
- CCritSec m_csReceive;
-
- friend class CTransformInputPin;
- friend class CTransformOutputPin;
- CTransformInputPin *m_pInput;
- CTransformOutputPin *m_pOutput;
- };
- #endif
|