diff options
author | Jøger Hansegård <joger.hansegard@qt.io> | 2023-05-09 12:44:57 +0200 |
---|---|---|
committer | Jøger Hansegård <joger.hansegard@qt.io> | 2023-05-11 14:41:03 +0200 |
commit | 0a6f667a5476029ae7dd3544f8750e13678cbf29 (patch) | |
tree | 59f5f9d2833894e23beaf4bab82789dfc95a0682 /src/plugins/multimedia/ffmpeg/qffmpegscreencapture_dxgi_p.h | |
parent | 54464a09a49593ce70065d8481bb32f499348728 (diff) | |
download | qtmultimedia-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.h | 21 |
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 |