]> git.sesse.net Git - kdenlive/blobdiff - src/kthumb.h
Fix some more threading crashes, almost there :)
[kdenlive] / src / kthumb.h
index 1d71582dd762e07cb4b682c4521593cc36978b85..f90051d7b43a8ea81ac91397fa7c325f41c38b70 100644 (file)
@@ -49,6 +49,8 @@ class Profile;
 
 class ClipManager;
 
+typedef QMap <int, QMap <int, QByteArray> > audioByteArray;
+
 class KThumb: public QObject
 {
 Q_OBJECT public:
@@ -65,7 +67,7 @@ Q_OBJECT public:
     QPixmap extractImage(int frame, int width, int height);
 #if KDE_IS_VERSION(4,5,0)
     /** @brief Request thumbnails for the frame range. */
-    void queryIntraThumbs(int start, int end);
+    void queryIntraThumbs(QList <int> missingFrames);
     /** @brief Query cached thumbnail. */
     QImage findCachedThumb(const QString path);
 #endif
@@ -80,7 +82,8 @@ 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 QImage getFrame(Mlt::Producer *producer, int framepos, int width, int height);
+    static QImage getFrame(Mlt::Producer *producer, int framepos, int frameWidth, int displayWidth, int height);
+    static QImage getFrame(Mlt::Frame *frame, int frameWidth, int displayWidth, 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
      * */
@@ -99,6 +102,7 @@ private:
     KUrl m_url;
     QString m_thumbFile;
     double m_dar;
+    double m_ratio;
     Mlt::Producer *m_producer;
     ClipManager *m_clipManager;
     QString m_id;
@@ -116,12 +120,15 @@ private:
     int m_arrayWidth;
     /** @brief List of frame numbers from which we want to extract thumbnails. */
     QList <int> m_intraFramesQueue;
+    QMutex m_mutex;
+    QMutex m_listMutex;
     void doGetThumbs();
+    QImage getProducerFrame(int framepos, int frameWidth, int displayWidth, int height);
 
 signals:
     void thumbReady(int, QImage);
     void mainThumbReady(const QString &, QPixmap);
-    void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
+    void audioThumbReady(const audioByteArray&);
     /** @brief We have finished caching all requested thumbs. */
     void thumbsCached();
 };