nodes: rework so that jobs can be completely deferred

Big optimization requiring a lot of refactoring.
This commit is contained in:
itsmattkc
2022-09-24 18:44:59 -07:00
parent 658fe9da7e
commit c0d8ff403f
57 changed files with 593 additions and 588 deletions
+9 -12
View File
@@ -80,30 +80,26 @@ public:
audio_params_ = params;
}
static int GetChannelCountFromJob(const GenerateJob& job);
static TexturePtr GetMainTextureFromJob(const GenerateJob& job);
protected:
NodeValueTable ProcessInput(const Node *node, const QString &input, const TimeRange &range);
virtual NodeValueTable GenerateBlockTable(const Track *track, const TimeRange& range);
virtual void ProcessVideoFootage(TexturePtr destination, const FootageJob &stream, const rational &input_time){}
virtual void ProcessVideoFootage(TexturePtr destination, const FootageJob *stream, const rational &input_time){}
virtual void ProcessAudioFootage(SampleBuffer &destination, const FootageJob &stream, const TimeRange &input_time){}
virtual void ProcessAudioFootage(SampleBuffer &destination, const FootageJob *stream, const TimeRange &input_time){}
virtual void ProcessShader(TexturePtr destination, const Node *node, const ShaderJob& job){}
virtual void ProcessShader(TexturePtr destination, const Node *node, const ShaderJob *job){}
virtual void ProcessColorTransform(TexturePtr destination, const Node *node, const ColorTransformJob& job){}
virtual void ProcessColorTransform(TexturePtr destination, const Node *node, const ColorTransformJob *job){}
virtual void ProcessSamples(SampleBuffer &destination, const Node *node, const TimeRange &range, const SampleJob &job){}
virtual void ProcessFrameGeneration(TexturePtr destination, const Node *node, const GenerateJob& job){}
virtual void ProcessFrameGeneration(TexturePtr destination, const Node *node, const GenerateJob *job){}
virtual void ConvertToReferenceSpace(TexturePtr destination, TexturePtr source, const QString &input_cs){}
virtual TexturePtr ProcessVideoCacheJob(const CacheJob &val);
virtual TexturePtr ProcessVideoCacheJob(const CacheJob *val);
virtual TexturePtr CreateTexture(const VideoParams &p)
{
@@ -152,8 +148,6 @@ protected:
virtual bool UseCache() const { return false; }
private:
void PreProcessRow(NodeValueRow &row);
TexturePtr CreateDummyTexture(const VideoParams &p);
VideoParams video_params_;
@@ -170,6 +164,9 @@ private:
Decoder::LoopMode loop_mode_;
QHash<const Node*, QHash<TimeRange, NodeValueTable> > value_cache_;
QHash<Texture*, TexturePtr> resolved_texture_cache_;
};
}