]> git.sesse.net Git - kdenlive/blobdiff - src/initeffects.cpp
Remove (old) LADSPA related code.
[kdenlive] / src / initeffects.cpp
index 1c995ad25cd7ec124e9309d63ddd76b8131f42d2..36d060815467db3546a9922f5e4cc1ff71924930 100644 (file)
@@ -97,7 +97,7 @@ void initEffects::refreshLumas()
         QDomElement e = params.item(i).toElement();
         if (e.attribute("tag") == "resource") {
             e.setAttribute("paramlistdisplay", imagenamelist.join(","));
-            e.setAttribute("paramlist", imagefiles.join(","));
+            e.setAttribute("paramlist", imagefiles.join(";"));
             break;
         }
     }
@@ -108,7 +108,7 @@ void initEffects::refreshLumas()
         QDomElement e = params.item(i).toElement();
         if (e.attribute("tag") == "luma") {
             e.setAttribute("paramlistdisplay", imagenamelist.join(","));
-            e.setAttribute("paramlist", imagefiles.join(","));
+            e.setAttribute("paramlist", imagefiles.join(";"));
             break;
         }
     }
@@ -185,17 +185,6 @@ Mlt::Repository *initEffects::parseEffectFiles()
     // Fill transitions list.
     fillTransitionsList(repository, &MainWindow::transitions, transitionsItemList);
 
-    //WARNING: deprecated, we now use MLT to detect LADSPA filters
-    /*
-    // Set the directories to look into for ladspa plugins.
-    KGlobal::dirs()->addResourceType("ladspa_plugin", 0, "lib/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/lib/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/local/lib/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/opt/lib/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/opt/local/lib/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/lib64/ladspa");
-    KGlobal::dirs()->addResourceDir("ladspa_plugin", "/usr/local/lib64/ladspa");*/
-
     // Remove blacklisted effects from the filters list.
     QStringList mltFiltersList = filtersList;
     QFile file2(KStandardDirs::locate("appdata", "blacklisted_effects.txt"));
@@ -355,17 +344,24 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, EffectsList *au
         kDebug() << "Effect broken: " << name;
         return;
     }
-
+    QLocale locale;
+    bool needsLocaleConversion = false;
     for (int i = 0; !effects.item(i).isNull(); ++i) {
         documentElement = effects.item(i).toElement();
         QString tag = documentElement.attribute("tag", QString());
-
+        if (documentElement.hasAttribute("LC_NUMERIC")) {
+            // set a locale for that file
+            locale = QLocale(documentElement.attribute("LC_NUMERIC"));
+            if (locale.decimalPoint() != QLocale().decimalPoint()) {
+                needsLocaleConversion = true;
+            }
+        }
         if (documentElement.hasAttribute("version")) {
             // a specific version of the filter is required
             Mlt::Properties *metadata = repository->metadata(filter_type, tag.toUtf8().data());
             if (metadata && metadata->is_valid()) {
                 double version = metadata->get_double("version");
-                if (documentElement.attribute("version").toDouble() > version) {
+                if (locale.toDouble(documentElement.attribute("version")) > version) {
                     delete metadata;
                     return;
                 }
@@ -373,6 +369,26 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, EffectsList *au
             delete metadata;
         }
 
+        if (needsLocaleConversion) {
+            // we need to convert all numbers to the system's locale (for example 0.5 -> 0,5)
+            QChar separator = QLocale().decimalPoint();
+            QChar oldSeparator = locale.decimalPoint();
+            QDomNodeList params = documentElement.elementsByTagName("parameter");
+            for (int j = 0; j < params.count(); j++) {
+                QDomNamedNodeMap attrs = params.at(j).attributes();
+                for (int k = 0; k < attrs.count(); k++) {
+                    QString name = attrs.item(k).nodeName();
+                    if (name != "type" && name != "name") {
+                            QString val = attrs.item(k).nodeValue();
+                            if (val.contains(oldSeparator)) {
+                                QString newVal = val.replace(oldSeparator, separator);
+                                attrs.item(k).setNodeValue(newVal);
+                            }
+                    }
+                }
+            }
+        }
+
         // Parse effect information.
         if ((filtersList.contains(tag) || producersList.contains(tag))) {
             QString type = documentElement.attribute("type", QString());
@@ -456,140 +472,6 @@ void initEffects::parseEffectFile(EffectsList *customEffectList, EffectsList *au
     }
 }
 
-//static
-const char* initEffects::ladspaEffectString(int ladspaId, QStringList params)
-{
-    if (ladspaId == 1433)  //Pitch
-        return ladspaPitchEffectString(params);
-    else if (ladspaId == 1216)  //Room Reverb
-        return ladspaRoomReverbEffectString(params);
-    else if (ladspaId == 1423)  //Reverb
-        return ladspaReverbEffectString(params);
-    else if (ladspaId == 1901)  //Reverb
-        return ladspaEqualizerEffectString(params);
-    else {
-        kDebug() << "++++++++++  ASKING FOR UNKNOWN LADSPA EFFECT: " << ladspaId << endl;
-        return "<jackrack></jackrack>";
-    }
-}
-
-//static
-void initEffects::ladspaEffectFile(const QString & fname, int ladspaId, QStringList params)
-{
-    const char *filterString;
-    switch (ladspaId) {
-    case 1433: //Pitch
-        filterString = ladspaPitchEffectString(params);
-        break;
-    case 1905: //Vinyl
-        filterString = ladspaVinylEffectString(params);
-        break;
-    case 1216 : //Room Reverb
-        filterString = ladspaRoomReverbEffectString(params);
-        break;
-    case 1423: //Reverb
-        filterString = ladspaReverbEffectString(params);
-        break;
-    case 1195: //Declipper
-        filterString = ladspaDeclipEffectString(params);
-        break;
-    case 1901:  //Reverb
-        filterString = ladspaEqualizerEffectString(params);
-        break;
-    case 1913: // Limiter
-        filterString = ladspaLimiterEffectString(params);
-        break;
-    case 1193: // Pitch Shifter
-        filterString = ladspaPitchShifterEffectString(params);
-        break;
-    case 1417: // Rate Scaler
-        filterString = ladspaRateScalerEffectString(params);
-        break;
-    case 1217: // Phaser
-        filterString = ladspaPhaserEffectString(params);
-        break;
-    case 1197: // 15 Band Equalizer
-        filterString = ladspaEqualizer15EffectString(params);
-        break;
-    default:
-        kDebug() << "++++++++++  ASKING FOR UNKNOWN LADSPA EFFECT: " << ladspaId << endl;
-        return;
-        break;
-    }
-
-    QFile f(fname);
-    if (f.open(QIODevice::WriteOnly)) {
-        QTextStream stream(&f);
-        stream << filterString;
-        f.close();
-    } else kDebug() << "++++++++++  ERROR CANNOT WRITE TO: " << KdenliveSettings::currenttmpfolder() +  fname << endl;
-    delete [] filterString;
-}
-
-const QString jackString = "<?xml version=\"1.0\"?><!DOCTYPE jackrack SYSTEM \"http://purge.bash.sh/~rah/jack_rack_1.2.dtd\"><jackrack><channels>2</channels><samplerate>48000</samplerate><plugin><id>";
-
-
-const char* initEffects::ladspaDeclipEffectString(QStringList)
-{
-    return qstrdup(QString(jackString + "1195</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall></plugin></jackrack>").toUtf8());
-}
-
-/*
-const char* initEffects::ladspaVocoderEffectString(QStringList params)
-{
- return qstrdup( QString(jackString + "1441</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>0.000000</value><value>0.000000</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]));
-}*/
-
-const char* initEffects::ladspaVinylEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1905</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow><controlrow><value>%3</value></controlrow><controlrow><value>%4</value></controlrow><controlrow><value>%5</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]).arg(params[4]).toUtf8());
-}
-
-const char* initEffects::ladspaPitchEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1433</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.0</value><value>1.0</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>4.000000</value><value>4.000000</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8());
-}
-
-const char* initEffects::ladspaRoomReverbEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1216</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>0.750000</value><value>0.750000</value></controlrow><controlrow><lock>true</lock><value>-70.000000</value><value>-70.000000</value></controlrow><controlrow><lock>true</lock><value>0.000000</value><value>0.000000</value></controlrow><controlrow><lock>true</lock><value>-17.500000</value><value>-17.500000</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8());
-}
-
-const char* initEffects::ladspaReverbEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1423</id><enabled>true</enabled>  <wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked>    <wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values>    <lockall>true</lockall><controlrow><lock>true</lock><value>%1</value>      <value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>0.250000</value><value>0.250000</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).toUtf8());
-}
-
-const char* initEffects::ladspaEqualizerEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1901</id><enabled>true</enabled>    <wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked>    <wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow>    <controlrow><value>%3</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8());
-}
-
-const char* initEffects::ladspaLimiterEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1913</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><controlrow><value>%1</value></controlrow><controlrow><value>%2</value></controlrow><controlrow><value>%3</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).toUtf8());
-}
-
-const char* initEffects::ladspaPitchShifterEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1193</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8());
-}
-
-const char* initEffects::ladspaRateScalerEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1417</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow></plugin></jackrack>").arg(params[0]).toUtf8());
-}
-
-const char* initEffects::ladspaPhaserEffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1217</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]).toUtf8());
-}
-const char* initEffects::ladspaEqualizer15EffectString(QStringList params)
-{
-    return qstrdup(QString(jackString + "1197</id><enabled>true</enabled><wet_dry_enabled>false</wet_dry_enabled><wet_dry_locked>true</wet_dry_locked><wet_dry_values><value>1.000000</value><value>1.000000</value></wet_dry_values><lockall>true</lockall><controlrow><lock>true</lock><value>%1</value><value>%1</value></controlrow><controlrow><lock>true</lock><value>%2</value><value>%2</value></controlrow><controlrow><lock>true</lock><value>%3</value><value>%3</value></controlrow><controlrow><lock>true</lock><value>%4</value><value>%4</value></controlrow><controlrow><lock>true</lock><value>%5</value><value>%5</value></controlrow><controlrow><lock>true</lock><value>%6</value><value>%6</value></controlrow><controlrow><lock>true</lock><value>%7</value><value>%7</value></controlrow><controlrow><lock>true</lock><value>%8</value><value>%8</value></controlrow><controlrow><lock>true</lock><value>%9</value><value>%9</value></controlrow><controlrow><lock>true</lock><value>%10</value><value>%10</value></controlrow><controlrow><lock>true</lock><value>%11</value><value>%11</value></controlrow><controlrow><lock>true</lock><value>%12</value><value>%12</value></controlrow><controlrow><lock>true</lock><value>%13</value><value>%13</value></controlrow><controlrow><lock>true</lock><value>%14</value><value>%14</value></controlrow><controlrow><lock>true</lock><value>%15</value><value>%15</value></controlrow></plugin></jackrack>").arg(params[0]).arg(params[1]).arg(params[2]).arg(params[3]).arg(params[4]).arg(params[5]).arg(params[6]).arg(params[7]).arg(params[8]).arg(params[9]).arg(params[10]).arg(params[11]).arg(params[12]).arg(params[13]).arg(params[14]).toUtf8());
-}
-
-
 QDomDocument initEffects::createDescriptionFromMlt(Mlt::Repository* repository, const QString& /*type*/, const QString& filtername)
 {
 
@@ -783,7 +665,7 @@ void initEffects::fillTransitionsList(Mlt::Repository *repository, EffectsList *
 
                 paramList.append(quickParameterFill(ret, i18n("Softness"), "softness", "double", "0", "0", "100", "", "", "100"));
                 paramList.append(quickParameterFill(ret, i18nc("@property: means that the image is inverted", "Invert"), "invert", "bool", "0", "0", "1"));
-                paramList.append(quickParameterFill(ret, i18n("Image File"), "resource", "list", "", "", "", imagefiles.join(","), imagenamelist.join(",")));
+                paramList.append(quickParameterFill(ret, i18n("Image File"), "resource", "list", "", "", "", imagefiles.join(";"), imagenamelist.join(",")));
                 paramList.append(quickParameterFill(ret, i18n("Reverse Transition"), "reverse", "bool", "0", "0", "1"));
                 //thumbnailer.prepareThumbnailsCall(imagelist);
             } else if (name == "composite") {
@@ -795,7 +677,7 @@ void initEffects::fillTransitionsList(Mlt::Repository *repository, EffectsList *
                 paramList.append(quickParameterFill(ret, i18n("Align"), "aligned", "bool", "1", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Fill"), "fill", "bool", "1", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Distort"), "distort", "bool", "0", "0", "1"));
-                paramList.append(quickParameterFill(ret, i18n("Wipe File"), "luma", "list", "", "", "", imagefiles.join(","), imagenamelist.join(",")));
+                paramList.append(quickParameterFill(ret, i18n("Wipe File"), "luma", "list", "", "", "", imagefiles.join(";"), imagenamelist.join(",")));
                 paramList.append(quickParameterFill(ret, i18n("Wipe Softness"), "softness", "double", "0", "0", "100", "", "", "100"));
                 paramList.append(quickParameterFill(ret, i18n("Wipe Invert"), "luma_invert", "bool", "0", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Force Progressive Rendering"), "progressive", "bool", "1", "0", "1"));
@@ -840,7 +722,7 @@ void initEffects::fillTransitionsList(Mlt::Repository *repository, EffectsList *
                 paramList.append(quickParameterFill(ret, i18n("Align"), "composite.aligned", "bool", "1", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Fill"), "composite.fill", "bool", "1", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Distort"), "composite.distort", "bool", "0", "0", "1"));
-                paramList.append(quickParameterFill(ret, i18n("Wipe File"), "composite.luma", "list", "", "", "", imagefiles.join(","), imagenamelist.join(",")));
+                paramList.append(quickParameterFill(ret, i18n("Wipe File"), "composite.luma", "list", "", "", "", imagefiles.join(";"), imagenamelist.join(",")));
                 paramList.append(quickParameterFill(ret, i18n("Wipe Softness"), "composite.softness", "double", "0", "0", "100", "", "", "100"));
                 paramList.append(quickParameterFill(ret, i18n("Wipe Invert"), "composite.luma_invert", "bool", "0", "0", "1"));
                 paramList.append(quickParameterFill(ret, i18n("Force Progressive Rendering"), "composite.progressive", "bool", "1", "0", "1"));