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


// 
// CASFMuxer.h 
// 
/** 
 ** Copyright (C) 2005 EnjoyView Inc., all rights reserved. 
 **           Your View, Our Passion. Just Enjoy It! 
 ** 
 **            http://spaces.msn.com/members/jemylu 
 ** 
 **/ 
 
/*************************************************************************/ 
 
#ifndef __H_CASFMuxer__ 
#define __H_CASFMuxer__ 
 
const WORD cAudioStreamNum = 1;//6; 
const WORD cVideoStreamNum = 2;//8; //Harley 2007.07.05 
 
#include  
#include "defines.h" 
 
#pragma warning(disable:4268) 
#include  
 
class CFilterASFMuxer; 
class CASFMuxer 
{ 
public: 
	CASFMuxer(CFilterASFMuxer * inFilter); 
	~CASFMuxer(); 
 
	HRESULT SetDestFile(LPCOLESTR pFile); 
	HRESULT GetDestFile(LPOLESTR * ppFile);	 
 
	HRESULT StartStreaming(void); 
	HRESULT StopStreaming(void); 
 
	HRESULT ReceiveAudio(IMediaSample * pSample); 
	HRESULT ReceiveVideo(IMediaSample * pSample); 
 
private: 
	HRESULT CreateProfile(void); 
	HRESULT CreateWriter(void); 
	HRESULT ConfigWriter(void); 
 
	HRESULT WriteHeader(const WCHAR * pwszName, WCHAR * pValue); 
	DWORD	GetVideoBitrate(WM_MEDIA_TYPE& inMediaType); 
	BOOL	IsRawMediaType(WM_MEDIA_TYPE& inMediaType); 
 
private: 
	CCritSec			mSyncMux; 
	CFilterASFMuxer *	mFilter; 
	WCHAR				mDestFile[MAX_PATH]; 
 
	IWMProfileManager *	mProfileManager; 
	IWMProfile *		mProfile;	 
	IWMWriter*			mWriter; 
	IWMHeaderInfo*		mIHeaderInfo; 
	IWMWriterAdvanced*	mIWriterAdvanced;	 
	IWMWriterAdvanced3*	mIWriterAdvanced3; 
 
	// Current stream time 
	REFERENCE_TIME		mAudioTime; 
	REFERENCE_TIME		mVideoTime; 
 
#ifdef _DEBUG 
	FILE *		m_fpDump; 
 
	void DbgDumpStatistics(WORD inStreamNum); 
#endif // _DEBUG 
}; 
 
#endif // __H_CASFMuxer__