#include <QPixmap>
#include <QObject>
#include <QTimer>
+#include <QProcess>
+#include <QFuture>
#include <KUrl>
}
/** Sets producers for the current clip (one for each track due to a limitation in MLT's track mixing */
- void setProducer(Mlt::Producer *producer, bool reset = false);
+ void setProducer(Mlt::Producer *producer, bool reset = false, bool readPropertiesFromProducer = false);
/** Retrieve a producer for a track */
Mlt::Producer *producer(int track = -1);
/** Retrieve the producer that shows only video */
const char *producerProperty(const char *name) const;
void setProducerProperty(const char *name, const char *data);
void resetProducerProperty(const char *name);
- void clearProducers();
void deleteProducers(bool clearThumbCreator = true);
/** Set default play zone for clip monitor */
bool hasVideoCodec(const QString &codec) const;
bool hasAudioCodec(const QString &codec) const;
+ bool checkHash() const;
+ void setPlaceHolder(bool place);
+ QPixmap extractImage(int frame, int width, int height);
private: // Private attributes
QMap <QString, QString> m_properties;
/** Holds clip metadata like author, copyright,... */
QMap <QString, QString> m_metadata;
+
+ /** Try to make sure we don't delete a producer while using it */
+ QMutex m_producerMutex;
+
/** Create connections for audio thumbnails */
void slotCreateAudioTimer();
void slotRefreshProducer();
void setProducerProperty(const char *name, int data);
void setProducerProperty(const char *name, double data);
void getFileHash(const QString url);
+ /** @brief When duplicating a producer, make sure all manually set properties are passed to it. */
+ void adjustProducerProperties(Mlt::Producer *prod, const QString &id, bool mute, bool blind);
+ /** @brief Create another instance of a producer. */
+ Mlt::Producer *cloneProducer(Mlt::Producer *source);
+
public slots:
void updateAudioThumbnail(QMap<int, QMap<int, QByteArray> > data);
bool slotGetAudioThumbs();
void setMetadata(QMap <QString, QString> properties);
QMap <QString, QString> properties() const;
QMap <QString, QString> metadata() const;
-
+ void slotExtractImage(int frame, int frame2);
+ /** @brief Lock mutex to prevent changing producers while operation. */
+ void slotBlock();
+ /** @brief Release mutex preventing a change in producers. */
+ void slotRelease();
signals:
- void getAudioThumbs();
void gotAudioData();
+ /** @brief Generate a proxy clip (lower resolution copy) named like the clip's hash. */
+ void createProxy(const QString id);
+ /** @brief Abort creation of the proxy clip (lower resolution copy). */
+ void abortProxy(const QString id, const QString proxyPath);
};
#endif