From: Jean-Baptiste Mardelle Date: Sat, 19 Nov 2011 20:11:59 +0000 (+0100) Subject: Inform user when no render profile is available (usually because frame rate not matching) X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=91792a57eb3511443f5ec585dbfb0af9775e45df;p=kdenlive Inform user when no render profile is available (usually because frame rate not matching) --- diff --git a/src/definitions.h b/src/definitions.h index 1a3a2557..f37a3633 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -97,6 +97,22 @@ struct MltVideoProfile { int display_aspect_num; int display_aspect_den; int colorspace; + bool operator==(const MltVideoProfile& point) const + { + if (!description.isEmpty() && point.description == description) return true; + return point.frame_rate_num == frame_rate_num && + point.frame_rate_den == frame_rate_den && + point.width == width && + point.height == height && + point.progressive == progressive && + point.sample_aspect_num == sample_aspect_num && + point.sample_aspect_den == sample_aspect_den && + point.display_aspect_den == display_aspect_den && + point.colorspace == colorspace; + } + bool operator!=(const MltVideoProfile &other) const { + return !(*this == other); + } }; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e073b9d4..e01b5e25 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2351,7 +2351,9 @@ void MainWindow::slotRenderProject() { if (!m_renderWidget) { QString projectfolder = m_activeDocument ? m_activeDocument->projectFolder().path(KUrl::AddTrailingSlash) : KdenliveSettings::defaultprojectfolder(); - m_renderWidget = new RenderWidget(projectfolder, m_projectList->useProxy(), this); + MltVideoProfile profile; + if (m_activeDocument) profile = m_activeDocument->mltProfile(); + m_renderWidget = new RenderWidget(projectfolder, m_projectList->useProxy(), profile, this); connect(m_renderWidget, SIGNAL(shutdown()), this, SLOT(slotShutdown())); connect(m_renderWidget, SIGNAL(selectedRenderProfile(QMap )), this, SLOT(slotSetDocumentRenderProfile(QMap ))); connect(m_renderWidget, SIGNAL(prepareRenderingData(bool, bool, const QString&)), this, SLOT(slotPrepareRendering(bool, bool, const QString&))); diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index 121a1d8b..24132878 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -66,9 +66,10 @@ const int RUNNINGJOB = 1; const int FINISHEDJOB = 2; -RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidget * parent) : +RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, MltVideoProfile profile, QWidget * parent) : QDialog(parent), m_projectFolder(projectfolder), + m_profile(profile), m_blockProcessing(false) { m_view.setupUi(this); @@ -1057,7 +1058,6 @@ int RenderWidget::waitingJobsCount() const void RenderWidget::setProfile(MltVideoProfile profile) { - m_profile = profile; m_view.scanning_list->setCurrentIndex(0); m_view.rescale_width->setValue(KdenliveSettings::defaultrescalewidth()); if (!m_view.rescale_keep->isChecked()) { @@ -1065,7 +1065,10 @@ void RenderWidget::setProfile(MltVideoProfile profile) m_view.rescale_height->setValue(KdenliveSettings::defaultrescaleheight()); m_view.rescale_height->blockSignals(false); } - refreshView(); + if (m_profile != profile) { + m_profile = profile; + refreshView(); + } } void RenderWidget::refreshCategory() @@ -1244,10 +1247,14 @@ void RenderWidget::refreshView() m_view.size_list->setVisible(m_view.size_list->count() > 1 || m_view.format_list->count() <= 1); m_view.size_list->blockSignals(false); m_view.format_list->blockSignals(false); - if (m_view.size_list->count() > 0) + if (m_view.size_list->count() > 0) { refreshParams(); - else + } + else { + // No matching profile + errorMessage(i18n("No matching profile")); m_view.advanced_params->clear(); + } } KUrl RenderWidget::filenameWithExtension(KUrl url, QString extension) @@ -1278,6 +1285,7 @@ void RenderWidget::refreshParams() // Format not available (e.g. codec not installed); Disable start button QListWidgetItem *item = m_view.size_list->currentItem(); if (!item || item->isHidden()) { + if (!item) errorMessage(i18n("No matching profile")); m_view.advanced_params->clear(); m_view.buttonRender->setEnabled(false); m_view.buttonGenerateScript->setEnabled(false); diff --git a/src/renderwidget.h b/src/renderwidget.h index b6137b18..c43cf62e 100644 --- a/src/renderwidget.h +++ b/src/renderwidget.h @@ -114,7 +114,7 @@ class RenderWidget : public QDialog Q_OBJECT public: - explicit RenderWidget(const QString &projectfolder, bool enableProxy, QWidget * parent = 0); + explicit RenderWidget(const QString &projectfolder, bool enableProxy, MltVideoProfile profile, QWidget * parent = 0); virtual ~RenderWidget(); void setGuides(QDomElement guidesxml, double duration); void focusFirstVisibleItem();