From 1fcae3675c4f7a8d74fb2dde4bcc346e840eb70c Mon Sep 17 00:00:00 2001 From: hogliux Date: Tue, 18 Oct 2016 10:38:18 +0100 Subject: [PATCH] Changed flac writer to respect the current stream position when writing the flac header --- modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp b/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp index 5130d8df9c..0cc4d1a1ca 100644 --- a/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp +++ b/modules/juce_audio_formats/codecs/juce_FlacAudioFormat.cpp @@ -387,7 +387,8 @@ class FlacWriter : public AudioFormatWriter { public: FlacWriter (OutputStream* const out, double rate, uint32 numChans, uint32 bits, int qualityOptionIndex) - : AudioFormatWriter (out, flacFormatName, rate, numChans, bits) + : AudioFormatWriter (out, flacFormatName, rate, numChans, bits), + streamStartPos (output != nullptr ? jmax (output->getPosition(), 0ll) : 0ll) { using namespace FlacNamespace; encoder = FLAC__stream_encoder_new(); @@ -495,7 +496,7 @@ public: packUint32 ((FLAC__uint32) info.total_samples, buffer + 14, 4); memcpy (buffer + 18, info.md5sum, 16); - const bool seekOk = output->setPosition (4); + const bool seekOk = output->setPosition (streamStartPos + 4); ignoreUnused (seekOk); // if this fails, you've given it an output stream that can't seek! It needs @@ -545,6 +546,7 @@ public: private: FlacNamespace::FLAC__StreamEncoder* encoder; + int64 streamStartPos; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FlacWriter) };