From: Jean-Baptiste Mardelle Date: Mon, 6 Jun 2011 20:40:21 +0000 (+0000) Subject: Fix calculation of profiles frame rate, remove useless PAL/NTSC combobox X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=cb0c4e15d5609db5e9a43b2f29b153e992bfbd54;p=kdenlive Fix calculation of profiles frame rate, remove useless PAL/NTSC combobox svn path=/trunk/kdenlive/; revision=5674 --- diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index abab15dd..9fdd7eb8 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -67,7 +67,8 @@ const int FINISHEDJOB = 2; RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidget * parent) : QDialog(parent), m_projectFolder(projectfolder), - m_blockProcessing(false) + m_blockProcessing(false), + m_isPal(true) { m_view.setupUi(this); setWindowTitle(i18n("Rendering")); @@ -168,7 +169,6 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg connect(m_view.guide_end, SIGNAL(activated(int)), this, SLOT(slotCheckStartGuidePosition())); connect(m_view.guide_start, SIGNAL(activated(int)), this, SLOT(slotCheckEndGuidePosition())); - connect(m_view.format_selection, SIGNAL(activated(int)), this, SLOT(refreshView())); connect(m_view.tc_overlay, SIGNAL(toggled(bool)), m_view.tc_type, SLOT(setEnabled(bool))); m_view.buttonRender->setEnabled(false); @@ -220,9 +220,6 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg if (!interface || (!interface->isServiceRegistered("org.kde.ksmserver") && !interface->isServiceRegistered("org.gnome.SessionManager"))) m_view.shutdown->setEnabled(false); - // Hide the PAl / NTSC combobox since it's not working - m_view.label_3->setHidden(true); - m_view.format_selection->setHidden(true); focusFirstVisibleItem(); } @@ -984,9 +981,9 @@ void RenderWidget::setProfile(MltVideoProfile profile) m_profile = profile; //WARNING: this way to tell the video standard is a bit hackish... if (m_profile.description.contains("pal", Qt::CaseInsensitive) || m_profile.description.contains("25", Qt::CaseInsensitive) || m_profile.description.contains("50", Qt::CaseInsensitive)) - m_view.format_selection->setCurrentIndex(0); + m_isPal = true; else - m_view.format_selection->setCurrentIndex(1); + m_isPal = false; m_view.scanning_list->setCurrentIndex(0); m_view.rescale_width->setValue(KdenliveSettings::defaultrescalewidth()); if (!m_view.rescale_keep->isChecked()) { @@ -1087,8 +1084,8 @@ void RenderWidget::refreshView() if ((sizeItem->data(GroupRole).toString() == group || sizeItem->data(GroupRole).toString().isEmpty()) && sizeItem->data(MetaGroupRole).toString() == destination) { std = sizeItem->data(StandardRole).toString(); if (!std.isEmpty()) { - if (std.contains("PAL", Qt::CaseInsensitive) && m_view.format_selection->currentIndex() == 0) dupItem = sizeItem->clone(); - else if (std.contains("NTSC", Qt::CaseInsensitive) && m_view.format_selection->currentIndex() == 1) dupItem = sizeItem->clone(); + if (std.contains("PAL", Qt::CaseInsensitive) && m_isPal) dupItem = sizeItem->clone(); + else if (std.contains("NTSC", Qt::CaseInsensitive) && !m_isPal) dupItem = sizeItem->clone(); } else { dupItem = sizeItem->clone(); } @@ -1100,10 +1097,13 @@ void RenderWidget::refreshView() if (std.contains("profile=")) { QString profile = std.section("profile=", 1, 1).section(' ', 0, 0); MltVideoProfile p = ProfilesDialog::getVideoProfile(profile); - if (p.frame_rate_den > 0 && ((double) p.frame_rate_num / p.frame_rate_den != project_framerate)) { - dupItem->setToolTip(i18n("Frame rate not compatible with project profile")); - dupItem->setIcon(brokenIcon); - dupItem->setForeground(disabled); + if (p.frame_rate_den > 0) { + double profile_rate = (double) p.frame_rate_num / p.frame_rate_den; + if ((int) (1000.0 * profile_rate) != (int) (1000.0 * project_framerate)) { + dupItem->setToolTip(i18n("Frame rate (%1) not compatible with project profile (%2)", profile_rate, project_framerate)); + dupItem->setIcon(brokenIcon); + dupItem->setForeground(disabled); + } } } @@ -1194,6 +1194,7 @@ void RenderWidget::refreshParams() { // Format not available (e.g. codec not installed); Disable start button QListWidgetItem *item = m_view.size_list->currentItem(); + errorMessage(item->toolTip()); if (!item || item->isHidden()) { m_view.advanced_params->clear(); m_view.buttonRender->setEnabled(false); @@ -1927,6 +1928,19 @@ void RenderWidget::missingClips(bool hasMissing) } else m_view.errorBox->setHidden(true); } +void RenderWidget::errorMessage(const QString &message) +{ + if (!message.isEmpty()) { + m_view.errorLabel->setText(message); + m_view.errorBox->setHidden(false); + } + else { + m_view.errorBox->setHidden(true); + m_view.errorLabel->setText(QString()); + } +} + + void RenderWidget::slotUpdateEncodeThreads(int val) { KdenliveSettings::setEncodethreads(val); diff --git a/src/renderwidget.h b/src/renderwidget.h index 11e9e08e..a4259812 100644 --- a/src/renderwidget.h +++ b/src/renderwidget.h @@ -179,6 +179,7 @@ private: RenderViewDelegate *m_jobsDelegate; bool m_blockProcessing; QString m_renderer; + bool m_isPal; void parseProfiles(QString meta = QString(), QString group = QString(), QString profile = QString()); void parseFile(QString exportFile, bool editable); void updateButtons(); @@ -188,6 +189,7 @@ private: void saveProfile(QDomElement newprofile); QList m_renderItems; QList m_renderCategory; + void errorMessage(const QString &message); signals: void abortProcess(const QString &url); diff --git a/src/widgets/renderwidget_ui.ui b/src/widgets/renderwidget_ui.ui index 5f21dbd4..314f0c19 100644 --- a/src/widgets/renderwidget_ui.ui +++ b/src/widgets/renderwidget_ui.ui @@ -57,28 +57,7 @@ - - - - Format - - - - - - - - PAL - - - - - NTSC - - - - - + Qt::Horizontal