video: keep aspect ratio

Refs #74168

Change-Id: I3482b7cc43d7c4f5f8d7fe9279e30ed7760aa8c9
diff --git a/callwidget.cpp b/callwidget.cpp
index 168aea1..deed297 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -47,6 +47,7 @@
     ui->muteMicButton->setCheckable(true);
     ui->muteSpeakerButton->setCheckable(true);
     ui->callInvite->setVisible(false);
+    ui->videoWidget->setVisible(false);
 
     setActualCall(nullptr);
     videoRenderer_ = nullptr;
diff --git a/videowidget.cpp b/videowidget.cpp
index 84519a7..16a8c2a 100644
--- a/videowidget.cpp
+++ b/videowidget.cpp
@@ -34,6 +34,11 @@
             SIGNAL(rendererAdded(Call*,Video::Renderer*)),
             this, SLOT(callInitiated(Call*, Video::Renderer*)),
             Qt::ConnectionType::DirectConnection);
+
+    QPalette pal(palette());
+    pal.setColor(QPalette::Background, Qt::black);
+    this->setAutoFillBackground(true);
+    this->setPalette(pal);
 }
 
 VideoWidget::~VideoWidget()
@@ -78,16 +83,23 @@
     Q_UNUSED(evt)
     QMutexLocker {&lock_};
     QPainter painter(this);
-    //painter.drawRoundedRect(0,5,width()-5, height()-7,3,3);
-    if (distantFrame_ && renderer_ && renderer_->isRendering())
-          painter.drawImage(QRect(0,0,width(),height()),*(distantFrame_));
+
+    if (distantFrame_ && renderer_ && renderer_->isRendering()) {
+        auto scaledDistant = distantFrame_->scaled(size(), Qt::KeepAspectRatio);
+        auto xDiff = (width() - scaledDistant.width()) / 2;
+        auto yDiff = (height() - scaledDistant.height()) /2;
+        painter.drawImage(QRect(xDiff,yDiff,scaledDistant.width(),scaledDistant.height()), scaledDistant);
+    }
     if (previewFrame_ && previewRenderer_ && previewRenderer_->isRendering()) {
-        int previewHeight = !renderer_ ? height() : height()/4;
-        int previewWidth = !renderer_  ? width() : width()/4;
-        int yPos = !renderer_ ? 0 : height() - previewHeight;
-        int xPos = !renderer_ ? 0 : width() - previewWidth;
-        painter.drawImage(QRect(xPos,yPos,previewWidth,previewHeight),
-                          *(previewFrame_));
+        auto previewHeight = !renderer_ ? height() : height()/4;
+        auto previewWidth = !renderer_  ? width() : width()/4;
+        auto scaledPreview = previewFrame_->scaled(previewWidth, previewHeight, Qt::KeepAspectRatio);
+        auto xDiff = (previewWidth - scaledPreview.width()) / 2;
+        auto yDiff = (previewHeight - scaledPreview.height()) / 2;
+        auto yPos = !renderer_ ? yDiff : height() - previewHeight - previewMargin_;
+        auto xPos = !renderer_ ? xDiff : width() - scaledPreview.width() - previewMargin_;
+        painter.drawImage(QRect(xPos,yPos,scaledPreview.width(),scaledPreview.height()),
+                          scaledPreview);
     }
     painter.end();
 }
diff --git a/videowidget.h b/videowidget.h
index 69edf7d..ea7d6ee 100644
--- a/videowidget.h
+++ b/videowidget.h
@@ -55,6 +55,7 @@
     QPixmap *previewPix_;
     QWidget *oldParent_;
     QSize oldSize_;
+    constexpr static int previewMargin_ = 15;
 };
 
 #endif // VIDEOWIDGET_H