decoder/renderer: no longer index automatically as part of the retrieve

functions

Indexing is a lengthy process and had a high chance of getting RenderWorkers
stuck doing it rather than being responsive to cache requests. This commit
introduces a system where workers never index media, but instead signal that
media is not ready to their RenderBackends which ensure that the media gets
indexed and re-queues the affected frames when those indexes are ready.
This commit is contained in:
itsmattkc
2020-02-19 11:44:29 +11:00
parent 5e75e9b3b0
commit 03bdf01357
28 changed files with 461 additions and 197 deletions
+8
View File
@@ -49,6 +49,7 @@
#include "render/backend/opengl/opengltexturecache.h"
#include "render/colormanager.h"
#include "render/diskmanager.h"
#include "render/indexmanager.h"
#include "render/pixelservice.h"
#include "task/taskmanager.h"
#include "ui/style/style.h"
@@ -109,6 +110,9 @@ void Core::Start()
// Set up node factory/library
NodeFactory::Initialize();
// Set up the index manager for renderers
IndexManager::CreateInstance();
// Load application config
Config::Load();
@@ -147,6 +151,8 @@ void Core::Stop()
NodeFactory::Destroy();
IndexManager::DestroyInstance();
delete main_window_;
}
@@ -370,6 +376,8 @@ void Core::DeclareTypesForQt()
qRegisterMetaType<FramePtr>();
qRegisterMetaType<AudioRenderingParams>();
qRegisterMetaType<NodeKeyframe::Type>();
qRegisterMetaType<Decoder::RetrieveState>();
qRegisterMetaType<TimeRange>();
}
void Core::StartGUI(bool full_screen)