]> git.sesse.net Git - kdenlive/blobdiff - src/kthumb.h
fix crash when starting under macOSX
[kdenlive] / src / kthumb.h
index fb94122382153da29d8aa7762cdabddfe8eadd46..f571bdbef14656dc57de19c798205aa23c29b8ba 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>
 
@@ -38,67 +39,85 @@ relevant signal that get's emitted once the call completes.
 
 
 namespace Mlt {
-    class Miracle;
-    class Consumer;
-    class Producer;
-    class Frame;
-    class Profile;
+class Miracle;
+class Consumer;
+class Producer;
+class Frame;
+class Profile;
 };
 
 class ClipManager;
 
-class MyThread : public QThread {
 
-    public:
-        virtual void run();
-       void init(QObject *parent, 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;
-       QObject *m_parent;
-    };
+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);
+    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;
+    QObject *m_parent;
 
-class KThumb:public QObject {
-  Q_OBJECT public:
+signals:
+    void audioThumbProgress(const int);
+    void audioThumbOver();
+};
+
+class KThumb: public QObject {
+Q_OBJECT public:
 
 
-     KThumb(ClipManager *clipManager, KUrl url, int width, int height, QObject * parent = 0, const char *name = 0);
+    KThumb(ClipManager *clipManager, KUrl url, const QString &id, const QString &hash, QObject * parent = 0, const char *name = 0);
     ~KThumb();
+    void setProducer(Mlt::Producer *producer);
+    void askForAudioThumbs(const QString &id);
+    bool hasProducer() const;
+    void clearProducer();
+    void updateThumbUrl(const QString &hash);
 
 public slots:
-       void extractImage( int frame, int frame2);
-       static QPixmap getImage(KUrl url, 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);
-
-protected:
-    virtual void customEvent ( QEvent * event );
+    void extractImage(int frame, int frame2);
+    QPixmap extractImage(int frame, int width, int height);
+    void updateClipUrl(KUrl url, const QString &hash);
+    static QPixmap getImage(KUrl url, 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 framepos, int width, int height);
+
+private slots:
+    void slotAudioThumbProgress(const int progress);
+    void slotAudioThumbOver();
 
 private:
-       MyThread thumbProducer;
-       KUrl m_url;
-       QString m_thumbFile;
-       int m_width;
-       int m_height;
-       Mlt::Profile *m_profile;
-       ClipManager *m_clipManager;
+    MyThread audioThumbProducer;
+    KUrl m_url;
+    QString m_thumbFile;
+    double m_dar;
+    Mlt::Producer *m_producer;
+    ClipManager *m_clipManager;
+    QString m_id;
+    int m_mainFrame;
 
 signals:
-       void thumbReady(int frame, QPixmap pm);
-       void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
+    void thumbReady(int, QPixmap);
+    void mainThumbReady(const QString &, QPixmap);
+    void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
 };
 
 #endif