122 lines
3.2 KiB
C++
122 lines
3.2 KiB
C++
// This is a class to stream data cusomizable by
|
|
// the things we want to vary :
|
|
//
|
|
// Data
|
|
// Iterations
|
|
//
|
|
|
|
#include "Error.h"
|
|
|
|
class CTest
|
|
{
|
|
public:
|
|
CTest(LPCTSTR lpszCurrentTest,
|
|
REFCLSID rclsidObject,
|
|
LPCTSTR lpszTestFile,
|
|
LONGLONG llTimeOffset = 0) :
|
|
m_lpszCurrentTest(lpszCurrentTest),
|
|
m_pszTestFile(lpszTestFile),
|
|
m_pObject(NULL),
|
|
m_clsid(rclsidObject),
|
|
m_llTimeOffset(llTimeOffset),
|
|
m_sampleCounter(0)
|
|
{}
|
|
|
|
~CTest() {
|
|
delete m_pObject;
|
|
m_pObject = NULL;
|
|
}
|
|
|
|
HRESULT SimpleStream();
|
|
|
|
virtual HRESULT InitObject()
|
|
{
|
|
m_pObject = new CDMOObject;
|
|
if (m_pObject == NULL) {
|
|
Error(ERROR_TYPE_TEST, E_OUTOFMEMORY, TEXT("Not enough memory"));
|
|
g_IShell->Log(1, "TEST ERROR: Not enough memory");
|
|
return E_OUTOFMEMORY;
|
|
}
|
|
return m_pObject->Create(m_clsid, FALSE);
|
|
}
|
|
|
|
virtual HRESULT ProcessType(DWORD dwStreamId, DMO_MEDIA_TYPE *pmt);
|
|
virtual HRESULT ProcessSample(DWORD dwStreamId,
|
|
DWORD dwFlags,
|
|
LONGLONG llStartTime,
|
|
LONGLONG llLength,
|
|
BYTE *pbData,
|
|
DWORD cbData);
|
|
virtual HRESULT ProcessOutput(DWORD dwOutputStreamIndex,
|
|
DWORD dwFlags,
|
|
PBYTE pbData,
|
|
DWORD cbData,
|
|
LONGLONG llTime,
|
|
LONGLONG llLength);
|
|
virtual HRESULT ProcessOutputTypeChange(
|
|
DWORD dwOutputStreamIndex,
|
|
const DMO_MEDIA_TYPE *pmt) = 0;
|
|
|
|
virtual HRESULT EndOfData();
|
|
|
|
HRESULT ProcessOutputs();
|
|
HRESULT ProcessOutputZero();
|
|
// Object
|
|
CDMOObject *m_pObject;
|
|
|
|
// clsid
|
|
CLSID m_clsid;
|
|
|
|
// Test name - should this be thread local?
|
|
LPCTSTR m_lpszCurrentTest;
|
|
|
|
// Test file
|
|
LPCTSTR m_pszTestFile;
|
|
|
|
// Time offset
|
|
LONGLONG m_llTimeOffset;
|
|
|
|
// sample counter
|
|
int m_sampleCounter;
|
|
};
|
|
|
|
// Save to disk simple test
|
|
class CTestSaveToFile : public CTest
|
|
{
|
|
public:
|
|
CTestSaveToFile(
|
|
REFCLSID rclsidObject,
|
|
LPCTSTR lpszInputDataFile,
|
|
LPCTSTR lpszOutputDataFile,
|
|
LONGLONG llTimeOffset
|
|
) :
|
|
CTest(TEXT("Save data to file"),
|
|
rclsidObject,
|
|
lpszInputDataFile,
|
|
llTimeOffset),
|
|
m_pszOutputFile(lpszOutputDataFile)
|
|
{
|
|
}
|
|
|
|
HRESULT ProcessOutput(DWORD dwOutputStreamIndex,
|
|
DWORD dwFlags,
|
|
PBYTE pbData,
|
|
DWORD cbData,
|
|
LONGLONG llTime,
|
|
LONGLONG llLength);
|
|
|
|
HRESULT ProcessOutputTypeChange(
|
|
DWORD dwOutputStreamIndex,
|
|
const DMO_MEDIA_TYPE *pmt);
|
|
|
|
|
|
|
|
HRESULT Save();
|
|
|
|
LPCTSTR m_pszOutputFile;
|
|
|
|
CTestFileWrite m_FileWrite;
|
|
|
|
};
|
|
|