2025-11-28 00:35:46 +09:00

140 lines
5.3 KiB
C++

//***************************************************************************
//
// Microsoft Windows Media
// Copyright (C) Microsoft Corporation. All rights reserved.
//
// FileName: Append.h
//
// Abstract: Definition of class CAppend
//
//*****************************************************************************
#if !defined(AFX_APPEND_H__7A75BCE7_12D1_48BC_8259_B6DE4E3685DD__INCLUDED_)
#define AFX_APPEND_H__7A75BCE7_12D1_48BC_8259_B6DE4E3685DD__INCLUDED_
#define WMVAPPEND_ASYNC_EVENT _T( "ef30d794-80b3-4cfa-b241-d7d10fcd4c91" )
//////////////////////////////////////////////////////////////////////////////
class CAppend :public IWMReaderCallback, public IWMReaderCallbackAdvanced
{
public:
CAppend();
~CAppend();
//
// Methods of IWMReaderCallback
//
HRESULT STDMETHODCALLTYPE OnSample( /* [in] */ DWORD dwOutputNum,
/* [in] */ QWORD cnsSampleTime,
/* [in] */ QWORD cnsSampleDuration,
/* [in] */ DWORD dwFlags,
/* [in] */ INSSBuffer __RPC_FAR * pSample,
/* [in] */ void __RPC_FAR * pvContext);
HRESULT STDMETHODCALLTYPE OnStatus( /* [in] */ WMT_STATUS Status,
/* [in] */ HRESULT hr,
/* [in] */ WMT_ATTR_DATATYPE dwType,
/* [in] */ BYTE __RPC_FAR * pValue,
/* [in] */ void __RPC_FAR * pvContext);
//
// Methhods of IWMReaderCallbackAdvanced
//
HRESULT STDMETHODCALLTYPE OnStreamSample( /* [in] */ WORD wStreamNum,
/* [in] */ QWORD cnsSampleTime,
/* [in] */ QWORD cnsSampleDuration,
/* [in] */ DWORD dwFlags,
/* [in] */ INSSBuffer __RPC_FAR * pSample,
/* [in] */ void __RPC_FAR * pvContext);
HRESULT STDMETHODCALLTYPE OnTime( /* [in] */ QWORD cnsCurrentTime,
/* [in] */ void __RPC_FAR * pvContext);
HRESULT STDMETHODCALLTYPE OnStreamSelection( /* [in] */ WORD wStreamCount,
/* [in] */ WORD __RPC_FAR * pStreamNumbers,
/* [in] */ WMT_STREAM_SELECTION __RPC_FAR * pSelections,
/* [in] */ void __RPC_FAR * pvContext)
{
return( S_OK );
}
HRESULT STDMETHODCALLTYPE OnOutputPropsChanged( /* [in] */ DWORD dwOutputNum,
/* [in] */ WM_MEDIA_TYPE __RPC_FAR * pMediaType,
/* [in] */ void __RPC_FAR * pvContext)
{
return( S_OK );
}
HRESULT STDMETHODCALLTYPE AllocateForStream( /* [in] */ WORD wStreamNum,
/* [in] */ DWORD cbBuffer,
/* [out] */ INSSBuffer __RPC_FAR *__RPC_FAR * ppBuffer,
/* [in] */ void __RPC_FAR * pvContext)
{
return( E_NOTIMPL );
}
HRESULT STDMETHODCALLTYPE AllocateForOutput( /* [in] */ DWORD dwOutputNum,
/* [in] */ DWORD cbBuffer,
/* [out] */ INSSBuffer __RPC_FAR *__RPC_FAR * ppBuffer,
/* [in] */ void __RPC_FAR * pvContext)
{
return( E_NOTIMPL );
}
//
// Methods of IUnknown
//
HRESULT STDMETHODCALLTYPE QueryInterface( /* [in] */ REFIID riid,
/* [out] */ void ** ppvObject );
ULONG STDMETHODCALLTYPE AddRef( void );
ULONG STDMETHODCALLTYPE Release( void );
HRESULT StartAppending();
HRESULT Configure( __in LPWSTR pwszOutFile );
HRESULT CompareProfiles( __in LPWSTR pwszFirstInfile, __in LPWSTR pwszSecondInfile, BOOL * pIsEqual );
HRESULT Exit();
HRESULT Init();
private:
HRESULT IsFileProtected( __in LPWSTR pswzFileName);
HRESULT CopyAllMarkers();
HRESULT CopyAttribute( WORD nInStreamNum, WORD nOutStreamNum, IWMHeaderInfo * pWriterHeaderInfo, LPCWSTR pwszName );
HRESULT CopyAllAttributes( IWMHeaderInfo * pWriterHeaderInfo );
HRESULT CopyCodecInfo( IWMHeaderInfo * pWriterHeaderInfo );
HRESULT CopyScript( IWMHeaderInfo * pWHdrInfo, IWMHeaderInfo * pRHdrInfo, QWORD qwTimeOffset );
HRESULT SetReceiveStreamSample( IWMReaderAdvanced * pReaderAdv, IWMProfile * pProfile, DWORD nStreamIndex );
HRESULT CopyMarkersFromHdr( IWMHeaderInfo * pRHdrInfo, IWMHeaderInfo * pWHdrInfo, QWORD qwTimeOffset );
WORD MapStreamNum( WORD dwNum );
private:
CRITICAL_SECTION m_crisecFile;
IWMHeaderInfo * m_pRdrHdrInfo2;
IWMHeaderInfo * m_pRdrHdrInfo1;
IWMProfile * m_pFirstProfile;
IWMProfile * m_pSecondProfile;
IWMWriterAdvanced * m_pWriterAdv;
IWMWriter * m_pWriter;
IWMReaderAdvanced * m_pReaderAdv2;
IWMReaderAdvanced * m_pReaderAdv1;
IWMReader * m_pReader1;
IWMReader * m_pReader2;
WORD* m_pwStreamNumMap;
DWORD m_dwStreamCount;
BOOL m_bEOF;
QWORD m_qwFirstTime;
QWORD m_qwSecondTime;
HRESULT m_hrAsync;
HANDLE m_hAsyncEvent;
short m_nCurrentFile;
LPWSTR m_pwszOutFile;
LONG m_cRef;
};
#endif // !defined(AFX_APPEND_H__7A75BCE7_12D1_48BC_8259_B6DE4E3685DD__INCLUDED_)