Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//
// FPPin.h
//
#include "FPFilter.h"
typedef enum { PS_NOSTREAMING =0, PS_STREAMING } PIN_STREAMING_STATE;
//
// CFPPin implements the output pin
//
class CFPPin : public CSourceStream, public IAMStreamConfig, public IAMBufferNegotiation { public: // --- Constructor / Destructor ---
CFPPin( CFPFilter* pFilter, HRESULT* phr, LPCWSTR pPinName );
~CFPPin();
public: // --- IUnknown ---
DECLARE_IUNKNOWN;
STDMETHODIMP NonDelegatingQueryInterface( REFIID riid, void** ppv );
public: // --- CSourceStream pure methods ---
// initialize play timing data
HRESULT OnThreadStartPlay();
// stuff an audio buffer with the current format
HRESULT FillBuffer( IN IMediaSample *pms );
// ask for buffers of the size appropriate to the agreed media type.
HRESULT DecideBufferSize( IN IMemAllocator *pIMemAlloc, OUT ALLOCATOR_PROPERTIES *pProperties );
// --- CSourceStream virtual methods ---
HRESULT GetMediaType( OUT CMediaType *pmt );
// verify we can handle this format
HRESULT CheckMediaType( IN const CMediaType *pMediaType );
HRESULT SetMediaType( IN const CMediaType *pMediaType );
// --- IAMStreamConfig ---
STDMETHODIMP SetFormat( AM_MEDIA_TYPE* pmt );
STDMETHODIMP GetFormat( AM_MEDIA_TYPE** ppmt );
STDMETHODIMP GetNumberOfCapabilities( int* piCount, int* piSize );
STDMETHODIMP GetStreamCaps( int i, AM_MEDIA_TYPE** ppmt, LPBYTE pSCC );
// --- IAMBufferNegotiation methods ---
STDMETHODIMP SuggestAllocatorProperties( const ALLOCATOR_PROPERTIES* pprop );
STDMETHODIMP GetAllocatorProperties( ALLOCATOR_PROPERTIES* pprop );
// CSourceStream methods
virtual HRESULT Deliver( IN IMediaSample* pSample );
private: // --- Members ---
CFPFilter* m_pFPFilter; // back reference to the filter
BOOL m_bFinished; // If we need to send finished message
CMSPCritSection m_Lock; // Critical section
};
// eof
|