further progress on first attempt

This commit is contained in:
itsmattkc
2020-05-14 16:47:01 +10:00
parent 863ae1b913
commit ef6aa18fe1
3 changed files with 24 additions and 5 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ public:
protected:
virtual void TextureToFrame(const QVariant& texture, FramePtr frame) const override;
virtual QVariant FrameToTexture(FramePtr frame) const override;
virtual NodeValue FrameToTexture(FramePtr frame) const override;
virtual void ProcessNodeEvent(const Node *node, const TimeRange &range, NodeValueDatabase &input_params, NodeValueTable &output_params) const override;
+12 -3
View File
@@ -211,13 +211,22 @@ void RenderBackend::FootageProcessingEvent(StreamPtr stream, const TimeRange &in
} else if (stream->type() != Stream::kAudio) {
NodeValue value = GetDataFromStream(stream, input_time);
table->Push(value);
table->Push(GetDataFromStream(stream, input_time));
}
}
NodeValue RenderBackend::GetDataFromStream(StreamPtr stream, const TimeRange &input_time) const
{
DecoderPtr decoder = ResolveDecoderFromInput(stream);
if (decoder) {
return FrameToTexture(decoder, stream, input_time);
}
return NodeValue();
}
NodeValueTable RenderBackend::GenerateBlockTable(const TrackOutput *track, const TimeRange &range) const
{
if (track->track_type() == Timeline::kTrackTypeAudio) {
+11 -1
View File
@@ -42,8 +42,14 @@ public:
void CancelQueue();
/**
* @brief Asynchronously generate a hash at a given time
*/
QFuture<QByteArray> Hash(const rational& time);
/**
* @brief Asynchronously generate a frame at a given time
*/
QFuture<FramePtr> RenderFrame(const rational& time);
void SetDivider(const int& divider);
@@ -60,7 +66,7 @@ public slots:
protected:
virtual void TextureToFrame(const QVariant& texture, FramePtr frame) const = 0;
virtual QVariant FrameToTexture(FramePtr frame) const = 0;
virtual NodeValue FrameToTexture(FramePtr frame) const = 0;
virtual void FootageProcessingEvent(StreamPtr stream, const TimeRange &input_time, NodeValueTable* table) const override;
@@ -78,6 +84,10 @@ private:
VideoRenderingParams video_params() const;
NodeValue GetDataFromStream(StreamPtr stream, const TimeRange& input_time) const;
DecoderPtr ResolveDecoderFromInput(StreamPtr stream) const;
class CopyMap {
public:
CopyMap();