class KThumb;
class ClipManager;
-namespace Mlt {
+namespace Mlt
+{
class Producer;
};
+struct CutZoneInfo {
+ QPoint zone;
+ QString description;
+};
+
-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 separately, it should be possible to combin the two, as is
}
/** Sets producers for the current clip (one for each track due to a limitation in MLT's track mixing */
- void setProducer(Mlt::Producer *producer);
+ 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();
+ Mlt::Producer *audioProducer(int track);
/** Returns true if this clip is a project clip, false otherwise. Overridden in DocClipProject,
* where it returns true. */
bool hasFileSize() const;
/** Returns the filesize, or 0 if there is no appropriate filesize. */
- uint fileSize() const;
+ qulonglong fileSize() const;
/** Returns true if this clip refers to the clip passed in. A clip refers to another clip if
* it uses it as part of it's own composition. */
/** 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 deleteProducers();
+ void resetProducerProperty(const char *name);
+ void clearProducers();
+ void deleteProducers(bool clearThumbCreator = true);
/** 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;
+ void setValid();
+ static QString getHash(const QString &path);
+
+ void addCutZone(int in, int out, QString desc = QString());
+ bool hasCutZone(QPoint p) const;
+ void removeCutZone(int in, int out);
+ QList <CutZoneInfo> cutZones() const;
+ void updateCutZone(int oldin, int oldout, int in, int out, QString desc = QString());
+
+ bool hasVideoCodec(const QString &codec) const;
+ bool hasAudioCodec(const QString &codec) const;
+ bool checkHash() const;
+ void setPlaceHolder(bool place);
+
private: // Private attributes
- /** 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;
- Mlt::Producer *m_audioOnlyProducer;
+ QList <Mlt::Producer *> m_audioTrackProducers;
Mlt::Producer *m_videoOnlyProducer;
CLIPTYPE m_clipType;
/** a unique numeric id */
QString m_id;
+
+ /** Wheter the clip is a placeholder (clip missing but user wants to see it) */
+ bool m_placeHolder;
+
+ QList <CutZoneInfo> m_cutZones;
+
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);
bool slotGetAudioThumbs();
QList < CommentedTime > commentedSnapMarkers() const;
- void setSnapMarkers(QList < CommentedTime > markers);
GenTime findNextSnapMarker(const GenTime & currTime);
GenTime findPreviousSnapMarker(const GenTime & currTime);
GenTime hasSnapMarkers(const GenTime & time);
signals:
- void getAudioThumbs();
void gotAudioData();
};