📄 t2ps.h
字号:
//------------------------------------------------------------------------------
// File: T2ps.h
//
// Desc: DirectShow sample code - definitions for T2ps renderer.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
class CT2psInputPin;
class CT2ps;
class CT2psFilter;
#define BYTES_PER_LINE 20
#define FIRST_HALF_LINE TEXT (" %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x")
#define SECOND_HALF_LINE TEXT (" %2x %2x %2x %2x %2x %2x %2x %2x %2x %2x")
// Main filter object
class CT2psFilter : public CBaseFilter
{
CT2ps * const m_pT2ps;
public:
// Constructor
CT2psFilter(CT2ps *pT2ps,
LPUNKNOWN pUnk,
CCritSec *pLock,
HRESULT *phr);
// Pin enumeration
CBasePin * GetPin(int n);
int GetPinCount();
// Open and close the file as necessary
STDMETHODIMP Run(REFERENCE_TIME tStart);
STDMETHODIMP Pause();
STDMETHODIMP Stop();
};
// Pin object
class CT2psInputPin : public CRenderedInputPin
{
CT2ps * const m_pT2ps; // Main renderer object
CCritSec * const m_pReceiveLock; // Sample critical section
REFERENCE_TIME m_tLast; // Last sample receive time
public:
CT2psInputPin(CT2ps *pT2ps,
LPUNKNOWN pUnk,
CBaseFilter *pFilter,
CCritSec *pLock,
CCritSec *pReceiveLock,
HRESULT *phr);
// Do something with this media sample
STDMETHODIMP Receive(IMediaSample *pSample);
STDMETHODIMP EndOfStream(void);
STDMETHODIMP ReceiveCanBlock();
// Write detailed information about this sample to a file
HRESULT WriteStringInfo(IMediaSample *pSample);
// Check if the pin can support this specific proposed type and format
HRESULT CheckMediaType(const CMediaType *);
// Break connection
HRESULT BreakConnect();
// Track NewSegment
STDMETHODIMP NewSegment(REFERENCE_TIME tStart,
REFERENCE_TIME tStop,
double dRate);
};
// CT2ps object which has filter and pin members
class CT2ps : public CUnknown, public IFileSinkFilter
{
friend class CT2psFilter;
friend class CT2psInputPin;
CT2psFilter *m_pFilter; // Methods for filter interfaces
CT2psInputPin *m_pPin; // A simple rendered input pin
CCritSec m_Lock; // Main renderer critical section
CCritSec m_ReceiveLock; // Sublock for received samples
CPosPassThru *m_pPosition; // Renderer position controls
HANDLE m_hFile; // Handle to file for T2psing
LPOLESTR m_pFileName; // The filename where we T2ps
BOOL m_fWriteError;
public:
DECLARE_IUNKNOWN
CT2ps(LPUNKNOWN pUnk, HRESULT *phr);
~CT2ps();
static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);
// Write string, followed by CR/LF, to a file
void WriteString(TCHAR *pString);
// Write raw data stream to a file
HRESULT Write(PBYTE pbData, LONG lDataLength);
// Implements the IFileSinkFilter interface
STDMETHODIMP SetFileName(LPCOLESTR pszFileName,const AM_MEDIA_TYPE *pmt);
STDMETHODIMP GetCurFile(LPOLESTR * ppszFileName,AM_MEDIA_TYPE *pmt);
private:
// Overriden to say what interfaces we support where
STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);
// Open and write to the file
HRESULT OpenFile();
HRESULT CloseFile();
HRESULT HandleWriteFailure();
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -