class KThumb;
class ClipManager;
-namespace Mlt {
+namespace Mlt
+{
class Producer;
};
-class DocClipBase: public QObject {
+class DocClipBase: public QObject
+{
Q_OBJECT public:
/** this enum determines the types of "feed" available within this clip. types must be non-exclusive
- * - e.g. if you can have audio and video seperately, it should be possible to combin the two, as is
+ * - e.g. if you can have audio and video separately, it should be possible to combin the two, as is
* done here. If a new clip type is added then it should be possible to combine it with both audio
* and video. */
// DocClipBase & operator=(const DocClipBase & clip);
virtual ~ DocClipBase();
- /** sets the name of this clip. */
- void setName(const QString name);
-
/** returns the name of this clip. */
- const QString & name() const;
+ const QString name() const;
/** Returns the description of this clip. */
const QString description() const;
/** returns the duration of this clip */
const GenTime & duration() const;
- const GenTime &maxDuration() const;
+ const GenTime maxDuration() const;
/** returns the duration of this clip */
void setDuration(GenTime dur);
return false;
}
- void setProducer(Mlt::Producer *producer);
+ /** 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);
+ /** Retrieve a producer for a track */
Mlt::Producer *producer(int track = -1);
+ /** Retrieve the producer that shows only video */
+ Mlt::Producer *videoProducer();
+ /** Retrieve the producer that shows only audio */
+ Mlt::Producer *audioProducer(int track);
/** Returns true if this clip is a project clip, false otherwise. Overridden in DocClipProject,
* where it returns true. */
/** Returns the thumbnail used by this clip */
const QPixmap & thumbnail() const;
- static DocClipBase *createClip(KdenliveDoc *doc, const QDomElement & element);
/** Cache for every audio Frame with 10 Bytes */
/** format is frame -> channel ->bytes */
- QMap<int, QMap<int, QByteArray> > audioFrameChache;
+ QMap<int, QMap<int, QByteArray> > m_audioFrameCache;
/** Free cache data */
void slotClearAudioCache();
void refreshThumbUrl();
const char *producerProperty(const char *name) const;
void setProducerProperty(const char *name, const char *data);
+ void clearProducers();
void deleteProducers();
+ /** Set default play zone for clip monitor */
+ void setZone(QPoint zone);
+ /** Get default play zone for clip monitor */
+ QPoint zone() const;
+
+ /** Returns true is clip is missing but user wants to keep it as placeholder */
+ bool isPlaceHolder() const;
+ static QString getHash(const QString &path);
+
private: // Private attributes
- /** The name of this clip */
- QString m_name;
- /** A description of this clip */
- QString m_description;
+
/** The number of times this clip is used in the project - the number of references to this clip
* that exist. */
uint m_refcount;
QList <Mlt::Producer *> m_baseTrackProducers;
+ QList <Mlt::Producer *> m_audioTrackProducers;
+ Mlt::Producer *m_videoOnlyProducer;
CLIPTYPE m_clipType;
/** A list of snap markers; these markers are added to a clips snap-to points, and are displayed as necessary. */
/** a unique numeric id */
QString m_id;
+
+ /** Wheter the clip is a placeholder (clip missing but user wants to see it) */
+ bool m_placeHolder;
+
void setAudioThumbCreated(bool isDone);
/** Holds clip infos like fps, size,... */
QMap <QString, QString> m_properties;
void slotCreateAudioTimer();
void slotRefreshProducer();
void setProducerProperty(const char *name, int data);
- void getFileHash(const QString &url);
+ void setProducerProperty(const char *name, double data);
+ void getFileHash(const QString url);
public slots:
void updateAudioThumbnail(QMap<int, QMap<int, QByteArray> > data);