viewer: only render sequence waveforms when waveform view is visible

This commit is contained in:
itsmattkc
2022-10-04 21:51:05 -07:00
parent 5d5b2440a1
commit 906f802422
3 changed files with 20 additions and 9 deletions
+13 -8
View File
@@ -39,7 +39,8 @@ ViewerOutput::ViewerOutput(bool create_buffer_inputs, bool create_default_stream
video_length_(0),
audio_length_(0),
autocache_input_video_(false),
autocache_input_audio_(false)
autocache_input_audio_(false),
waveform_requests_enabled_(false)
{
AddInput(kVideoParamsInput, NodeValue::kVideoParams, InputFlags(kInputFlagNotConnectable | kInputFlagNotKeyframable | kInputFlagArray | kInputFlagHidden));
@@ -231,7 +232,9 @@ void ViewerOutput::InvalidateCache(const TimeRange& range, const QString& from,
}
} else if (from == kSamplesInput) {
TimeRange max_range = InputTimeAdjustment(from, element, TimeRange(0, GetAudioLength()));
connected->waveform_cache()->Request(range.Intersected(max_range));
if (waveform_requests_enabled_) {
connected->waveform_cache()->Request(range.Intersected(max_range));
}
if (autocache_input_audio_) {
connected->audio_playback_cache()->Request(range.Intersected(max_range));
}
@@ -387,13 +390,15 @@ Node::ValueHint ViewerOutput::GetConnectedSampleValueHint()
return GetValueHintForInput(kSamplesInput);
}
void ViewerOutput::ConnectedToPreviewEvent()
void ViewerOutput::SetWaveformEnabled(bool e)
{
if (Node *connected = this->GetConnectedSampleOutput()) {
TimeRange max_range = InputTimeAdjustment(kSamplesInput, -1, TimeRange(0, GetAudioLength()));
TimeRangeList invalid = connected->waveform_cache()->GetInvalidatedRanges(max_range);
for (const TimeRange &r : invalid) {
connected->waveform_cache()->Request(r);
if ((waveform_requests_enabled_ = e)) {
if (Node *connected = this->GetConnectedSampleOutput()) {
TimeRange max_range = InputTimeAdjustment(kSamplesInput, -1, TimeRange(0, GetAudioLength()));
TimeRangeList invalid = connected->waveform_cache()->GetInvalidatedRanges(max_range);
for (const TimeRange &r : invalid) {
connected->waveform_cache()->Request(r);
}
}
}
}
+3 -1
View File
@@ -182,7 +182,7 @@ public:
virtual ValueHint GetConnectedSampleValueHint();
virtual void ConnectedToPreviewEvent() override;
void SetWaveformEnabled(bool e);
bool IsVideoAutoCacheEnabled() const { qDebug() << "sequence ac is a stub"; return false; }
void SetVideoAutoCacheEnabled(bool e) { qDebug() << "sequence ac is a stub"; }
@@ -251,6 +251,8 @@ private:
EncodingParams last_used_encoding_params_;
bool waveform_requests_enabled_;
};
}
+4
View File
@@ -708,6 +708,10 @@ void ViewerWidget::UpdateWaveformViewFromMode()
waveform_view_->setVisible(waveform_mode_ == kWFViewerAndWaveform || waveform_mode_ == kWFWaveformOnly || (waveform_mode_ == kWFAutomatic && prefer_waveform));
waveform_view_->setSizePolicy(QSizePolicy::Expanding, waveform_mode_ == kWFViewerAndWaveform ? QSizePolicy::Maximum : QSizePolicy::Expanding);
if (GetConnectedNode()) {
GetConnectedNode()->SetWaveformEnabled(waveform_view_->isVisible());
}
}
void ViewerWidget::QueueNextAudioBuffer()