X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Frenderwidget.cpp;h=6a43e9291594a17ed89af766683e7fbacbfa89c6;hb=5d2a663632df09f4b04acf0aeb0406ea51c8543d;hp=7b0d5117c2370ff6a658183f1784057d972b4b80;hpb=0da74b31221622b53639fae1b31ffc5ddd61c009;p=kdenlive diff --git a/src/renderwidget.cpp b/src/renderwidget.cpp index 7b0d5117..6a43e929 100644 --- a/src/renderwidget.cpp +++ b/src/renderwidget.cpp @@ -43,6 +43,7 @@ #include #include #include +#include const int GroupRole = Qt::UserRole; const int ExtensionRole = GroupRole + 1; @@ -89,6 +90,10 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg m_view.proxy_render->setHidden(!enableProxy); + m_view.encoder_threads->setMaximum(QThread::idealThreadCount()); + m_view.encoder_threads->setValue(KdenliveSettings::encodethreads()); + connect(m_view.encoder_threads, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateEncodeThreads(int))); + m_view.rescale_keep->setChecked(KdenliveSettings::rescalekeepratio()); connect(m_view.rescale_width, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateRescaleWidth(int))); connect(m_view.rescale_height, SIGNAL(valueChanged(int)), this, SLOT(slotUpdateRescaleHeight(int))); @@ -158,6 +163,7 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg 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); m_view.buttonGenerateScript->setEnabled(false); @@ -167,6 +173,7 @@ RenderWidget::RenderWidget(const QString &projectfolder, bool enableProxy, QWidg m_view.create_chapter->setVisible(false); m_view.open_browser->setVisible(false); m_view.error_box->setVisible(false); + m_view.tc_type->setEnabled(false); m_view.splitter->setStretchFactor(1, 5); m_view.splitter->setStretchFactor(0, 2); @@ -707,7 +714,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const QStringList overlayargs; if (m_view.tc_overlay->isChecked()) { QString filterFile = KStandardDirs::locate("appdata", "metadata.properties"); - overlayargs << "meta.attr.timecode=1" << "meta.attr.timecode.markup=#timecode"; + overlayargs << "meta.attr.timecode=1" << "meta.attr.timecode.markup=#" + QString(m_view.tc_type->currentIndex() ? "frame" : "timecode"); overlayargs << "-attach" << "data_feed:attr_check" << "-attach"; overlayargs << "data_show:" + filterFile << "_loader=1" << "dynamic=1"; } @@ -755,6 +762,10 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const // disable audio if requested if (!exportAudio) renderArgs.append(" an=1 "); + // Set the thread counts + renderArgs.append(QString(" threads=%1").arg(KdenliveSettings::encodethreads())); + renderArgs.append(QString(" real_time=-%1").arg(KdenliveSettings::mltthreads())); + // Check if the rendering profile is different from project profile, // in which case we need to use the producer_comsumer from MLT QString std = renderArgs; @@ -780,7 +791,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const break; } } - + if (resizeProfile) render_process_args << "consumer:" + (scriptExport ? "$SOURCE" : playlistPath); else @@ -845,6 +856,7 @@ void RenderWidget::slotExport(bool scriptExport, int zoneIn, int zoneOut, const renderProps.insert("renderrescalewidth", QString::number(m_view.rescale_width->value())); renderProps.insert("renderrescaleheight", QString::number(m_view.rescale_height->value())); renderProps.insert("rendertcoverlay", QString::number(m_view.tc_overlay->isChecked())); + renderProps.insert("rendertctype", QString::number(m_view.tc_type->currentIndex())); renderProps.insert("renderratio", QString::number(m_view.rescale_keep->isChecked())); renderProps.insert("renderplay", QString::number(m_view.play_after->isChecked())); @@ -1230,7 +1242,7 @@ void RenderWidget::parseProfiles(QString meta, QString group, QString profile) // can also override profiles installed by KNewStuff fileList.removeAll("customprofiles.xml"); foreach(const QString &filename, fileList) - parseFile(exportFolder + filename, true); + parseFile(exportFolder + filename, true); if (QFile::exists(exportFolder + "customprofiles.xml")) parseFile(exportFolder + "customprofiles.xml", true); if (!meta.isEmpty()) { @@ -1743,6 +1755,7 @@ void RenderWidget::setRenderProfile(QMap props) if (props.contains("renderrescalewidth")) m_view.rescale_width->setValue(props.value("renderrescalewidth").toInt()); if (props.contains("renderrescaleheight")) m_view.rescale_height->setValue(props.value("renderrescaleheight").toInt()); if (props.contains("rendertcoverlay")) m_view.tc_overlay->setChecked(props.value("rendertcoverlay").toInt()); + if (props.contains("rendertctype")) m_view.tc_type->setCurrentIndex(props.value("rendertctype").toInt()); if (props.contains("renderratio")) m_view.rescale_keep->setChecked(props.value("renderratio").toInt()); if (props.contains("renderplay")) m_view.play_after->setChecked(props.value("renderplay").toInt()); @@ -1859,6 +1872,11 @@ void RenderWidget::missingClips(bool hasMissing) } else m_view.errorBox->setHidden(true); } +void RenderWidget::slotUpdateEncodeThreads(int val) +{ + KdenliveSettings::setEncodethreads(val); +} + void RenderWidget::slotUpdateRescaleWidth(int val) { KdenliveSettings::setDefaultrescalewidth(val);