]> git.sesse.net Git - kdenlive/commitdiff
Fix proxy and various other things when using libav instead of ffmpeg
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Sep 2012 14:01:01 +0000 (16:01 +0200)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 7 Sep 2012 14:01:01 +0000 (16:01 +0200)
src/cliptranscode.cpp
src/kdenlivesettings.kcfg
src/kdenlivesettingsdialog.cpp
src/mainwindow.cpp
src/projecttree/cutclipjob.cpp
src/projecttree/proxyclipjob.cpp
src/recmonitor.cpp
src/utils/archiveorg.cpp
src/utils/freesound.cpp
src/widgets/configenv_ui.ui
src/wizard.cpp

index 59701aeafb0f0d5ae3ef9bf8d2940f4e298b2ff1..42a3a6ca5e2763c8e62b757dc33cf0aa7caaf630 100644 (file)
@@ -19,6 +19,7 @@
 
 
 #include "cliptranscode.h"
+#include "kdenlivesettings.h"
 
 #include <KDebug>
 #include <KGlobalSettings>
@@ -145,7 +146,7 @@ void ClipTranscode::slotStartTransCode()
     buttonBox->button(QDialogButtonBox::Abort)->setText(i18n("Abort"));
 
     m_destination = destination + extension;
-    m_transcodeProcess.start("ffmpeg", parameters);
+    m_transcodeProcess.start(KdenliveSettings::ffmpegpath(), parameters);
     source_url->setEnabled(false);
     dest_url->setEnabled(false);
     button_start->setEnabled(false);
index 7c68c51f04318883df3ee61fae9dc860f1af6237..0a3bbaa50e7fc3ff2427ae5aa8306f2824b61b0a 100644 (file)
       <default></default>
     </entry>
 
+    <entry name="ffmpegpath" type="Path">
+      <label>FFmpeg / Libav binary path.</label>
+      <default></default>
+    </entry>
+
+    <entry name="ffplaypath" type="Path">
+      <label>FFplay / avplay binary path.</label>
+      <default></default>
+    </entry>
+    
     <entry name="mltthreads" type="Int">
       <label>Mlt processing thread count.</label>
       <default>1</default>
index 90216935afc080e3bd3f6f7e1d258f8f6b88c702..c50b354e1090c6e73044c8d68d3a0336dbf03f92 100644 (file)
@@ -84,6 +84,8 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap<QString, QString>& map
     m_configEnv.mltpathurl->setMode(KFile::Directory);
     m_configEnv.mltpathurl->lineEdit()->setObjectName("kcfg_mltpath");
     m_configEnv.rendererpathurl->lineEdit()->setObjectName("kcfg_rendererpath");
+    m_configEnv.ffmpegurl->lineEdit()->setObjectName("kcfg_ffmpegpath");
+    m_configEnv.ffplayurl->lineEdit()->setObjectName("kcfg_ffplaypath");
     m_configEnv.kcfg_mltthreads->setMaximum( QThread::idealThreadCount() < 4 ? QThread::idealThreadCount() : 3 );
     m_configEnv.tmppathurl->setMode(KFile::Directory);
     m_configEnv.tmppathurl->lineEdit()->setObjectName("kcfg_currenttmpfolder");
index ad1cf6e886cf29a2fb428feefa8460e63e9820a7..83761b6433de53014394f0f76e2efc15ae80322d 100644 (file)
@@ -1829,7 +1829,7 @@ void MainWindow::readOptions()
         }
 
     }
-
+    if (KdenliveSettings::ffmpegpath().isEmpty() || KdenliveSettings::ffplaypath().isEmpty()) upgrade = true;
     if (!initialGroup.exists() || upgrade) {
         // this is our first run, show Wizard
         QPointer<Wizard> w = new Wizard(upgrade, this);
index b13f5bae3bbbbcea0f84c3c1420fd8cb97ee85b2..7c633a2f0766c18a8af0f8a15e83c5c6376c636d 100644 (file)
@@ -63,7 +63,7 @@ void CutClipJob::startJob()
         m_jobProcess = new QProcess;
         m_jobProcess->setProcessChannelMode(QProcess::MergedChannels);
         // kDebug()<<"// STARTING CUT JOB: "<<parameters;
-        m_jobProcess->start("ffmpeg", parameters);
+        m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters);
         m_jobProcess->waitForStarted();
         while (m_jobProcess->state() != QProcess::NotRunning) {
             processLogInfo();
index 2c5a241b515d0420e8546badcbe976df8d31fbd9..c56c367a47ecd1da5acb5d80fe29808e77c9f486 100644 (file)
@@ -140,7 +140,7 @@ 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) {
index aec7b365ed689486f113861704dbf250c383494d..d2e78941dbd737bf81e21c44971a476885f1b4c3 100644 (file)
@@ -540,7 +540,7 @@ void RecMonitor::slotStartPreview(bool play)
 
     if (device_selector->currentIndex() == FIREWIRE) {
         kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
-        m_displayProcess->start("ffplay", m_displayArgs);
+        m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
         //video_frame->setText(i18n("Initialising..."));
     } else {
         // do something when starting screen grab
@@ -734,7 +734,7 @@ void RecMonitor::slotRecord()
         if (device_selector->currentIndex() == FIREWIRE) {
             m_isCapturing = true;
             kDebug() << "Capture: Running ffplay " << m_displayArgs.join(" ");
-            m_displayProcess->start("ffplay", m_displayArgs);
+            m_displayProcess->start(KdenliveSettings::ffplaypath(), m_displayArgs);
             video_frame->setText(i18n("Initialising..."));
         }
     } else {
@@ -790,7 +790,7 @@ void RecMonitor::slotStartGrab(const QRect &rect) {
         alsaProcess->start("arecord", alsaArgs);
     }
     kDebug() << "Capture: Running ffmpeg " << m_captureArgs.join(" ");
-    captureProcess->start("ffmpeg", m_captureArgs);
+    captureProcess->start(KdenliveSettings::ffmpegpath(), m_captureArgs);
 }*/
 
 void RecMonitor::slotProcessStatus(QProcess::ProcessState status)
index 7be89ab9aebcfe3514085b0a5e64a97420b16845..53e238222574d507fd68ca9668114239621484e2 100644 (file)
@@ -194,7 +194,7 @@ bool ArchiveOrg::startItemPreview(QListWidgetItem *item)
     if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) {
         m_previewProcess->close();
     }
-    m_previewProcess->start("ffplay", QStringList() << url << "-nodisp");
+    m_previewProcess->start(KdenliveSettings::ffplaypath(), QStringList() << url << "-nodisp");
     return true;
 }
 
index c74054fff62d5231d08f16eb3aef81ad3e8d7899..6fc11dcea278918be34679dda71676314eec1cfb 100644 (file)
@@ -222,7 +222,7 @@ bool FreeSound::startItemPreview(QListWidgetItem *item)
     if (m_previewProcess && m_previewProcess->state() != QProcess::NotRunning) {
         m_previewProcess->close();
     }
-    m_previewProcess->start("ffplay", QStringList() << url << "-nodisp");
+    m_previewProcess->start(KdenliveSettings::ffplaypath(), QStringList() << url << "-nodisp");
     return true;
 }
 
index 41baee6572ed02d6af24a8618d886c3c78861513..8fe30ae3709975b3a0e7a6ee123555f3e594654e 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>297</width>
-    <height>244</height>
+    <width>367</width>
+    <height>318</height>
    </rect>
   </property>
   <layout class="QGridLayout" name="gridLayout">
        <string>MLT environment</string>
       </attribute>
       <layout class="QGridLayout" name="gridLayout_3">
-       <item row="0" column="0">
-        <widget class="QLabel" name="label">
-         <property name="text">
-          <string>MLT profiles folder</string>
+       <item row="5" column="1">
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
          </property>
-        </widget>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>40</height>
+          </size>
+         </property>
+        </spacer>
        </item>
-       <item row="0" column="1" colspan="3">
-        <widget class="KUrlRequester" name="mltpathurl"/>
+       <item row="3" column="1" colspan="3">
+        <widget class="KUrlRequester" name="rendererpathurl"/>
        </item>
-       <item row="1" column="0">
+       <item row="3" column="0">
         <widget class="QLabel" name="label_2">
          <property name="text">
           <string>Melt path</string>
          </property>
         </widget>
        </item>
-       <item row="1" column="1" colspan="3">
-        <widget class="KUrlRequester" name="rendererpathurl"/>
-       </item>
-       <item row="2" column="0">
-        <widget class="QLabel" name="label_6">
+       <item row="4" column="3">
+        <widget class="QLabel" name="label_7">
          <property name="text">
-          <string>Processing threads</string>
+          <string>(&gt;1 is experimental)</string>
          </property>
         </widget>
        </item>
-       <item row="2" column="1" colspan="2">
+       <item row="4" column="1" colspan="2">
         <widget class="QSpinBox" name="kcfg_mltthreads">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
          </property>
         </widget>
        </item>
-       <item row="2" column="3">
-        <widget class="QLabel" name="label_7">
+       <item row="4" column="0">
+        <widget class="QLabel" name="label_6">
          <property name="text">
-          <string>(&gt;1 is experimental)</string>
+          <string>Processing threads</string>
+         </property>
+        </widget>
+       </item>
+       <item row="0" column="0">
+        <widget class="QLabel" name="label_8">
+         <property name="text">
+          <string>FFmpeg</string>
          </property>
         </widget>
        </item>
+       <item row="2" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>MLT profiles folder</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" colspan="3">
+        <widget class="KUrlRequester" name="mltpathurl"/>
+       </item>
+       <item row="0" column="1" colspan="3">
+        <widget class="KUrlRequester" name="ffmpegurl"/>
+       </item>
+       <item row="1" column="0">
+        <widget class="QLabel" name="label_13">
+         <property name="text">
+          <string>FFplay</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="1" colspan="3">
+        <widget class="KUrlRequester" name="ffplayurl"/>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_2">
index 9b451084be3674ff744aeae5baaf9ffe05789e6a..062f13dc143e8ca2f5eaecb5f57de54a1dbea7bd 100644 (file)
@@ -415,9 +415,20 @@ void Wizard::slotCheckPrograms()
     item->setData(1, Qt::UserRole, i18n("Required for webcam capture"));
     item->setSizeHint(0, itemSize);
     QString exepath = KStandardDirs::findExe("ffmpeg");
-    if (exepath.isEmpty()) item->setIcon(0, m_badIcon);
-    else if (KStandardDirs::findExe("ffplay").isEmpty()) item->setIcon(0, m_badIcon);
-    else item->setIcon(0, m_okIcon);
+    QString playpath = KStandardDirs::findExe("ffplay");
+    item->setIcon(0, m_okIcon);
+    if (exepath.isEmpty()) {
+       // Check for libav version
+       exepath = KStandardDirs::findExe("avconv");
+       if (exepath.isEmpty()) item->setIcon(0, m_badIcon);
+    }
+    if (playpath.isEmpty()) {
+       // Check for libav version
+       playpath = KStandardDirs::findExe("avplay");
+       if (playpath.isEmpty()) item->setIcon(0, m_badIcon);
+    }
+    if (!exepath.isEmpty()) KdenliveSettings::setFfmpegpath(exepath);
+    if (!playpath.isEmpty()) KdenliveSettings::setFfplaypath(playpath);
 
 #ifndef Q_WS_MAC
     item = new QTreeWidgetItem(m_check.programList, QStringList() << QString() << i18n("recordmydesktop"));