refactor(fmod): move all original files into fmod directory

This commit is contained in:
phaneron 2025-08-20 04:38:38 -04:00
parent 50fb3c6b1c
commit 35569faecc
544 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,256 @@
#include "fmod_settings.h"
#ifdef FMOD_SUPPORT_DSOUND
#include "fmod.h"
#include "fmod_output_dsound.h"
#include "fmod_sample_dsound.h"
#include "fmod_systemi.h"
namespace FMOD
{
/*
[
[DESCRIPTION]
[PARAMETERS]
[RETURN_VALUE]
FMOD_OK
[REMARKS]
[PLATFORMS]
Win32, Win64
[SEE_ALSO]
]
*/
SampleDSound::SampleDSound()
{
mBuffer = 0;
mBuffer3D = 0;
}
/*
[
[DESCRIPTION]
[PARAMETERS]
[RETURN_VALUE]
FMOD_OK
[REMARKS]
[PLATFORMS]
Win32, Win64
[SEE_ALSO]
]
*/
FMOD_RESULT SampleDSound::release(bool freethis)
{
FMOD_RESULT result;
if (!mSystem)
{
return FMOD_ERR_UNINITIALIZED;
}
if (mFlags & FMOD_SOUND_FLAG_PRELOADEDFSB)
{
return FMOD_ERR_PRELOADED;
}
if (mFlags & FMOD_SOUND_FLAG_PROGRAMMERSOUND)
{
return FMOD_ERR_PROGRAMMERSOUND;
}
while (mOpenState != FMOD_OPENSTATE_READY && mOpenState != FMOD_OPENSTATE_ERROR)
{
FMOD_OS_Time_Sleep(2);
}
result = mSystem->stopSound(this);
if (result != FMOD_OK)
{
return result;
}
/*
Free sample's secondary buffer
*/
if (mBuffer)
{
if (mOutput)
{
mOutput->mBufferMemoryCurrent -= mLengthBytes;
}
mBuffer->Release();
mBuffer = 0;
}
if(mBuffer3D)
{
mBuffer3D->Release();
mBuffer3D = 0;
}
return Sample::release(freethis);
}
/*
[
[DESCRIPTION]
[PARAMETERS]
[RETURN_VALUE]
FMOD_OK
[REMARKS]
[PLATFORMS]
Win32, Win64
[SEE_ALSO]
]
*/
FMOD_RESULT SampleDSound::lockInternal(unsigned int offset, unsigned int length, void **ptr1, void **ptr2, unsigned int *len1, unsigned int *len2)
{
HRESULT hr;
if (!mBuffer)
{
return FMOD_ERR_INVALID_PARAM;
}
hr = mBuffer->Lock(offset, length, ptr1, (DWORD *)len1, ptr2, (DWORD *)len2, 0); /* not DSBLOCK_FROMWRITECURSOR OR DSBLOCK_ENTIREBUFFER */
if (hr == E_INVALIDARG)
{
return FMOD_ERR_INVALID_PARAM;
}
else if (hr == DSBSTATUS_BUFFERLOST)
{
DWORD locflags = 0;
if (!(mMode & FMOD_UNIQUE))
{
if (mLOCSoftware)
{
locflags |= DSBPLAY_LOCSOFTWARE;
}
else
{
locflags |= DSBPLAY_LOCHARDWARE;
}
}
mBuffer->Restore();
mBuffer->Play(0, 0, locflags | DSBPLAY_LOOPING);
}
else if (hr != DS_OK)
{
return FMOD_ERR_OUTPUT_DRIVERCALL;
}
return FMOD_OK;
}
/*
[
[DESCRIPTION]
[PARAMETERS]
[RETURN_VALUE]
FMOD_OK
[REMARKS]
[PLATFORMS]
Win32, Win64
[SEE_ALSO]
]
*/
FMOD_RESULT SampleDSound::unlockInternal(void *ptr1, void *ptr2, unsigned int len1, unsigned int len2)
{
HRESULT hr;
if (!mBuffer)
{
return FMOD_ERR_INVALID_PARAM;
}
if (mFormat == FMOD_SOUND_FORMAT_PCM8)
{
if (ptr1 && len1)
{
unsigned int count;
unsigned char *destptr = (unsigned char *)ptr1;
for (count = 0; count < len1; count++)
{
*destptr++ ^= 128;
}
}
if (ptr2 && len2)
{
unsigned int count;
unsigned char *destptr = (unsigned char *)ptr2;
for (count = 0; count < len2; count++)
{
*destptr++ ^= 128;
}
}
}
hr = mBuffer->Unlock(ptr1, len1, ptr2, len2);
if (hr != DS_OK)
{
return FMOD_ERR_OUTPUT_DRIVERCALL;
}
return FMOD_OK;
}
/*
[
[DESCRIPTION]
[PARAMETERS]
[RETURN_VALUE]
[REMARKS]
[PLATFORMS]
[SEE_ALSO]
]
*/
#ifdef FMOD_SUPPORT_MEMORYTRACKER
FMOD_RESULT SampleDSound::getMemoryUsedImpl(MemoryTracker *tracker)
{
tracker->add(false, FMOD_MEMBITS_SOUND, sizeof(SampleDSound) - sizeof(Sample)); // only the SampleDSound members...
return Sample::getMemoryUsedImpl(tracker); // all the base class members
}
#endif
}
#endif /* FMOD_SUPPORT_DSOUND */