Timestretched playback of AudioSources

Hello everybody,
currently i am working on a video player using FFmpeg for decoding files. If you are interested, look here. Most things work well enough for me. But I left one thing open until now, because i am a bit intimidated by the topic: i want to be able to play back the video on different speeds using timestretching for audio playback instead of simple faster/slower playback (which results in a classic pitch change).
I put everything together like this:

  • I have a FFmpegVideoReader class which inherits PositionableAudioSource. It reads data from the stream
  • I have a FFmpegVideoComponent which inherits AudioAppComponent, so it can play audio. It has a std::unique_ptr and a std::unique_ptrjuce::AudioTransportSource for which I set the FFmpegVideoReader as a source.
  • i realize faster/slower playback by changing the sample rate of the AudioTransportSource like this:
            transportSource->setSource (videoReader.get(), 0, nullptr,
                                        videoReader->getSampleRate() * playSpeed,
                                        videoReader->getNumberOfAudioChannels());

My questions now are:
Could i realize timestretched audio playback with JUCE out of the box? I couldn’t find a class which seems to do this.
Where would the timestretching have to be? Between the reader and the transport source?
Are there any resources about this topic that might help me with this topic? Examples would be great!
Any information allowing me to dig deeper is much appreciated!