From 364ffb4fd677081e1d0c0a7b236fe36de4111422 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Mardelle Date: Mon, 26 Jul 2010 20:27:23 +0000 Subject: [PATCH] Check that MLT sends correctly sized thumbnails: http://www.kdenlive.org/mantis/view.php?id=1687 svn path=/trunk/kdenlive/; revision=4650 --- src/kthumb.cpp | 13 +++++++++---- src/renderer.cpp | 8 ++++++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/kthumb.cpp b/src/kthumb.cpp index c8971af4..e67425d2 100644 --- a/src/kthumb.cpp +++ b/src/kthumb.cpp @@ -259,14 +259,19 @@ QImage KThumb::getFrame(Mlt::Producer *producer, int framepos, int width, int he /*Mlt::Producer parentProd(producer->parent()); Mlt::Service service(parentProd.get_service()); mlt_service_lock(service.get_service());*/ - + int ow = width; + int oh = height; mlt_image_format format = mlt_image_rgb24a; - uint8_t *data = frame->get_image(format, width, height, 0); - QImage image((uchar *)data, width, height, QImage::Format_ARGB32); + uint8_t *data = frame->get_image(format, ow, oh, 0); + QImage image((uchar *)data, ow, oh, QImage::Format_ARGB32); //mlt_service_unlock(service.get_service()); if (!image.isNull()) { - p = image.rgbSwapped(); + if (ow > (2 * width)) { + // there was a scaling problem, do it manually + QImage scaled = image.scaled(width, height); + p = scaled.rgbSwapped(); + } else p = image.rgbSwapped(); } else p.fill(Qt::red); diff --git a/src/renderer.cpp b/src/renderer.cpp index 3e7e53f1..21afe082 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -750,10 +750,14 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int int frame_height = imageHeight; uint8_t *data = frame->get_image(format, frame_width, frame_height, 0); QImage image((uchar *)data, frame_width, frame_height, QImage::Format_ARGB32); - QPixmap pix(frame_width, frame_height); + QPixmap pix; if (!image.isNull()) { - pix = QPixmap::fromImage(image.rgbSwapped()); + if (frame_width > (2 * width)) { + // there was a scaling problem, do it manually + QImage scaled = image.scaled(width, imageHeight); + pix = QPixmap::fromImage(scaled.rgbSwapped()); + } else pix = QPixmap::fromImage(image.rgbSwapped()); } else pix.fill(Qt::black); -- 2.39.2