From 4274029010fe1c1f4f5a2d4d4b6981fbdb57f490 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Fri, 7 Sep 2012 16:01:01 +0200 Subject: [PATCH] Fix proxy and various other things when using libav instead of ffmpeg --- src/cliptranscode.cpp | 3 +- src/kdenlivesettings.kcfg | 10 +++++ src/kdenlivesettingsdialog.cpp | 2 + src/mainwindow.cpp | 2 +- src/projecttree/cutclipjob.cpp | 2 +- src/projecttree/proxyclipjob.cpp | 2 +- src/recmonitor.cpp | 6 +-- src/utils/archiveorg.cpp | 2 +- src/utils/freesound.cpp | 2 +- src/widgets/configenv_ui.ui | 73 +++++++++++++++++++++++--------- src/wizard.cpp | 17 ++++++-- 11 files changed, 89 insertions(+), 32 deletions(-) diff --git a/src/cliptranscode.cpp b/src/cliptranscode.cpp index 59701aea..42a3a6ca 100644 --- a/src/cliptranscode.cpp +++ b/src/cliptranscode.cpp @@ -19,6 +19,7 @@ #include "cliptranscode.h" +#include "kdenlivesettings.h" #include #include @@ -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); diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 7c68c51f..0a3bbaa5 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -243,6 +243,16 @@ + + + + + + + + + + 1 diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index 90216935..c50b354e 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -84,6 +84,8 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap& 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"); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ad1cf6e8..83761b64 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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 w = new Wizard(upgrade, this); diff --git a/src/projecttree/cutclipjob.cpp b/src/projecttree/cutclipjob.cpp index b13f5bae..7c633a2f 100644 --- a/src/projecttree/cutclipjob.cpp +++ b/src/projecttree/cutclipjob.cpp @@ -63,7 +63,7 @@ void CutClipJob::startJob() m_jobProcess = new QProcess; m_jobProcess->setProcessChannelMode(QProcess::MergedChannels); // kDebug()<<"// STARTING CUT JOB: "<start("ffmpeg", parameters); + m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters); m_jobProcess->waitForStarted(); while (m_jobProcess->state() != QProcess::NotRunning) { processLogInfo(); diff --git a/src/projecttree/proxyclipjob.cpp b/src/projecttree/proxyclipjob.cpp index 2c5a241b..c56c367a 100644 --- a/src/projecttree/proxyclipjob.cpp +++ b/src/projecttree/proxyclipjob.cpp @@ -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) { diff --git a/src/recmonitor.cpp b/src/recmonitor.cpp index aec7b365..d2e78941 100644 --- a/src/recmonitor.cpp +++ b/src/recmonitor.cpp @@ -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) diff --git a/src/utils/archiveorg.cpp b/src/utils/archiveorg.cpp index 7be89ab9..53e23822 100644 --- a/src/utils/archiveorg.cpp +++ b/src/utils/archiveorg.cpp @@ -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; } diff --git a/src/utils/freesound.cpp b/src/utils/freesound.cpp index c74054ff..6fc11dce 100644 --- a/src/utils/freesound.cpp +++ b/src/utils/freesound.cpp @@ -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; } diff --git a/src/widgets/configenv_ui.ui b/src/widgets/configenv_ui.ui index 41baee65..8fe30ae3 100644 --- a/src/widgets/configenv_ui.ui +++ b/src/widgets/configenv_ui.ui @@ -6,8 +6,8 @@ 0 0 - 297 - 244 + 367 + 318 @@ -34,34 +34,37 @@ MLT environment - - - - MLT profiles folder + + + + Qt::Vertical - + + + 20 + 40 + + + - - + + - + Melt path - - - - - + + - Processing threads + (>1 is experimental) - + @@ -74,13 +77,43 @@ - - + + - (>1 is experimental) + Processing threads + + + + + + + FFmpeg + + + + MLT profiles folder + + + + + + + + + + + + + FFplay + + + + + + diff --git a/src/wizard.cpp b/src/wizard.cpp index 9b451084..062f13dc 100644 --- a/src/wizard.cpp +++ b/src/wizard.cpp @@ -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")); -- 2.39.2