summaryrefslogtreecommitdiffstats
path: root/src/vinylcontrol/vinylcontrolxwax.cpp
diff options
context:
space:
mode:
authorRJ Ryan <rryan@mixxx.org>2013-12-20 11:30:06 -0500
committerRJ Ryan <rryan@mixxx.org>2013-12-21 00:50:16 -0500
commit231caa64c27c133e8ef69156a517f6a50ec36362 (patch)
treecdef925c78465cf86dcffccf8a3ad92c63b64b4a /src/vinylcontrol/vinylcontrolxwax.cpp
parent5227eadc4c47c034c4281b0c3ea7019c62fdec67 (diff)
Dynamically allocate VinylControlXwax::m_pWorkBuffer.
Diffstat (limited to 'src/vinylcontrol/vinylcontrolxwax.cpp')
-rw-r--r--src/vinylcontrol/vinylcontrolxwax.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/vinylcontrol/vinylcontrolxwax.cpp b/src/vinylcontrol/vinylcontrolxwax.cpp
index 7384aa29d7..0a910d1ed4 100644
--- a/src/vinylcontrol/vinylcontrolxwax.cpp
+++ b/src/vinylcontrol/vinylcontrolxwax.cpp
@@ -44,6 +44,8 @@ QMutex VinylControlXwax::s_xwaxLUTMutex;
VinylControlXwax::VinylControlXwax(ConfigObject<ConfigValue> * pConfig, QString group)
: VinylControl(pConfig, group) {
dOldPos = 0.0f;
+ m_pWorkBuffer = new short[MAX_BUFFER_LEN];
+ m_workBufferSize = MAX_BUFFER_LEN;
char * timecode = NULL;
bForceResync = false;
iOldMode = MIXXX_VCMODE_ABSOLUTE;
@@ -155,6 +157,7 @@ VinylControlXwax::~VinylControlXwax()
delete m_pSteadySubtle;
delete m_pSteadyGross;
delete [] m_pPitchRing;
+ delete [] m_pWorkBuffer;
//Cleanup xwax nicely
timecoder_monitor_clear(&timecoder);
@@ -197,9 +200,17 @@ void VinylControlXwax::analyzeSamples(CSAMPLE* pSamples, size_t nFrames) {
gain = 1.0f;
}
+ size_t samplesSize = nFrames * kChannels;
+
+ if (samplesSize > m_workBufferSize) {
+ delete [] m_pWorkBuffer;
+ m_pWorkBuffer = new short[samplesSize];
+ m_workBufferSize = samplesSize;
+ }
+
// Convert CSAMPLE samples to shorts, preventing overflow.
- for (int i = 0; i < static_cast<int>(nFrames * kChannels); ++i) {
- double sample = pSamples[i] * gain * SHRT_MAX;
+ for (int i = 0; i < static_cast<int>(samplesSize); ++i) {
+ CSAMPLE sample = pSamples[i] * gain * SHRT_MAX;
if (sample > SHRT_MAX) {
m_pWorkBuffer[i] = SHRT_MAX;