]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.h
Rotoscoping: import keyframes generated by tracker.
[kdenlive] / src / renderer.h
index d8a54a23065054cd1cb4318d82a8956449bc1678..b20afea559e09d92264e583824bed2cc51ade133 100644 (file)
@@ -92,7 +92,6 @@ Q_OBJECT public:
     /** @brief Seeks the renderer clip to the given time. */
     void seek(GenTime time);
     void seek(int time);
-    void seekToFrame(int pos);
     void seekToFrameDiff(int diff);
     int m_isBlocked;
 
@@ -131,7 +130,7 @@ Q_OBJECT public:
     void stop(const GenTime & startTime);
     int volume() const;
 
-    QImage extractFrame(int frame_position, int width = -1, int height = -1);
+    QImage extractFrame(int frame_position, QString path = QString(), int width = -1, int height = -1);
 
     /** @brief Plays the scene starting from a specific time.
      * @param startTime time to start playing the scene from */
@@ -266,6 +265,9 @@ Q_OBJECT public:
     QList <int> checkTrackSequence(int);
     void sendFrameUpdate();
 
+    /** @brief Returns a pointer to the main producer. */
+    Mlt::Producer *getProducer();
+
 private:
 
     /** @brief The name of this renderer.
@@ -311,6 +313,12 @@ private:
     void buildConsumer(const QString profileName);
     void resetZoneMode();
     void fillSlowMotionProducers();
+    /** @brief Get the track number of the lowest audible (non muted) audio track
+     *  @param return The track number */
+    int getLowestNonMutedAudioTrack(Mlt::Tractor tractor);
+
+    /** @brief Make sure our audio mixing transitions are applied to the lowest track */
+    void fixAudioMixing(Mlt::Tractor tractor);
 
 private slots:
 
@@ -337,14 +345,6 @@ signals:
     /** @brief The renderer started rendering. */
     void rendering(const GenTime &);
 
-    /** @brief The rendering has finished.
-        @see consumer_frame_show
-        This signal seems to be useless; use renderPosition(int) instead --Granjow */
-    void renderFinished();
-
-    /* @brief The current seek position has been changed by the renderer.
-    void positionChanged(const GenTime &);*/
-
     /** @brief An error occurred within this renderer. */
     void error(const QString &, const QString &);
     void durationChanged(int);
@@ -352,8 +352,11 @@ signals:
     void rendererStopped(int);
     /** @brief The clip is not valid, should be removed from project. */
     void removeInvalidClip(const QString &, bool replaceProducer);
-    /** @brief The proxy is not valid, should be deleted. */
-    void removeInvalidProxy(const QString &);
+    /** @brief The proxy is not valid, should be deleted.
+     *  @param id The original clip's id
+     *  @param durationError Should be set to true if the proxy failed because it has not same length as original clip
+     */
+    void removeInvalidProxy(const QString &id, bool durationError);
     void refreshDocumentProducers();
 
     /** @brief A frame's image has to be shown.
@@ -393,6 +396,7 @@ public slots:
     void slotSplitView(bool doit);
     void slotSwitchFullscreen();
     void slotSetVolume(int volume);
+    void seekToFrame(int pos);
 };
 
 #endif