From b3e6f8bbee495e2488a3692bd39e29b15d7ffb19 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 20 Oct 2019 21:47:46 +1100 Subject: [PATCH] connect length to viewer node for now --- app/node/output/viewer/viewer.cpp | 16 +++++++++++++++- app/node/output/viewer/viewer.h | 5 +++++ app/project/item/sequence/sequence.cpp | 3 +++ app/render/video/videorenderer.cpp | 5 +---- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/app/node/output/viewer/viewer.cpp b/app/node/output/viewer/viewer.cpp index cbfbdd871..124c861c7 100644 --- a/app/node/output/viewer/viewer.cpp +++ b/app/node/output/viewer/viewer.cpp @@ -24,9 +24,13 @@ ViewerOutput::ViewerOutput() : viewer_width_(0), viewer_height_(0) { - texture_input_ = new NodeInput("tex_out"); + texture_input_ = new NodeInput("tex_in"); texture_input_->add_data_input(NodeInput::kTexture); AddParameter(texture_input_); + + length_input_ = new NodeInput("length_in"); + length_input_->add_data_input(NodeInput::kRational); + AddParameter(length_input_); } QString ViewerOutput::Name() @@ -66,6 +70,11 @@ NodeInput *ViewerOutput::texture_input() return texture_input_; } +NodeInput *ViewerOutput::length_input() +{ + return length_input_; +} + RenderTexturePtr ViewerOutput::GetTexture(const rational &time) { return texture_input_->get_value(time).value(); @@ -98,6 +107,11 @@ const int &ViewerOutput::ViewerHeight() return viewer_height_; } +rational ViewerOutput::Length() +{ + return length_input_->get_value(0).value(); +} + QVariant ViewerOutput::Value(NodeOutput *output, const rational &time) { Q_UNUSED(output) diff --git a/app/node/output/viewer/viewer.h b/app/node/output/viewer/viewer.h index 87ec21733..d1fb864ff 100644 --- a/app/node/output/viewer/viewer.h +++ b/app/node/output/viewer/viewer.h @@ -44,6 +44,7 @@ public: void SetTimebase(const rational& timebase); NodeInput* texture_input(); + NodeInput* length_input(); RenderTexturePtr GetTexture(const rational& time); @@ -54,6 +55,8 @@ public: const int& ViewerWidth(); const int& ViewerHeight(); + rational Length(); + signals: void TimebaseChanged(const rational&); @@ -67,6 +70,8 @@ protected: private: NodeInput* texture_input_; + NodeInput* length_input_; + rational timebase_; int viewer_width_; diff --git a/app/project/item/sequence/sequence.cpp b/app/project/item/sequence/sequence.cpp index 63d01bf0b..a52154a50 100644 --- a/app/project/item/sequence/sequence.cpp +++ b/app/project/item/sequence/sequence.cpp @@ -75,6 +75,9 @@ void Sequence::add_default_nodes() // Connect track to viewer NodeParam::ConnectEdge(video_track_output_->texture_output(), viewer_output_->texture_input()); + // Connect timeline length to viewer + NodeParam::ConnectEdge(timeline_output_->length_output(), viewer_output_->length_input()); + // Connect track to timeline NodeParam::ConnectEdge(video_track_output_->track_output(), timeline_output_->track_input(kTrackTypeVideo)); NodeParam::ConnectEdge(audio_track_output_->track_output(), timeline_output_->track_input(kTrackTypeAudio)); diff --git a/app/render/video/videorenderer.cpp b/app/render/video/videorenderer.cpp index 1cc67be79..fb694892c 100644 --- a/app/render/video/videorenderer.cpp +++ b/app/render/video/videorenderer.cpp @@ -69,10 +69,7 @@ void VideoRendererProcessor::InvalidateCache(const rational &start_range, const // Adjust range to min/max values rational start_range_adj = qMax(rational(0), start_range); - - // FIXME: Needs real length value - //rational end_range_adj = qMin(length_input()->get_value(0).value(), end_range); - rational end_range_adj = qMin(rational(60), end_range); + rational end_range_adj = qMin(viewer_node_->Length(), end_range); qDebug() << "Cache invalidated between" << start_range_adj.toDouble()