added support for multiple timeline sections
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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_;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user