]> git.sesse.net Git - kdenlive/blobdiff - renderer/kdenlive_render.cpp
Refactor representation of 2pass in profiles.
[kdenlive] / renderer / kdenlive_render.cpp
index a577e2069d89dd8bd564d1f71c586e1da59d2348..216aac0c3a870ad0148895bfacf7e61986b2b193 100644 (file)
@@ -21,6 +21,7 @@
 #include <QCoreApplication>
 #include <QStringList>
 #include <QString>
+#include <QUrl>
 #include <QtDebug>
 
 #include "renderjob.h"
@@ -35,7 +36,7 @@ int main(int argc, char **argv)
     if (args.count() >= 7) {
         // Remove program name
         args.removeFirst();
-        
+
         bool erase = false;
         if (args.at(0) == "-erase") {
             erase = true;
@@ -58,19 +59,37 @@ int main(int argc, char **argv)
         QString rendermodule = args.takeFirst();
         QString player = args.takeFirst();
         QString src = args.takeFirst();
-        QString dest = args.takeFirst();
+        QUrl desturl = QUrl::fromEncoded(args.takeFirst().toUtf8());
+        QString dest = desturl.path();
         bool dualpass = false;
         bool doerase;
+        QString vpre;
+
+        int vprepos = args.indexOf(QRegExp("vpre=.*"));
+        if (vprepos >= 0) {
+            vpre=args.at(vprepos);
+        }
+        QStringList vprelist = vpre.replace("vpre=", "").split(",");
+        if (vprelist.size() > 0) {
+            args.replaceInStrings(QRegExp("^vpre=.*"), QString("vpre=").append(vprelist.at(0)));
+        }
+
         if (args.contains("pass=2")) {
             // dual pass encoding
             dualpass = true;
             doerase = false;
             args.replace(args.indexOf("pass=2"), "pass=1");
-        } else doerase = erase;
+        } else {
+            args.removeAll("pass=1");
+            doerase = erase;
+        }
+
         qDebug() << "//STARTING RENDERING: " << erase << "," << usekuiserver << "," << render << "," << profile << "," << rendermodule << "," << player << "," << src << "," << dest << "," << preargs << "," << args << "," << in << "," << out ;
         RenderJob *job = new RenderJob(doerase, usekuiserver, render, profile, rendermodule, player, src, dest, preargs, args, in, out);
         job->start();
         if (dualpass) {
+            if (vprelist.size()>1)
+                args.replaceInStrings(QRegExp("^vpre=.*"),QString("vpre=").append(vprelist.at(1)));
             args.replace(args.indexOf("pass=1"), "pass=2");
             RenderJob *dualjob = new RenderJob(erase, usekuiserver, render, profile, rendermodule, player, src, dest, preargs, args, in, out);
             QObject::connect(job, SIGNAL(renderingFinished()), dualjob, SLOT(start()));