+
+ int ow = frameWidth;
+ int oh = height;
+ mlt_image_format format = mlt_image_rgb24a;
+ //frame->set("progressive", "1");
+ if (ow % 2 == 1) ow++;
+ QImage image(ow, oh, QImage::Format_ARGB32_Premultiplied);
+ const uchar* imagedata = frame->get_image(format, ow, oh);
+ memcpy(image.bits(), imagedata, ow * oh * 4);//.byteCount());
+
+ //const uchar* imagedata = frame->get_image(format, ow, oh);
+ //QImage image(imagedata, ow, oh, QImage::Format_ARGB32_Premultiplied);
+
+ if (!image.isNull()) {
+ if (ow > (2 * displayWidth)) {
+ // there was a scaling problem, do it manually
+ image = image.scaled(displayWidth, height).rgbSwapped();
+ } else {
+ image = image.scaled(displayWidth, height, Qt::IgnoreAspectRatio).rgbSwapped();
+ }
+#if QT_VERSION >= 0x040800
+ p.fill(QColor(100, 100, 100, 70));
+ QPainter painter(&p);
+#else
+ p.fill(Qt::transparent);
+ QPainter painter(&p);
+ painter.fillRect(p.rect(), QColor(100, 100, 100, 70));
+#endif
+ painter.drawImage(p.rect(), image);
+ painter.end();
+ } else
+ p.fill(QColor(Qt::red).rgb());
+ return p;