www.pudn.com > filterasfmuxer_2008_01_23.rar > CFilterASFMuxer.h


// 
// CFilterASFMuxer.h 
// 
/** 
 ** Copyright (C) 2005 EnjoyView Inc., all rights reserved. 
 **           Your View, Our Passion. Just Enjoy It! 
 ** 
 **            http://spaces.msn.com/members/jemylu 
 ** 
 **/ 
 
/*************************************************************************/ 
 
#ifndef __CFilterASFMuxer_h__ 
#define __CFilterASFMuxer_h__ 
 
#include "defines.h" 
#include "CASFMuxer.h" 
 
class CFilterASFMuxer : public CBaseFilter 
					  , public IFileSinkFilter 
{ 
	friend class CXRenderedPin; 
	friend class CAudioInputPin; 
	friend class CVideoInputPin; 
 
public: 
	CFilterASFMuxer(LPUNKNOWN lpunk, HRESULT *phr); 
	virtual ~CFilterASFMuxer(); 
 
	static CUnknown * WINAPI CreateInstance(LPUNKNOWN pUnknown, HRESULT * phr); 
	DECLARE_IUNKNOWN 
	// Basic COM - used here to reveal our own interfaces 
	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv); 
	// Pin enumeration 
    CBasePin * GetPin(int n); 
    int GetPinCount(); 
 
	// Open and close the file as necessary 
	STDMETHODIMP Run(REFERENCE_TIME tStart); 
	STDMETHODIMP Pause(); 
	STDMETHODIMP Stop(); 
 
	HRESULT XEndOfStream(void); 
	HRESULT XCompleteConnect(PIN_ID inPinID); 
	HRESULT ReceiveVideo(IMediaSample * pSample); 
	HRESULT ReceiveAudio(IMediaSample * pSample); 
 
	BOOL IsAudioPinConnected(void); 
	BOOL IsVideoPinConnected(void); 
	CMediaType& GetAudioMediaType(void); 
	CMediaType& GetVideoMediaType(void); 
 
	// --- IFileSinkFilter methods --- 
    STDMETHODIMP SetFileName(LPCOLESTR pszFileName, const AM_MEDIA_TYPE *pmt); 
    STDMETHODIMP GetCurFile(LPOLESTR * ppszFileName, AM_MEDIA_TYPE *pmt); 
 
private: 
	CCritSec			mSyncFilter; 
	CPosPassThru *		mPosition;  
	CAudioInputPin *	mAudioPin; 
	CVideoInputPin *	mVideoPin; 
 
	CASFMuxer *			mMuxer;	 
}; 
 
#endif //__CFilterASFMuxer_h__