Logo Search packages:      
Sourcecode: kdenlive version File versions  Download package


                         kthumb.h  -  description
   begin                : Fri Nov 22 2002
   copyright            : (C) 2002 by Jason Wood
   email                : jasonwood@blueyonder.co.uk

 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *

#ifndef KTHUMB_H
#define KTHUMB_H

#include <QPixmap>
#include <QFile>
#include <QDomElement>
#include <QFuture>

#include <KUrl>

#include <mlt++/Mlt.h>

/**KRender encapsulates the client side of the interface to a renderer.
From Kdenlive's point of view, you treat the KRender object as the
renderer, and simply use it as if it was local. Calls are asyncrhonous -
you send a call out, and then receive the return value through the
relevant signal that get's emitted once the call completes.
  *@author Jason Wood

namespace Mlt
class Miracle;
class Consumer;
class Producer;
class Frame;
class Profile;

class ClipManager;

00051 class KThumb: public QObject
Q_OBJECT public:

    KThumb(ClipManager *clipManager, KUrl url, const QString &id, const QString &hash, QObject * parent = 0, const char *name = 0);
    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);
    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 QImage getFrame(Mlt::Producer *producer, int framepos, int width, 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);

private slots:
    void slotAudioThumbOver();
    void slotCreateAudioThumbs();

    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;
    QFuture<void> m_future;
    QFile m_audioThumbFile;
    bool m_stopAudioThumbs;
    double m_frame;
    double m_frameLength;
    int m_frequency;
    int m_channels;
    int m_arrayWidth;
    void doGetThumbs();

    void thumbReady(int, QImage);
    void mainThumbReady(const QString &, QPixmap);
    void audioThumbReady(QMap <int, QMap <int, QByteArray> >);


Generated by  Doxygen 1.6.0   Back to index