From 87394f0c2ad11ad92f2c417160bc99ea206ee53f Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 30 Nov 2019 02:52:11 +1100 Subject: [PATCH] conformed renderworkers to new decoder retrieval functions --- app/render/backend/audiorenderworker.cpp | 5 +++++ app/render/backend/audiorenderworker.h | 2 ++ app/render/backend/renderworker.cpp | 6 +++--- app/render/backend/renderworker.h | 2 ++ app/render/backend/videorenderworker.cpp | 5 +++++ app/render/backend/videorenderworker.h | 2 ++ 6 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/render/backend/audiorenderworker.cpp b/app/render/backend/audiorenderworker.cpp index 11e8c848e..e5768b838 100644 --- a/app/render/backend/audiorenderworker.cpp +++ b/app/render/backend/audiorenderworker.cpp @@ -119,3 +119,8 @@ QVariant AudioRenderWorker::RenderBlock(NodeOutput* output, const TimeRange &ran return block_range_buffer; } + +FramePtr AudioRenderWorker::RetrieveFromDecoder(DecoderPtr decoder, const TimeRange &range) +{ + return decoder->RetrieveAudio(range.in(), range.out() - range.in(), audio_params_); +} diff --git a/app/render/backend/audiorenderworker.h b/app/render/backend/audiorenderworker.h index 3166018fa..f03419c5a 100644 --- a/app/render/backend/audiorenderworker.h +++ b/app/render/backend/audiorenderworker.h @@ -21,6 +21,8 @@ protected: QVariant RenderBlock(NodeOutput *output, const TimeRange& range); + virtual FramePtr RetrieveFromDecoder(DecoderPtr decoder, const TimeRange& range) override; + private: AudioRenderingParams audio_params_; diff --git a/app/render/backend/renderworker.cpp b/app/render/backend/renderworker.cpp index 9776a0551..8439938b1 100644 --- a/app/render/backend/renderworker.cpp +++ b/app/render/backend/renderworker.cpp @@ -110,8 +110,8 @@ DecoderPtr RenderWorker::ResolveDecoderFromInput(NodeInput *input) DecoderPtr decoder = decoder_cache()->GetDecoder(stream.get()); if (decoder == nullptr && stream != nullptr) { - // Init decoder - decoder = Decoder::CreateFromID(stream->footage()->decoder()); + // Create a new Decoder here + DecoderPtr decoder = Decoder::CreateFromID(stream->footage()->decoder()); decoder->set_stream(stream); decoder_cache()->AddDecoder(stream.get(), decoder); } @@ -152,7 +152,7 @@ QList RenderWorker::ProcessNodeInputsForTime(Node *n, const TimeRang // By this point we should definitely have a decoder, and if we don't something's gone terribly wrong if (decoder != nullptr) { - FramePtr frame = decoder->Retrieve(time.in(), time.out() - time.in()); + FramePtr frame = RetrieveFromDecoder(decoder, time); if (frame != nullptr) { QVariant value = FrameToValue(frame); diff --git a/app/render/backend/renderworker.h b/app/render/backend/renderworker.h index 6760095b8..07e0ac6dc 100644 --- a/app/render/backend/renderworker.h +++ b/app/render/backend/renderworker.h @@ -73,6 +73,8 @@ protected: StreamPtr ResolveStreamFromInput(NodeInput* input); DecoderPtr ResolveDecoderFromInput(NodeInput* input); + virtual FramePtr RetrieveFromDecoder(DecoderPtr decoder, const TimeRange& range) = 0; + QList ProcessNodeInputsForTime(Node* n, const TimeRange& time); virtual QVariant FrameToValue(FramePtr frame) = 0; diff --git a/app/render/backend/videorenderworker.cpp b/app/render/backend/videorenderworker.cpp index 499dea727..75c72d141 100644 --- a/app/render/backend/videorenderworker.cpp +++ b/app/render/backend/videorenderworker.cpp @@ -38,6 +38,11 @@ void VideoRenderWorker::RenderInternal(const NodeDependency& path) } } +FramePtr VideoRenderWorker::RetrieveFromDecoder(DecoderPtr decoder, const TimeRange &range) +{ + return decoder->RetrieveVideo(range.in()); +} + void VideoRenderWorker::HashNodeRecursively(QCryptographicHash *hash, Node* n, const rational& time) { // Resolve BlockList diff --git a/app/render/backend/videorenderworker.h b/app/render/backend/videorenderworker.h index 59093368e..15252dac8 100644 --- a/app/render/backend/videorenderworker.h +++ b/app/render/backend/videorenderworker.h @@ -42,6 +42,8 @@ protected: virtual void RenderInternal(const NodeDependency& path) override; + virtual FramePtr RetrieveFromDecoder(DecoderPtr decoder, const TimeRange& range) override; + private: void ProcessNode();