]> git.sesse.net Git - kdenlive/blobdiff - src/kthumb.h
Fix playing rendered file by double click in job queue list
[kdenlive] / src / kthumb.h
index 82290d204a247a8ea905eb3620b3f4034b2ed43a..598cda56e92e0752da4450894d68404123fee1e2 100644 (file)
@@ -20,9 +20,8 @@
 
 #include <QPixmap>
 #include <QFile>
-#include <QThread>
-#include <QMutex>
 #include <QDomElement>
+#include <QFuture>
 
 #include <KUrl>
 
@@ -49,32 +48,6 @@ class Profile;
 
 class ClipManager;
 
-
-
-class MyThread : public QThread
-{
-    Q_OBJECT
-public:
-    virtual void run();
-    void init(KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth);
-    bool isWorking();
-    bool stop_me;
-
-private:
-    QFile f;
-    KUrl m_url;
-    double m_frame;
-    double m_frameLength;
-    int m_frequency;
-    int m_channels;
-    int m_arrayWidth;
-    bool m_isWorking;
-
-signals:
-    void audioThumbProgress(const int);
-    void audioThumbOver();
-};
-
 class KThumb: public QObject
 {
 Q_OBJECT public:
@@ -100,23 +73,37 @@ public slots:
     void removeAudioThumb();
     void getAudioThumbs(int channel, double frame, double frameLength, int arrayWidth);
     static QPixmap getImage(KUrl url, int frame, int width, int height);
-    static QPixmap getFrame(Mlt::Producer *producer, int framepos, int width, int height);
+    static QImage getFrame(Mlt::Producer *producer, int framepos, int width, int height);
+    /** @brief Calculates image variance, useful to know if a thumbnail is interesting. 
+     *  @return an integer between 0 and 100. 0 means no variance, eg. black image while bigger values mean contrasted image
+     * */
+    static uint imageVariance(QImage image);
 
 private slots:
-    void slotAudioThumbProgress(const int progress);
     void slotAudioThumbOver();
+    void slotCreateAudioThumbs();
 
 private:
-    MyThread m_audioThumbProducer;
+    QFuture<void> m_audioThumbProducer;
     KUrl m_url;
     QString m_thumbFile;
     double m_dar;
     Mlt::Producer *m_producer;
     ClipManager *m_clipManager;
     QString m_id;
+    QList <int> m_requestedThumbs;
+    QFuture<void> m_future;
+    QFile m_audioThumbFile;
+    bool m_stopAudioThumbs;
+    double m_frame;
+    double m_frameLength;
+    int m_frequency;
+    int m_channels;
+    int m_arrayWidth;
+    void doGetThumbs();
 
 signals:
-    void thumbReady(int, QPixmap);
+    void thumbReady(int, QImage);
     void mainThumbReady(const QString &, QPixmap);
     void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
 };