added support for multiple timeline sections

This commit is contained in:
itsmattkc
2019-10-05 04:38:17 +10:00
parent bba229b5b2
commit ea4f6f43c4
15 changed files with 543 additions and 251 deletions
+11 -14
View File
@@ -29,9 +29,13 @@
TimelineOutput::TimelineOutput()
{
track_input_ = new NodeInput("track_in");
track_input_->add_data_input(NodeParam::kTrack);
AddParameter(track_input_);
video_track_input_ = new NodeInput("video_track_in");
video_track_input_->add_data_input(NodeParam::kTrack);
AddParameter(video_track_input_);
audio_track_input_ = new NodeInput("audio_track_in");
audio_track_input_->add_data_input(NodeParam::kTrack);
AddParameter(audio_track_input_);
length_output_ = new NodeOutput("length_out");
length_output_->set_data_type(NodeParam::kRational);
@@ -68,7 +72,7 @@ const rational &TimelineOutput::Timebase()
NodeInput *TimelineOutput::track_input()
{
return track_input_;
return video_track_input_;
}
NodeOutput *TimelineOutput::length_output()
@@ -91,20 +95,13 @@ QVariant TimelineOutput::Value(NodeOutput *output, const rational &time)
if (output == length_output_) {
Q_UNUSED(time)
rational length;
// Retrieve each track's end point and return the longest of the tracks
foreach (TrackOutput* track, track_cache_) {
length = qMax(track->in(), length);
}
return QVariant::fromValue(length);
return QVariant::fromValue(TimelineLength());
}
return 0;
}
rational TimelineOutput::GetSequenceLength()
rational TimelineOutput::TimelineLength()
{
rational length = 0;
@@ -117,7 +114,7 @@ rational TimelineOutput::GetSequenceLength()
TrackOutput *TimelineOutput::attached_track()
{
return ValueToPtr<TrackOutput>(track_input_->get_value(0));
return ValueToPtr<TrackOutput>(video_track_input_->get_value(0));
}
void TimelineOutput::AttachTrack(TrackOutput *track)
+11 -3
View File
@@ -32,6 +32,12 @@ class TimelineOutput : public Node
{
Q_OBJECT
public:
enum TrackType {
kVideo,
kAudio,
kSubtitle
};
TimelineOutput();
virtual QString Name() override;
@@ -54,6 +60,8 @@ public:
void RemoveTrack();
rational TimelineLength();
public slots:
/**
* @brief Slot for when the track connection is added
@@ -102,8 +110,6 @@ protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
private:
rational GetSequenceLength();
TrackOutput* attached_track();
void AttachTrack(TrackOutput *track);
@@ -112,7 +118,9 @@ private:
static TrackOutput* TrackFromBlock(Block* block);
NodeInput* track_input_;
NodeInput* video_track_input_;
NodeInput* audio_track_input_;
NodeOutput* length_output_;