]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Implement deinterlacer and rescale options for MLT consumer
[kdenlive] / src / renderer.cpp
index 512afae1c6b29923b57314528874e326bcea2543..816d19ae42f5276931bc04393b07b8f0af499bf2 100644 (file)
@@ -239,8 +239,8 @@ void Render::buildConsumer(const QString &profileName)
             if (m_mltConsumer->is_valid()) {
                externalConsumer = true;
                 m_mltConsumer->set("terminate_on_pause", 0);
-                m_mltConsumer->set("deinterlace_method", "onefield");
-               m_mltConsumer->set("rescale", "nearest");
+                m_mltConsumer->set("deinterlace_method", KdenliveSettings::mltdeinterlacer().toUtf8().constData());
+               m_mltConsumer->set("rescale", KdenliveSettings::mltinterpolation().toUtf8().constData());
                m_mltConsumer->set("buffer", "1");
                 m_mltConsumer->set("real_time", KdenliveSettings::mltthreads());
             }
@@ -274,7 +274,7 @@ void Render::buildConsumer(const QString &profileName)
                    // Set defaults for decklink consumer
                    if (m_mltConsumer) {
                        m_mltConsumer->set("terminate_on_pause", 0);
-                       m_mltConsumer->set("deinterlace_method", "onefield");
+                       m_mltConsumer->set("deinterlace_method", KdenliveSettings::mltdeinterlacer().toUtf8().constData());
                        externalConsumer = true;
                    }
                }
@@ -300,7 +300,7 @@ void Render::buildConsumer(const QString &profileName)
     }
     //m_mltConsumer->set("resize", 1);
     m_mltConsumer->set("window_background", KdenliveSettings::window_background().name().toUtf8().constData());
-    m_mltConsumer->set("rescale", "nearest");
+    m_mltConsumer->set("rescale", KdenliveSettings::mltinterpolation().toUtf8().constData());
     mlt_log_set_callback(kdenlive_callback);
 
     QString audioDevice = KdenliveSettings::audiodevicename();
@@ -1757,11 +1757,7 @@ void Render::setDropFrames(bool show)
         int dropFrames = KdenliveSettings::mltthreads();
         if (show == false) dropFrames = -dropFrames;
         m_mltConsumer->stop();
-        if (m_winid == 0)
-            m_mltConsumer->set("real_time", dropFrames);
-        else
-            m_mltConsumer->set("play.real_time", dropFrames);
-
+        m_mltConsumer->set("real_time", dropFrames);
         if (m_mltConsumer->start() == -1) {
             kDebug(QtWarningMsg) << "ERROR, Cannot start monitor";
         }
@@ -1769,6 +1765,19 @@ void Render::setDropFrames(bool show)
     }
 }
 
+void Render::setConsumerProperty(const QString &name, const QString &value)
+{
+    QMutexLocker locker(&m_mutex);
+    if (m_mltConsumer) {
+        m_mltConsumer->stop();
+        m_mltConsumer->set(name.toUtf8().constData(), value.toUtf8().constData());
+        if (m_isActive && m_mltConsumer->start() == -1) {
+            kDebug(QtWarningMsg) << "ERROR, Cannot start monitor";
+        }
+
+    }
+}
+
 bool Render::isPlaying() const
 {
     if (!m_mltConsumer || m_mltConsumer->is_stopped()) return false;