]> git.sesse.net Git - mlt/blobdiff - src/modules/qimage/transition_vqm.cpp
Add support for Qt 5, drop support for Qt 3 and KDE 3.
[mlt] / src / modules / qimage / transition_vqm.cpp
index 4d45d8a6c73985f0177ba401d6fa47a4f9f8c720..c926b165803c98b3862d300c212883bb9450a50e 100644 (file)
 #include <string.h>
 #include <math.h>
 #include <stdio.h>
-#include <QtGui>
+#include <QApplication>
+#include <QImage>
+#include <QColor>
+#include <QLocale>
+#include <QPainter>
+#include <QPalette>
+#include <QFont>
+#include <QString>
 
 static QApplication *app = 0;
 
@@ -101,6 +108,7 @@ static double calc_ssim( const uint8_t *a, const uint8_t *b, int width, int heig
 static int get_image( mlt_frame a_frame, uint8_t **image, mlt_image_format *format, int *width, int *height, int writable )
 {
        mlt_frame b_frame = mlt_frame_pop_frame( a_frame );
+       mlt_properties properties = MLT_FRAME_PROPERTIES( a_frame );
        mlt_transition transition = MLT_TRANSITION( mlt_frame_pop_service( a_frame ) );
        uint8_t *b_image;
        int window_size = mlt_properties_get_int( MLT_TRANSITION_PROPERTIES( transition ), "window_size" );
@@ -116,6 +124,12 @@ static int get_image( mlt_frame a_frame, uint8_t **image, mlt_image_format *form
        ssim[0] = calc_ssim( *image, b_image, *width, *height, window_size, 2 );
        ssim[1] = calc_ssim( *image + 1, b_image + 1, *width / 2, *height, window_size, 4 );
        ssim[2] = calc_ssim( *image + 3, b_image + 3, *width / 2, *height, window_size, 4 );
+       mlt_properties_set_double( properties, "meta.vqm.psnr.y", psnr[0] );
+       mlt_properties_set_double( properties, "meta.vqm.psnr.cb", psnr[1] );
+       mlt_properties_set_double( properties, "meta.vqm.psnr.cr", psnr[2] );
+       mlt_properties_set_double( properties, "meta.vqm.ssim.y", ssim[0] );
+       mlt_properties_set_double( properties, "meta.vqm.ssim.cb", ssim[1] );
+       mlt_properties_set_double( properties, "meta.vqm.ssim.cr", ssim[2] );
        printf( "%05d %05.2f %05.2f %05.2f %5.3f %5.3f %5.3f\n",
                        mlt_frame_get_position( a_frame ), psnr[0], psnr[1], psnr[2],
                        ssim[0], ssim[1], ssim[2] );
@@ -175,7 +189,7 @@ static int get_image( mlt_frame a_frame, uint8_t **image, mlt_image_format *form
        QFont font;
        QString s;
        font.setBold( true );
-       font.setPointSize( 30 );
+       font.setPointSize( 30 * *height / 1080 );
        painter.setPen( QColor("black") );
        painter.drawLine( 0, *height/2 + 1, *width, *height/2 );
        painter.setPen( QColor("white") );
@@ -185,9 +199,9 @@ static int get_image( mlt_frame a_frame, uint8_t **image, mlt_image_format *form
                          mlt_frame_get_position( a_frame ), psnr[0], psnr[1], psnr[2],
                          ssim[0], ssim[1], ssim[2] );
        painter.setPen( QColor("black") );
-       painter.drawText( 52, *height - 300 * font.pointSize() / 72 + 2, *width, *height, NULL, s );
+       painter.drawText( 52, *height * 8 / 10 + 2, *width, *height, 0, s );
        painter.setPen( QColor("white") );
-       painter.drawText( 50, *height - 300 * font.pointSize() / 72, *width, *height, NULL, s );
+       painter.drawText( 50, *height * 8 / 10, *width, *height, 0, s );
 
        // finish Qt drawing
        painter.end();