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&amt; GetAudioMediaType(void);
CMediaType&amt; 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__