namespace Mlt
{
-class Miracle;
-class Consumer;
class Producer;
class Frame;
-class Profile;
-};
+}
class ClipManager;
class KThumb: public QObject
{
-Q_OBJECT public:
-
+ Q_OBJECT
+public:
- KThumb(ClipManager *clipManager, KUrl url, const QString &id, const QString &hash, QObject * parent = 0, const char *name = 0);
+ explicit KThumb(ClipManager *clipManager, const KUrl &url, const QString &id, const QString &hash, QObject * parent = 0);
~KThumb();
void setProducer(Mlt::Producer *producer);
- void askForAudioThumbs(const QString &id);
bool hasProducer() const;
void clearProducer();
void updateThumbUrl(const QString &hash);
- void extractImage(int frame, int frame2);
- QPixmap extractImage(int frame, int width, int height);
+ void extractImage(const QList<int> &frames);
+ QImage extractImage(int frame, int width, int height);
#if KDE_IS_VERSION(4,5,0)
/** @brief Request thumbnails for the frame range. */
- void queryIntraThumbs(QList <int> missingFrames);
+ void queryIntraThumbs(const QList <int> &missingFrames);
/** @brief Query cached thumbnail. */
- QImage findCachedThumb(const QString path);
+ QImage findCachedThumb(const QString &path);
#endif
+ void getThumb(int frame);
+ void getGenericThumb(int frame, int height, int type);
public slots:
- void updateClipUrl(KUrl url, const QString &hash);
- static QPixmap getImage(KUrl url, int width, int height);
+ void updateClipUrl(const KUrl &url, const QString &hash);
+ void slotCreateAudioThumbs();
+
+public:
+ static QPixmap getImage(const 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 getImage(const KUrl& url, int frame, 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
* */
- static uint imageVariance(QImage image);
+ static uint imageVariance(const QImage &image);
private slots:
- void slotAudioThumbOver();
- void slotCreateAudioThumbs();
#if KDE_IS_VERSION(4,5,0)
/** @brief Fetch all requested frames. */
void slotGetIntraThumbs();
#endif
private:
- 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;
- /** @brief Controls the thumbnails process. */
- QFuture<void> m_future;
/** @brief Controls the intra frames thumbnails process (cached thumbnails). */
QFuture<void> m_intra;
- QFile m_audioThumbFile;
- bool m_stopAudioThumbs;
- double m_frame;
- double m_frameLength;
- int m_frequency;
- int m_channels;
- int m_arrayWidth;
/** @brief List of frame numbers from which we want to extract thumbnails. */
QList <int> m_intraFramesQueue;
QMutex m_mutex;
- void doGetThumbs();
QImage getProducerFrame(int framepos, int frameWidth, int displayWidth, int height);
signals:
- void thumbReady(int, QImage);
- void mainThumbReady(const QString &, QPixmap);
+ void thumbReady(int, const QImage&);
+ void mainThumbReady(const QString &, const QPixmap&);
void audioThumbReady(const audioByteArray&);
/** @brief We have finished caching all requested thumbs. */
void thumbsCached();