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