diff --git a/app/render/backend/audio/audiobackend.cpp b/app/render/backend/audio/audiobackend.cpp index 92705500e..60923cf89 100644 --- a/app/render/backend/audio/audiobackend.cpp +++ b/app/render/backend/audio/audiobackend.cpp @@ -46,7 +46,7 @@ bool AudioBackend::InitInternal() // Initiate one thread per CPU core for (int i=0;iSetParameters(params()); processors_.append(processor); } diff --git a/app/render/backend/audio/audioworker.cpp b/app/render/backend/audio/audioworker.cpp index 807bec957..bdaf4d6b9 100644 --- a/app/render/backend/audio/audioworker.cpp +++ b/app/render/backend/audio/audioworker.cpp @@ -22,8 +22,8 @@ OLIVE_NAMESPACE_ENTER -AudioWorker::AudioWorker(DecoderCache* decoder_cache, QHash *copy_map, QObject *parent) : - AudioRenderWorker(decoder_cache, copy_map, parent) +AudioWorker::AudioWorker(QHash *copy_map, QObject *parent) : + AudioRenderWorker(copy_map, parent) { } diff --git a/app/render/backend/audio/audioworker.h b/app/render/backend/audio/audioworker.h index 269b8547f..db49a1902 100644 --- a/app/render/backend/audio/audioworker.h +++ b/app/render/backend/audio/audioworker.h @@ -28,7 +28,7 @@ OLIVE_NAMESPACE_ENTER class AudioWorker : public AudioRenderWorker { public: - AudioWorker(DecoderCache* decoder_cache, QHash* copy_map, QObject* parent = nullptr); + AudioWorker(QHash* copy_map, QObject* parent = nullptr); protected: virtual void FrameToValue(DecoderPtr decoder, StreamPtr stream, const TimeRange &range, NodeValueTable* table) override; diff --git a/app/render/backend/audiorenderworker.cpp b/app/render/backend/audiorenderworker.cpp index aaf68905a..b60417c37 100644 --- a/app/render/backend/audiorenderworker.cpp +++ b/app/render/backend/audiorenderworker.cpp @@ -30,8 +30,8 @@ OLIVE_NAMESPACE_ENTER -AudioRenderWorker::AudioRenderWorker(DecoderCache* decoder_cache, QHash *copy_map, QObject *parent) : - RenderWorker(decoder_cache, parent), +AudioRenderWorker::AudioRenderWorker(QHash *copy_map, QObject *parent) : + RenderWorker(parent), copy_map_(copy_map) { } diff --git a/app/render/backend/audiorenderworker.h b/app/render/backend/audiorenderworker.h index a8614b685..7da959984 100644 --- a/app/render/backend/audiorenderworker.h +++ b/app/render/backend/audiorenderworker.h @@ -29,7 +29,7 @@ class AudioRenderWorker : public RenderWorker { Q_OBJECT public: - AudioRenderWorker(DecoderCache* decoder_cache, QHash* copy_map, QObject* parent = nullptr); + AudioRenderWorker(QHash* copy_map, QObject* parent = nullptr); void SetParameters(const AudioRenderingParams& audio_params); diff --git a/app/render/backend/opengl/openglbackend.cpp b/app/render/backend/opengl/openglbackend.cpp index df6cd32cb..2db0cefa6 100644 --- a/app/render/backend/opengl/openglbackend.cpp +++ b/app/render/backend/opengl/openglbackend.cpp @@ -63,7 +63,7 @@ bool OpenGLBackend::InitInternal() // Initiate one thread per CPU core for (int i=0;iSetParameters(params()); processors_.append(processor); diff --git a/app/render/backend/opengl/openglworker.cpp b/app/render/backend/opengl/openglworker.cpp index 3508ab3ed..edff4f17b 100644 --- a/app/render/backend/opengl/openglworker.cpp +++ b/app/render/backend/opengl/openglworker.cpp @@ -31,8 +31,8 @@ OLIVE_NAMESPACE_ENTER -OpenGLWorker::OpenGLWorker(VideoRenderFrameCache *frame_cache, DecoderCache* decoder_cache, QObject *parent) : - VideoRenderWorker(frame_cache, decoder_cache, parent) +OpenGLWorker::OpenGLWorker(VideoRenderFrameCache *frame_cache, QObject *parent) : + VideoRenderWorker(frame_cache, parent) { } diff --git a/app/render/backend/opengl/openglworker.h b/app/render/backend/opengl/openglworker.h index 1fc920523..d8321d674 100644 --- a/app/render/backend/opengl/openglworker.h +++ b/app/render/backend/opengl/openglworker.h @@ -34,7 +34,7 @@ OLIVE_NAMESPACE_ENTER class OpenGLWorker : public VideoRenderWorker { Q_OBJECT public: - OpenGLWorker(VideoRenderFrameCache* frame_cache, DecoderCache *decoder_cache, + OpenGLWorker(VideoRenderFrameCache* frame_cache, QObject* parent = nullptr); signals: diff --git a/app/render/backend/renderbackend.cpp b/app/render/backend/renderbackend.cpp index 48b2fd66a..0cfb0eae4 100644 --- a/app/render/backend/renderbackend.cpp +++ b/app/render/backend/renderbackend.cpp @@ -105,8 +105,6 @@ void RenderBackend::Close() threads_.clear(); processors_.clear(); - - decoder_cache_.Clear(); } const QString &RenderBackend::GetError() const @@ -404,11 +402,6 @@ void RenderBackend::SetWorkerBusyState(RenderWorker *worker, bool busy) processor_busy_state_.replace(processors_.indexOf(worker), busy); } -DecoderCache *RenderBackend::decoder_cache() -{ - return &decoder_cache_; -} - bool RenderBackend::AllProcessorsAreAvailable() const { foreach (bool busy, processor_busy_state_) { diff --git a/app/render/backend/renderbackend.h b/app/render/backend/renderbackend.h index 0beb63700..db53d503e 100644 --- a/app/render/backend/renderbackend.h +++ b/app/render/backend/renderbackend.h @@ -118,14 +118,10 @@ protected: bool WorkerIsBusy(RenderWorker* worker) const; void SetWorkerBusyState(RenderWorker* worker, bool busy); - DecoderCache* decoder_cache(); - TimeRangeList cache_queue_; QVector processors_; - DecoderCache decoder_cache_; - bool compiled_; QHash render_job_info_; diff --git a/app/render/backend/renderworker.cpp b/app/render/backend/renderworker.cpp index 07fee972a..58b14aef2 100644 --- a/app/render/backend/renderworker.cpp +++ b/app/render/backend/renderworker.cpp @@ -26,10 +26,9 @@ OLIVE_NAMESPACE_ENTER -RenderWorker::RenderWorker(DecoderCache *decoder_cache, QObject *parent) : +RenderWorker::RenderWorker(QObject *parent) : QObject(parent), - started_(false), - decoder_cache_(decoder_cache) + started_(false) { } @@ -50,6 +49,8 @@ void RenderWorker::Close() { CloseInternal(); + decoder_cache_.Clear(); + started_ = false; } @@ -82,11 +83,9 @@ StreamPtr RenderWorker::ResolveStreamFromInput(NodeInput *input) DecoderPtr RenderWorker::ResolveDecoderFromInput(StreamPtr stream) { - QMutexLocker locker(decoder_cache_->lock()); - // Access a map of Node inputs and decoder instances and retrieve a frame! - DecoderPtr decoder = decoder_cache_->Get(stream.get()); + DecoderPtr decoder = decoder_cache_.Get(stream.get()); if (!decoder && stream) { // Create a new Decoder here @@ -94,7 +93,7 @@ DecoderPtr RenderWorker::ResolveDecoderFromInput(StreamPtr stream) decoder->set_stream(stream); if (decoder->Open()) { - decoder_cache_->Add(stream.get(), decoder); + decoder_cache_.Add(stream.get(), decoder); } else { decoder = nullptr; qWarning() << "Failed to open decoder for" << stream->footage()->filename() << "::" << stream->index(); diff --git a/app/render/backend/renderworker.h b/app/render/backend/renderworker.h index 1125015a2..224b8af08 100644 --- a/app/render/backend/renderworker.h +++ b/app/render/backend/renderworker.h @@ -35,7 +35,7 @@ class RenderWorker : public QObject, public NodeTraverser { Q_OBJECT public: - RenderWorker(DecoderCache* decoder_cache, QObject* parent = nullptr); + RenderWorker(QObject* parent = nullptr); bool Init(); @@ -77,7 +77,7 @@ protected: private: bool started_; - DecoderCache* decoder_cache_; + DecoderCache decoder_cache_; NodeDependency path_; diff --git a/app/render/backend/videorenderworker.cpp b/app/render/backend/videorenderworker.cpp index 6061975a4..492022824 100644 --- a/app/render/backend/videorenderworker.cpp +++ b/app/render/backend/videorenderworker.cpp @@ -34,8 +34,8 @@ OLIVE_NAMESPACE_ENTER -VideoRenderWorker::VideoRenderWorker(VideoRenderFrameCache *frame_cache, DecoderCache* decoder_cache, QObject *parent) : - RenderWorker(decoder_cache, parent), +VideoRenderWorker::VideoRenderWorker(VideoRenderFrameCache *frame_cache, QObject *parent) : + RenderWorker(parent), frame_cache_(frame_cache), operating_mode_(kHashRenderCache) { diff --git a/app/render/backend/videorenderworker.h b/app/render/backend/videorenderworker.h index 3d7b5e6b7..4a69f060c 100644 --- a/app/render/backend/videorenderworker.h +++ b/app/render/backend/videorenderworker.h @@ -63,7 +63,7 @@ public: kHashRenderCache = 0x7 }; - VideoRenderWorker(VideoRenderFrameCache* frame_cache, DecoderCache *decoder_cache, QObject* parent = nullptr); + VideoRenderWorker(VideoRenderFrameCache* frame_cache, QObject* parent = nullptr); void SetParameters(const VideoRenderingParams& video_params);