]> git.sesse.net Git - kdenlive/blobdiff - src/docclipbase.h
Optimize seek requests
[kdenlive] / src / docclipbase.h
index 896680f33aca73e9d0028b380cb674e4d6ce6a28..6ac74221d2627bb9939c9c1ea6b5fcc5d1bd5647 100644 (file)
@@ -83,6 +83,7 @@ Q_OBJECT public:
     /** Returns the internal unique id of the clip. */
     const QString &getId() const;
 
+    bool hasAudioThumb() const;
     //KThumb *thumbCreator;
     bool audioThumbCreated() const;
     /*void getClipMainThumb();*/
@@ -122,7 +123,7 @@ Q_OBJECT public:
     /** Get a copy of the producer, for use in the clip monitor */
     Mlt::Producer *getCloneProducer();
     /** Retrieve the producer that shows only video */
-    Mlt::Producer *videoProducer();
+    Mlt::Producer *videoProducer(int track);
     /** Retrieve the producer that shows only audio */
     Mlt::Producer *audioProducer(int track);
 
@@ -137,7 +138,7 @@ Q_OBJECT public:
     QDomDocument sceneToXML(const GenTime & startTime,
                             const GenTime & endTime) const;
     /** returns a QString containing all of the XML data required to recreate this clip. */
-    QDomElement toXML() const;
+    QDomElement toXML(bool hideTemporaryProperties = false) const;
 
     /** Returns true if the xml passed matches the values in this clip */
     bool matchesXML(const QDomElement & element) const;
@@ -164,10 +165,6 @@ Q_OBJECT public:
     /** Returns the thumbnail producer used by this clip */
     KThumb *thumbProducer();
 
-    /** Cache for every audio Frame with 10 Bytes */
-    /** format is frame -> channel ->bytes */
-    QMap<int, QMap<int, QByteArray> > m_audioFrameCache;
-
     /** Free cache data */
     void slotClearAudioCache();
     QString getClipHash() const;
@@ -203,16 +200,21 @@ Q_OBJECT public:
     void cleanupProducers();
     bool isClean() const;
     bool getAudioThumbs();
+    void setAnalysisData(const QString &name, const QString &data, int offset = 0);
+    QMap <QString, QString> analysisData() const;
+    int lastSeekPosition;
+    /** Cache for every audio Frame with 10 Bytes */
+    /** format is frame -> channel ->bytes */
+    QMap<int, QMap<int, QByteArray> > audioFrameCache;
 
 private:   // Private attributes
-
     /** 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_videoTrackProducers;
     QList <Mlt::Producer *> m_audioTrackProducers;
     QList <Mlt::Producer *> m_toDeleteProducers;
-    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. */
@@ -235,10 +237,15 @@ private:   // Private attributes
     QMap <QString, QString> m_properties;
     /** Holds clip metadata like author, copyright,... */
     QMap <QString, QString> m_metadata;
+    /** Holds clip analysis data that can be used later to create markers or keyframes */
+    QMap <QString, QString> m_analysisdata;
     
     /** Try to make sure we don't delete a producer while using it */
     QMutex m_producerMutex;
     QMutex m_replaceMutex;
+    
+    /** @brief This timer will trigger creation of audio thumbnails. */
+    QTimer m_audioTimer;
 
     /** Create connections for audio thumbnails */
     void slotRefreshProducer();
@@ -249,6 +256,8 @@ private:   // Private attributes
     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);
+    /** @brief Offset all keyframes of a geometry. */
+    const QString geometryWithOffset(QString data, int offset);
 
    
 public slots:
@@ -259,9 +268,10 @@ public slots:
     GenTime hasSnapMarkers(const GenTime & time);
     QString deleteSnapMarker(const GenTime & time);
     void editSnapMarker(const GenTime & time, QString comment);
-    void addSnapMarker(const GenTime & time, QString comment);
+    void addSnapMarker(const CommentedTime marker);
     QList < GenTime > snapMarkers() const;
-    QString markerComment(GenTime t);
+    QString markerComment(GenTime t) const;
+    CommentedTime markerAt(GenTime t) const;
     void setClipThumbFrame(const uint &ix);
     uint getClipThumbFrame() const;
     void setProperties(QMap <QString, QString> properties);