nodevalue: begin abstracting qvariant

This commit is contained in:
itsmattkc
2022-05-09 13:07:34 -07:00
parent 839f63d78f
commit 58c4600d04
36 changed files with 235 additions and 229 deletions
+18 -21
View File
@@ -71,7 +71,7 @@ NodeValue NodeTraverser::GenerateRowValue(const Node *node, const QString &input
if (value.array()) {
// Resolve each element of array
QVector<NodeValueTable> tables = value.data().value<QVector<NodeValueTable> >();
QVector<NodeValueTable> tables = value.value<QVector<NodeValueTable> >();
QVector<NodeValue> output(tables.size());
for (int i=0; i<tables.size(); i++) {
@@ -153,8 +153,7 @@ int NodeTraverser::GetChannelCountFromJob(const GenerateJob &job)
// Find maximum channel count
for (auto it=job.GetValues().cbegin(); it!=job.GetValues().cend(); it++) {
if (it.value().type() == NodeValue::kTexture) {
TexturePtr tex = it.value().data().value<TexturePtr>();
if (tex) {
if (TexturePtr tex = it.value().toTexture()) {
max_channel_count = qMax(max_channel_count, tex->channel_count());
}
}
@@ -304,11 +303,9 @@ QVector2D NodeTraverser::GenerateResolution() const
void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
{
if (val.type() == NodeValue::kTexture || val.type() == NodeValue::kSamples) {
const QVariant &v = val.data();
if (val.canConvert<ShaderJob>()) {
if (v.canConvert<ShaderJob>()) {
ShaderJob job = v.value<ShaderJob>();
ShaderJob job = val.value<ShaderJob>();
VideoParams tex_params = GetCacheVideoParams();
tex_params.set_channel_count(GetChannelCountFromJob(job));
@@ -318,11 +315,11 @@ void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
PreProcessRow(range, job.GetValues());
ProcessShader(tex, val.source(), range, job);
val.set_data(QVariant::fromValue(tex));
val.set_value(tex);
} else if (v.canConvert<GenerateJob>()) {
} else if (val.canConvert<GenerateJob>()) {
GenerateJob job = v.value<GenerateJob>();
GenerateJob job = val.value<GenerateJob>();
VideoParams tex_params = GetCacheVideoParams();
tex_params.set_channel_count(GetChannelCountFromJob(job));
@@ -346,11 +343,11 @@ void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
tex = dest;
}
val.set_data(QVariant::fromValue(tex));
val.set_value(tex);
} else if (v.canConvert<ColorTransformJob>()) {
} else if (val.canConvert<ColorTransformJob>()) {
ColorTransformJob job = v.value<ColorTransformJob>();
ColorTransformJob job = val.value<ColorTransformJob>();
VideoParams src_params = job.GetInputTexture()->params();
src_params.set_channel_count(GetChannelCountFromJob(job));
@@ -359,11 +356,11 @@ void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
ProcessColorTransform(dest, val.source(), job);
val.set_data(QVariant::fromValue(dest));
val.set_value(dest);
} else if (v.canConvert<FootageJob>()) {
} else if (val.canConvert<FootageJob>()) {
FootageJob job = v.value<FootageJob>();
FootageJob job = val.value<FootageJob>();
if (job.type() == Track::kVideo) {
@@ -399,22 +396,22 @@ void NodeTraverser::ResolveJobs(NodeValue &val, const TimeRange &range)
ProcessVideoFootage(tex, job, footage_time);
}
val.set_data(QVariant::fromValue(tex));
val.set_value(tex);
} else if (job.type() == Track::kAudio) {
SampleBufferPtr buffer = CreateSampleBuffer(GetCacheAudioParams(), range.length());
ProcessAudioFootage(buffer, job, range);
val.set_data(QVariant::fromValue(buffer));
val.set_value(buffer);
}
} else if (v.canConvert<SampleJob>()) {
} else if (val.canConvert<SampleJob>()) {
SampleJob job = v.value<SampleJob>();
SampleJob job = val.value<SampleJob>();
SampleBufferPtr output_buffer = CreateSampleBuffer(job.samples()->audio_params(), job.samples()->sample_count());
ProcessSamples(output_buffer, val.source(), range, job);
val.set_data(QVariant::fromValue(output_buffer));
val.set_value(QVariant::fromValue(output_buffer));
}