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