]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Get rid of all blackmagic stuff, we now get infos directly from MLT, no more compile...
[kdenlive] / src / renderer.cpp
index 5352051857cd9d21b0c5eb550a76b63d22bd5860..13fb831f09aa90bdbce921cff816c71f4707cb28 100644 (file)
@@ -103,7 +103,7 @@ static void consumer_gl_frame_show(mlt_consumer, Render * self, mlt_frame frame_
     }
 }
 
-Render::Render(const QString & rendererName, int winid, QString profile, QWidget *parent) :
+Render::Render(Kdenlive::MONITORID rendererName, int winid, QString profile, QWidget *parent) :
     AbstractRender(rendererName, parent),
     m_name(rendererName),
     m_mltConsumer(NULL),
@@ -125,7 +125,7 @@ Render::Render(const QString & rendererName, int winid, QString profile, QWidget
     m_mltConsumer->connect(*m_mltProducer);
     m_mltProducer->set_speed(0.0);
     m_refreshTimer.setSingleShot(true);
-    m_refreshTimer.setInterval(50);
+    m_refreshTimer.setInterval(70);
     connect(&m_refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
 }
 
@@ -1578,11 +1578,6 @@ int Render::seekFramePosition() const
     return 0;
 }
 
-const QString & Render::rendererName() const
-{
-    return m_name;
-}
-
 void Render::emitFrameUpdated(Mlt::Frame& frame)
 {
     mlt_image_format format = mlt_image_rgb24a;
@@ -1598,7 +1593,7 @@ void Render::emitFrameUpdated(Mlt::Frame& frame)
     const uchar* image = frame.get_image(format, width, height);
     QImage qimage(width, height, QImage::Format_RGB888);
     memcpy(qimage.bits(), image, width * height * 3);*/
-    emit frameUpdated(qimage);
+    emit frameUpdated(qimage.rgbSwapped());
 }
 
 void Render::emitFrameNumber()
@@ -4218,5 +4213,42 @@ const QString Render::activeClipId()
     return QString();
 }
 
+//static 
+bool Render::getBlackMagicDeviceList(KComboBox *devicelist)
+{
+    Mlt::Profile profile;
+    Mlt::Producer bm(profile, "decklink");
+    int found_devices = 0;
+    if (bm.is_valid()) found_devices = bm.get_int("devices");
+    if (found_devices <= 0) {
+       devicelist->setEnabled(false);
+       return false;
+    }
+    for (int i = 0; i < found_devices; i++) {
+       char *tmp = qstrdup(QString("device.%1").arg(i).toUtf8().constData());
+       devicelist->addItem(bm.get(tmp));
+       delete[] tmp;
+    }
+    return true;
+}
+
+bool Render::getBlackMagicOutputDeviceList(KComboBox *devicelist)
+{
+    Mlt::Profile profile;
+    Mlt::Consumer bm(profile, "decklink");
+    int found_devices = 0;
+    if (bm.is_valid()) found_devices = bm.get_int("devices");
+    if (found_devices <= 0) {
+       devicelist->setEnabled(false);
+       return false;
+    }
+    for (int i = 0; i < found_devices; i++) {
+       char *tmp = qstrdup(QString("device.%1").arg(i).toUtf8().constData());
+       devicelist->addItem(bm.get(tmp));
+       delete[] tmp;
+    }
+    return true;
+}
+
 #include "renderer.moc"