summaryrefslogtreecommitdiff
path: root/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h
diff options
context:
space:
mode:
authorJøger Hansegård <joger.hansegard@qt.io>2023-05-09 12:44:57 +0200
committerJøger Hansegård <joger.hansegard@qt.io>2023-05-11 14:41:03 +0200
commit0a6f667a5476029ae7dd3544f8750e13678cbf29 (patch)
tree59f5f9d2833894e23beaf4bab82789dfc95a0682 /src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h
parent54464a09a49593ce70065d8481bb32f499348728 (diff)
downloadqtmultimedia-0a6f667a5476029ae7dd3544f8750e13678cbf29.tar.gz
Implement QFFmpegScreenCaptureDxgi in terms of common FFMPeg base class
The QtMultimedia FFMpeg screen capture plugins all share a common base class 'QFFMpegScreenCaptureBase' that implements the bulk of the screen capture functionality, including the grabber thread and its screen capture loop. The Windows screen capture class 'QFFMpegScreenCaptureDXGI' class is, on the other hand, having its own implementation which makes it look and behave differently from the other implementations. This change refactors the Windows DXGI screen capture class to share base class with the other platform implementations. This reduces code duplication, and makes the class easier to maintain because it follows the same pattern as the other screen capture implementations. No functionality is changed through this refactoring. Task-number: QTBUG-113460 Pick-to: 6.5 Change-Id: Idd157c96e1705a9fe6eb591920177f6afb88cd2a Reviewed-by: Lars Knoll <lars@knoll.priv.no> Reviewed-by: Artem Dyomin <artem.dyomin@qt.io>
Diffstat (limited to 'src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h')
-rw-r--r--src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h21
1 files changed, 6 insertions, 15 deletions
diff --git a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h
index 0bb5079b2..4c9c75a07 100644
--- a/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h
+++ b/src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h
@@ -17,35 +17,26 @@
//
#include "qvideoframeformat.h"
+#include "qffmpegscreencapturebase_p.h"
#include <private/qwindowsiupointer_p.h>
#include <private/qplatformscreencapture_p.h>
#include <memory>
QT_BEGIN_NAMESPACE
-class DxgiScreenGrabberActive;
-class QFFmpegScreenCaptureDxgi : public QPlatformScreenCapture
+class QFFmpegScreenCaptureDxgi : public QFFmpegScreenCaptureBase
{
public:
- explicit QFFmpegScreenCaptureDxgi(QScreenCapture *screenCapture);
- ~QFFmpegScreenCaptureDxgi();
+ QFFmpegScreenCaptureDxgi(QScreenCapture *screenCapture);
- void setActive(bool active) override;
- bool isActive() const override { return bool(m_active); }
QVideoFrameFormat frameFormat() const override;
- void setScreen(QScreen *screen) override;
- QScreen *screen() const override { return m_screen; }
-
private:
- void setActiveInternal(bool active);
-
- void resetGrabber();
+ bool setActiveInternal(bool active) override;
private:
- std::unique_ptr<DxgiScreenGrabberActive> m_active;
- QScreen *m_screen = nullptr;
- QVideoFrameFormat m_format;
+ class Grabber;
+ std::unique_ptr<Grabber> m_grabber;
};
QT_END_NAMESPACE