nodes: revert to single output

This commit is contained in:
itsmattkc
2021-09-07 22:01:36 -07:00
parent 9843fd47f0
commit b07bccb7dc
89 changed files with 511 additions and 616 deletions
+15 -24
View File
@@ -72,6 +72,14 @@ Node *Track::copy() const
QString Track::Name() const
{
if (track_type_ == Track::kVideo) {
return tr("Video Track %1").arg(index_);
} else if (track_type_ == Track::kAudio) {
return tr("Audio Track %1").arg(index_);
} else if (track_type_ == Track::kSubtitle) {
return tr("Subtitle Track %1").arg(index_);
}
return tr("Track");
}
@@ -145,7 +153,7 @@ void Track::SaveCustom(QXmlStreamWriter *writer) const
writer->writeTextElement(QStringLiteral("height"), QString::number(GetTrackHeight()));
}
void Track::InputConnectedEvent(const QString &input, int element, const NodeOutput &output)
void Track::InputConnectedEvent(const QString &input, int element, Node *output)
{
if (input == kBlockInput) {
if (element == -1) {
@@ -155,7 +163,7 @@ void Track::InputConnectedEvent(const QString &input, int element, const NodeOut
}
// Check if a block was connected, if not, ignore
Block* block = dynamic_cast<Block*>(output.node());
Block* block = dynamic_cast<Block*>(output);
if (!block) {
return;
@@ -220,7 +228,7 @@ void Track::InputConnectedEvent(const QString &input, int element, const NodeOut
}
}
void Track::InputDisconnectedEvent(const QString &input, int element, const NodeOutput &output)
void Track::InputDisconnectedEvent(const QString &input, int element, Node *output)
{
if (input == kBlockInput) {
if (element == -1) {
@@ -229,7 +237,7 @@ void Track::InputDisconnectedEvent(const QString &input, int element, const Node
return;
}
Block* b = dynamic_cast<Block*>(output.node());
Block* b = dynamic_cast<Block*>(output);
if (!b) {
return;
@@ -425,7 +433,7 @@ void Track::InvalidateCache(const TimeRange& range, const QString& from, int ele
if (from == kBlockInput
&& element >= 0
&& (b = dynamic_cast<const Block*>(GetConnectedOutput(from, element).node()))
&& (b = dynamic_cast<const Block*>(GetConnectedOutput(from, element)))
&& !options.value(QStringLiteral("lengthevent")).toBool()) {
// Limit the range signal to the corresponding block
TimeRange transformed = TransformRangeFromBlock(b, range);
@@ -553,23 +561,6 @@ rational Track::track_length() const
}
}
QString Track::GetDefaultTrackName(Track::Type type, int index)
{
// Starts tracks at 1 rather than 0
int user_friendly_index = index+1;
switch (type) {
case Track::kVideo: return tr("Video %1").arg(user_friendly_index);
case Track::kAudio: return tr("Audio %1").arg(user_friendly_index);
case Track::kSubtitle: return tr("Subtitle %1").arg(user_friendly_index);
case Track::kNone:
case Track::kCount:
break;
}
return tr("Track %1").arg(user_friendly_index);
}
bool Track::IsMuted() const
{
return GetStandardValue(kMutedInput).toBool();
@@ -580,7 +571,7 @@ bool Track::IsLocked() const
return locked_;
}
void Track::Hash(const QString &output, QCryptographicHash &hash, const NodeGlobals &globals, const VideoParams &video_params) const
void Track::Hash(const Node::ValueHint &output, QCryptographicHash &hash, const NodeGlobals &globals, const VideoParams &video_params) const
{
Q_UNUSED(output)
@@ -590,7 +581,7 @@ void Track::Hash(const QString &output, QCryptographicHash &hash, const NodeGlob
if (b) {
NodeGlobals new_globals = globals;
new_globals.set_time(TransformRangeForBlock(b, globals.time()));
b->Hash(kDefaultOutput, hash, new_globals, video_params);
b->Hash(GetValueHintForInput(kBlockInput, GetArrayIndexFromBlock(b)), hash, new_globals, video_params);
}
}
+5 -7
View File
@@ -355,13 +355,13 @@ public:
rational track_length() const;
static QString GetDefaultTrackName(Track::Type type, int index);
bool IsMuted() const;
bool IsLocked() const;
virtual void Hash(const QString& output, QCryptographicHash& hash, const NodeGlobals &globals, const VideoParams& video_params) const override;
virtual void Hash(const Node::ValueHint& output, QCryptographicHash& hash, const NodeGlobals &globals, const VideoParams& video_params) const override;
int GetArrayIndexFromBlock(Block* block) const;
static const double kTrackHeightDefault;
static const double kTrackHeightMinimum;
@@ -416,17 +416,15 @@ protected:
virtual void SaveCustom(QXmlStreamWriter* writer) const override;
virtual void InputConnectedEvent(const QString& input, int element, const NodeOutput& output) override;
virtual void InputConnectedEvent(const QString& input, int element, Node *output) override;
virtual void InputDisconnectedEvent(const QString& input, int element, const NodeOutput& output) override;
virtual void InputDisconnectedEvent(const QString& input, int element, Node *output) override;
virtual void InputValueChangedEvent(const QString& input, int element) override;
private:
void UpdateInOutFrom(int index);
int GetArrayIndexFromBlock(Block* block) const;
int GetArrayIndexFromCacheIndex(int index) const;
int GetCacheIndexFromArrayIndex(int index) const;
+6 -20
View File
@@ -252,20 +252,6 @@ void ViewerOutput::InvalidateCache(const TimeRange& range, const QString& from,
super::InvalidateCache(range, from, element, options);
}
QVector<QString> ViewerOutput::inputs_for_output(const QString &output) const
{
QVector<QString> inputs;
Track::Type type = Track::Reference::TypeFromString(output);
if (type == Track::kVideo) {
inputs.append(kTextureInput);
} else if (type == Track::kAudio) {
inputs.append(kSamplesInput);
}
return inputs;
}
QVector<Track::Reference> ViewerOutput::GetEnabledStreamsAsReferences() const
{
QVector<Track::Reference> refs;
@@ -329,7 +315,7 @@ void ViewerOutput::VerifyLength()
}
}
void ViewerOutput::InputConnectedEvent(const QString &input, int element, const NodeOutput &output)
void ViewerOutput::InputConnectedEvent(const QString &input, int element, Node *output)
{
if (input == kTextureInput) {
emit TextureInputChanged();
@@ -338,7 +324,7 @@ void ViewerOutput::InputConnectedEvent(const QString &input, int element, const
super::InputConnectedEvent(input, element, output);
}
void ViewerOutput::InputDisconnectedEvent(const QString &input, int element, const NodeOutput &output)
void ViewerOutput::InputDisconnectedEvent(const QString &input, int element, Node *output)
{
if (input == kTextureInput) {
emit TextureInputChanged();
@@ -354,7 +340,7 @@ rational ViewerOutput::VerifyLengthInternal(Track::Type type) const
switch (type) {
case Track::kVideo:
if (IsInputConnected(kTextureInput)) {
NodeValueTable t = traverser.GenerateTable(GetConnectedOutput(kTextureInput), TimeRange(0, 0));
NodeValueTable t = traverser.GenerateTable(GetConnectedOutput(kTextureInput), GetValueHintForInput(kTextureInput, -1), TimeRange(0, 0));
rational r = t.Get(NodeValue::kRational, QStringLiteral("length")).value<rational>();
if (!r.isNaN()) {
return r;
@@ -363,7 +349,7 @@ rational ViewerOutput::VerifyLengthInternal(Track::Type type) const
break;
case Track::kAudio:
if (IsInputConnected(kSamplesInput)) {
NodeValueTable t = traverser.GenerateTable(GetConnectedOutput(kSamplesInput), TimeRange(0, 0));
NodeValueTable t = traverser.GenerateTable(GetConnectedOutput(kSamplesInput), GetValueHintForInput(kSamplesInput, -1), TimeRange(0, 0));
rational r = t.Get(NodeValue::kRational, QStringLiteral("length")).value<rational>();;
if (!r.isNaN()) {
return r;
@@ -379,12 +365,12 @@ rational ViewerOutput::VerifyLengthInternal(Track::Type type) const
return 0;
}
NodeOutput ViewerOutput::GetConnectedTextureOutput()
Node *ViewerOutput::GetConnectedTextureOutput()
{
return GetConnectedOutput(kTextureInput);
}
NodeOutput ViewerOutput::GetConnectedSampleOutput()
Node *ViewerOutput::GetConnectedSampleOutput()
{
return GetConnectedOutput(kSamplesInput);
}
+4 -6
View File
@@ -68,8 +68,6 @@ public:
virtual void InvalidateCache(const TimeRange& range, const QString& from, int element, InvalidateCacheOptions options) override;
virtual QVector<QString> inputs_for_output(const QString& output) const override;
VideoParams GetVideoParams(int index = 0) const
{
// This check isn't strictly necessary (GetStandardValue will return a null VideoParams anyway),
@@ -150,9 +148,9 @@ public:
virtual void Retranslate() override;
virtual NodeOutput GetConnectedTextureOutput();
virtual Node *GetConnectedTextureOutput();
virtual NodeOutput GetConnectedSampleOutput();
virtual Node *GetConnectedSampleOutput();
void SetViewerVideoCacheEnabled(bool e) { video_cache_enabled_ = e; }
void SetViewerAudioCacheEnabled(bool e) { audio_cache_enabled_ = e; }
@@ -207,9 +205,9 @@ public slots:
void VerifyLength();
protected:
virtual void InputConnectedEvent(const QString &input, int element, const NodeOutput &output) override;
virtual void InputConnectedEvent(const QString &input, int element, Node *output) override;
virtual void InputDisconnectedEvent(const QString &input, int element, const NodeOutput &output) override;
virtual void InputDisconnectedEvent(const QString &input, int element, Node *output) override;
virtual rational VerifyLengthInternal(Track::Type type) const;