push null texture if footage time is NaN

Fixes #1767
This commit is contained in:
itsmattkc
2022-01-09 22:21:10 -08:00
parent 8373a7ea96
commit b5be11a93b
2 changed files with 14 additions and 4 deletions
+12 -4
View File
@@ -281,7 +281,7 @@ TexturePtr NodeTraverser::ProcessVideoFootage(const FootageJob &stream, const ra
Q_UNUSED(input_time)
// Create dummy texture with footage params
return std::make_shared<Texture>(stream.video_params());
return CreateDummyTexture(stream.video_params());
}
SampleBufferPtr NodeTraverser::ProcessAudioFootage(const FootageJob& stream, const TimeRange &input_time)
@@ -301,7 +301,7 @@ TexturePtr NodeTraverser::ProcessShader(const Node *node, const TimeRange &range
// Create dummy texture with sequence params
VideoParams tex_params = video_params_;
tex_params.set_channel_count(GetChannelCountFromJob(job));
return std::make_shared<Texture>(tex_params);
return CreateDummyTexture(tex_params);
}
SampleBufferPtr NodeTraverser::ProcessSamples(const Node *node, const TimeRange &range, const SampleJob &job)
@@ -321,7 +321,7 @@ TexturePtr NodeTraverser::ProcessFrameGeneration(const Node *node, const Generat
// Create dummy texture with sequence params
VideoParams tex_params = video_params_;
tex_params.set_channel_count(GetChannelCountFromJob(job));
return std::make_shared<Texture>(tex_params);
return CreateDummyTexture(tex_params);
}
void NodeTraverser::SaveCachedTexture(const QByteArray &hash, TexturePtr texture)
@@ -396,7 +396,10 @@ void NodeTraverser::PostProcessTable(const Node *node, const Node::ValueHint &hi
if (job.type() == Track::kVideo) {
rational footage_time = Footage::AdjustTimeByLoopMode(range.in(), job.loop_mode(), job.length(), job.video_params().video_type(), job.video_params().frame_rate_as_time_base());
if (!footage_time.isNaN()) {
if (footage_time.isNaN()) {
// Push dummy texture
output_params.Push(NodeValue::kTexture, QVariant::fromValue(CreateDummyTexture(job.video_params())), node, v.array(), v.tag());
} else {
output_params.Push(NodeValue::kTexture, QVariant::fromValue(ProcessVideoFootage(job, footage_time)), node, v.array(), v.tag());
}
}
@@ -434,4 +437,9 @@ void NodeTraverser::PostProcessTable(const Node *node, const Node::ValueHint &hi
}
}
TexturePtr NodeTraverser::CreateDummyTexture(const VideoParams &p)
{
return std::make_shared<Texture>(p);
}
}
+2
View File
@@ -111,6 +111,8 @@ protected:
private:
void PostProcessTable(const Node *node, const Node::ValueHint &hint, const TimeRange &range, NodeValueTable &output_params);
TexturePtr CreateDummyTexture(const VideoParams &p);
VideoParams video_params_;
const QAtomicInt *cancel_;