Commit Description:
Various UI improvements.
Commit Description:
Various UI improvements.
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