From 786529abf41262fdbc031f583e8ceb80bae6b784 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 21 Jul 2008 19:24:46 +0000 Subject: [PATCH] Fix one frame error in clips duration svn path=/branches/KDE4/; revision=2337 --- src/clipmanager.cpp | 8 ++++---- src/projectitem.cpp | 1 - src/renderer.cpp | 16 +++------------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/src/clipmanager.cpp b/src/clipmanager.cpp index 2596e75d..c5494d25 100644 --- a/src/clipmanager.cpp +++ b/src/clipmanager.cpp @@ -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); } diff --git a/src/projectitem.cpp b/src/projectitem.cpp index 55467170..c0981e15 100644 --- a/src/projectitem.cpp +++ b/src/projectitem.cpp @@ -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") + "
" + clipUrl().path()); diff --git a/src/renderer.cpp b/src/renderer.cpp index 09123f99..48f12330 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -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 : "<get_service()); m_isBlocked = false; return false; -- 2.39.2