]> git.sesse.net Git - kdenlive/blob - src/kthumb.h
53600f6836629bc360ba058387bb71e6a64de44e
[kdenlive] / src / kthumb.h
1 /***************************************************************************
2                          kthumb.h  -  description
3                             -------------------
4    begin                : Fri Nov 22 2002
5    copyright            : (C) 2002 by Jason Wood
6    email                : jasonwood@blueyonder.co.uk
7 ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17
18 #ifndef KTHUMB_H
19 #define KTHUMB_H
20
21 #include <QPixmap>
22 #include <QFile>
23 #include <QThread>
24 #include <QMutex>
25 #include <QDomElement>
26
27 #include <KUrl>
28
29 #include <mlt++/Mlt.h>
30
31
32 /**KRender encapsulates the client side of the interface to a renderer.
33 From Kdenlive's point of view, you treat the KRender object as the
34 renderer, and simply use it as if it was local. Calls are asyncrhonous -
35 you send a call out, and then receive the return value through the
36 relevant signal that get's emitted once the call completes.
37   *@author Jason Wood
38   */
39
40
41 namespace Mlt {
42 class Miracle;
43 class Consumer;
44 class Producer;
45 class Frame;
46 class Profile;
47 };
48
49 class ClipManager;
50
51
52
53 class MyThread : public QThread {
54     Q_OBJECT
55 public:
56     virtual void run();
57     void init(QObject *parent, KUrl url, QString target, double frame, double frameLength, int frequency, int channels, int arrayWidth);
58     bool isWorking();
59     bool stop_me;
60
61 private:
62     QFile f;
63     KUrl m_url;
64     double m_frame;
65     double m_frameLength;
66     int m_frequency;
67     int m_channels;
68     int m_arrayWidth;
69     bool m_isWorking;
70     QObject *m_parent;
71
72 signals:
73     void audioThumbProgress(const int);
74     void audioThumbOver();
75 };
76
77 class KThumb: public QObject {
78 Q_OBJECT public:
79
80
81     KThumb(ClipManager *clipManager, KUrl url, const QString &id, const QString &hash, QObject * parent = 0, const char *name = 0);
82     ~KThumb();
83     void setProducer(Mlt::Producer *producer);
84     void askForAudioThumbs(const QString &id);
85     bool hasProducer() const;
86     void clearProducer();
87     void updateThumbUrl(const QString &hash);
88
89 public slots:
90     void extractImage(int frame, int frame2);
91     QPixmap extractImage(int frame, int width, int height);
92     void updateClipUrl(KUrl url, const QString &hash);
93     static QPixmap getImage(KUrl url, int width, int height);
94 //    static QPixmap getImage(QDomElement xml, int frame, int width, int height);
95     /* void getImage(KUrl url, int frame, int width, int height);
96      void getThumbs(KUrl url, int startframe, int endframe, int width, int height);*/
97     void stopAudioThumbs();
98     void removeAudioThumb();
99     void getAudioThumbs(int channel, double frame, double frameLength, int arrayWidth);
100     static QPixmap getImage(KUrl url, int frame, int width, int height);
101     static QPixmap getFrame(Mlt::Producer *producer, int framepos, int width, int height);
102
103 private slots:
104     void slotAudioThumbProgress(const int progress);
105     void slotAudioThumbOver();
106
107 private:
108     MyThread audioThumbProducer;
109     KUrl m_url;
110     QString m_thumbFile;
111     double m_dar;
112     Mlt::Producer *m_producer;
113     ClipManager *m_clipManager;
114     QString m_id;
115     int m_mainFrame;
116
117 signals:
118     void thumbReady(int, QPixmap);
119     void mainThumbReady(const QString &, QPixmap);
120     void audioThumbReady(QMap <int, QMap <int, QByteArray> >);
121 };
122
123 #endif