Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
FNA/lib/FAudio/cpp/XAPOBase.h
96 lines | 2.9 KiB | text/x-c | CLexer
#ifndef FACT_CPP_XAPOBASE_H
#define FACT_CPP_XAPOBASE_H
#include "XAPO.h"
#include <FAPOBase.h>
typedef FAPORegistrationProperties XAPO_REGISTRATION_PROPERTIES;
class CXAPOBase : public IXAPO
{
protected:
// for CXAPOParametersBase and other derived classes that wrap FAPO structs
CXAPOBase(FAPOBase *base);
public:
CXAPOBase(
const XAPO_REGISTRATION_PROPERTIES* pRegistrationProperties,
BYTE* pParameterBlocks = NULL,
UINT32 uParameterBlockByteSize = 0,
BOOL fProducer = 0);
virtual ~CXAPOBase();
COM_METHOD(HRESULT) QueryInterface(REFIID riid, void** ppInterface);
COM_METHOD(ULONG) AddRef();
COM_METHOD(ULONG) Release();
COM_METHOD(HRESULT) GetRegistrationProperties (XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties);
COM_METHOD(HRESULT) IsInputFormatSupported (
const WAVEFORMATEX* pOutputFormat,
const WAVEFORMATEX* pRequestedInputFormat,
WAVEFORMATEX** ppSupportedInputFormat);
COM_METHOD(HRESULT) IsOutputFormatSupported (
const WAVEFORMATEX* pInputFormat,
const WAVEFORMATEX* pRequestedOutputFormat,
WAVEFORMATEX** ppSupportedOutputFormat);
COM_METHOD(HRESULT) Initialize(const void*pData, UINT32 DataByteSize);
COM_METHOD(void) Reset();
COM_METHOD(HRESULT) LockForProcess (
UINT32 InputLockedParameterCount,
const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,
UINT32 OutputLockedParameterCount,
const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters);
COM_METHOD(void) UnlockForProcess ();
COM_METHOD(UINT32) CalcInputFrames(UINT32 OutputFrameCount);
COM_METHOD(UINT32) CalcOutputFrames(UINT32 InputFrameCount);
protected:
virtual HRESULT ValidateFormatDefault(WAVEFORMATEX* pFormat, BOOL fOverwrite);
HRESULT ValidateFormatPair(
const WAVEFORMATEX* pSupportedFormat,
WAVEFORMATEX* pRequestedFormat,
BOOL fOverwrite);
void ProcessThru(
void* pInputBuffer,
FLOAT32* pOutputBuffer,
UINT32 FrameCount,
WORD InputChannelCount,
WORD OutputChannelCount,
BOOL MixWithOutput);
const XAPO_REGISTRATION_PROPERTIES* GetRegistrationPropertiesInternal();
BOOL IsLocked();
protected:
FAPOBase *fapo_base;
bool own_fapo_base;
};
class CXAPOParametersBase : public CXAPOBase, public IXAPOParameters
{
protected:
// for derived classes that wrap FAPO structs
CXAPOParametersBase(FAPOBase *base);
public:
CXAPOParametersBase(
const XAPO_REGISTRATION_PROPERTIES* pRegistrationProperties,
BYTE* pParameterBlocks,
UINT32 uParameterBlockByteSize,
BOOL fProducer);
virtual ~CXAPOParametersBase();
COM_METHOD(HRESULT) QueryInterface(REFIID riid, void** ppInterface);
COM_METHOD(ULONG) AddRef();
COM_METHOD(ULONG) Release();
COM_METHOD(void) SetParameters (const void* pParameters, UINT32 ParameterByteSize);
COM_METHOD(void) GetParameters (void* pParameters, UINT32 ParameterByteSize);
virtual void OnSetParameters(const void*, UINT32);
BOOL ParametersChanged();
BYTE* BeginProcess();
void EndProcess();
};
#endif // FACT_CPP_XAPOBASE_H