[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kdenlive] src: Switch to rgb24 instead of rbg24a when requesting frames from MLT. Fixes: http://kde
From:       Jean-Baptiste Mardelle <jb () kdenlive ! org>
Date:       2013-02-24 17:21:51
Message-ID: 20130224172151.464A8A6091 () git ! kde ! org
[Download RAW message or body]

Git commit e692395e685251de32144abfdf85b6c57319c41b by Jean-Baptiste Mardelle.
Committed on 24/02/2013 at 18:20.
Pushed by mardelle into branch 'master'.

Switch to rgb24 instead of rbg24a when requesting frames from MLT. Fixes: \
http://kdenlive.org/mantis/view.php?id=2990

M  +5    -4    src/mltdevicecapture.cpp
M  +9    -9    src/renderer.cpp
M  +2    -2    src/videoglwidget.cpp
M  +1    -1    src/videoglwidget.h

http://commits.kde.org/kdenlive/e692395e685251de32144abfdf85b6c57319c41b

diff --git a/src/mltdevicecapture.cpp b/src/mltdevicecapture.cpp
index 6a23773..629ed51 100644
--- a/src/mltdevicecapture.cpp
+++ b/src/mltdevicecapture.cpp
@@ -252,13 +252,14 @@ void MltDeviceCapture::emitFrameUpdated(Mlt::Frame& frame)
     }
     */
 
-    mlt_image_format format = mlt_image_rgb24a;
+    mlt_image_format format = mlt_image_rgb24;
     int width = 0;
     int height = 0;
     const uchar* image = frame.get_image(format, width, height);
-    QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
-    memcpy(qimage.bits(), image, width * height * 4);
-    emit frameUpdated(qimage.rgbSwapped());
+    QImage qimage(width, height, QImage::Format_RGB888);
+    //QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
+    memcpy(qimage.bits(), image, width * height * 3);
+    emit frameUpdated(qimage);
 }
 
 void MltDeviceCapture::showFrame(Mlt::Frame& frame)
diff --git a/src/renderer.cpp b/src/renderer.cpp
index 983896d..512afae 100644
--- a/src/renderer.cpp
+++ b/src/renderer.cpp
@@ -223,7 +223,7 @@ void Render::buildConsumer(const QString &profileName)
     setenv("MLT_PROFILE", m_activeProfile.toUtf8().constData(), 1);
     m_mltProfile->set_explicit(true);
 
-    m_blackClip = new Mlt::Producer(*m_mltProfile, "colour", "black");
+    m_blackClip = new Mlt::Producer(*m_mltProfile, "colour:black");
     m_blackClip->set("id", "black");
     m_blackClip->set("mlt_type", "producer");
     if (KdenliveSettings::external_display() && m_name != Kdenlive::clipMonitor && \
m_winid != 0) { @@ -1797,13 +1797,13 @@ int Render::seekFramePosition() const
 
 void Render::emitFrameUpdated(Mlt::Frame& frame)
 {
-    mlt_image_format format = mlt_image_rgb24a;
+    mlt_image_format format = mlt_image_rgb24;
     int width = 0;
     int height = 0;
     const uchar* image = frame.get_image(format, width, height);
-    QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
-    memcpy(qimage.scanLine(0), image, width * height * 4);
-    emit frameUpdated(qimage.rgbSwapped());
+    QImage qimage(width, height, QImage::Format_RGB888);  \
//Format_ARGB32_Premultiplied); +    memcpy(qimage.scanLine(0), image, width * height \
* 3); +    emit frameUpdated(qimage);
 }
 
 int Render::getCurrentSeekPosition() const
@@ -1880,17 +1880,17 @@ void Render::showFrame(Mlt::Frame* frame)
     if (currentPos == requestedSeekPosition) requestedSeekPosition = SEEK_INACTIVE;
     emit rendererPosition(currentPos);
     if (frame->is_valid()) {
-	mlt_image_format format = mlt_image_rgb24a;
+	mlt_image_format format = mlt_image_rgb24;
 	int width = 0;
 	int height = 0;
 	const uchar* image = frame->get_image(format, width, height);
-	QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
-	memcpy(qimage.scanLine(0), image, width * height * 4);
+	QImage qimage(width, height, QImage::Format_RGB888); \
//Format_ARGB32_Premultiplied); +	memcpy(qimage.scanLine(0), image, width * height * \
3);  if (analyseAudio) showAudio(*frame);
 	delete frame;
 	emit showImageSignal(qimage);
 	if (sendFrameForAnalysis) {
-	    emit frameUpdated(qimage.rgbSwapped());
+	    emit frameUpdated(qimage);//.rgbSwapped());
 	}
     } else delete frame;
     showFrameSemaphore.release();
diff --git a/src/videoglwidget.cpp b/src/videoglwidget.cpp
index af6527a..c613feb 100644
--- a/src/videoglwidget.cpp
+++ b/src/videoglwidget.cpp
@@ -129,7 +129,7 @@ void VideoGLWidget::paintGL()
     }
 }
 
-void VideoGLWidget::showImage(QImage image)
+void VideoGLWidget::showImage(const QImage image)
 {
     m_image_width = image.width();
     m_image_height = image.height();
@@ -142,7 +142,7 @@ void VideoGLWidget::showImage(QImage image)
     glBindTexture(GL_TEXTURE_RECTANGLE_EXT, m_texture);
     glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     glTexParameterf(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-    glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA8, m_image_width, \
m_image_height, 0, GL_RGBA, +    glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA8, \
m_image_width, m_image_height, 0, GL_RGB,  GL_UNSIGNED_BYTE, image.bits());
     updateGL();
 }
diff --git a/src/videoglwidget.h b/src/videoglwidget.h
index 2d492d9..8601562 100644
--- a/src/videoglwidget.h
+++ b/src/videoglwidget.h
@@ -28,7 +28,7 @@ private:
     Qt::WindowFlags m_baseFlags;
 
 public slots:
-    void showImage(QImage image);
+    void showImage(const QImage image);
 
 protected:
     void initializeGL();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic