diff --git a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp index 186ed1ad0e..0d6a748e7c 100644 --- a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.cpp @@ -983,12 +983,17 @@ AudioFormatReader* AiffAudioFormat::createReaderFor (InputStream* sourceStream, MemoryMappedAudioFormatReader* AiffAudioFormat::createMemoryMappedReader (const File& file) { - if (FileInputStream* fin = file.createInputStream()) + return createMemoryMappedReader (file.createInputStream()); +} + +MemoryMappedAudioFormatReader* AiffAudioFormat::createMemoryMappedReader (FileInputStream* fin) +{ + if (fin != nullptr) { AiffAudioFormatReader reader (fin); if (reader.lengthInSamples > 0) - return new MemoryMappedAiffReader (file, reader); + return new MemoryMappedAiffReader (fin->getFile(), reader); } return nullptr; diff --git a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h index fe475e31e9..9895d1b6e9 100644 --- a/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h +++ b/modules/juce_audio_formats/codecs/juce_AiffAudioFormat.h @@ -70,7 +70,8 @@ public: AudioFormatReader* createReaderFor (InputStream* sourceStream, bool deleteStreamIfOpeningFails) override; - MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override; + MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override; + MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream*) override; AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo, double sampleRateToUse, diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp index 52535970f2..d8e75f242a 100644 --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.cpp @@ -1595,12 +1595,17 @@ AudioFormatReader* WavAudioFormat::createReaderFor (InputStream* sourceStream, MemoryMappedAudioFormatReader* WavAudioFormat::createMemoryMappedReader (const File& file) { - if (FileInputStream* fin = file.createInputStream()) + return createMemoryMappedReader (file.createInputStream()); +} + +MemoryMappedAudioFormatReader* WavAudioFormat::createMemoryMappedReader (FileInputStream* fin) +{ + if (fin != nullptr) { WavAudioFormatReader reader (fin); if (reader.lengthInSamples > 0) - return new MemoryMappedWavReader (file, reader); + return new MemoryMappedWavReader (fin->getFile(), reader); } return nullptr; diff --git a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h index 5b63f283e7..479e58bb0c 100644 --- a/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h +++ b/modules/juce_audio_formats/codecs/juce_WavAudioFormat.h @@ -183,7 +183,8 @@ public: AudioFormatReader* createReaderFor (InputStream* sourceStream, bool deleteStreamIfOpeningFails) override; - MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override; + MemoryMappedAudioFormatReader* createMemoryMappedReader (const File&) override; + MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream*) override; AudioFormatWriter* createWriterFor (OutputStream* streamToWriteTo, double sampleRateToUse, diff --git a/modules/juce_audio_formats/format/juce_AudioFormat.cpp b/modules/juce_audio_formats/format/juce_AudioFormat.cpp index fc3f9ff178..0bbc6e5209 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormat.cpp +++ b/modules/juce_audio_formats/format/juce_AudioFormat.cpp @@ -54,3 +54,9 @@ MemoryMappedAudioFormatReader* AudioFormat::createMemoryMappedReader (const File { return nullptr; } + +MemoryMappedAudioFormatReader* AudioFormat::createMemoryMappedReader (FileInputStream* fin) +{ + delete fin; + return nullptr; +} diff --git a/modules/juce_audio_formats/format/juce_AudioFormat.h b/modules/juce_audio_formats/format/juce_AudioFormat.h index fee1e06797..4eb34535ca 100644 --- a/modules/juce_audio_formats/format/juce_AudioFormat.h +++ b/modules/juce_audio_formats/format/juce_AudioFormat.h @@ -112,6 +112,7 @@ public: If the format does not support this, the method will return nullptr; */ virtual MemoryMappedAudioFormatReader* createMemoryMappedReader (const File& file); + virtual MemoryMappedAudioFormatReader* createMemoryMappedReader (FileInputStream* fin); /** Tries to create an object that can write to a stream with this audio format.