]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.h
Try to fix audio mixing bug ( http://www.kdenlive.org:80/mantis/view.php?id=228 )
[kdenlive] / src / renderer.h
index b85f9065820b41d90e2351f819a3a4dc4daf73c0..1298b44153b9718b8525bafacd33c49f35e9419a 100644 (file)
@@ -101,6 +101,7 @@ Q_OBJECT public:
     backwards. Does not specify start/stop times for playback.*/
     void play(double speed);
     void switchPlay();
+    void pause();
     /** stop playing */
     void stop(const GenTime & startTime);
     void setVolume(double volume);
@@ -110,12 +111,11 @@ Q_OBJECT public:
     play the current scene at the speed specified, relative to normal
     playback. e.g. 1.0 is normal speed, 0.0 is paused, -1.0 means play
     backwards. Specifes the start/stop times for playback.*/
-    void play(double speed, const GenTime & startTime);
-    void play(double speed, const GenTime & startTime,
-              const GenTime & stopTime);
+    void play(const GenTime & startTime);
+    void playZone(const GenTime & startTime, const GenTime & stopTime);
+    void loopZone(const GenTime & startTime, const GenTime & stopTime);
 
-    /** Returns the description of this renderer */
-    QString description();
+    void saveZone(KUrl url, QString desc, QPoint zone);
 
     /** Returns the name of the renderer. */
     const QString & rendererName() const;
@@ -140,7 +140,7 @@ Q_OBJECT public:
 
     /** Turn on or off on screen display */
     void refreshDisplay();
-    int resetProfile(QString profile);
+    int resetProfile();
     const double fps() const;
     const int renderWidth() const;
     const int renderHeight() const;
@@ -151,14 +151,14 @@ Q_OBJECT public:
     void mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *prod);
     void mltUpdateClip(ItemInfo info, QDomElement element, Mlt::Producer *prod);
     void mltCutClip(int track, GenTime position);
-    void mltResizeClipEnd(int track, GenTime pos, GenTime in, GenTime out);
-    bool mltResizeClipStart(int track, GenTime pos, GenTime moveEnd, GenTime moveStart, GenTime in, GenTime out);
-    bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart);
-    bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart);
-    void mltRemoveClip(int track, GenTime position);
+    bool mltResizeClipEnd(ItemInfo info, GenTime clipDuration);
+    bool mltResizeClipStart(ItemInfo info, GenTime diff);
+    bool mltMoveClip(int startTrack, int endTrack, GenTime pos, GenTime moveStart, Mlt::Producer *prod);
+    bool mltMoveClip(int startTrack, int endTrack, int pos, int moveStart, Mlt::Producer *prod);
+    bool mltRemoveClip(int track, GenTime position);
     bool mltRemoveEffect(int track, GenTime position, QString index, bool doRefresh = true);
-    bool mltAddEffect(int track, GenTime position, QMap <QString, QString> args, bool doRefresh = true);
-    bool mltEditEffect(int track, GenTime position, QMap <QString, QString> args);
+    bool mltAddEffect(int track, GenTime position, QHash <QString, QString> args, bool doRefresh = true);
+    bool mltEditEffect(int track, GenTime position, QHash <QString, QString> args);
     void mltMoveEffect(int track, GenTime position, int oldPos, int newPos);
     void mltChangeTrackState(int track, bool mute, bool blind);
     void mltMoveTransition(QString type, int startTrack,  int newTrack, int newTransitionTrack, GenTime oldIn, GenTime oldOut, GenTime newIn, GenTime newOut);
@@ -178,6 +178,8 @@ Q_OBJECT public:
     in the ClipManager list and speed is the current speed */
     int mltChangeClipSpeed(ItemInfo info, double speed, Mlt::Producer *prod);
 
+    QList <Mlt::Producer *> producersList();
+
 private:   // Private attributes & methods
     /** The name of this renderer - useful to identify the renderes by what they do - e.g. background rendering, workspace monitor, etc... */
     QString m_name;
@@ -188,8 +190,12 @@ private:   // Private attributes & methods
     Mlt::Profile *m_mltProfile;
     double m_framePosition;
     double m_fps;
-    uint m_monitorId;
-    bool m_generateScenelist;
+
+    /** true if we are playing a zone (ie the in and out properties have been temporarily changed) */
+    bool m_isZoneMode;
+    bool m_isLoopMode;
+    GenTime m_loopStart;
+
     /** true when monitor is in split view (several tracks at the same time) */
     bool m_isSplitView;
 
@@ -200,21 +206,18 @@ private:   // Private attributes & methods
     QTimer *refreshTimer;
     QTimer *osdTimer;
     KUrl m_exportedFile;
-    int exportDuration, firstExportFrame, lastExportFrame;
 
     /** A human-readable description of this renderer. */
-    QString m_description;
     int m_winid;
     int m_externalwinid;
-    /** The actually seek command, private so people can't avoid the buffering of multiple seek commands. */
-    void sendSeekCommand(GenTime time);
 
     /** Sets the description of this renderer to desc. */
-    void setDescription(const QString & description);
     void closeMlt();
     void mltCheckLength(bool reload = true);
     QMap<QString, QString> mltGetTransitionParamsFromXml(QDomElement xml);
     QMap<QString, Mlt::Producer *> m_slowmotionProducers;
+    void buildConsumer();
+    void resetZoneMode();
 
 private slots:  // Private slots
     /** refresh monitor display */
@@ -225,11 +228,11 @@ private slots:  // Private slots
 
 signals:   // Signals
     /** emitted when the renderer recieves a reply to a getFileProperties request. */
-    void replyGetFileProperties(int clipId, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &);
+    void replyGetFileProperties(const QString &clipId, Mlt::Producer*, const QMap < QString, QString > &, const QMap < QString, QString > &);
 
     /** emitted when the renderer recieves a reply to a getImage request. */
-    void replyGetImage(int , int, const QPixmap &, int, int);
-    void replyGetImage(int, const QPixmap &, int, int);
+    void replyGetImage(const QString & , int, const QPixmap &, int, int);
+    void replyGetImage(const QString &, const QPixmap &, int, int);
 
     /** Emitted when the renderer stops, either playing or rendering. */
     void stopped();
@@ -246,7 +249,7 @@ signals:   // Signals
     void durationChanged(int);
     void rendererPosition(int);
     void rendererStopped(int);
-    void removeInvalidClip(int);
+    void removeInvalidClip(const QString &);
 
 public slots:  // Public slots
     /** Start Consumer */
@@ -261,7 +264,7 @@ public slots:  // Public slots
     /** Wraps the VEML command of the same name. Requests the file properties
     for the specified url from the renderer. Upon return, the result will be emitted
     via replyGetFileProperties(). */
-    void getFileProperties(const QDomElement &xml, int clipId);
+    void getFileProperties(const QDomElement &xml, const QString &clipId);
 
     void exportFileToFirewire(QString srcFileName, int port, GenTime startTime, GenTime endTime);
     static char *decodedString(QString str);