Hi all, I have been working on the video editing server project for Wikimedia Commons, and it is coming along nicely: https://wikimedia.meltvideo.com/
In the course of testing the handling of the luma wipe files when opening a project XML downloaded from the web app, I noticed the DocumentChecker was not handling missing luma files correctly. It was looking for a "luma" property on the MLT luma transition whereas this transition uses and has always used a "resource" property for this. Here is a patch I came up with to correct this. -- +-DRD-+
From 618fac500fe981c3ffd0bef412e8633bb1524842 Mon Sep 17 00:00:00 2001 From: Dan Dennedy <[email protected]> Date: Sun, 8 Feb 2015 13:04:02 -0800 Subject: [PATCH] Fix checking/replacing luma transition resource (wipe). --- src/doc/documentchecker.cpp | 20 +++++++++++--------- src/project/dialogs/projectsettings.cpp | 2 +- src/timeline/customtrackview.cpp | 5 ++--- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/doc/documentchecker.cpp b/src/doc/documentchecker.cpp index eeb49fe..03beaf5 100644 --- a/src/doc/documentchecker.cpp +++ b/src/doc/documentchecker.cpp @@ -171,8 +171,9 @@ bool DocumentChecker::hasErrorInClips() QDomNodeList trans = m_doc.elementsByTagName("transition"); max = trans.count(); for (int i = 0; i < max; ++i) { - QString luma = getProperty(trans.at(i).toElement(), "luma"); - if (!luma.isEmpty() && !filesToCheck.contains(luma)) + QString service = getProperty(trans.at(i).toElement(), "mlt_service"); + QString luma = getProperty(trans.at(i).toElement(), "resource"); + if (service == "luma" && !luma.isEmpty() && !filesToCheck.contains(luma)) filesToCheck.append(luma); } // Check existence of luma files @@ -735,17 +736,18 @@ void DocumentChecker::fixClipItem(QTreeWidgetItem *child, QDomNodeList producers } } else if (child->data(0, statusRole).toInt() == LUMAOK) { for (int i = 0; i < trans.count(); ++i) { - QString luma = getProperty(trans.at(i).toElement(), "luma"); - if (!luma.isEmpty() && luma == child->data(0, idRole).toString()) { - setProperty(trans.at(i).toElement(), "luma", child->text(1)); + QString service = getProperty(trans.at(i).toElement(), "mlt_service"); + QString luma = getProperty(trans.at(i).toElement(), "resource"); + if (service == "luma" && !luma.isEmpty() && luma == child->data(0, idRole).toString()) { + setProperty(trans.at(i).toElement(), "resource", child->text(1)); kDebug() << "replace with; " << child->text(1); } } } else if (child->data(0, statusRole).toInt() == LUMAMISSING) { for (int i = 0; i < trans.count(); ++i) { - QString luma = getProperty(trans.at(i).toElement(), "luma"); + QString luma = getProperty(trans.at(i).toElement(), "resource"); if (!luma.isEmpty() && luma == child->data(0, idRole).toString()) { - setProperty(trans.at(i).toElement(), "luma", QString()); + setProperty(trans.at(i).toElement(), "resource", QString()); } } } @@ -860,8 +862,8 @@ void DocumentChecker::slotDeleteSelected() foreach (const QString &lumaPath, deletedLumas) { for (int i = 0; i < transitions.count(); ++i) { e = transitions.item(i).toElement(); - QString resource = EffectsList::property(e, "luma"); - if (resource == lumaPath) EffectsList::removeProperty(e, "luma"); + QString resource = EffectsList::property(e, "resource"); + if (resource == lumaPath) EffectsList::removeProperty(e, "resource"); } } } diff --git a/src/project/dialogs/projectsettings.cpp b/src/project/dialogs/projectsettings.cpp index 2839d5c..1bfbb07 100644 --- a/src/project/dialogs/projectsettings.cpp +++ b/src/project/dialogs/projectsettings.cpp @@ -525,7 +525,7 @@ QStringList ProjectSettings::extractPlaylistUrls(const QString &path) files = doc.elementsByTagName("transition"); for (int i = 0; i < files.count(); ++i) { QDomElement e = files.at(i).toElement(); - QString url = EffectsList::property(e, "luma"); + QString url = EffectsList::property(e, "resource"); if (!url.isEmpty()) { if (!url.startsWith('/')) url.prepend(root); urls << url; diff --git a/src/timeline/customtrackview.cpp b/src/timeline/customtrackview.cpp index 2d37ebd..fba4cfa 100644 --- a/src/timeline/customtrackview.cpp +++ b/src/timeline/customtrackview.cpp @@ -7240,9 +7240,8 @@ QStringList CustomTrackView::extractTransitionsLumas() if (itemList.at(i)->type() == TransitionWidget) { transitionitem = static_cast <Transition*>(itemList.at(i)); transitionXml = transitionitem->toXML(); - // luma files in transitions can be in "resource" or "luma" property - QString luma = EffectsList::parameter(transitionXml, "luma"); - if (luma.isEmpty()) luma = EffectsList::parameter(transitionXml, "resource"); + // luma files in transitions are in "resource" property + QString luma = EffectsList::parameter(transitionXml, "resource"); if (!luma.isEmpty()) urls << KUrl(luma).path(); } } -- 1.9.1
_______________________________________________ kdenlive mailing list [email protected] https://mail.kde.org/mailman/listinfo/kdenlive
