]> git.sesse.net Git - kdenlive/blobdiff - renderer/kdenlive_render.cpp
fix bug when no vpre= is set
[kdenlive] / renderer / kdenlive_render.cpp
index d84f11b3922dfabb6b05f165e5b3d5ddbabc0499..4c25a213c9020d3a5c029518b413bdd072cf6714 100644 (file)
@@ -21,6 +21,7 @@
 #include <QCoreApplication>
 #include <QStringList>
 #include <QString>
+#include <QUrl>
 #include <QtDebug>
 
 #include "renderjob.h"
@@ -32,45 +33,43 @@ int main(int argc, char **argv)
     QStringList preargs;
     int in = -1;
     int out = -1;
-    if (!args.isEmpty()) args.takeFirst();
-    if (args.count() >= 4) {
+    if (args.count() >= 7) {
+        // Remove program name
+        args.removeFirst();
+
         bool erase = false;
         if (args.at(0) == "-erase") {
             erase = true;
-            args.takeFirst();
+            args.removeFirst();
         }
         bool usekuiserver = false;
         if (args.at(0) == "-kuiserver") {
             usekuiserver = true;
-            args.takeFirst();
-        }
-        if (args.at(0).startsWith("in=")) {
-            in = args.at(0).section('=', -1).toInt();
-            args.takeFirst();
-        }
-        if (args.at(0).startsWith("out=")) {
-            out = args.at(0).section('=', -1).toInt();
-            args.takeFirst();
+            args.removeFirst();
         }
-        if (args.at(0).startsWith("preargs=")) {
-            QString a = args.at(0).section('=', 1);
-            preargs = a.split(' ', QString::SkipEmptyParts);
-            args.takeFirst();
-        }
-        QString render = args.at(0);
-        args.takeFirst();
-        QString profile = args.at(0);
-        args.takeFirst();
-        QString rendermodule = args.at(0);
-        args.takeFirst();
-        QString player = args.at(0);
-        args.takeFirst();
-        QString src = args.at(0);
-        args.takeFirst();
-        QString dest = args.at(0);
-        args.takeFirst();
+        if (args.at(0).startsWith("in="))
+            in = args.takeFirst().section('=', -1).toInt();
+        if (args.at(0).startsWith("out="))
+            out = args.takeFirst().section('=', -1).toInt();
+        if (args.at(0).startsWith("preargs="))
+            preargs = args.takeFirst().section('=', 1).split(' ', QString::SkipEmptyParts);
+
+        QString render = args.takeFirst();
+        QString profile = args.takeFirst();
+        QString rendermodule = args.takeFirst();
+        QString player = args.takeFirst();
+        QString src = 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;
@@ -81,6 +80,9 @@ int main(int argc, char **argv)
         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");
             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()));