diff options
Diffstat (limited to 'framecache.h')
-rw-r--r-- | framecache.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/framecache.h b/framecache.h new file mode 100644 index 0000000..509fea6 --- /dev/null +++ b/framecache.h @@ -0,0 +1,72 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#ifndef FRAMECACHE_H +#define FRAMECACHE_H + +#include <QThread> +#include <QPair> +#include <QHash> +#include <QPair> +#include <QQueue> +#include <QString> + +class QSemaphore; +class QMutex; +class FrameCacheGenerator; + +class FrameCache : public QObject { + Q_OBJECT + public: + explicit FrameCache(QObject *parent = 0); + ~FrameCache(); + const QPixmap entry(const QString &sourcePath, const QString &when = QString()); + const QString entryPath(const QString &sourcePath, const QString &when); + + private: + QHash<QPair<QString, QString>, QString> *mFrameCache; + QQueue<QPair<QString, QString> > *mDataQueue; + QString mCacheFile; + qint32 mMagic; + QSemaphore *mSemFree; + QSemaphore *mSemUsed; + QMutex *mCacheMx; + FrameCacheGenerator *mGenerator; + QString mWhen; +}; + +class FrameCacheGenerator : public QThread { + Q_OBJECT + public: + explicit FrameCacheGenerator(QObject *parent = 0); + void init(QSemaphore *set, QSemaphore *get, QMutex *cachemx, QQueue<QPair<QString, QString> > *data, QHash<QPair<QString, QString>, QString> *cache); + const QString cacheFile() const { return mCacheFile; } + qint32 magic() const { return mMagic; }; + void readConfig(); + void readCache(); + + public slots: + void run(); + + private: + bool grabFrame(const QString &sourceFile, QString when); + QSemaphore *mSemFree; + QSemaphore *mSemUsed; + QMutex *mCacheMx; + QQueue<QPair<QString, QString> > *mDataQueue; + QHash<QPair<QString, QString>, QString> *mFrameCache; + QString mCacheDir; + QString mCacheFile; + //QString mWhen; + QString mFfMpegPath; + const qint32 mMagic; + const QString mCacheSubDir; + const QString mCacheFileName; + +}; + +#endif // FRAMECACHE_H |