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 | 
