viewer: receive audio invalidation signal

Invalidates and runs cache task correctly even if there are no video
nodes connected.
This commit is contained in:
itsmattkc
2020-05-30 02:50:30 +10:00
parent 8299acf547
commit c1ed84b90e
5 changed files with 19 additions and 8 deletions
+2 -1
View File
@@ -58,7 +58,8 @@ ViewerOutput::ViewerOutput()
// Create UUID for this node
uuid_ = QUuid::createUuid();
connect(this, &ViewerOutput::LengthChanged, &video_frame_cache_, &FrameHashCache::SetLength);
connect(this, &ViewerOutput::LengthChanged, &video_frame_cache_, &PlaybackCache::SetLength);
connect(this, &ViewerOutput::LengthChanged, &audio_playback_cache_, &PlaybackCache::SetLength);
}
Node *ViewerOutput::copy() const
+1
View File
@@ -233,6 +233,7 @@ void RenderTask::Render(const TimeRangeList& video_range,
}
}
// `Close` will block until all jobs are done making a safe deletion
backend_.Close();
}
-1
View File
@@ -109,7 +109,6 @@ void NodeView::DeleteSelected()
foreach (NodeEdge* edge, selected_edges) {
new NodeEdgeRemoveCommand(edge->output(), edge->input(), command);
qDebug() << "Deleting edge between" << edge->output()->parentNode() << "and" << edge->input()->parentNode();
}
}
+13 -5
View File
@@ -176,7 +176,8 @@ void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
connect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SizeChangedSlot);
connect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
connect(n, &ViewerOutput::ParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
connect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
connect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedVideoRange);
connect(n->audio_playback_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
connect(n, &ViewerOutput::GraphChangedFrom, this, &ViewerWidget::UpdateStack);
ruler()->SetPlaybackCache(n->video_frame_cache());
@@ -229,7 +230,8 @@ void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
disconnect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SizeChangedSlot);
disconnect(n, &ViewerOutput::LengthChanged, this, &ViewerWidget::LengthChangedSlot);
disconnect(n, &ViewerOutput::ParamsChanged, this, &ViewerWidget::UpdateRendererParameters);
disconnect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
disconnect(n->video_frame_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedVideoRange);
disconnect(n->audio_playback_cache(), &FrameHashCache::Invalidated, this, &ViewerWidget::ViewerInvalidatedRange);
disconnect(n, &ViewerOutput::GraphChangedFrom, this, &ViewerWidget::UpdateStack);
ruler()->SetPlaybackCache(nullptr);
@@ -840,7 +842,8 @@ void ViewerWidget::StartBackgroundCaching()
busy_ = false;
}
if (GetConnectedNode()->video_frame_cache()->HasInvalidatedRanges()
if ((GetConnectedNode()->video_frame_cache()->HasInvalidatedRanges()
|| GetConnectedNode()->audio_playback_cache()->HasInvalidatedRanges())
&& Config::Current()["AutoCache"].toBool()) {
if (cache_background_task_ || busy_viewers_) {
@@ -875,11 +878,11 @@ void ViewerWidget::UpdateRendererParameters()
}
GetConnectedNode()->video_frame_cache()->InvalidateAll();
GetConnectedNode()->audio_playback_cache()->InvalidateAll();
StartBackgroundCaching();
renderer_->SetVideoParams(GenerateVideoParams());
renderer_->SetAudioParams(GenerateAudioParams());
display_widget_->SetVideoParams(GetConnectedNode()->video_params());
@@ -1190,12 +1193,17 @@ void ViewerWidget::SetZoomFromMenu(QAction *action)
sizer_->SetZoom(action->data().toInt());
}
void ViewerWidget::ViewerInvalidatedRange(const TimeRange &range)
void ViewerWidget::ViewerInvalidatedVideoRange(const TimeRange &range)
{
if (GetTime() >= range.in() && (GetTime() < range.out() || range.in() == range.out())) {
ForceUpdate();
}
ViewerInvalidatedRange();
}
void ViewerWidget::ViewerInvalidatedRange()
{
// Restart the cache wait timer
cache_wait_timer_.stop();
StopAllBackgroundCacheTasks(false);
+3 -1
View File
@@ -268,7 +268,9 @@ private slots:
void SetZoomFromMenu(QAction* action);
void ViewerInvalidatedRange(const OLIVE_NAMESPACE::TimeRange &range);
void ViewerInvalidatedVideoRange(const OLIVE_NAMESPACE::TimeRange &range);
void ViewerInvalidatedRange();
void UpdateStack();