Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/alexmarsev/soundtouch.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroparviai <oparviai@f3a24b6a-cf45-0410-b55a-8c22e2698227>2014-04-06 22:06:50 +0400
committeroparviai <oparviai@f3a24b6a-cf45-0410-b55a-8c22e2698227>2014-04-06 22:06:50 +0400
commitc23d28c16ce8e26586ce1f4728e65c1c7d993294 (patch)
tree6023d0179598c998fb0b64017be36184f4ff03e6
parent42fe4eb4cde95338c2f8e9fa687e39ec7c3268bc (diff)
Fixed c++ function name mangling issue in SoundTouch.dll compilation
-rw-r--r--README.html5
-rw-r--r--source/SoundTouchDLL/SoundTouchDLL.cpp46
-rw-r--r--source/SoundTouchDLL/SoundTouchDLL.h60
-rw-r--r--source/SoundTouchDLL/SoundTouchDLL.pas128
4 files changed, 121 insertions, 118 deletions
diff --git a/README.html b/README.html
index 3d29c41..f8bebd7 100644
--- a/README.html
+++ b/README.html
@@ -738,6 +738,7 @@ submitted bugfixes since SoundTouch v1.3.1: </p>
<li> David Clark</li>
<li> Patrick Colis</li>
<li> Miquel Colon</li>
+ <li> Sandro Cumerlato</li>
<li> Justin Frankel</li>
<li> Jason Garland</li>
<li> Takashi Iwai</li>
@@ -745,9 +746,6 @@ submitted bugfixes since SoundTouch v1.3.1: </p>
<li> Paulo Pizarro</li>
<li> Blaise Potard</li>
<li> RJ Ryan</li>
- <li> Patrick Colis </li>
- <li> Miquel Colon </li>
- <li> Sandro Cumerlato</li>
<li> Justin Frankel </li>
<li> Jason Garland </li>
<li> Masa H. </li>
@@ -761,7 +759,6 @@ submitted bugfixes since SoundTouch v1.3.1: </p>
<li> John Sheehy</li>
<li> Tim Shuttleworth</li>
<li> John Stumpo</li>
- <li> Tim Shuttleworth</li>
<li> Katja Vetter</li>
</ul>
<p>Moral greetings to all other contributors and users also!</p>
diff --git a/source/SoundTouchDLL/SoundTouchDLL.cpp b/source/SoundTouchDLL/SoundTouchDLL.cpp
index bd6967e..5dd28b9 100644
--- a/source/SoundTouchDLL/SoundTouchDLL.cpp
+++ b/source/SoundTouchDLL/SoundTouchDLL.cpp
@@ -68,7 +68,7 @@ typedef struct
#define STMAGIC 0x1770C001
-SOUNDTOUCHDLL_API HANDLE __stdcall soundtouch_createInstance()
+SOUNDTOUCHDLL_API HANDLE __cdecl soundtouch_createInstance()
{
STHANDLE *tmp = new STHANDLE;
@@ -86,7 +86,7 @@ SOUNDTOUCHDLL_API HANDLE __stdcall soundtouch_createInstance()
}
-SOUNDTOUCHDLL_API void __stdcall soundtouch_destroyInstance(HANDLE h)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_destroyInstance(HANDLE h)
{
/*
STHANDLE *sth = (STHANDLE*)h;
@@ -103,7 +103,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_destroyInstance(HANDLE h)
/// Get SoundTouch library version string
-SOUNDTOUCHDLL_API const char *__stdcall soundtouch_getVersionString()
+SOUNDTOUCHDLL_API const char *__cdecl soundtouch_getVersionString()
{
return SoundTouch::getVersionString();
}
@@ -111,7 +111,7 @@ SOUNDTOUCHDLL_API const char *__stdcall soundtouch_getVersionString()
/// Get SoundTouch library version string - alternative function for
/// environments that can't properly handle character string as return value
-SOUNDTOUCHDLL_API void __stdcall soundtouch_getVersionString2(char* versionString, int bufferSize)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_getVersionString2(char* versionString, int bufferSize)
{
strncpy(versionString, SoundTouch::getVersionString(), bufferSize - 1);
versionString[bufferSize - 1] = 0;
@@ -119,14 +119,14 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_getVersionString2(char* versionStrin
/// Get SoundTouch library version Id
-SOUNDTOUCHDLL_API uint __stdcall soundtouch_getVersionId()
+SOUNDTOUCHDLL_API uint __cdecl soundtouch_getVersionId()
{
return SoundTouch::getVersionId();
}
/// Sets new rate control value. Normal rate = 1.0, smaller values
/// represent slower rate, larger faster rates.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setRate(HANDLE h, float newRate)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setRate(HANDLE h, float newRate)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -137,7 +137,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setRate(HANDLE h, float newRate)
/// Sets new tempo control value. Normal tempo = 1.0, smaller values
/// represent slower tempo, larger faster tempo.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempo(HANDLE h, float newTempo)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setTempo(HANDLE h, float newTempo)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -147,7 +147,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempo(HANDLE h, float newTempo)
/// Sets new rate control value as a difference in percents compared
/// to the original rate (-50 .. +100 %)
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setRateChange(HANDLE h, float newRate)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setRateChange(HANDLE h, float newRate)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -157,7 +157,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setRateChange(HANDLE h, float newRat
/// Sets new tempo control value as a difference in percents compared
/// to the original tempo (-50 .. +100 %)
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempoChange(HANDLE h, float newTempo)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setTempoChange(HANDLE h, float newTempo)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -167,7 +167,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempoChange(HANDLE h, float newTe
/// Sets new pitch control value. Original pitch = 1.0, smaller values
/// represent lower pitches, larger values higher pitch.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitch(HANDLE h, float newPitch)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitch(HANDLE h, float newPitch)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -177,7 +177,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitch(HANDLE h, float newPitch)
/// Sets pitch change in octaves compared to the original pitch
/// (-1.00 .. +1.00)
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchOctaves(HANDLE h, float newPitch)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitchOctaves(HANDLE h, float newPitch)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -187,7 +187,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchOctaves(HANDLE h, float newP
/// Sets pitch change in semi-tones compared to the original pitch
/// (-12 .. +12)
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchSemiTones(HANDLE h, float newPitch)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitchSemiTones(HANDLE h, float newPitch)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -197,7 +197,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchSemiTones(HANDLE h, float ne
/// Sets the number of channels, 1 = mono, 2 = stereo
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setChannels(HANDLE h, uint numChannels)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setChannels(HANDLE h, uint numChannels)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -206,7 +206,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setChannels(HANDLE h, uint numChanne
}
/// Sets sample rate.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setSampleRate(HANDLE h, uint srate)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setSampleRate(HANDLE h, uint srate)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -221,7 +221,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setSampleRate(HANDLE h, uint srate)
/// stream. This function may introduce additional blank samples in the end
/// of the sound stream, and thus it's not recommended to call this function
/// in the middle of a sound stream.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_flush(HANDLE h)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_flush(HANDLE h)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -232,7 +232,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_flush(HANDLE h)
/// Adds 'numSamples' pcs of samples from the 'samples' memory position into
/// the input of the object. Notice that sample rate _has_to_ be set before
/// calling this function, otherwise throws a runtime_error exception.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_putSamples(HANDLE h,
+SOUNDTOUCHDLL_API void __cdecl soundtouch_putSamples(HANDLE h,
const SAMPLETYPE *samples, ///< Pointer to sample buffer.
uint numSamples ///< Number of samples in buffer. Notice
///< that in case of stereo-sound a single sample
@@ -247,7 +247,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_putSamples(HANDLE h,
/// Clears all the samples in the object's output and internal processing
/// buffers.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_clear(HANDLE h)
+SOUNDTOUCHDLL_API void __cdecl soundtouch_clear(HANDLE h)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return;
@@ -259,7 +259,7 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_clear(HANDLE h)
/// 'SETTING_...' defines for available setting ID's.
///
/// \return 'TRUE' if the setting was succesfully changed
-SOUNDTOUCHDLL_API BOOL __stdcall soundtouch_setSetting(HANDLE h,
+SOUNDTOUCHDLL_API BOOL __cdecl soundtouch_setSetting(HANDLE h,
int settingId, ///< Setting ID number. see SETTING_... defines.
int value ///< New setting value.
)
@@ -274,7 +274,7 @@ SOUNDTOUCHDLL_API BOOL __stdcall soundtouch_setSetting(HANDLE h,
/// 'SETTING_...' defines for available setting ID's.
///
/// \return the setting value.
-SOUNDTOUCHDLL_API int __stdcall soundtouch_getSetting(HANDLE h,
+SOUNDTOUCHDLL_API int __cdecl soundtouch_getSetting(HANDLE h,
int settingId ///< Setting ID number, see SETTING_... defines.
)
{
@@ -286,7 +286,7 @@ SOUNDTOUCHDLL_API int __stdcall soundtouch_getSetting(HANDLE h,
/// Returns number of samples currently unprocessed.
-SOUNDTOUCHDLL_API uint __stdcall soundtouch_numUnprocessedSamples(HANDLE h)
+SOUNDTOUCHDLL_API uint __cdecl soundtouch_numUnprocessedSamples(HANDLE h)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return 0;
@@ -300,7 +300,7 @@ SOUNDTOUCHDLL_API uint __stdcall soundtouch_numUnprocessedSamples(HANDLE h)
///
/// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
/// with 'ptrBegin' function.
-SOUNDTOUCHDLL_API uint __stdcall soundtouch_receiveSamples(HANDLE h,
+SOUNDTOUCHDLL_API uint __cdecl soundtouch_receiveSamples(HANDLE h,
SAMPLETYPE *outBuffer, ///< Buffer where to copy output samples.
uint maxSamples ///< How many samples to receive at max.
)
@@ -319,7 +319,7 @@ SOUNDTOUCHDLL_API uint __stdcall soundtouch_receiveSamples(HANDLE h,
}
/// Returns number of samples currently available.
-SOUNDTOUCHDLL_API uint __stdcall soundtouch_numSamples(HANDLE h)
+SOUNDTOUCHDLL_API uint __cdecl soundtouch_numSamples(HANDLE h)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return 0;
@@ -329,7 +329,7 @@ SOUNDTOUCHDLL_API uint __stdcall soundtouch_numSamples(HANDLE h)
/// Returns nonzero if there aren't any samples available for outputting.
-SOUNDTOUCHDLL_API int __stdcall soundtouch_isEmpty(HANDLE h)
+SOUNDTOUCHDLL_API int __cdecl soundtouch_isEmpty(HANDLE h)
{
STHANDLE *sth = (STHANDLE*)h;
if (sth->dwMagic != STMAGIC) return -1;
diff --git a/source/SoundTouchDLL/SoundTouchDLL.h b/source/SoundTouchDLL/SoundTouchDLL.h
index 1d8f17a..a384dfe 100644
--- a/source/SoundTouchDLL/SoundTouchDLL.h
+++ b/source/SoundTouchDLL/SoundTouchDLL.h
@@ -38,67 +38,75 @@
#define _SoundTouchDLL_h_
#ifdef __cplusplus
-extern "C" {
+
+#ifdef DLL_EXPORTS
+ #define SOUNDTOUCHDLL_API extern "C" __declspec(dllexport)
+#else
+ #define SOUNDTOUCHDLL_API extern "C" __declspec(dllimport)
#endif
+#else
+
#ifdef DLL_EXPORTS
#define SOUNDTOUCHDLL_API __declspec(dllexport)
#else
#define SOUNDTOUCHDLL_API __declspec(dllimport)
#endif
+#endif // __cplusplus
+
typedef void * HANDLE;
/// Create a new instance of SoundTouch processor.
-SOUNDTOUCHDLL_API HANDLE __stdcall soundtouch_createInstance();
+SOUNDTOUCHDLL_API HANDLE __cdecl soundtouch_createInstance();
/// Destroys a SoundTouch processor instance.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_destroyInstance(HANDLE h);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_destroyInstance(HANDLE h);
/// Get SoundTouch library version string
-SOUNDTOUCHDLL_API const char *__stdcall soundtouch_getVersionString();
+SOUNDTOUCHDLL_API const char *__cdecl soundtouch_getVersionString();
/// Get SoundTouch library version string - alternative function for
/// environments that can't properly handle character string as return value
-SOUNDTOUCHDLL_API void __stdcall soundtouch_getVersionString2(char* versionString, int bufferSize);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_getVersionString2(char* versionString, int bufferSize);
/// Get SoundTouch library version Id
-SOUNDTOUCHDLL_API unsigned int __stdcall soundtouch_getVersionId();
+SOUNDTOUCHDLL_API unsigned int __cdecl soundtouch_getVersionId();
/// Sets new rate control value. Normal rate = 1.0, smaller values
/// represent slower rate, larger faster rates.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setRate(HANDLE h, float newRate);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setRate(HANDLE h, float newRate);
/// Sets new tempo control value. Normal tempo = 1.0, smaller values
/// represent slower tempo, larger faster tempo.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempo(HANDLE h, float newTempo);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setTempo(HANDLE h, float newTempo);
/// Sets new rate control value as a difference in percents compared
/// to the original rate (-50 .. +100 %);
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setRateChange(HANDLE h, float newRate);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setRateChange(HANDLE h, float newRate);
/// Sets new tempo control value as a difference in percents compared
/// to the original tempo (-50 .. +100 %);
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setTempoChange(HANDLE h, float newTempo);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setTempoChange(HANDLE h, float newTempo);
/// Sets new pitch control value. Original pitch = 1.0, smaller values
/// represent lower pitches, larger values higher pitch.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitch(HANDLE h, float newPitch);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitch(HANDLE h, float newPitch);
/// Sets pitch change in octaves compared to the original pitch
/// (-1.00 .. +1.00);
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchOctaves(HANDLE h, float newPitch);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitchOctaves(HANDLE h, float newPitch);
/// Sets pitch change in semi-tones compared to the original pitch
/// (-12 .. +12);
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setPitchSemiTones(HANDLE h, float newPitch);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setPitchSemiTones(HANDLE h, float newPitch);
/// Sets the number of channels, 1 = mono, 2 = stereo
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setChannels(HANDLE h, unsigned int numChannels);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setChannels(HANDLE h, unsigned int numChannels);
/// Sets sample rate.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_setSampleRate(HANDLE h, unsigned int srate);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_setSampleRate(HANDLE h, unsigned int srate);
/// Flushes the last samples from the processing pipeline to the output.
/// Clears also the internal processing buffers.
@@ -107,12 +115,12 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_setSampleRate(HANDLE h, unsigned int
/// stream. This function may introduce additional blank samples in the end
/// of the sound stream, and thus it's not recommended to call this function
/// in the middle of a sound stream.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_flush(HANDLE h);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_flush(HANDLE h);
/// Adds 'numSamples' pcs of samples from the 'samples' memory position into
/// the input of the object. Notice that sample rate _has_to_ be set before
/// calling this function, otherwise throws a runtime_error exception.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_putSamples(HANDLE h,
+SOUNDTOUCHDLL_API void __cdecl soundtouch_putSamples(HANDLE h,
const float *samples, ///< Pointer to sample buffer.
unsigned int numSamples ///< Number of samples in buffer. Notice
///< that in case of stereo-sound a single sample
@@ -121,13 +129,13 @@ SOUNDTOUCHDLL_API void __stdcall soundtouch_putSamples(HANDLE h,
/// Clears all the samples in the object's output and internal processing
/// buffers.
-SOUNDTOUCHDLL_API void __stdcall soundtouch_clear(HANDLE h);
+SOUNDTOUCHDLL_API void __cdecl soundtouch_clear(HANDLE h);
/// Changes a setting controlling the processing system behaviour. See the
/// 'SETTING_...' defines for available setting ID's.
///
/// \return 'TRUE' if the setting was succesfully changed
-SOUNDTOUCHDLL_API BOOL __stdcall soundtouch_setSetting(HANDLE h,
+SOUNDTOUCHDLL_API BOOL __cdecl soundtouch_setSetting(HANDLE h,
int settingId, ///< Setting ID number. see SETTING_... defines.
int value ///< New setting value.
);
@@ -136,33 +144,29 @@ SOUNDTOUCHDLL_API BOOL __stdcall soundtouch_setSetting(HANDLE h,
/// 'SETTING_...' defines for available setting ID's.
///
/// \return the setting value.
-SOUNDTOUCHDLL_API int __stdcall soundtouch_getSetting(HANDLE h,
+SOUNDTOUCHDLL_API int __cdecl soundtouch_getSetting(HANDLE h,
int settingId ///< Setting ID number, see SETTING_... defines.
);
/// Returns number of samples currently unprocessed.
-SOUNDTOUCHDLL_API unsigned int __stdcall soundtouch_numUnprocessedSamples(HANDLE h);
+SOUNDTOUCHDLL_API unsigned int __cdecl soundtouch_numUnprocessedSamples(HANDLE h);
/// Adjusts book-keeping so that given number of samples are removed from beginning of the
/// sample buffer without copying them anywhere.
///
/// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
/// with 'ptrBegin' function.
-SOUNDTOUCHDLL_API unsigned int __stdcall soundtouch_receiveSamples(HANDLE h,
+SOUNDTOUCHDLL_API unsigned int __cdecl soundtouch_receiveSamples(HANDLE h,
float *outBuffer, ///< Buffer where to copy output samples.
unsigned int maxSamples ///< How many samples to receive at max.
);
/// Returns number of samples currently available.
-SOUNDTOUCHDLL_API unsigned int __stdcall soundtouch_numSamples(HANDLE h);
+SOUNDTOUCHDLL_API unsigned int __cdecl soundtouch_numSamples(HANDLE h);
/// Returns nonzero if there aren't any samples available for outputting.
-SOUNDTOUCHDLL_API int __stdcall soundtouch_isEmpty(HANDLE h);
-
-#ifdef __cplusplus
-}
-#endif
+SOUNDTOUCHDLL_API int __cdecl soundtouch_isEmpty(HANDLE h);
#endif // _SoundTouchDLL_h_
diff --git a/source/SoundTouchDLL/SoundTouchDLL.pas b/source/SoundTouchDLL/SoundTouchDLL.pas
index 8b02894..6dcf1cc 100644
--- a/source/SoundTouchDLL/SoundTouchDLL.pas
+++ b/source/SoundTouchDLL/SoundTouchDLL.pas
@@ -5,7 +5,9 @@ unit SoundTouchDLL;
// SoundTouch.dll wrapper for accessing SoundTouch routines from Delphi/Pascal
//
// Module Author : Christian Budde
-//
+//
+// 2014-01-12 fixes by Sandro Cumerlato <sandro.cumerlato 'at' gmail.com>
+//
////////////////////////////////////////////////////////////////////////////////
//
// $Id$
@@ -42,51 +44,53 @@ type
TSoundTouchHandle = THandle;
// Create a new instance of SoundTouch processor.
- TSoundTouchCreateInstance = function : TSoundTouchHandle; stdcall;
+ TSoundTouchCreateInstance = function : TSoundTouchHandle; cdecl;
// Destroys a SoundTouch processor instance.
- TSoundTouchDestroyInstance = procedure (Handle: TSoundTouchHandle); stdcall;
+ TSoundTouchDestroyInstance = procedure (Handle: TSoundTouchHandle); cdecl;
// Get SoundTouch library version string
- TSoundTouchGetVersionString = function : PChar; stdcall;
+ TSoundTouchGetVersionString = function : PAnsiChar; cdecl;
+ // Get SoundTouch library version string 2
+ TSoundTouchGetVersionString2 = procedure(VersionString : PAnsiChar; BufferSize : Integer); cdecl;
+
// Get SoundTouch library version Id
- TSoundTouchGetVersionId = function : Cardinal; stdcall;
+ TSoundTouchGetVersionId = function : Cardinal; cdecl;
// Sets new rate control value. Normal rate = 1.0, smaller values
// represent slower rate, larger faster rates.
- TSoundTouchSetRate = procedure (Handle: TSoundTouchHandle; newRate: Single); stdcall;
+ TSoundTouchSetRate = procedure (Handle: TSoundTouchHandle; NewRate: Single); cdecl;
// Sets new tempo control value. Normal tempo = 1.0, smaller values
// represent slower tempo, larger faster tempo.
- TSoundTouchSetTempo = procedure (Handle: TSoundTouchHandle; newTempo: Single); stdcall;
+ TSoundTouchSetTempo = procedure (Handle: TSoundTouchHandle; NewTempo: Single); cdecl;
// Sets new rate control value as a difference in percents compared
// to the original rate (-50 .. +100 %);
- TSoundTouchSetRateChange = procedure (Handle: TSoundTouchHandle; newRate: Single); stdcall;
+ TSoundTouchSetRateChange = procedure (Handle: TSoundTouchHandle; NewRate: Single); cdecl;
// Sets new tempo control value as a difference in percents compared
// to the original tempo (-50 .. +100 %);
- TSoundTouchSetTempoChange = procedure (Handle: TSoundTouchHandle; newTempo: Single); stdcall;
+ TSoundTouchSetTempoChange = procedure (Handle: TSoundTouchHandle; NewTempo: Single); cdecl;
// Sets new pitch control value. Original pitch = 1.0, smaller values
// represent lower pitches, larger values higher pitch.
- TSoundTouchSetPitch = procedure (Handle: TSoundTouchHandle; newPitch: Single); stdcall;
+ TSoundTouchSetPitch = procedure (Handle: TSoundTouchHandle; NewPitch: Single); cdecl;
// Sets pitch change in octaves compared to the original pitch
// (-1.00 .. +1.00);
- TSoundTouchSetPitchOctaves = procedure (Handle: TSoundTouchHandle; newPitch: Single); stdcall;
+ TSoundTouchSetPitchOctaves = procedure (Handle: TSoundTouchHandle; NewPitch: Single); cdecl;
// Sets pitch change in semi-tones compared to the original pitch
// (-12 .. +12);
- TSoundTouchSetPitchSemiTones = procedure (Handle: TSoundTouchHandle; newPitch: Single); stdcall;
-
+ TSoundTouchSetPitchSemiTones = procedure (Handle: TSoundTouchHandle; NewPitch: Single); cdecl;
// Sets the number of channels, 1 = mono, 2 = stereo
- TSoundTouchSetChannels = procedure (Handle: TSoundTouchHandle; numChannels: Cardinal); stdcall;
+ TSoundTouchSetChannels = procedure (Handle: TSoundTouchHandle; NumChannels: Cardinal); cdecl;
// Sets sample rate.
- TSoundTouchSetSampleRate = procedure (Handle: TSoundTouchHandle; SampleRate: Cardinal); stdcall;
+ TSoundTouchSetSampleRate = procedure (Handle: TSoundTouchHandle; SampleRate: Cardinal); cdecl;
// Flushes the last samples from the processing pipeline to the output.
// Clears also the internal processing buffers.
@@ -95,7 +99,7 @@ type
// stream. This function may introduce additional blank samples in the end
// of the sound stream, and thus it
// in the middle of a sound stream.
- TSoundTouchFlush = procedure (Handle: TSoundTouchHandle); stdcall;
+ TSoundTouchFlush = procedure (Handle: TSoundTouchHandle); cdecl;
// Adds 'numSamples' pcs of samples from the 'samples' memory position into
// the input of the object. Notice that sample rate _has_to_ be set before
@@ -105,11 +109,11 @@ type
NumSamples: Cardinal //< Number of samples in buffer. Notice
//< that in case of stereo-sound a single sample
//< contains data for both channels.
- ); stdcall;
+ ); cdecl;
// Clears all the samples in the object's output and internal processing
// buffers.
- TSoundTouchClear = procedure (Handle: TSoundTouchHandle); stdcall;
+ TSoundTouchClear = procedure (Handle: TSoundTouchHandle); cdecl;
// Changes a setting controlling the processing system behaviour. See the
// 'SETTING_...' defines for available setting ID's.
@@ -118,19 +122,18 @@ type
TSoundTouchSetSetting = function (Handle: TSoundTouchHandle;
SettingId: Integer; //< Setting ID number. see SETTING_... defines.
Value: Integer //< New setting value.
- ): Boolean; stdcall;
+ ): Boolean; cdecl;
// Reads a setting controlling the processing system behaviour. See the
// 'SETTING_...' defines for available setting ID's.
//
// \return the setting value.
TSoundTouchGetSetting = function (Handle: TSoundTouchHandle;
- settingId: Integer //< Setting ID number, see SETTING_... defines.
- ): Integer; stdcall;
-
+ SettingId: Integer //< Setting ID number, see SETTING_... defines.
+ ): Integer; cdecl;
// Returns number of samples currently unprocessed.
- TSoundTouchNumUnprocessedSamples = function (Handle: TSoundTouchHandle): Cardinal; stdcall;
+ TSoundTouchNumUnprocessedSamples = function (Handle: TSoundTouchHandle): Cardinal; cdecl;
// Adjusts book-keeping so that given number of samples are removed from beginning of the
// sample buffer without copying them anywhere.
@@ -138,20 +141,21 @@ type
// Used to reduce the number of samples in the buffer when accessing the sample buffer directly
// with 'ptrBegin' function.
TSoundTouchReceiveSamples = function (Handle: TSoundTouchHandle;
- outBuffer: PSingle; //< Buffer where to copy output samples.
- maxSamples: Integer //< How many samples to receive at max.
- ): Cardinal; stdcall;
+ OutBuffer: PSingle; //< Buffer where to copy output samples.
+ MaxSamples: Integer //< How many samples to receive at max.
+ ): Cardinal; cdecl;
// Returns number of samples currently available.
- TSoundTouchNumSamples = function (Handle: TSoundTouchHandle): Cardinal; stdcall;
+ TSoundTouchNumSamples = function (Handle: TSoundTouchHandle): Cardinal; cdecl;
// Returns nonzero if there aren't any samples available for outputting.
- TSoundTouchIsEmpty = function (Handle: TSoundTouchHandle): Integer; stdcall;
+ TSoundTouchIsEmpty = function (Handle: TSoundTouchHandle): Integer; cdecl;
var
SoundTouchCreateInstance : TSoundTouchCreateInstance;
SoundTouchDestroyInstance : TSoundTouchDestroyInstance;
SoundTouchGetVersionString : TSoundTouchGetVersionString;
+ SoundTouchGetVersionString2 : TSoundTouchGetVersionString2;
SoundTouchGetVersionId : TSoundTouchGetVersionId;
SoundTouchSetRate : TSoundTouchSetRate;
SoundTouchSetTempo : TSoundTouchSetTempo;
@@ -210,10 +214,10 @@ type
procedure Clear; virtual;
procedure PutSamples(const Samples: PSingle; const NumSamples: Cardinal);
- function ReceiveSamples(const outBuffer: PSingle; const maxSamples: Integer): Cardinal;
+ function ReceiveSamples(const OutBuffer: PSingle; const MaxSamples: Integer): Cardinal;
function SetSetting(const SettingId: Integer; const Value: Integer): Boolean;
- function GetSetting(const settingId: Integer): Integer;
+ function GetSetting(const SettingId: Integer): Integer;
property VersionString: string read GetVersionString;
property VersionID: Cardinal read GetVersionId;
@@ -233,15 +237,12 @@ type
implementation
-uses
- SysUtils;
-
{ TSoundTouch }
constructor TSoundTouch.Create;
begin
inherited;
- FHandle := SoundTouchCreateInstance;
+ FHandle := SoundTouchCreateInstance();
FRate := 1;
FTempo := 1;
FPitch := 1;
@@ -299,12 +300,12 @@ end;
class function TSoundTouch.GetVersionId: Cardinal;
begin
- result := SoundTouchGetVersionId;
+ result := SoundTouchGetVersionId();
end;
class function TSoundTouch.GetVersionString: string;
begin
- result := StrPas(SoundTouchGetVersionString);
+ result := StrPas(SoundTouchGetVersionString());
end;
procedure TSoundTouch.SetChannels(const Value: Cardinal);
@@ -347,10 +348,10 @@ begin
SoundTouchSetRate(FHandle, FRate);
end;
-function TSoundTouch.ReceiveSamples(const outBuffer: PSingle;
- const maxSamples: Integer): Cardinal;
+function TSoundTouch.ReceiveSamples(const OutBuffer: PSingle;
+ const MaxSamples: Integer): Cardinal;
begin
- result := SoundTouchReceiveSamples(FHandle, outBuffer, maxSamples);
+ result := SoundTouchReceiveSamples(FHandle, OutBuffer, MaxSamples);
end;
procedure TSoundTouch.SetPitchChange(const Value: Single);
@@ -419,35 +420,36 @@ end;
var
SoundTouchLibHandle: HINST;
- SoundTouchDLL: PAnsiChar = 'SoundTouch.DLL';
+ SoundTouchDLLFile: PAnsiChar = 'SoundTouch.dll';
procedure InitDLL;
begin
- SoundTouchLibHandle := LoadLibrary(SoundTouchDLL);
+ SoundTouchLibHandle := LoadLibrary(SoundTouchDLLFile);
if SoundTouchLibHandle <> 0 then
try
- SoundTouchCreateInstance := GetProcAddress(SoundTouchLibHandle, PAnsiChar( 2)); //'soundtouch_createInstance');
- SoundTouchDestroyInstance := GetProcAddress(SoundTouchLibHandle, PAnsiChar( 3)); //'soundtouch_destroyInstance');
- SoundTouchGetVersionString := GetProcAddress(SoundTouchLibHandle, PAnsiChar( 7)); //'soundtouch_getVersionString');
- SoundTouchGetVersionId := GetProcAddress(SoundTouchLibHandle, PAnsiChar( 6)); //'soundtouch_getVersionId');
- SoundTouchSetRate := GetProcAddress(SoundTouchLibHandle, PAnsiChar(17)); //'soundtouch_setRate');
- SoundTouchSetTempo := GetProcAddress(SoundTouchLibHandle, PAnsiChar(21)); //'soundtouch_setTempo');
- SoundTouchSetRateChange := GetProcAddress(SoundTouchLibHandle, PAnsiChar(18)); //'soundtouch_setRateChange');
- SoundTouchSetTempoChange := GetProcAddress(SoundTouchLibHandle, PAnsiChar(22)); //'soundtouch_setTempoChange');
- SoundTouchSetPitch := GetProcAddress(SoundTouchLibHandle, PAnsiChar(14)); //'soundtouch_setPitch');
- SoundTouchSetPitchOctaves := GetProcAddress(SoundTouchLibHandle, PAnsiChar(15)); //'soundtouch_setPitchOctaves');
- SoundTouchSetPitchSemiTones := GetProcAddress(SoundTouchLibHandle, PAnsiChar(16)); //'soundtouch_setPitchSemiTones');
- SoundTouchSetChannels := GetProcAddress(SoundTouchLibHandle, PAnsiChar(13)); //'soundtouch_setChannels');
- SoundTouchSetSampleRate := GetProcAddress(SoundTouchLibHandle, PAnsiChar(19)); //'soundtouch_setSampleRate');
- SoundTouchFlush := GetProcAddress(SoundTouchLibHandle, PAnsiChar(4)); //'soundtouch_flush');
- SoundTouchPutSamples := GetProcAddress(SoundTouchLibHandle, PAnsiChar(11)); //'soundtouch_putSamples');
- SoundTouchClear := GetProcAddress(SoundTouchLibHandle, PAnsiChar(1)); //'soundtouch_clear');
- SoundTouchSetSetting := GetProcAddress(SoundTouchLibHandle, PAnsiChar(20)); //'soundtouch_SetSetting');
- SoundTouchGetSetting := GetProcAddress(SoundTouchLibHandle, PAnsiChar(5)); //'soundtouch_setSetting');
- SoundTouchNumUnprocessedSamples := GetProcAddress(SoundTouchLibHandle, PAnsiChar(10)); //'soundtouch_numUnprocessedSamples');
- SoundTouchReceiveSamples := GetProcAddress(SoundTouchLibHandle, PAnsiChar(12)); //'soundtouch_receiveSamples');
- SoundTouchNumSamples := GetProcAddress(SoundTouchLibHandle, PAnsiChar(9)); //'soundtouch_numSamples');
- SoundTouchIsEmpty := GetProcAddress(SoundTouchLibHandle, PAnsiChar(8)); //'soundtouch_isEmpty');
+ Pointer(SoundTouchCreateInstance) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_createInstance');
+ Pointer(SoundTouchDestroyInstance) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_destroyInstance');
+ Pointer(SoundTouchGetVersionString) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_getVersionString');
+ Pointer(SoundTouchGetVersionString2) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_getVersionString2');
+ Pointer(SoundTouchGetVersionId) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_getVersionId');
+ Pointer(SoundTouchSetRate) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setRate');
+ Pointer(SoundTouchSetTempo) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setTempo');
+ Pointer(SoundTouchSetRateChange) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setRateChange');
+ Pointer(SoundTouchSetTempoChange) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setTempoChange');
+ Pointer(SoundTouchSetPitch) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setPitch');
+ Pointer(SoundTouchSetPitchOctaves) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setPitchOctaves');
+ Pointer(SoundTouchSetPitchSemiTones) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setPitchSemiTones');
+ Pointer(SoundTouchSetChannels) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setChannels');
+ Pointer(SoundTouchSetSampleRate) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setSampleRate');
+ Pointer(SoundTouchFlush) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_flush');
+ Pointer(SoundTouchPutSamples) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_putSamples');
+ Pointer(SoundTouchClear) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_clear');
+ Pointer(SoundTouchSetSetting) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_SetSetting');
+ Pointer(SoundTouchGetSetting) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_setSetting');
+ Pointer(SoundTouchNumUnprocessedSamples) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_numUnprocessedSamples');
+ Pointer(SoundTouchReceiveSamples) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_receiveSamples');
+ Pointer(SoundTouchNumSamples) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_numSamples');
+ Pointer(SoundTouchIsEmpty) := GetProcAddress(SoundTouchLibHandle, 'soundtouch_isEmpty');
except
FreeLibrary(SoundTouchLibHandle);