From 606cb4706ac770e84d5abe3936d1faa596d1815e Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Wed, 17 Mar 2021 16:06:01 +0100 Subject: Convert QGraphicsVideoItem to use QVideoSink Change-Id: Id9af7457f590ed6387c36473e73c244ef44f8f8a Reviewed-by: Lars Knoll Reviewed-by: Doris Verria --- src/multimedia/video/qvideosink.cpp | 13 ++++++++++++- src/multimedia/video/qvideosink.h | 3 +++ 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/multimedia/video') diff --git a/src/multimedia/video/qvideosink.cpp b/src/multimedia/video/qvideosink.cpp index e00a39abb..931a4e5ab 100644 --- a/src/multimedia/video/qvideosink.cpp +++ b/src/multimedia/video/qvideosink.cpp @@ -75,6 +75,7 @@ public: int contrast = 0; int saturation = 0; int hue = 0; + Qt::BGMode backgroundMode = Qt::OpaqueMode; QMatrix4x4 transform; float opacity = 1.; }; @@ -206,6 +207,16 @@ void QVideoSink::setOpacity(float opacity) d->opacity = opacity; } +Qt::BGMode QVideoSink::backgroundMode() const +{ + return d->backgroundMode; +} + +void QVideoSink::setBackgroundMode(Qt::BGMode mode) +{ + d->backgroundMode = mode; +} + void QVideoSink::render(const QVideoFrame &frame) { Q_UNUSED(frame); @@ -237,7 +248,7 @@ void QVideoSink::paint(QPainter *painter, const QVideoFrame &f) targetRect = QRect(0, 0, size.width(), size.height()); targetRect.moveCenter(d->targetRect.center()); // we might not be drawing every pixel, fill the leftover black - if (d->targetRect != targetRect) { + if (d->backgroundMode == Qt::OpaqueMode && d->targetRect != targetRect) { if (targetRect.top() > d->targetRect.top()) { QRectF top(d->targetRect.left(), d->targetRect.top(), d->targetRect.width(), targetRect.top() - d->targetRect.top()); painter->fillRect(top, Qt::black); diff --git a/src/multimedia/video/qvideosink.h b/src/multimedia/video/qvideosink.h index 025057171..62f21fba7 100644 --- a/src/multimedia/video/qvideosink.h +++ b/src/multimedia/video/qvideosink.h @@ -109,6 +109,9 @@ public: float opacity() const; void setOpacity(float opacity); + Qt::BGMode backgroundMode() const; + void setBackgroundMode(Qt::BGMode mode); + // Thread safe void render(const QVideoFrame &frame); -- cgit v1.2.3