Qt 6.x
The Qt SDK
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
qplatformmediaintegration_p.h
Go to the documentation of this file.
1// Copyright (C) 2021 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3#ifndef QPLATFORMMEDIAINTEGRATION_H
4#define QPLATFORMMEDIAINTEGRATION_H
5
6//
7// W A R N I N G
8// -------------
9//
10// This file is not part of the Qt API. It exists purely as an
11// implementation detail. This header file may change from version to
12// version without notice, or even be removed.
13//
14// We mean it.
15//
16
17#include <private/qtmultimediaglobal_p.h>
18#include <private/qmultimediautils_p.h>
19#include <qcapturablewindow.h>
20#include <qmediarecorder.h>
21#include <qstring.h>
22
23#include <memory>
24
26
27class QMediaPlayer;
28class QAudioDecoder;
29class QCamera;
30class QScreenCapture;
31class QWindowCapture;
32class QMediaRecorder;
33class QImageCapture;
34class QMediaDevices;
39class QPlatformCamera;
44class QObject;
46class QVideoSink;
47class QAudioInput;
48class QAudioOutput;
54
55class Q_MULTIMEDIA_EXPORT QPlatformMediaIntegration
56{
57 inline static const QString notAvailable = QStringLiteral("Not available");
58public:
59 static QPlatformMediaIntegration *instance();
60
64
65 virtual QList<QCameraDevice> videoInputs();
66 virtual QMaybe<QPlatformCamera *> createCamera(QCamera *) { return notAvailable; }
69
72 virtual QMaybe<QPlatformMediaPlayer *> createPlayer(QMediaPlayer *) { return notAvailable; }
75
76 virtual QMaybe<QPlatformAudioInput *> createAudioInput(QAudioInput *);
77 virtual QMaybe<QPlatformAudioOutput *> createAudioOutput(QAudioOutput *);
78
79 virtual QMaybe<QPlatformVideoSink *> createVideoSink(QVideoSink *) { return notAvailable; }
80
81 QList<QCapturableWindow> capturableWindows();
82 bool isCapturableWindowValid(const QCapturableWindowPrivate &);
83
84 QPlatformVideoDevices *videoDevices() { return m_videoDevices.get(); }
85
86private:
87 friend class QMockIntegrationFactory;
88 // API to be able to test with a mock backend
89 using Factory = std::function<std::unique_ptr<QPlatformMediaIntegration>()>;
90 struct InstanceHolder;
91 static void setPlatformFactory(Factory factory);
92
93protected:
94 std::unique_ptr<QPlatformVideoDevices> m_videoDevices;
95 std::unique_ptr<QPlatformCapturableWindows> m_capturableWindows;
96};
97
99
100
101#endif // QPLATFORMMEDIAINTERFACE_H
The QAudioDecoder class implements decoding audio.
\qmltype AudioInput \instantiates QAudioInput
Definition qaudioinput.h:19
\qmltype AudioOutput \instantiates QAudioOutput
The QCamera class provides interface for system camera devices.
Definition qcamera.h:28
\inmodule QtMultimedia
\inmodule QtMultimedia
Definition qlist.h:74
The QMediaDevices class provides information about available multimedia input and output devices.
The QMediaPlayer class allows the playing of a media files.
\inmodule QtMultimedia
\inmodule QtCore
Definition qobject.h:90
virtual QMaybe< QPlatformCamera * > createCamera(QCamera *)
virtual QMaybe< QPlatformAudioDecoder * > createAudioDecoder(QAudioDecoder *)
std::unique_ptr< QPlatformVideoDevices > m_videoDevices
std::unique_ptr< QPlatformCapturableWindows > m_capturableWindows
virtual QMaybe< QPlatformImageCapture * > createImageCapture(QImageCapture *)
virtual QMaybe< QPlatformVideoSink * > createVideoSink(QVideoSink *)
virtual QPlatformSurfaceCapture * createScreenCapture(QScreenCapture *)
virtual QMaybe< QPlatformMediaCaptureSession * > createCaptureSession()
virtual QPlatformMediaFormatInfo * formatInfo()=0
virtual QMaybe< QPlatformMediaRecorder * > createRecorder(QMediaRecorder *)
virtual ~QPlatformMediaIntegration()
QPlatformVideoDevices * videoDevices()
virtual QMaybe< QPlatformMediaPlayer * > createPlayer(QMediaPlayer *)
virtual QPlatformSurfaceCapture * createWindowCapture(QWindowCapture *)
\inmodule QtMultimedia
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:127
The QVideoSink class represents a generic sink for video data.
Definition qvideosink.h:22
\inmodule QtMultimedia
Combined button and popup list for selecting options.
#define QStringLiteral(str)
QItemEditorFactory * factory