| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- #include "FxBase.h"
- FxBase::FxBase()
- {
- referenceCount = 1;
- isLocked = 0;
- registrationProperties = null;
- }
- FxBase::~FxBase()
- {
- }
- void STDMETHODCALLTYPE FxBase::SystemSetFromConstructor(const XAPO_REGISTRATION_PROPERTIES * pRegistrationProperties)
- {
- Assert(pRegistrationProperties != null);
- Assert(registrationProperties == null);
- registrationProperties = pRegistrationProperties;
- }
- HRESULT STDMETHODCALLTYPE FxBase::QueryInterface(REFIID riid, __deref_out void** ppInterface)
- {
- HRESULT hr = S_OK;
- if(riid == __uuidof(IXAPO))
- {
- *ppInterface = static_cast<IXAPO*>(this);
- AddRef();
- }else
- if(riid == __uuidof(IUnknown))
- {
- *ppInterface = static_cast<IUnknown*>(this);
- AddRef();
- }else{
- *ppInterface = NULL;
- hr = E_NOINTERFACE;
- }
- return hr;
- }
- ULONG STDMETHODCALLTYPE FxBase::AddRef()
- {
- return (ULONG)InterlockedIncrement(&referenceCount);
- }
- ULONG STDMETHODCALLTYPE FxBase::Release()
- {
- ULONG uTmpReferenceCount = (ULONG)InterlockedDecrement(&referenceCount);
- if(uTmpReferenceCount == 0)
- {
- Assert(false);
- // delete this;
- }
- return uTmpReferenceCount;
- }
- HRESULT STDMETHODCALLTYPE FxBase::GetRegistrationProperties(__deref_out XAPO_REGISTRATION_PROPERTIES ** ppRegistrationProperties)
- {
- if(!ppRegistrationProperties) return E_POINTER;
- *ppRegistrationProperties = (XAPO_REGISTRATION_PROPERTIES *)XAPOAlloc(sizeof(XAPO_REGISTRATION_PROPERTIES));
- memcpy(*ppRegistrationProperties, registrationProperties, sizeof(XAPO_REGISTRATION_PROPERTIES));
- return S_OK;
- }
- HRESULT STDMETHODCALLTYPE FxBase::IsInputFormatSupported(const WAVEFORMATEX* pOutputFormat, const WAVEFORMATEX* pRequestedInputFormat, __deref_opt_out WAVEFORMATEX** ppSupportedInputFormat)
- {
- return S_OK;
- }
- HRESULT STDMETHODCALLTYPE FxBase::IsOutputFormatSupported(const WAVEFORMATEX* pInputFormat, const WAVEFORMATEX* pRequestedOutputFormat, __deref_opt_out WAVEFORMATEX** ppSupportedOutputFormat)
- {
- return S_OK;
- }
- HRESULT STDMETHODCALLTYPE FxBase::Initialize(__in_bcount_opt(DataByteSize) const void*, UINT32 DataByteSize)
- {
- UNREFERENCED_PARAMETER(DataByteSize);
- return S_OK;
- }
- void STDMETHODCALLTYPE FxBase::Reset()
- {
- }
- HRESULT STDMETHODCALLTYPE FxBase::LockForProcess(UINT32 InputLockedParameterCount, __in_ecount_opt(InputLockedParameterCount) const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters, UINT32 OutputLockedParameterCount, __in_ecount_opt(OutputLockedParameterCount) const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters)
- {
- Assert(isLocked == 0);
- Assert(InputLockedParameterCount == 1);
- Assert(OutputLockedParameterCount == 1);
- Assert(pInputLockedParameters != null);
- Assert(pOutputLockedParameters != null);
- Assert(pInputLockedParameters[0].pFormat != null);
- Assert(pOutputLockedParameters[0].pFormat != null);
- Assert(pInputLockedParameters[0].pFormat->nChannels == pOutputLockedParameters[0].pFormat->nChannels);
- Assert(pOutputLockedParameters[0].pFormat->nChannels == 2);
- Assert(pInputLockedParameters[0].pFormat->wBitsPerSample == 32);
- Assert(pOutputLockedParameters[0].pFormat->wBitsPerSample == 32);
- Reset();
- isLocked = 1;
- return S_OK;
- }
- void STDMETHODCALLTYPE FxBase::Process(UINT32 iCount, const XAPO_PROCESS_BUFFER_PARAMETERS * iParams, UINT32 oCount, XAPO_PROCESS_BUFFER_PARAMETERS *oParams, BOOL isEnabled)
- {
- Assert(isLocked != 0);
- Assert(iCount == 1);
- Assert(oCount == 1);
- Assert(iParams);
- Assert(oParams);
- XAPO_BUFFER_FLAGS inFlags = iParams[0].BufferFlags;
- XAPO_BUFFER_FLAGS outFlags = oParams[0].BufferFlags;
- Assert(inFlags == XAPO_BUFFER_VALID || inFlags == XAPO_BUFFER_SILENT);
- Assert(outFlags == XAPO_BUFFER_VALID || outFlags == XAPO_BUFFER_SILENT);
- switch (inFlags)
- {
- case XAPO_BUFFER_VALID:
- Assert(iParams[0].pBuffer != null);
- Assert(iParams[0].pBuffer == oParams[0].pBuffer);
- Process((float * __restrict)iParams[0].pBuffer, iParams[0].ValidFrameCount);
- break;
- case XAPO_BUFFER_SILENT:
- break;
- }
- oParams[0].ValidFrameCount = iParams[0].ValidFrameCount;
- oParams[0].BufferFlags = iParams[0].BufferFlags;
- }
- void STDMETHODCALLTYPE FxBase::UnlockForProcess()
- {
- Reset();
- isLocked = 0;
- }
- UINT32 STDMETHODCALLTYPE FxBase::CalcInputFrames(UINT32 OutputFrameCount)
- {
- return OutputFrameCount;
- }
- UINT32 STDMETHODCALLTYPE FxBase::CalcOutputFrames(UINT32 InputFrameCount)
- {
- return InputFrameCount;
- }
|