6#include <QtCore/QFuture>
7#include <QtCore/QMutex>
8#include <QtCore/QPromise>
9#include <QtCore/QObject>
10#include <QtCore/QSize>
11#include <QtQmlIntegration/QtQmlIntegration>
13#ifdef QGC_UNITTEST_BUILD
28 Q_MOC_INCLUDE(
"Vehicle.h")
56 Q_INVOKABLE
void startRecording(const QString &videoFile = QString());
61 void init(QQuickWindow *mainWindow);
100 void _communicationLostChanged(
bool communicationLost);
101 void _setActiveVehicle(
Vehicle *vehicle);
102 void _videoSourceChanged();
105 enum class InitState : uint8_t {
114 void _initAfterQmlIsReady();
115 void _onBackendInitComplete(
bool success);
116 void _createVideoReceivers();
117 void _initVideoReceiver(
VideoReceiver *receiver, QQuickWindow *window);
121 bool _updateVideoUri(
VideoReceiver *receiver,
const QString &uri);
122 void _restartAllVideos();
126 static void _cleanupOldVideos();
128 QList<VideoReceiver*> _videoReceivers;
131 QQuickWindow *_mainWindow =
nullptr;
132 Vehicle *_activeVehicle =
nullptr;
134 std::atomic<InitState> _initState = InitState::NotStarted;
136 QMutex _initFutureMutex;
137 QFuture<bool> _backendInitFuture;
138 bool _initialized =
false;
139 bool _backendDisabledForTests =
false;
140 bool _fullScreen =
false;
142 QAtomicInteger<bool> _decoding =
false;
143 QAtomicInteger<bool> _recording =
false;
144 QAtomicInteger<bool> _streaming =
false;
147 QString _uvcVideoSourceID;
149#ifdef QGC_UNITTEST_BUILD
150 std::function<void()> _createVideoReceiversForTest;
void recordingStarted(const QString &filename)
bool isStreamSource() const
void setfullScreen(bool on)
void startVideoBackendInit()
Q_INVOKABLE void stopRecording()
bool waitForVideoBackendReady(std::chrono::milliseconds timeout=std::chrono::minutes(1))
void uvcVideoSourceIDChanged()
Q_INVOKABLE void startVideo()
bool autoStreamConfigured() const
Q_INVOKABLE void startRecording(const QString &videoFile=QString())
double thermalAspectRatio() const
void isStreamSourceChanged()
static VideoManager * instance()
QString uvcVideoSourceID() const
void autoStreamConfiguredChanged()
void init(QQuickWindow *mainWindow)
Q_INVOKABLE void stopVideo()
double aspectRatio() const
friend class VideoManagerInitTest
double thermalHfov() const
void imageFileChanged(const QString &filename)
void recordingChanged(bool recording)
void isAutoStreamChanged()
QString imageFile() const
void aspectRatioChanged()
Q_INVOKABLE void grabImage(const QString &imageFile=QString())