X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdocclipbase.h;h=a19d226215512e79681f8147b9ca411ef8aa5061;hb=c6f581eb95db46086221714f84f7fd56a3e8153b;hp=f016c18d497aab8a215e8e2a1239d03c7eb19ff9;hpb=688b055f579371e27aa0bd3da908d75d0c090acd;p=kdenlive diff --git a/src/docclipbase.h b/src/docclipbase.h index f016c18d..a19d2262 100644 --- a/src/docclipbase.h +++ b/src/docclipbase.h @@ -26,6 +26,8 @@ #include #include #include +#include +#include #include @@ -115,7 +117,7 @@ Q_OBJECT public: } /** 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 */ @@ -179,8 +181,7 @@ Q_OBJECT public: const char *producerProperty(const char *name) const; void setProducerProperty(const char *name, const char *data); void resetProducerProperty(const char *name); - void clearProducers(); - void deleteProducers(); + void deleteProducers(bool clearThumbCreator = true); /** Set default play zone for clip monitor */ void setZone(QPoint zone); @@ -189,6 +190,7 @@ Q_OBJECT public: /** 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()); @@ -197,6 +199,12 @@ Q_OBJECT public: QList 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); + QPixmap extractImage(int frame, int width, int height); + private: // Private attributes /** The number of times this clip is used in the project - the number of references to this clip @@ -231,18 +239,26 @@ private: // Private attributes QMap m_properties; /** Holds clip metadata like author, copyright,... */ QMap 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 > 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); @@ -257,11 +273,14 @@ public slots: void setMetadata(QMap properties); QMap properties() const; QMap metadata() const; - + void slotExtractImage(int frame, int frame2); 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