timeline: use headers in waveform data files rather than sidecar metadata files
This commit is contained in:
@@ -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<char*>(&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<char*>(&info), sizeof(SampleSummer::Info));
|
||||
|
||||
wave_metadata.close();
|
||||
}
|
||||
|
||||
if (src_block->type() == Block::kClip) {
|
||||
emit static_cast<ClipBlock*>(src_block)->PreviewUpdated();
|
||||
}
|
||||
|
||||
@@ -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<char*>(&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<const SampleSummer::Sum*>(w.constData()),
|
||||
w.size() / sizeof(SampleSummer::Sum),
|
||||
reinterpret_cast<const SampleSummer::Sum*>(w.constData() + sizeof(SampleSummer::Info)),
|
||||
(w.size() - sizeof(SampleSummer::Info)) / sizeof(SampleSummer::Sum),
|
||||
info.channels);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user