MultiIOOutputPin.h

Go to the documentation of this file.
00001 
00034 #pragma once
00035 
00036 #pragma warning(push)     // disable for this header only
00037 #pragma warning(disable:4312)
00038 // DirectShow
00039 #include <streams.h>
00040 #pragma warning(pop)      // restore original warning level
00041 
00042 class CMultiIOOutputPin : public CBaseOutputPin
00043 {
00044         friend class CMultiIOBaseFilter;
00045         friend class CMultiIOInputPin;
00046 public:
00047         CMultiIOOutputPin(CMultiIOBaseFilter* pFilter, CCritSec* pLock, HRESULT* phr, LPCWSTR pName, int nIndex);
00048         virtual ~CMultiIOOutputPin(void);
00049 
00050         // lifetime management for pins is normally delegated to the filter, but
00051         // we need to be able to create and delete them independently, so keep 
00052         // a separate refcount.
00053         STDMETHODIMP_(ULONG) NonDelegatingRelease()
00054         {
00055                 return CUnknown::NonDelegatingRelease();
00056         }
00057         STDMETHODIMP_(ULONG) NonDelegatingAddRef()
00058         {
00059                 return CUnknown::NonDelegatingAddRef();
00060         }
00061 
00062         HRESULT CompleteConnect(IPin *pReceivePin);
00063 
00064         // From CBaseOutputPin
00065         virtual HRESULT DecideBufferSize(IMemAllocator* pAlloc, ALLOCATOR_PROPERTIES* pRequestProperties);
00066         // From CBasePin
00067         virtual HRESULT CheckMediaType(const CMediaType* pMediaType);
00068 
00069         HRESULT GetMediaType(int iPosition, CMediaType* pmt);
00070 
00071         // inherited from IQualityControl via CBasePin
00072         STDMETHODIMP Notify(IBaseFilter * pSender, Quality q);
00073 
00074         IMemAllocator* GetAllocator(){return m_pAllocator;}
00075         IMemInputPin* GetInputPin(){return m_pInputPin;}
00076 
00077         // Overridden to create output queue's
00078         HRESULT Active();
00079         HRESULT Inactive();
00080         HRESULT Deliver(IMediaSample *pMediaSample);
00081         HRESULT DeliverEndOfStream();
00082         HRESULT DeliverBeginFlush();
00083         HRESULT DeliverEndFlush();
00084         HRESULT DeliverNewSegment(
00085                 REFERENCE_TIME tStart,
00086                 REFERENCE_TIME tStop,
00087                 double dRate);
00088 
00089 protected:
00090         CMultiIOBaseFilter* m_pFilter;
00091         int m_nIndex;
00092 
00093         COutputQueue* m_pOutputQueue;
00094 };

Generated on Fri Mar 13 14:12:38 2009 for RTVC by  doxygen 1.5.3