From 2c0b468416c80c5473b024bb6aa439871f295875 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 2 Feb 2009 22:16:39 +0000 Subject: [PATCH] Detect MLT version and don't query for available codecs if version < 0.3.5. Workaround for bug: http://www.kdenlive.org:80/mantis/view.php?id=653 svn path=/branches/KDE4/; revision=3026 --- src/wizard.cpp | 138 ++++++++++++++++++++++++++++++------------------- 1 file changed, 84 insertions(+), 54 deletions(-) diff --git a/src/wizard.cpp b/src/wizard.cpp index 8716b7ab..7cdefed7 100644 --- a/src/wizard.cpp +++ b/src/wizard.cpp @@ -141,68 +141,98 @@ void Wizard::checkMltComponents() { m_mltCheck.tabWidget->setTabEnabled(1, false); } else { avformatItem->setIcon(0, okIcon); - // Check installed audio codecs - QProcess checkProcess2; - checkProcess2.start(KdenliveSettings::rendererpath(), QStringList() << "noise:" << "-consumer" << "avformat" << "acodec=list"); - if (!checkProcess2.waitForStarted()) { - m_mltCheck.tabWidget->setTabEnabled(1, false); - kDebug() << "// Error parsing MLT's avformat codecs"; - } else { - checkProcess2.waitForFinished(); - QByteArray codecList = checkProcess2.readAllStandardError(); - QString acodecList(codecList); - QStringList result; - QStringList alist = acodecList.split("\n", QString::SkipEmptyParts); - for (int i = 0; i < alist.count(); i++) { - if (alist.at(i).contains("- ")) result.append(alist.at(i).section("- ", 1).simplified().toLower()); + // Make sure we have MLT > 0.3.4 + bool recentMlt = false; + QString exepath = KStandardDirs::findExe("pkg-config"); + if (!exepath.isEmpty()) { + checkProcess.start(exepath, QStringList() << "--variable=version" << "mlt-framework"); + if (!checkProcess.waitForStarted()) { + kDebug() << "// Error querying MLT's version"; + } else { + checkProcess.waitForFinished(); + QString mltVersion = checkProcess.readAllStandardOutput(); + int version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt(); + kDebug() << "// FOUND MLT's pkgconfig version: " << version; + if (version > 34) recentMlt = true; } - m_mltCheck.acodecs_list->addItems(result); - KdenliveSettings::setAudiocodecs(result); - //kDebug()<<"// FOUND LIST:\n\n"< 34) recentMlt = true; } - m_mltCheck.vcodecs_list->addItems(result); - KdenliveSettings::setVideocodecs(result); - //kDebug()<<"// FOUND LIST:\n\n"<setTabEnabled(1, false); + kDebug() << "// Error parsing MLT's avformat codecs"; + } else { + checkProcess2.waitForFinished(); + QByteArray codecList = checkProcess2.readAllStandardError(); + QString acodecList(codecList); + QStringList result; + QStringList alist = acodecList.split("\n", QString::SkipEmptyParts); + for (int i = 0; i < alist.count(); i++) { + if (alist.at(i).contains("- ")) result.append(alist.at(i).section("- ", 1).simplified().toLower()); } + m_mltCheck.acodecs_list->addItems(result); + KdenliveSettings::setAudiocodecs(result); + //kDebug()<<"// FOUND LIST:\n\n"<addItems(result); + KdenliveSettings::setVideocodecs(result); + //kDebug()<<"// FOUND LIST:\n\n"<addItems(result); + KdenliveSettings::setSupportedformats(result); + //kDebug()<<"// FOUND LIST:\n\n"<addItems(result); - KdenliveSettings::setSupportedformats(result); - //kDebug()<<"// FOUND LIST:\n\n"<