# HG changeset patch # User Chris Cannam # Date 1425477193 0 # Node ID dee4aceb131c3edb0d18d82db9db01287d0919ca # Parent 720f732e8082eec24508cc87df604de4d7950d95 Fixes to go with latest svcore diff -r 720f732e8082 -r dee4aceb131c audioio/AudioCallbackPlaySource.cpp --- a/audioio/AudioCallbackPlaySource.cpp Tue Mar 03 09:33:59 2015 +0000 +++ b/audioio/AudioCallbackPlaySource.cpp Wed Mar 04 13:53:13 2015 +0000 @@ -397,7 +397,7 @@ } void -AudioCallbackPlaySource::play(int startFrame) +AudioCallbackPlaySource::play(sv_frame_t startFrame) { if (!m_sourceSampleRate) { cerr << "AudioCallbackPlaySource::play: No source sample rate available, not playing" << endl; @@ -597,18 +597,18 @@ } void -AudioCallbackPlaySource::setTargetPlayLatency(int latency) +AudioCallbackPlaySource::setTargetPlayLatency(sv_frame_t latency) { m_playLatency = latency; } -int +sv_frame_t AudioCallbackPlaySource::getTargetPlayLatency() const { return m_playLatency; } -int +sv_frame_t AudioCallbackPlaySource::getCurrentPlayingFrame() { // This method attempts to estimate which audio sample frame is @@ -625,13 +625,13 @@ return getCurrentFrame(latency_t); } -int +sv_frame_t AudioCallbackPlaySource::getCurrentBufferedFrame() { return getCurrentFrame(RealTime::zeroTime); } -int +sv_frame_t AudioCallbackPlaySource::getCurrentFrame(RealTime latency_t) { // We resample when filling the ring buffer, and time-stretch when @@ -640,8 +640,8 @@ // Because of the multiple rates involved, we do the actual // calculation using RealTime instead. - int sourceRate = getSourceSampleRate(); - int targetRate = getTargetSampleRate(); + sv_samplerate_t sourceRate = getSourceSampleRate(); + sv_samplerate_t targetRate = getTargetSampleRate(); if (sourceRate == 0 || targetRate == 0) return 0; @@ -739,7 +739,7 @@ - latency_t - stretchlat_t - lastretrieved_t - inbuffer_t + sincerequest_t; if (playing_t < RealTime::zeroTime) playing_t = RealTime::zeroTime; - int frame = RealTime::realTime2Frame(playing_t, sourceRate); + sv_frame_t frame = RealTime::realTime2Frame(playing_t, sourceRate); return m_viewManager->alignPlaybackFrameToReference(frame); } @@ -833,7 +833,7 @@ if (playing_t < RealTime::zeroTime) playing_t = RealTime::zeroTime; - int frame = RealTime::realTime2Frame(playing_t, sourceRate); + sv_frame_t frame = RealTime::realTime2Frame(playing_t, sourceRate); if (m_lastCurrentFrame > 0 && !looping) { if (frame < m_lastCurrentFrame) { @@ -916,7 +916,7 @@ } void -AudioCallbackPlaySource::setTargetSampleRate(int sr) +AudioCallbackPlaySource::setTargetSampleRate(sv_samplerate_t sr) { bool first = (m_targetSampleRate == 0); @@ -1033,7 +1033,7 @@ clearRingBuffers(); } -int +sv_samplerate_t AudioCallbackPlaySource::getTargetSampleRate() const { if (m_targetSampleRate) return m_targetSampleRate; @@ -1053,7 +1053,7 @@ return m_sourceChannelCount; } -int +sv_samplerate_t AudioCallbackPlaySource::getSourceSampleRate() const { return m_sourceSampleRate; @@ -1093,11 +1093,9 @@ emit activity(tr("Change time-stretch factor to %1").arg(factor)); } -int -AudioCallbackPlaySource::getSourceSamples(int ucount, float **buffer) +sv_frame_t +AudioCallbackPlaySource::getSourceSamples(sv_frame_t count, float **buffer) { - int count = ucount; - if (!m_playing) { #ifdef DEBUG_AUDIO_PLAY_SOURCE_PLAYING SVDEBUG << "AudioCallbackPlaySource::getSourceSamples: Not playing" << endl; @@ -1309,7 +1307,7 @@ } void -AudioCallbackPlaySource::applyAuditioningEffect(int count, float **buffers) +AudioCallbackPlaySource::applyAuditioningEffect(sv_frame_t count, float **buffers) { if (m_auditioningPluginBypassed) return; RealTimePluginInstance *plugin = m_auditioningPlugin; @@ -1359,11 +1357,11 @@ static float *tmp = 0; static int tmpSize = 0; - int space = 0; + sv_frame_t space = 0; for (int c = 0; c < getTargetChannelCount(); ++c) { RingBuffer *wb = getWriteRingBuffer(c); if (wb) { - int spaceHere = wb->getWriteSpace(); + sv_frame_t spaceHere = wb->getWriteSpace(); if (c == 0 || spaceHere < space) space = spaceHere; } } @@ -1375,7 +1373,7 @@ return false; } - int f = m_writeBufferFill; + sv_frame_t f = m_writeBufferFill; bool readWriteEqual = (m_readBuffers == m_writeBuffers); @@ -1398,8 +1396,8 @@ int channels = getTargetChannelCount(); - int orig = space; - int got = 0; + sv_frame_t orig = space; + sv_frame_t got = 0; static float **bufferPtrs = 0; static int bufferPtrCount = 0; @@ -1580,14 +1578,14 @@ return true; } -int -AudioCallbackPlaySource::mixModels(int &frame, int count, float **buffers) +sv_frame_t +AudioCallbackPlaySource::mixModels(sv_frame_t &frame, sv_frame_t count, float **buffers) { - int processed = 0; - int chunkStart = frame; - int chunkSize = count; - int selectionSize = 0; - int nextChunkStart = chunkStart + chunkSize; + sv_frame_t processed = 0; + sv_frame_t chunkStart = frame; + sv_frame_t chunkSize = count; + sv_frame_t selectionSize = 0; + sv_frame_t nextChunkStart = chunkStart + chunkSize; bool looping = m_viewManager->getPlayLoopMode(); bool constrained = (m_viewManager->getPlaySelectionMode() && @@ -1617,11 +1615,11 @@ nextChunkStart = chunkStart + chunkSize; selectionSize = 0; - int fadeIn = 0, fadeOut = 0; + sv_frame_t fadeIn = 0, fadeOut = 0; if (constrained) { - int rChunkStart = + sv_frame_t rChunkStart = m_viewManager->alignPlaybackFrameToReference(chunkStart); Selection selection = @@ -1643,9 +1641,9 @@ } else { - int sf = m_viewManager->alignReferenceToPlaybackFrame + sv_frame_t sf = m_viewManager->alignReferenceToPlaybackFrame (selection.getStartFrame()); - int ef = m_viewManager->alignReferenceToPlaybackFrame + sv_frame_t ef = m_viewManager->alignReferenceToPlaybackFrame (selection.getEndFrame()); selectionSize = ef - sf; diff -r 720f732e8082 -r dee4aceb131c audioio/AudioCallbackPlaySource.h --- a/audioio/AudioCallbackPlaySource.h Tue Mar 03 09:33:59 2015 +0000 +++ b/audioio/AudioCallbackPlaySource.h Wed Mar 04 13:53:13 2015 +0000 @@ -83,7 +83,7 @@ * from the given frame. If playback is already under way, reseek * to the given frame and continue. */ - virtual void play(int startFrame); + virtual void play(sv_frame_t startFrame); /** * Stop playback and ensure that no more data is returned. @@ -99,18 +99,18 @@ * Return the frame number that is currently expected to be coming * out of the speakers. (i.e. compensating for playback latency.) */ - virtual int getCurrentPlayingFrame(); + virtual sv_frame_t getCurrentPlayingFrame(); /** * Return the last frame that would come out of the speakers if we * stopped playback right now. */ - virtual int getCurrentBufferedFrame(); + virtual sv_frame_t getCurrentBufferedFrame(); /** * Return the frame at which playback is expected to end (if not looping). */ - virtual int getPlayEndFrame() { return m_lastModelEndFrame; } + virtual sv_frame_t getPlayEndFrame() { return m_lastModelEndFrame; } /** * Set the target and the block size of the target audio device. @@ -133,12 +133,12 @@ * highest last frame across all channels) requested via * getSamples(). The default is zero. */ - void setTargetPlayLatency(int); + void setTargetPlayLatency(sv_frame_t); /** * Get the playback latency of the target audio device. */ - int getTargetPlayLatency() const; + sv_frame_t getTargetPlayLatency() const; /** * Specify that the target audio device has a fixed sample rate @@ -147,13 +147,13 @@ * source sample rate, this class will resample automatically to * fit. */ - void setTargetSampleRate(int); + void setTargetSampleRate(sv_samplerate_t); /** * Return the sample rate set by the target audio device (or the * source sample rate if the target hasn't set one). */ - virtual int getTargetSampleRate() const; + virtual sv_samplerate_t getTargetSampleRate() const; /** * Set the current output levels for metering (for call from the @@ -189,14 +189,14 @@ * safely be called from a realtime thread. Returns 0 if there is * no source yet available. */ - virtual int getSourceSampleRate() const; + virtual sv_samplerate_t getSourceSampleRate() const; /** * Get "count" samples (at the target sample rate) of the mixed * audio data, in all channels. This may safely be called from a * realtime thread. */ - int getSourceSamples(int count, float **buffer); + sv_frame_t getSourceSamples(sv_frame_t count, float **buffer); /** * Set the time stretcher factor (i.e. playback speed). @@ -285,24 +285,24 @@ Scavenger m_bufferScavenger; int m_sourceChannelCount; int m_blockSize; - int m_sourceSampleRate; - int m_targetSampleRate; + sv_samplerate_t m_sourceSampleRate; + sv_samplerate_t m_targetSampleRate; int m_playLatency; AudioCallbackPlayTarget *m_target; double m_lastRetrievalTimestamp; int m_lastRetrievedBlockSize; bool m_trustworthyTimestamps; - int m_lastCurrentFrame; + sv_frame_t m_lastCurrentFrame; bool m_playing; bool m_exiting; - int m_lastModelEndFrame; + sv_frame_t m_lastModelEndFrame; int m_ringBufferSize; float m_outputLeft; float m_outputRight; RealTimePluginInstance *m_auditioningPlugin; bool m_auditioningPluginBypassed; Scavenger m_pluginScavenger; - int m_playStartFrame; + sv_frame_t m_playStartFrame; bool m_playStartFramePassed; RealTime m_playStartedAt; @@ -343,17 +343,17 @@ // which will be count or fewer. Return in the frame argument the // new buffered frame position (which may be earlier than the // frame argument passed in, in the case of looping). - int mixModels(int &frame, int count, float **buffers); + sv_frame_t mixModels(sv_frame_t &frame, sv_frame_t count, float **buffers); // Called from getSourceSamples. - void applyAuditioningEffect(int count, float **buffers); + void applyAuditioningEffect(sv_frame_t count, float **buffers); // Ranges of current selections, if play selection is active std::vector m_rangeStarts; std::vector m_rangeDurations; void rebuildRangeLists(); - int getCurrentFrame(RealTime outputLatency); + sv_frame_t getCurrentFrame(RealTime outputLatency); class FillThread : public Thread { diff -r 720f732e8082 -r dee4aceb131c audioio/PlaySpeedRangeMapper.cpp --- a/audioio/PlaySpeedRangeMapper.cpp Tue Mar 03 09:33:59 2015 +0000 +++ b/audioio/PlaySpeedRangeMapper.cpp Wed Mar 04 13:53:13 2015 +0000 @@ -25,23 +25,23 @@ } int -PlaySpeedRangeMapper::getPositionForValue(float value) const +PlaySpeedRangeMapper::getPositionForValue(double value) const { // value is percent - float factor = getFactorForValue(value); + double factor = getFactorForValue(value); int position = getPositionForFactor(factor); return position; } int -PlaySpeedRangeMapper::getPositionForValueUnclamped(float value) const +PlaySpeedRangeMapper::getPositionForValueUnclamped(double value) const { // We don't really provide this return getPositionForValue(value); } int -PlaySpeedRangeMapper::getPositionForFactor(float factor) const +PlaySpeedRangeMapper::getPositionForFactor(double factor) const { bool slow = (factor > 1.0); @@ -63,37 +63,37 @@ return position; } -float +double PlaySpeedRangeMapper::getValueForPosition(int position) const { - float factor = getFactorForPosition(position); - float pc = getValueForFactor(factor); + double factor = getFactorForPosition(position); + double pc = getValueForFactor(factor); return pc; } -float +double PlaySpeedRangeMapper::getValueForPositionUnclamped(int position) const { // We don't really provide this return getValueForPosition(position); } -float -PlaySpeedRangeMapper::getValueForFactor(float factor) const +double +PlaySpeedRangeMapper::getValueForFactor(double factor) const { - float pc; + double pc; if (factor < 1.0) pc = ((1.0 / factor) - 1.0) * 100.0; else pc = (1.0 - factor) * 100.0; // cerr << "position = " << position << " percent = " << pc << endl; return pc; } -float -PlaySpeedRangeMapper::getFactorForValue(float value) const +double +PlaySpeedRangeMapper::getFactorForValue(double value) const { // value is percent - float factor; + double factor; if (value <= 0) { factor = 1.0 - (value / 100.0); @@ -105,7 +105,7 @@ return factor; } -float +double PlaySpeedRangeMapper::getFactorForPosition(int position) const { bool slow = false; @@ -124,7 +124,7 @@ // position is between min and half (inclusive) - float factor; + double factor; if (position == m_minpos) { factor = 1.0; diff -r 720f732e8082 -r dee4aceb131c audioio/PlaySpeedRangeMapper.h --- a/audioio/PlaySpeedRangeMapper.h Tue Mar 03 09:33:59 2015 +0000 +++ b/audioio/PlaySpeedRangeMapper.h Wed Mar 04 13:53:13 2015 +0000 @@ -23,17 +23,17 @@ public: PlaySpeedRangeMapper(int minpos, int maxpos); - virtual int getPositionForValue(float value) const; - virtual int getPositionForValueUnclamped(float value) const; + virtual int getPositionForValue(double value) const; + virtual int getPositionForValueUnclamped(double value) const; - virtual float getValueForPosition(int position) const; - virtual float getValueForPositionUnclamped(int position) const; + virtual double getValueForPosition(int position) const; + virtual double getValueForPositionUnclamped(int position) const; - int getPositionForFactor(float factor) const; - float getValueForFactor(float factor) const; + int getPositionForFactor(double factor) const; + double getValueForFactor(double factor) const; - float getFactorForPosition(int position) const; - float getFactorForValue(float value) const; + double getFactorForPosition(int position) const; + double getFactorForValue(double value) const; virtual QString getUnit() const; diff -r 720f732e8082 -r dee4aceb131c framework/MainWindowBase.cpp --- a/framework/MainWindowBase.cpp Tue Mar 03 09:33:59 2015 +0000 +++ b/framework/MainWindowBase.cpp Wed Mar 04 13:53:13 2015 +0000 @@ -2370,8 +2370,8 @@ Model *model = getMainModel(); if (!model) return; - int start = model->getStartFrame(); - int end = model->getEndFrame(); + sv_frame_t start = model->getStartFrame(); + sv_frame_t end = model->getEndFrame(); if (m_playSource) end = std::max(end, m_playSource->getPlayEndFrame()); int pixels = currentPane->width();