ffmpeg: significantly optimized decoder

This commit is contained in:
itsmattkc
2022-05-15 19:33:01 -07:00
parent e9844ee135
commit 09c57422f9
11 changed files with 117 additions and 257 deletions
-22
View File
@@ -56,10 +56,6 @@ RenderManager::RenderManager(QObject *parent) :
decoder_cache_ = new DecoderCache();
shader_cache_ = new ShaderCache();
default_shader_ = context_->CreateNativeShader(ShaderCode(QString(), QString()));
decoder_clear_timer_.setInterval(kDecoderMaximumInactivity);
connect(&decoder_clear_timer_, &QTimer::timeout, this, &RenderManager::ClearOldDecoders);
decoder_clear_timer_.start();
} else {
qCritical() << "Tried to initialize unknown graphics backend";
context_ = nullptr;
@@ -81,24 +77,6 @@ RenderManager::~RenderManager()
}
}
void RenderManager::ClearOldDecoders()
{
QMutexLocker locker(decoder_cache_->mutex());
qint64 min_age = QDateTime::currentMSecsSinceEpoch() - kDecoderMaximumInactivity;
for (auto it=decoder_cache_->begin(); it!=decoder_cache_->end(); ) {
DecoderPair decoder = it.value();
if (decoder.decoder->GetLastAccessedTime() < min_age) {
decoder.decoder->Close();
it = decoder_cache_->erase(it);
} else {
it++;
}
}
}
QByteArray RenderManager::Hash(const Node *n, const Node::ValueHint &output, const VideoParams &params, const rational &time)
{
Q_ASSERT(n);