]> git.sesse.net Git - kdenlive/blobdiff - src/timecode.h
Fix dropframe timecode, patch from John T. Mertz
[kdenlive] / src / timecode.h
index e4b32548e275886573e9d7025000df5e70e20fe3..3fac06441cbaccbeafa7037c4f543322f766955e 100644 (file)
@@ -31,14 +31,15 @@ class Timecode
 public:
     enum Formats { HH_MM_SS_FF, HH_MM_SS_HH, Frames, Seconds };
 
-    explicit Timecode(Formats format = HH_MM_SS_FF, int framesPerSecond =
+    explicit Timecode(Formats format = HH_MM_SS_FF, double framesPerSecond =
                           25, bool dropFrame = false);
 
     /** Set the current timecode format; this is the output format for this timecode. */
-    void setFormat(int framesPerSecond, bool dropFrame = false, Formats format = HH_MM_SS_FF) {
-        m_displayedFramesPerSecond = framesPerSecond;
+    void setFormat(double framesPerSecond, bool dropFrame = false, Formats format = HH_MM_SS_FF) {
+        m_displayedFramesPerSecond = (int)(framesPerSecond + 0.5);
         m_dropFrame = dropFrame;
         m_format = format;
+        m_realFps = framesPerSecond;
     }
 
     Formats format() const {
@@ -48,24 +49,33 @@ public:
     ~Timecode();
 
     /** Returns the timecode for a given time */
-    QString getTimecode(const GenTime & time, double fps) const;
-    int getFrameCount(const QString duration, double fps) const;
+    QString getDisplayTimecode(const GenTime & time, bool frameDisplay) const;
+    QString getTimecode(const GenTime & time) const;
+    int getDisplayFrameCount(const QString duration, bool frameDisplay) const;
+    int getFrameCount(const QString duration) const;
     static QString getEasyTimecode(const GenTime & time, const double &fps);
     static QString getStringTimecode(int frames, const double &fps);
-    QString getTimecodeFromFrames(int frames) const;
-    int fps() const;
+    const QString getDisplayTimecodeFromFrames(int frames, bool frameDisplay) const;
+    const QString getTimecodeFromFrames(int frames) const;
+    double fps() const;
+    bool df() const;
+    QString inputMask() const;
+    QString reformatSeparators(QString duration) const;
 
 private:
     Formats m_format;
     bool m_dropFrame;
     int m_displayedFramesPerSecond;
+    double m_realFps;
+
+    const QString getTimecodeHH_MM_SS_FF(const GenTime & time) const;
+    const QString getTimecodeHH_MM_SS_FF(int frames) const;
 
-    QString getTimecodeHH_MM_SS_FF(const GenTime & time, double fps) const;
-    QString getTimecodeHH_MM_SS_FF(int frames) const;
     QString getTimecodeHH_MM_SS_HH(const GenTime & time) const;
-    QString getTimecodeFrames(const GenTime & time, double fps) const;
+    QString getTimecodeFrames(const GenTime & time) const;
     QString getTimecodeSeconds(const GenTime & time) const;
-    QString getTimecodeDropFrame(const GenTime & time, double fps) const;
+    QString getTimecodeDropFrame(const GenTime & time) const;
+    QString getTimecodeDropFrame(int frames) const;
 };
 
 #endif