multicam: implemented queuing of future node selections during playback

This commit is contained in:
itsmattkc
2022-10-02 10:39:35 -07:00
parent 14bf515d3f
commit 14c7bd6dbc
8 changed files with 60 additions and 38 deletions
+11 -2
View File
@@ -419,6 +419,11 @@ void ViewerWidget::StartCapture(TimelineWidget *source, const TimeRange &time, c
recording_track_ = track;
}
void ViewerWidget::ConnectMulticamWidget(MulticamWidget *p)
{
multicam_panel_ = p;
}
FramePtr ViewerWidget::DecodeCachedImage(const QString &cache_path, const QUuid &cache_id, const int64_t& time)
{
FramePtr frame = FrameHashCache::LoadCacheFrame(cache_path, cache_id, time);
@@ -646,11 +651,15 @@ void ViewerWidget::DetectMulticamNode(const rational &time)
}
if (multicam) {
emit MulticamNodeDetected(GetConnectedNode(), multicam, clip);
if (multicam_panel_) {
multicam_panel_->SetMulticamNode(GetConnectedNode(), multicam, clip, time);
}
auto_cacher()->SetMulticamNode(multicam);
} else {
auto_cacher()->SetMulticamNode(nullptr);
emit MulticamNodeDetected(nullptr, nullptr, nullptr);
if (multicam_panel_) {
multicam_panel_->SetMulticamNode(nullptr, nullptr, nullptr, time);
}
}
}
+3 -5
View File
@@ -43,7 +43,7 @@
namespace olive {
class MulticamPanel;
class MulticamWidget;
/**
* @brief An OpenGL-based viewer widget with playback controls (a PlaybackControls widget).
@@ -122,7 +122,7 @@ public:
}
}
void ConnectMulticamPanel(MulticamPanel *p) { multicam_panel_ = p; }
void ConnectMulticamWidget(MulticamWidget *p);
public slots:
void Play(bool in_to_out_only);
@@ -180,8 +180,6 @@ signals:
*/
void ColorManagerChanged(ColorManager* color_manager);
void MulticamNodeDetected(ViewerOutput *viewer, MultiCamNode *n, ClipBlock *clip);
protected:
ViewerWidget(ViewerDisplayWidget *display, QWidget* parent = nullptr);
@@ -343,7 +341,7 @@ private:
QVector<Block*> timeline_selected_blocks_;
MulticamPanel *multicam_panel_;
MulticamWidget *multicam_panel_;
private slots:
void PlaybackTimerUpdate();