]> git.sesse.net Git - kdenlive/blobdiff - src/kthumb.h
Create audio thumbs one after another, should solve:
[kdenlive] / src / kthumb.h
index 43fa366d410a2a536987c0a12eded92168e94790..b7374d35444396caa6ec26e89a3f1fb581478c90 100644 (file)
 #ifndef KTHUMB_H
 #define KTHUMB_H
 
-#include <qobject.h>
-#include <qpixmap.h>
-#include <qfile.h>
-#include <qthread.h>
+#include <QPixmap>
+#include <QFile>
+#include <QThread>
+#include <QMutex>
+#include <QDomElement>
 
-#include <kurl.h>
+#include <KUrl>
 
 #include <mlt++/Mlt.h>
 
@@ -47,8 +48,10 @@ class Profile;
 
 class ClipManager;
 
-class MyThread : public QThread {
 
+
+class MyThread : public QThread {
+    Q_OBJECT
 public:
     virtual void run();
     void init(QObject *parent, KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth);
@@ -65,41 +68,52 @@ private:
     int m_arrayWidth;
     bool m_isWorking;
     QObject *m_parent;
-};
 
+signals:
+    void audioThumbProgress(const int);
+    void audioThumbOver();
+};
 
 class KThumb: public QObject {
 Q_OBJECT public:
 
 
-    KThumb(ClipManager *clipManager, KUrl url, QObject * parent = 0, const char *name = 0);
+    KThumb(ClipManager *clipManager, KUrl url, const QString &id, QObject * parent = 0, const char *name = 0);
     ~KThumb();
+    void setProducer(Mlt::Producer *producer);
+    void askForAudioThumbs(const QString &id);
 
 public slots:
     void extractImage(int frame, int frame2);
+    QPixmap extractImage(int frame, int width, int height);
     void updateClipUrl(KUrl url);
     static QPixmap getImage(KUrl url, int width, int height);
-    static QPixmap getImage(QDomElement xml, int frame, int width, int height);
+//    static QPixmap getImage(QDomElement xml, int frame, int width, int height);
     /* void getImage(KUrl url, int frame, int width, int height);
      void getThumbs(KUrl url, int startframe, int endframe, int width, int height);*/
     void stopAudioThumbs();
     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 frame, int width, int height);
+    static QPixmap getFrame(Mlt::Producer *producer, int framepos, int width, int height);
 
-protected:
-    virtual void customEvent(QEvent * event);
+private slots:
+    void slotAudioThumbProgress(const int progress);
+    void slotAudioThumbOver();
 
 private:
-    MyThread thumbProducer;
+    MyThread audioThumbProducer;
     KUrl m_url;
     QString m_thumbFile;
-    Mlt::Profile *m_profile;
+    double m_dar;
+    Mlt::Producer *m_producer;
     ClipManager *m_clipManager;
+    QString m_id;
+    int m_mainFrame;
 
 signals:
-    void thumbReady(int frame, QPixmap pm);
+    void thumbReady(int, QPixmap);
+    void mainThumbReady(const QString &, QPixmap);
     void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
 };