[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdenlive/refactoring_timeline] src/timeline2/model: detect speed when creating clipmodel
From:       Nicolas Carion <null () kde ! org>
Date:       2018-04-30 22:26:41
Message-ID: E1fDHFp-0003w7-GQ () code ! kde ! org
[Download RAW message or body]

Git commit 7761e619af1f1fbf50811177cf1c7e45dbcf8586 by Nicolas Carion.
Committed on 30/04/2018 at 22:27.
Pushed by alcinos into branch 'refactoring_timeline'.

detect speed when creating clipmodel

M  +10   -3    src/timeline2/model/clipmodel.cpp
M  +4    -1    src/timeline2/model/clipmodel.hpp

https://commits.kde.org/kdenlive/7761e619af1f1fbf50811177cf1c7e45dbcf8586

diff --git a/src/timeline2/model/clipmodel.cpp b/src/timeline2/model/clipmodel.cpp
index 24fa750b1..98f2056da 100644
--- a/src/timeline2/model/clipmodel.cpp
+++ b/src/timeline2/model/clipmodel.cpp
@@ -35,12 +35,15 @@
 #include "gentime.h"
 #include <effects/effectsrepository.hpp>
 
-ClipModel::ClipModel(std::shared_ptr<TimelineModel> parent, \
std::shared_ptr<Mlt::Producer> prod, const QString &binClipId, int id) \
+ClipModel::ClipModel(std::shared_ptr<TimelineModel> parent, \
std::shared_ptr<Mlt::Producer> prod, const QString &binClipId, int id, PlaylistState \
state, +                     double speed)
     : MoveableItem<Mlt::Producer>(parent, id)
     , m_producer(std::move(prod))
     , m_effectStack(EffectStackModel::construct(m_producer, \
{ObjectType::TimelineClip, m_id}, parent->m_undoStack))  , m_binClipId(binClipId)
     , forceThumbReload(false)
+    , m_currentState(state)
+    , m_speed(speed)
 {
     m_producer->set("kdenlive:id", binClipId.toUtf8().constData());
     m_producer->set("_kdenlive_cid", m_id);
@@ -65,7 +68,7 @@ int ClipModel::construct(const std::shared_ptr<TimelineModel> \
&parent, const QSt  
     std::shared_ptr<Mlt::Producer> cutProducer = binClip->getTimelineProducer(id, \
state, 1.);  
-    std::shared_ptr<ClipModel> clip(new ClipModel(parent, cutProducer, binClipId, \
id)); +    std::shared_ptr<ClipModel> clip(new ClipModel(parent, cutProducer, \
binClipId, id, state));  clip->setClipState(state);
     parent->registerClip(clip);
     return id;
@@ -87,8 +90,12 @@ int ClipModel::construct(const std::shared_ptr<TimelineModel> \
&parent, const QSt  videoAudio.second = videoAudio.second && binClip->hasAudio();
     state = stateFromBool(videoAudio);
 
+    double speed = 1.0;
+    if (QString::fromUtf8(producer->get("mlt_service")) == \
QLatin1String("timewarp")) { +        speed = producer->get_double("warp_speed");
+    }
     auto result = binClip->giveMasterAndGetTimelineProducer(id, producer, state);
-    std::shared_ptr<ClipModel> clip(new ClipModel(parent, result.first, binClipId, \
id)); +    std::shared_ptr<ClipModel> clip(new ClipModel(parent, result.first, \
binClipId, id, state, speed));  clip->m_effectStack->importEffects(producer, \
result.second);  clip->setClipState(state);
     parent->registerClip(clip);
diff --git a/src/timeline2/model/clipmodel.hpp b/src/timeline2/model/clipmodel.hpp
index 9c6b32ad8..b7781cdf2 100644
--- a/src/timeline2/model/clipmodel.hpp
+++ b/src/timeline2/model/clipmodel.hpp
@@ -47,7 +47,8 @@ class ClipModel : public MoveableItem<Mlt::Producer>
 
 protected:
     /* This constructor is not meant to be called, call the static construct instead \
                */
-    ClipModel(std::shared_ptr<TimelineModel> parent, std::shared_ptr<Mlt::Producer> \
prod, const QString &binClipId, int id = -1); +    \
ClipModel(std::shared_ptr<TimelineModel> parent, std::shared_ptr<Mlt::Producer> prod, \
const QString &binClipId, int id, PlaylistState state, +              double speed = \
1.);  
 public:
     ~ClipModel();
@@ -160,6 +161,8 @@ protected:
     bool forceThumbReload; // Used to trigger a forced thumb reload, when producer \
changes  
     PlaylistState m_currentState;
+
+    double m_speed = -1; // Speed of the clip
 };
 
 #endif


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic