| //------------------------------------------------------------------------------ | |
| // File: AMExtra.h | |
| // | |
| // Desc: DirectShow base classes. | |
| // | |
| // Copyright (c) 1992-2001 Microsoft Corporation. All rights reserved. | |
| //------------------------------------------------------------------------------ | |
| #ifndef __AMEXTRA__ | |
| #define __AMEXTRA__ | |
| // Simple rendered input pin | |
| // | |
| // NOTE if your filter queues stuff before rendering then it may not be | |
| // appropriate to use this class | |
| // | |
| // In that case queue the end of stream condition until the last sample | |
| // is actually rendered and flush the condition appropriately | |
| class CRenderedInputPin : public CBaseInputPin | |
| { | |
| public: | |
| CRenderedInputPin(__in_opt LPCTSTR pObjectName, | |
| __in CBaseFilter *pFilter, | |
| __in CCritSec *pLock, | |
| __inout HRESULT *phr, | |
| __in_opt LPCWSTR pName); | |
| #ifdef UNICODE | |
| CRenderedInputPin(__in_opt LPCSTR pObjectName, | |
| __in CBaseFilter *pFilter, | |
| __in CCritSec *pLock, | |
| __inout HRESULT *phr, | |
| __in_opt LPCWSTR pName); | |
| #endif | |
| // Override methods to track end of stream state | |
| STDMETHODIMP EndOfStream(); | |
| STDMETHODIMP EndFlush(); | |
| HRESULT Active(); | |
| HRESULT Run(REFERENCE_TIME tStart); | |
| protected: | |
| // Member variables to track state | |
| BOOL m_bAtEndOfStream; // Set by EndOfStream | |
| BOOL m_bCompleteNotified; // Set when we notify for EC_COMPLETE | |
| private: | |
| void DoCompleteHandling(); | |
| }; | |
| #endif // __AMEXTRA__ | |