From c5458c684377141c5440d68192136bdf806f35e6 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 3 May 2020 00:44:14 +1000 Subject: [PATCH] timeline: use headers in waveform data files rather than sidecar metadata files --- app/render/backend/audiorenderworker.cpp | 20 ++++++++----------- .../view/timelineviewblockitem.cpp | 10 +++------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/app/render/backend/audiorenderworker.cpp b/app/render/backend/audiorenderworker.cpp index c8d53c8b1..2365855a4 100644 --- a/app/render/backend/audiorenderworker.cpp +++ b/app/render/backend/audiorenderworker.cpp @@ -112,7 +112,14 @@ NodeValueTable AudioRenderWorker::RenderBlock(const TrackOutput *track, const Ti AudioRenderingParams waveform_params(SampleSummer::kSumSampleRate, audio_params_.channel_layout(), SampleFormat::SAMPLE_FMT_S32); int chunk_size = (audio_params().sample_rate() / waveform_params.sample_rate()); - qint64 start_offset = waveform_params.time_to_bytes(range_for_block.in() - b->in()); + { + // Write metadata header + SampleSummer::Info info; + info.channels = audio_params_.channel_count(); + wave_file.write(reinterpret_cast(&info), sizeof(SampleSummer::Info)); + } + + qint64 start_offset = sizeof(SampleSummer::Info) + waveform_params.time_to_bytes(range_for_block.in() - b->in()); qint64 length_offset = waveform_params.time_to_bytes(range_for_block.length()); qint64 end_offset = start_offset + length_offset; @@ -133,17 +140,6 @@ NodeValueTable AudioRenderWorker::RenderBlock(const TrackOutput *track, const Ti wave_file.close(); - // Write metadata about this waveform file - QFile wave_metadata(wave_fn.append(QStringLiteral(".meta"))); - if (wave_metadata.open(QFile::WriteOnly)) { - SampleSummer::Info info; - info.channels = audio_params_.channel_count(); - - wave_metadata.write(reinterpret_cast(&info), sizeof(SampleSummer::Info)); - - wave_metadata.close(); - } - if (src_block->type() == Block::kClip) { emit static_cast(src_block)->PreviewUpdated(); } diff --git a/app/widget/timelinewidget/view/timelineviewblockitem.cpp b/app/widget/timelinewidget/view/timelineviewblockitem.cpp index 81edaa2ed..1b63d0d3e 100644 --- a/app/widget/timelinewidget/view/timelineviewblockitem.cpp +++ b/app/widget/timelinewidget/view/timelineviewblockitem.cpp @@ -107,19 +107,15 @@ void TimelineViewBlockItem::paint(QPainter *painter, const QStyleOptionGraphicsI // Read metadata SampleSummer::Info info; - QFile wave_meta(wave_fn.append(QStringLiteral(".meta"))); - if (wave_meta.open(QFile::ReadOnly)) { - wave_meta.read(reinterpret_cast(&info), sizeof(SampleSummer::Info)); - wave_meta.close(); - } + memcpy(&info, w.data(), sizeof(SampleSummer::Info)); // Prevent divide by zero if (info.channels) { AudioWaveformView::DrawWaveform(painter, rect().toRect(), this->GetScale(), - reinterpret_cast(w.constData()), - w.size() / sizeof(SampleSummer::Sum), + reinterpret_cast(w.constData() + sizeof(SampleSummer::Info)), + (w.size() - sizeof(SampleSummer::Info)) / sizeof(SampleSummer::Sum), info.channels); } }