From 6f2993477dc00095287c842cf917f74928e8102d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 1 May 2020 03:51:56 +1000 Subject: [PATCH] added null check for audio that hasn't been indexed yet --- app/render/backend/audio/audiobackend.cpp | 66 ++++++++++++----------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/app/render/backend/audio/audiobackend.cpp b/app/render/backend/audio/audiobackend.cpp index 6b6f81ab2..f7450542a 100644 --- a/app/render/backend/audio/audiobackend.cpp +++ b/app/render/backend/audio/audiobackend.cpp @@ -65,43 +65,47 @@ void AudioBackend::ThreadCompletedCache(NodeDependency dep, NodeValueTable data, if (job_time == render_job_info_.value(dep.range())) { render_job_info_.remove(dep.range()); - QByteArray cached_samples = data.Get(NodeParam::kSamples).value()->toPackedData(); + SampleBufferPtr cached_sample_ptr = data.Get(NodeParam::kSamples).value(); - int offset = params().time_to_bytes(dep.in()); - int length = params().time_to_bytes(dep.range().length()); - int out_point = qMin(offset + length, params().time_to_bytes(GetSequenceLength())); + if (cached_sample_ptr) { + QByteArray cached_samples = cached_sample_ptr->toPackedData(); - if (offset < out_point) { - if (offset + length > out_point) { - length = out_point - offset; - } + int offset = params().time_to_bytes(dep.in()); + int length = params().time_to_bytes(dep.range().length()); + int out_point = qMin(offset + length, params().time_to_bytes(GetSequenceLength())); - QFile f(CachePathName()); - if (f.open(QFile::ReadWrite)) { - - if (f.size() < out_point && !f.resize(out_point)) { - qCritical() << "Failed to resize file" << CachePathName(); + if (offset < out_point) { + if (offset + length > out_point) { + length = out_point - offset; } - if (!f.seek(offset)) { - qCritical() << "Failed to seek file" << CachePathName(); + QFile f(CachePathName()); + if (f.open(QFile::ReadWrite)) { + + if (f.size() < out_point && !f.resize(out_point)) { + qCritical() << "Failed to resize file" << CachePathName(); + } + + if (!f.seek(offset)) { + qCritical() << "Failed to seek file" << CachePathName(); + } + + // Replace data with this data + int copy_length = qMin(length, cached_samples.size()); + + f.write(cached_samples.data(), copy_length); + + if (copy_length < length) { + + // Fill in remainder with silence + QByteArray empty_space(length - copy_length, 0); + f.write(empty_space); + } + + f.close(); + } else { + qWarning() << "Failed to write to cached PCM file"; } - - // Replace data with this data - int copy_length = qMin(length, cached_samples.size()); - - f.write(cached_samples.data(), copy_length); - - if (copy_length < length) { - - // Fill in remainder with silence - QByteArray empty_space(length - copy_length, 0); - f.write(empty_space); - } - - f.close(); - } else { - qWarning() << "Failed to write to cached PCM file"; } } }