- // Make sure we have MLT > 0.3.4
- bool recentMlt = false;
- int version = 0;
- QString mltVersion;
- QString exepath = KStandardDirs::findExe("pkg-config");
- if (!exepath.isEmpty()) {
- checkProcess.start(exepath, QStringList() << "--variable=version" << "mlt++");
- if (!checkProcess.waitForStarted()) {
- kDebug() << "// Error querying MLT's version";
- } else {
- checkProcess.waitForFinished();
- mltVersion = checkProcess.readAllStandardOutput();
- 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;
- }
- }
- if (version == 0) {
- checkProcess.start(KdenliveSettings::rendererpath(), QStringList() << "--version");
- if (!checkProcess.waitForStarted()) {
- kDebug() << "// Error querying MLT's version";
- } else {
- checkProcess.waitForFinished();
- mltVersion = checkProcess.readAllStandardError();
- mltVersion = mltVersion.section('\n', 0, 0).simplified();
- mltVersion = mltVersion.section(' ', -1).simplified();
- version = 100 * mltVersion.section('.', 0, 0).toInt() + 10 * mltVersion.section('.', 1, 1).toInt() + mltVersion.section('.', 2, 2).toInt();
- kDebug() << "// FOUND MLT version: " << version;
- if (version > 34) recentMlt = true;
- }
- }
-
- mltitem->setText(1, i18n("MLT version: %1", mltVersion.simplified()));
- mltitem->setSizeHint(0, itemSize);
- if (version < recommendedMltVersion) {
- mltitem->setData(1, Qt::UserRole, i18n("Please upgrade to the latest MLT version"));
- mltitem->setIcon(0, m_badIcon);
- } else {
- mltitem->setData(1, Qt::UserRole, i18n("MLT version is correct"));
- mltitem->setIcon(0, m_okIcon);
- }
-
- if (recentMlt) {
- // 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());
- }
- m_mltCheck.acodecs_list->addItems(result);
- KdenliveSettings::setAudiocodecs(result);
- //kDebug()<<"// FOUND LIST:\n\n"<<m_audioCodecs<<"\n\n++++++++++++++++++++";
- }
- // Check video codecs
- checkProcess2.start(KdenliveSettings::rendererpath(), QStringList() << "noise:" << "-consumer" << "avformat" << "vcodec=list");
- if (!checkProcess2.waitForStarted()) {
- kDebug() << "// Error parsing MLT's avformat codecs";
- } else {
- checkProcess2.waitForFinished();
- QByteArray codecList = checkProcess2.readAllStandardError();
- QString vcodecList(codecList);
- QStringList result;
- QStringList vlist = vcodecList.split('\n', QString::SkipEmptyParts);
- for (int i = 0; i < vlist.count(); i++) {
- if (vlist.at(i).contains("- ")) result.append(vlist.at(i).section("- ", 1).simplified().toLower());
- }
- m_mltCheck.vcodecs_list->addItems(result);
- KdenliveSettings::setVideocodecs(result);
- //kDebug()<<"// FOUND LIST:\n\n"<<m_videoCodecs<<"\n\n++++++++++++++++++++";
- }
- // Check formats
- checkProcess2.start(KdenliveSettings::rendererpath(), QStringList() << "noise:" << "-consumer" << "avformat" << "f=list");
- if (!checkProcess2.waitForStarted()) {
- kDebug() << "// Error parsing MLT's avformat codecs";
- } else {
- checkProcess2.waitForFinished();
- QByteArray codecList = checkProcess2.readAllStandardError();
- QString vcodecList(codecList);
- QStringList result;
- QStringList vlist = vcodecList.split('\n', QString::SkipEmptyParts);
- for (int i = 0; i < vlist.count(); i++) {
- if (vlist.at(i).contains("- ")) {
- QString format = vlist.at(i).section("- ", 1).simplified().toLower();
- if (format.contains(',')) {
- QStringList sub = format.split(',', QString::SkipEmptyParts);
- for (int j = 0; j < sub.count(); j++)
- result.append(sub.at(j));
- } else result.append(format);
- }
- }
- m_mltCheck.formats_list->addItems(result);
- KdenliveSettings::setSupportedformats(result);
- //kDebug()<<"// FOUND LIST:\n\n"<<m_videoCodecs<<"\n\n++++++++++++++++++++";
- }
- }
-
+ consumer->set("vcodec", "list");
+ consumer->set("acodec", "list");
+ consumer->set("f", "list");
+ consumer->start();
+ QStringList result;
+ Mlt::Properties vcodecs((mlt_properties) consumer->get_data("vcodec"));
+ for (int i = 0; i < vcodecs.count(); ++i)
+ result << QString(vcodecs.get(i));
+ m_mltCheck.vcodecs_list->addItems(result);
+ KdenliveSettings::setVideocodecs(result);
+ result.clear();
+ Mlt::Properties acodecs((mlt_properties) consumer->get_data("acodec"));
+ for (int i = 0; i < acodecs.count(); ++i)
+ result << QString(acodecs.get(i));
+ m_mltCheck.acodecs_list->addItems(result);
+ KdenliveSettings::setAudiocodecs(result);
+ result.clear();
+ Mlt::Properties formats((mlt_properties) consumer->get_data("f"));
+ for (int i = 0; i < formats.count(); ++i)
+ result << QString(formats.get(i));
+ m_mltCheck.formats_list->addItems(result);
+ KdenliveSettings::setSupportedformats(result);
+ checkMissingCodecs();
+ delete consumer;