diff --git a/libraries/audio/src/AudioInjector.cpp b/libraries/audio/src/AudioInjector.cpp index ea63df7f17..3bd46833d4 100644 --- a/libraries/audio/src/AudioInjector.cpp +++ b/libraries/audio/src/AudioInjector.cpp @@ -102,6 +102,10 @@ void AudioInjector::restart() { // reset the current send offset to zero _currentSendOffset = 0; + // reset the nextFrame and elapsed timer + _nextFrame = 0; + _frameTimer->invalidate(); + // check our state to decide if we need extra handling for the restart request if (_state == State::Finished) { // we finished playing, need to reset state so we can get going again @@ -246,6 +250,11 @@ int64_t AudioInjector::injectNextFrame() { } } + if (!_frameTimer->isValid()) { + // in the case where we have been restarted, the frame timer will be invalid and we need to start it back over here + _frameTimer->restart(); + } + int totalBytesLeftToCopy = (_options.stereo ? 2 : 1) * AudioConstants::NETWORK_FRAME_BYTES_PER_CHANNEL; if (!_options.loop) { // If we aren't looping, let's make sure we don't read past the end