Merge pull request #1875 from ThomasWilshaw/ocio_node

Initial OCIO node implementation
This commit is contained in:
itsmattkc
2022-05-08 11:57:05 -07:00
committed by GitHub
46 changed files with 1486 additions and 118 deletions
+23 -1
View File
@@ -269,7 +269,15 @@ NodeValueTable NodeTraverser::GenerateTable(const Node *n, const Node::ValueHint
return table;
} else {
return database.Merge();
// If this node has an effect input, ensure that is pushed last
NodeValueTable primary;
if (!n->GetEffectInputID().isEmpty()) {
primary = database.Take(n->GetEffectInputID());
}
NodeValueTable m = database.Merge();
m.Push(primary);
return m;
}
}
@@ -287,6 +295,7 @@ NodeValueTable NodeTraverser::GenerateBlockTable(const Track *track, const TimeR
return table;
}
QVector2D NodeTraverser::GenerateResolution() const
{
return QVector2D(video_params_.square_pixel_width(), video_params_.height());
@@ -339,6 +348,19 @@ void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
val.set_data(QVariant::fromValue(tex));
} else if (v.canConvert<ColorTransformJob>()) {
ColorTransformJob job = v.value<ColorTransformJob>();
VideoParams src_params = job.GetInputTexture()->params();
src_params.set_channel_count(GetChannelCountFromJob(job));
TexturePtr dest = CreateTexture(src_params);
ProcessColorTransform(dest, val.source(), job);
val.set_data(QVariant::fromValue(dest));
} else if (v.canConvert<FootageJob>()) {
FootageJob job = v.value<FootageJob>();