From b420ca3a20292585c4c6746b45809a74e144104a Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Thu, 29 Apr 2021 11:23:18 -0400
Subject: [PATCH] renderer: improve the video quality by using rendering hint

Gitlab: #390

Change-Id: Idf3ccf9ab5b29a984a36ea117e6cf495a9e80988
---
 src/distantrenderer.cpp | 7 ++++++-
 src/previewrenderer.cpp | 7 ++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/distantrenderer.cpp b/src/distantrenderer.cpp
index 87c1238fc..2809e6c67 100644
--- a/src/distantrenderer.cpp
+++ b/src/distantrenderer.cpp
@@ -87,7 +87,12 @@ DistantRenderer::paint(QPainter* painter)
 {
     lrcInstance_->renderer()->drawFrame(distantRenderId_, [this, painter](QImage* distantImage) {
         if (distantImage) {
-            auto scaledDistant = distantImage->scaled(size().toSize(), Qt::KeepAspectRatio);
+            painter->setRenderHint(QPainter::Antialiasing);
+            painter->setRenderHint(QPainter::SmoothPixmapTransform);
+
+            auto scaledDistant = distantImage->scaled(size().toSize(),
+                                                      Qt::KeepAspectRatio,
+                                                      Qt::SmoothTransformation);
             auto tempScaledWidth = static_cast<int>(scaledWidth_ * 1000);
             auto tempScaledHeight = static_cast<int>(scaledHeight_ * 1000);
             auto tempXOffset = xOffset_;
diff --git a/src/previewrenderer.cpp b/src/previewrenderer.cpp
index 6026b93ee..c76ce79c2 100644
--- a/src/previewrenderer.cpp
+++ b/src/previewrenderer.cpp
@@ -51,6 +51,9 @@ PreviewRenderer::paint(QPainter* painter)
     lrcInstance_->renderer()
         ->drawFrame(lrc::api::video::PREVIEW_RENDERER_ID, [this, painter](QImage* previewImage) {
             if (previewImage) {
+                painter->setRenderHint(QPainter::Antialiasing);
+                painter->setRenderHint(QPainter::SmoothPixmapTransform);
+
                 auto aspectRatio = static_cast<qreal>(previewImage->width())
                                    / static_cast<qreal>(previewImage->height());
                 auto previewHeight = height();
@@ -69,7 +72,9 @@ PreviewRenderer::paint(QPainter* painter)
 
                 // If the given size is empty, this function returns a null image.
                 QImage scaledPreview;
-                scaledPreview = previewImage->scaled(size().toSize(), Qt::KeepAspectRatio);
+                scaledPreview = previewImage->scaled(size().toSize(),
+                                                     Qt::KeepAspectRatio,
+                                                     Qt::SmoothTransformation);
                 painter->drawImage(QRect(0, 0, scaledPreview.width(), scaledPreview.height()),
                                    scaledPreview);
             } else {
-- 
GitLab