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 <stdio.h>
#include "defines.h"

#pragma warning(disable:4268)
#include <wmsdk.h>

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&amt; inMediaType);
BOOL IsRawMediaType(WM_MEDIA_TYPE&amt; 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__