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__