chore(fmod): add files from Chensne/DragonNest
This commit is contained in:
commit
50fb3c6b1c
544 changed files with 315778 additions and 0 deletions
437
src/fmod_output_nosound_nrt.cpp
Executable file
437
src/fmod_output_nosound_nrt.cpp
Executable file
|
|
@ -0,0 +1,437 @@
|
|||
#include "fmod_settings.h"
|
||||
|
||||
#ifdef FMOD_SUPPORT_NOSOUND
|
||||
|
||||
#include "fmod_memory.h"
|
||||
#include "fmod_output_nosound_nrt.h"
|
||||
#include "fmod_soundi.h"
|
||||
#include "fmod_string.h"
|
||||
#include "fmod_systemi.h"
|
||||
#include "fmod_time.h"
|
||||
|
||||
namespace FMOD
|
||||
{
|
||||
|
||||
FMOD_OUTPUT_DESCRIPTION_EX nosoundoutput_nrt;
|
||||
|
||||
#ifdef PLUGIN_EXPORTS
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*
|
||||
FMODGetOutputDescription is mandantory for every fmod plugin. This is the symbol the registerplugin function searches for.
|
||||
Must be declared with F_API to make it export as stdcall.
|
||||
*/
|
||||
F_DECLSPEC F_DLLEXPORT FMOD_OUTPUT_DESCRIPTION_EX * F_API FMODGetOutputDescriptionEx()
|
||||
{
|
||||
return OutputNoSound_NRT::getDescriptionEx();
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PLUGIN_EXPORTS */
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_OUTPUT_DESCRIPTION_EX *OutputNoSound_NRT::getDescriptionEx()
|
||||
{
|
||||
FMOD_memset(&nosoundoutput_nrt, 0, sizeof(FMOD_OUTPUT_DESCRIPTION_EX));
|
||||
|
||||
nosoundoutput_nrt.name = "FMOD NoSound Output - Non real-time";
|
||||
nosoundoutput_nrt.version = 0x00010100;
|
||||
nosoundoutput_nrt.polling = false;
|
||||
nosoundoutput_nrt.getnumdrivers = &OutputNoSound_NRT::getNumDriversCallback;
|
||||
nosoundoutput_nrt.getdrivername = &OutputNoSound_NRT::getDriverNameCallback;
|
||||
nosoundoutput_nrt.getdrivercaps = &OutputNoSound_NRT::getDriverCapsCallback;
|
||||
nosoundoutput_nrt.init = &OutputNoSound_NRT::initCallback;
|
||||
nosoundoutput_nrt.close = &OutputNoSound_NRT::closeCallback;
|
||||
nosoundoutput_nrt.update = &OutputNoSound_NRT::updateCallback;
|
||||
|
||||
/*
|
||||
Private members
|
||||
*/
|
||||
nosoundoutput_nrt.mType = FMOD_OUTPUTTYPE_NOSOUND_NRT;
|
||||
nosoundoutput_nrt.mSize = sizeof(OutputNoSound_NRT);
|
||||
|
||||
return &nosoundoutput_nrt;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::getNumDrivers(int *numdrivers)
|
||||
{
|
||||
*numdrivers = 1;
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::getDriverName(int driver, char *name, int namelen)
|
||||
{
|
||||
FMOD_strncpy(name, "NoSound Driver", namelen);
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::getDriverCaps(int id, FMOD_CAPS *caps)
|
||||
{
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_MULTICHANNEL);
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_FORMAT_PCM8);
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_FORMAT_PCM16);
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_FORMAT_PCM24);
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_FORMAT_PCM32);
|
||||
*caps = (FMOD_CAPS)(*caps | FMOD_CAPS_OUTPUT_FORMAT_PCMFLOAT);
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::init(int selecteddriver, FMOD_INITFLAGS flags, int *outputrate, int outputchannels, FMOD_SOUND_FORMAT *outputformat, int dspbufferlength, int dspnumbuffers, void *extradriverdata)
|
||||
{
|
||||
FMOD_RESULT result;
|
||||
FMOD_SOUND_FORMAT format;
|
||||
unsigned int bufferlengthbytes = 0;
|
||||
int channels;
|
||||
|
||||
Plugin::init(); /* Set up gGlobal - for debug / file / memory access by this plugin. */
|
||||
|
||||
FLOG((FMOD_DEBUG_LEVEL_LOG, __FILE__, __LINE__, "OutputNoSound_NRT::init", "Initializing.\n"));
|
||||
|
||||
result = mSystem->getSoftwareFormat(0, &format, &channels, 0, 0, 0);
|
||||
if (result != FMOD_OK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
mBufferLength = dspbufferlength;
|
||||
|
||||
result = SoundI::getBytesFromSamples(mBufferLength, &bufferlengthbytes, channels, format);
|
||||
if (result != FMOD_OK)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
mBuffer = FMOD_Memory_Calloc(bufferlengthbytes);
|
||||
if (!mBuffer)
|
||||
{
|
||||
return FMOD_ERR_MEMORY;
|
||||
}
|
||||
|
||||
FLOG((FMOD_DEBUG_LEVEL_LOG, __FILE__, __LINE__, "OutputNoSound_NRT::init", "Done.\n"));
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::close()
|
||||
{
|
||||
Plugin::init(); /* Set up gGlobal - for debug / file / memory access by this plugin. */
|
||||
|
||||
if (mBuffer)
|
||||
{
|
||||
FMOD_Memory_Free(mBuffer);
|
||||
mBuffer = 0;
|
||||
}
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::update()
|
||||
{
|
||||
#ifdef FMOD_SUPPORT_SOFTWARE
|
||||
FMOD_RESULT result;
|
||||
|
||||
result = mix(mBuffer, mBufferLength);
|
||||
if (result != FMOD_OK)
|
||||
{
|
||||
return FMOD_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
return FMOD_OK;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
==============================================================================================================
|
||||
|
||||
CALLBACK INTERFACE
|
||||
|
||||
==============================================================================================================
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT F_CALLBACK OutputNoSound_NRT::getNumDriversCallback(FMOD_OUTPUT_STATE *output, int *numdrivers)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->getNumDrivers(numdrivers);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT F_CALLBACK OutputNoSound_NRT::getDriverNameCallback(FMOD_OUTPUT_STATE *output, int id, char *name, int namelen)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->getDriverName(id, name, namelen);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT OutputNoSound_NRT::getDriverCapsCallback(FMOD_OUTPUT_STATE *output, int id, FMOD_CAPS *caps)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->getDriverCaps(id, caps);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT F_CALLBACK OutputNoSound_NRT::initCallback(FMOD_OUTPUT_STATE *output, int selecteddriver, FMOD_INITFLAGS flags, int *outputrate, int outputchannels, FMOD_SOUND_FORMAT *outputformat, int dspbufferlength, int dspnumbuffers, void *extradriverdata)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->init(selecteddriver, flags, outputrate, outputchannels, outputformat, dspbufferlength, dspnumbuffers, extradriverdata);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT F_CALLBACK OutputNoSound_NRT::closeCallback(FMOD_OUTPUT_STATE *output)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->close();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
[
|
||||
[DESCRIPTION]
|
||||
|
||||
[PARAMETERS]
|
||||
|
||||
[RETURN_VALUE]
|
||||
FMOD_OK
|
||||
|
||||
[REMARKS]
|
||||
|
||||
[PLATFORMS]
|
||||
Win32, Win64, Linux, Macintosh, XBox, PlayStation 2, GameCube
|
||||
|
||||
[SEE_ALSO]
|
||||
]
|
||||
*/
|
||||
FMOD_RESULT F_CALLBACK OutputNoSound_NRT::updateCallback(FMOD_OUTPUT_STATE *output)
|
||||
{
|
||||
OutputNoSound_NRT *nosound = (OutputNoSound_NRT *)output;
|
||||
|
||||
return nosound->update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue