]> git.sesse.net Git - kdenlive/commitdiff
Fix one frame error in clips duration
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 21 Jul 2008 19:24:46 +0000 (19:24 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Mon, 21 Jul 2008 19:24:46 +0000 (19:24 +0000)
svn path=/branches/KDE4/; revision=2337

src/clipmanager.cpp
src/projectitem.cpp
src/renderer.cpp

index 2596e75d78eeac3e8f5666aa28032f33bc9023df..c5494d25757e4bed312e84ee3e84fd9589f290e0 100644 (file)
@@ -106,7 +106,7 @@ void ClipManager::slotAddClipFile(const KUrl url, const QString group, const int
     if (type->name().startsWith("image/")) {
         prod.setAttribute("type", (int) IMAGE);
         prod.setAttribute("in", "0");
-        prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()));
+        prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
     }
     AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
     m_doc->commandStack()->push(command);
@@ -121,7 +121,7 @@ void ClipManager::slotAddColorClipFile(const QString name, const QString color,
     uint id = m_clipIdCounter++;
     prod.setAttribute("id", QString::number(id));
     prod.setAttribute("in", "0");
-    prod.setAttribute("out", m_doc->getFramePos(duration));
+    prod.setAttribute("out", m_doc->getFramePos(duration) - 1);
     prod.setAttribute("name", name);
     if (!group.isEmpty()) {
         prod.setAttribute("groupname", group);
@@ -139,7 +139,7 @@ void ClipManager::slotAddSlideshowClipFile(const QString name, const QString pat
     uint id = m_clipIdCounter++;
     prod.setAttribute("id", QString::number(id));
     prod.setAttribute("in", "0");
-    prod.setAttribute("out", m_doc->getFramePos(duration) * count);
+    prod.setAttribute("out", m_doc->getFramePos(duration) * count - 1);
     prod.setAttribute("ttl", m_doc->getFramePos(duration));
     prod.setAttribute("luma_duration", m_doc->getFramePos(luma_duration));
     prod.setAttribute("name", name);
@@ -172,7 +172,7 @@ void ClipManager::slotAddTextClipFile(const QString path, const QString xml, con
     }
     prod.setAttribute("type", (int) TEXT);
     prod.setAttribute("in", "0");
-    prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()));
+    prod.setAttribute("out", m_doc->getFramePos(KdenliveSettings::image_duration()) - 1);
     AddClipCommand *command = new AddClipCommand(m_doc, prod, id, true);
     m_doc->commandStack()->push(command);
 }
index 55467170b2cbb1cf01e7e3f731a6cd28040949be..c0981e1575bd97eb719a013ef8ce19276a4ed39c 100644 (file)
@@ -186,7 +186,6 @@ void ProjectItem::slotSetToolTip() {
         break;
     case 4:
         tip.append(i18n("Color clip"));
-        setData(1, DurationRole, Timecode::getEasyTimecode(GenTime(m_clip->getProperty("out").toInt(), 25), 25));
         break;
     case 5:
         tip.append(i18n("Image clip") + "</b><br />" + clipUrl().path());
index 09123f99a671aac93efb019ab6b6b88ed9d9dcae..48f12330a1a144ab54174201722677d2e8250954 100644 (file)
@@ -1201,18 +1201,7 @@ void Render::mltInsertClip(ItemInfo info, QDomElement element, Mlt::Producer *pr
     Mlt::Producer trackProducer(tractor.track(info.track));
     Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
 
-    /*if (prod == NULL) {
-        // clip was never used yet
-        QDomDocument doc;
-        doc.appendChild(doc.importNode(element, true));
-        QString resource = doc.toString();
-        kDebug() << "// INSERTING CLIP: " << resource;
-        char *tmp = decodedString(resource);
-        prod = new Mlt::Producer(*m_mltProfile, "westley-xml", tmp);
-        delete[] tmp;
-    }*/
-
-    Mlt::Producer *clip = prod->cut(info.cropStart.frames(m_fps), (info.endPos - info.startPos).frames(m_fps));
+    Mlt::Producer *clip = prod->cut(info.cropStart.frames(m_fps), (info.endPos - info.startPos).frames(m_fps) - 1);
     trackPlaylist.insert_at((int) info.startPos.frames(m_fps), *clip, 1);
 
     mlt_service_unlock(service.get_service());
@@ -1638,14 +1627,15 @@ bool Render::mltMoveClip(int startTrack, int endTrack, int moveStart, int moveEn
     Mlt::Producer trackProducer(tractor.track(startTrack));
     Mlt::Playlist trackPlaylist((mlt_playlist) trackProducer.get_service());
     int clipIndex = trackPlaylist.get_clip_index_at(moveStart + 1);
-
     if (endTrack == startTrack) {
         //mlt_service_lock(service.get_service());
         Mlt::Producer clipProducer(trackPlaylist.replace_with_blank(clipIndex));
         trackPlaylist.consolidate_blanks(0);
+
         if (!trackPlaylist.is_blank_at(moveEnd)) {
             // error, destination is not empty
             //int ix = trackPlaylist.get_clip_index_at(moveEnd);
+           kDebug()<<"// ERROR MOVING CLIP TO : "<<moveEnd;
             mlt_service_unlock(m_mltConsumer->get_service());
             m_isBlocked = false;
             return false;