]> git.sesse.net Git - kdenlive/blobdiff - src/projecttree/proxyclipjob.cpp
Fix proxy of playlist aspect ratio broken on some locales
[kdenlive] / src / projecttree / proxyclipjob.cpp
index 2c5a241b515d0420e8546badcbe976df8d31fbd9..7ef2906f05acd8d9de293f976065701fc88de426 100644 (file)
@@ -29,7 +29,7 @@ ProxyJob::ProxyJob(CLIPTYPE cType, const QString &id, QStringList parameters) :
     m_jobDuration(0),
     m_isFfmpegJob(true)
 {
-    jobStatus = JOBWAITING;
+    m_jobStatus = JOBWAITING;
     description = i18n("proxy");
     m_dest = parameters.at(0);
     m_src = parameters.at(1);
@@ -64,8 +64,10 @@ void ProxyJob::startJob()
         mltParameters.append(QString("real_time=-%1").arg(KdenliveSettings::mltthreads()));
 
         //TODO: currently, when rendering an xml file through melt, the display ration is lost, so we enforce it manualy
-        double display_ratio = KdenliveDoc::getDisplayRatio(m_src);
-        mltParameters << "aspect=" + QString::number(display_ratio);
+        double display_ratio;
+       if (m_src.startsWith("consumer:")) display_ratio = KdenliveDoc::getDisplayRatio(m_src.section(":", 1));
+       else display_ratio = KdenliveDoc::getDisplayRatio(m_src);
+        mltParameters << "aspect=" + QLocale().toString(display_ratio);
             
         // Ask for progress reporting
         mltParameters << "progress=1";
@@ -140,12 +142,12 @@ void ProxyJob::startJob()
         parameters << m_dest;
         m_jobProcess = new QProcess;
         m_jobProcess->setProcessChannelMode(QProcess::MergedChannels);
-        m_jobProcess->start("ffmpeg", parameters, QIODevice::ReadOnly);
+        m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters, QIODevice::ReadOnly);
         m_jobProcess->waitForStarted();
     }
     while (m_jobProcess->state() != QProcess::NotRunning) {
         processLogInfo();
-        if (jobStatus == JOBABORTED) {
+        if (m_jobStatus == JOBABORTED) {
             emit cancelRunningJob(m_clipId, cancelProperties());
             m_jobProcess->close();
             m_jobProcess->waitForFinished();
@@ -154,7 +156,7 @@ void ProxyJob::startJob()
         m_jobProcess->waitForFinished(400);
     }
     
-    if (jobStatus != JOBABORTED) {
+    if (m_jobStatus != JOBABORTED) {
         int result = m_jobProcess->exitStatus();
         if (result == QProcess::NormalExit) {
             if (QFileInfo(m_dest).size() == 0) {
@@ -178,7 +180,7 @@ void ProxyJob::startJob()
 
 void ProxyJob::processLogInfo()
 {
-    if (!m_jobProcess || jobStatus == JOBABORTED) return;
+    if (!m_jobProcess || m_jobStatus == JOBABORTED) return;
     QString log = m_jobProcess->readAll();
     if (!log.isEmpty()) m_logDetails.append(log + '\n');
     else return;
@@ -205,7 +207,7 @@ void ProxyJob::processLogInfo()
     else {
         // Parse MLT output
         if (log.contains("percentage:")) {
-            progress = log.section(':', -1).simplified().toInt();
+            progress = log.section("percentage:", 1).simplified().section(' ', 0, 0).toInt();
             emit jobProgress(m_clipId, progress, jobType);
         }
     }
@@ -230,7 +232,7 @@ stringMap ProxyJob::cancelProperties()
 const QString ProxyJob::statusMessage()
 {
     QString statusInfo;
-    switch (jobStatus) {
+    switch (m_jobStatus) {
         case JOBWORKING:
             statusInfo = i18n("Creating proxy");
             break;