renderer: generate audio waveforms in render threads

Solves UI lag issues with long audio sequences.
This commit is contained in:
itsmattkc
2021-06-11 23:30:55 -07:00
parent 48828d6632
commit 08e2fa4d8e
9 changed files with 62 additions and 70 deletions
+22
View File
@@ -162,6 +162,28 @@ void AudioVisualWaveform::OverwriteSums(const AudioVisualWaveform &sums, const r
length_ = qMax(length_, dest + length);
}
void AudioVisualWaveform::OverwriteSilence(const rational &start, const rational &length)
{
for (auto it=mipmapped_data_.begin(); it!=mipmapped_data_.end(); it++) {
rational rate = it->first;
Sample& our_arr = it->second;
double rate_dbl = rate.toDouble();
// Get our destination sample
int our_start_index = time_to_samples(start, rate_dbl);
int our_length_index = time_to_samples(length, rate_dbl);
int our_end_index = our_start_index + our_length_index;
if (our_arr.size() < our_end_index) {
our_arr.resize(our_end_index);
}
memset(reinterpret_cast<char*>(our_arr.data()) + our_start_index, 0, our_length_index);
}
}
void AudioVisualWaveform::Shift(const rational &from, const rational &to)
{
for (auto it=mipmapped_data_.begin(); it!=mipmapped_data_.end(); it++) {