<default></default>
</entry>
+ <entry name="mltthreads" type="Int">
+ <label>Mlt processing thread count.</label>
+ <default>1</default>
+ </entry>
+
+ <entry name="encodethreads" type="Int">
+ <label>FFmpeg encoding thread count.</label>
+ <default>1</default>
+ </entry>
+
<entry name="currenttmpfolder" type="Path">
<label>Default folder for tmp files.</label>
<default>/tmp/</default>
#include <QDir>
#include <QTimer>
#include <QTreeWidgetItem>
+#include <QThread>
#include <stdlib.h>
#include <stdio.h>
m_configEnv.mltpathurl->setMode(KFile::Directory);
m_configEnv.mltpathurl->lineEdit()->setObjectName("kcfg_mltpath");
m_configEnv.rendererpathurl->lineEdit()->setObjectName("kcfg_rendererpath");
+ m_configEnv.kcfg_mltthreads->setMaximum(QThread::idealThreadCount());
m_configEnv.tmppathurl->setMode(KFile::Directory);
m_configEnv.tmppathurl->lineEdit()->setObjectName("kcfg_currenttmpfolder");
m_configEnv.projecturl->setMode(KFile::Directory);
m_mltConsumer->set("terminate_on_pause", 0);
m_mltConsumer->set("buffer", 12);
m_mltConsumer->set("deinterlace_method", "onefield");
+ m_mltConsumer->set("real_time", KdenliveSettings::mltthreads());
mlt_log_set_callback(kdenlive_callback);
}
if (m_mltConsumer && m_mltConsumer->is_valid()) return;
m_mltConsumer->set("progressive", 1);
m_mltConsumer->set("audio_buffer", 1024);
m_mltConsumer->set("frequency", 48000);
+ m_mltConsumer->set("real_time", KdenliveSettings::mltthreads());
}
Mlt::Producer *Render::invalidProducer(const QString &id)
void Render::setDropFrames(bool show)
{
if (m_mltConsumer) {
- int dropFrames = 1;
- if (show == false) dropFrames = 0;
+ int dropFrames = KdenliveSettings::mltthreads();
+ if (show == false) dropFrames = -dropFrames;
m_mltConsumer->stop();
if (m_winid == 0)
m_mltConsumer->set("real_time", dropFrames);
<rect>
<x>0</x>
<y>0</y>
- <width>337</width>
- <height>201</height>
+ <width>384</width>
+ <height>203</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout">
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="0" column="1" colspan="2">
<widget class="KUrlRequester" name="mltpathurl"/>
</item>
<item row="1" column="0">
</property>
</widget>
</item>
- <item row="1" column="1">
+ <item row="1" column="1" colspan="2">
<widget class="KUrlRequester" name="rendererpathurl"/>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</spacer>
</item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Processing threads</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="kcfg_mltthreads">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>(>1 is experimental)</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="tab_2">
<class>KUrlRequester</class>
<extends>QFrame</extends>
<header>kurlrequester.h</header>
+ <container>1</container>
</customwidget>
<customwidget>
<class>KPushButton</class>