# HG changeset patch # User Chris Cannam # Date 1213796410 0 # Node ID 6036b38177e2cf2ffe834ab4d4a2c56bc86ca502 # Parent 3e1d190048f4f8840cb927a9179d9253224b6e97 * Fix crash when running Generator diff -r 3e1d190048f4 -r 6036b38177e2 data/model/WaveFileModel.cpp --- a/data/model/WaveFileModel.cpp Tue Jun 17 16:07:56 2008 +0000 +++ b/data/model/WaveFileModel.cpp Wed Jun 18 13:40:10 2008 +0000 @@ -188,6 +188,10 @@ // This is used for e.g. audio playback. // Could be much more efficient (although compiler optimisation will help) +#ifdef DEBUG_WAVE_FILE_MODEL + std::cout << "WaveFileModel::getData[" << this << "]: " << channel << ", " << start << ", " << count << ", " << buffer << std::endl; +#endif + if (start >= m_startFrame) { start -= m_startFrame; } else { @@ -246,6 +250,10 @@ WaveFileModel::getData(int channel, size_t start, size_t count, double *buffer) const { +#ifdef DEBUG_WAVE_FILE_MODEL + std::cout << "WaveFileModel::getData(double)[" << this << "]: " << channel << ", " << start << ", " << count << ", " << buffer << std::endl; +#endif + if (start > m_startFrame) { start -= m_startFrame; } else { @@ -300,6 +308,10 @@ size_t start, size_t count, float **buffer) const { +#ifdef DEBUG_WAVE_FILE_MODEL + std::cout << "WaveFileModel::getData[" << this << "]: " << fromchannel << "," << tochannel << ", " << start << ", " << count << ", " << buffer << std::endl; +#endif + size_t channels = getChannelCount(); if (fromchannel > tochannel) { diff -r 3e1d190048f4 -r 6036b38177e2 transform/FeatureExtractionModelTransformer.cpp --- a/transform/FeatureExtractionModelTransformer.cpp Tue Jun 17 16:07:56 2008 +0000 +++ b/transform/FeatureExtractionModelTransformer.cpp Wed Jun 18 13:40:10 2008 +0000 @@ -150,6 +150,7 @@ } for (size_t i = 0; i < outputs.size(); ++i) { +// std::cerr << "comparing output " << i << " name \"" << outputs[i].identifier << "\" with expected \"" << m_transform.getOutput().toStdString() << "\"" << std::endl; if (m_transform.getOutput() == "" || outputs[i].identifier == m_transform.getOutput().toStdString()) { m_outputFeatureNo = i; diff -r 3e1d190048f4 -r 6036b38177e2 transform/RealTimeEffectModelTransformer.cpp --- a/transform/RealTimeEffectModelTransformer.cpp Tue Jun 17 16:07:56 2008 +0000 +++ b/transform/RealTimeEffectModelTransformer.cpp Wed Jun 18 13:40:10 2008 +0000 @@ -196,15 +196,17 @@ } } } else { - got = input->getData(0, channelCount - 1, - blockFrame, blockSize, - inbufs); - while (got < blockSize) { - for (size_t ch = 0; ch < channelCount; ++ch) { - inbufs[ch][got] = 0.0; + if (inbufs && inbufs[0]) { + got = input->getData(0, channelCount - 1, + blockFrame, blockSize, + inbufs); + while (got < blockSize) { + for (size_t ch = 0; ch < channelCount; ++ch) { + inbufs[ch][got] = 0.0; + } + ++got; } - ++got; - } + } for (size_t ch = channelCount; ch < m_plugin->getAudioInputCount(); ++ch) { for (long i = 0; i < blockSize; ++i) { inbufs[ch][i] = inbufs[ch % channelCount][i];