diff --git a/app/render/backend/decodercache.cpp b/app/render/backend/decodercache.cpp new file mode 100644 index 000000000..29939c289 --- /dev/null +++ b/app/render/backend/decodercache.cpp @@ -0,0 +1,21 @@ +#include "decodercache.h" + +DecoderCache::DecoderCache() +{ + +} + +void DecoderCache::Clear() +{ + decoders_.clear(); +} + +void DecoderCache::AddDecoder(Stream *stream, DecoderPtr shader) +{ + decoders_.insert(stream, shader); +} + +DecoderPtr DecoderCache::GetDecoder(Stream *stream) +{ + return decoders_.value(stream); +} diff --git a/app/render/backend/decodercache.h b/app/render/backend/decodercache.h new file mode 100644 index 000000000..47011e965 --- /dev/null +++ b/app/render/backend/decodercache.h @@ -0,0 +1,26 @@ +#ifndef DECODERCACHE_H +#define DECODERCACHE_H + +#include "decoder/decoder.h" +#include "project/item/footage/stream.h" + +/** + * @brief Thread-safe cache of decoders + */ +class DecoderCache +{ +public: + DecoderCache(); + + void Clear(); + + void AddDecoder(Stream* stream, DecoderPtr shader); + + DecoderPtr GetDecoder(Stream* stream); + +private: + QMap decoders_; + +}; + +#endif // DECODERCACHE_H