]> git.sesse.net Git - kdenlive/commitdiff
Add support for mlt parallel-consumer to clip and project monitors.
authorDan Dennedy <dan@dennedy.org>
Thu, 17 Feb 2011 06:43:22 +0000 (06:43 +0000)
committerDan Dennedy <dan@dennedy.org>
Thu, 17 Feb 2011 06:43:22 +0000 (06:43 +0000)
svn path=/trunk/kdenlive/; revision=5415

src/kdenlivesettings.kcfg
src/kdenlivesettingsdialog.cpp
src/renderer.cpp
src/widgets/configenv_ui.ui

index 9800a93f4df1ae6712eb48395f9653420a7b3db6..ce01fb029de4920c599ec097a01767c6395feedf 100644 (file)
       <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>
index 9bed2b3cc41c79f5a5604f2e1b1eb807fa9c8427..f0a3f6cbbf39bbfe0a9a4ef1dc3ee067a2c2db78 100644 (file)
@@ -34,6 +34,7 @@
 #include <QDir>
 #include <QTimer>
 #include <QTreeWidgetItem>
+#include <QThread>
 
 #include <stdlib.h>
 #include <stdio.h>
@@ -73,6 +74,7 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap<QString, QString>& map
     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);
index 9ddfd753a69540cc9545ca7c18f83bb52ef1bc37..48b25a29e8924d5cbb2d1bc1118f8db993834ca7 100644 (file)
@@ -205,6 +205,7 @@ void Render::buildConsumer(const QString profileName)
                 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;
@@ -262,6 +263,7 @@ void Render::buildConsumer(const QString profileName)
     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)
@@ -1376,8 +1378,8 @@ void Render::refresh()
 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);
index f00f5117f03601a8d1653bae1d52e6ab29e45c1c..b83442f6ae3966b261fcb81353c32c510a1eb36e 100644 (file)
@@ -6,8 +6,8 @@
    <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">
@@ -41,7 +41,7 @@
          </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>(&gt;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>