3#include <QtCore/QFuture>
4#include <QtCore/QPromise>
5#include <QtCore/QObject>
7#include <QtQmlIntegration/QtQmlIntegration>
23 Q_MOC_INCLUDE(
"Vehicle.h")
54 Q_INVOKABLE
void startRecording(const QString &videoFile = QString());
59 void init(QQuickWindow *mainWindow);
101 void _communicationLostChanged(
bool communicationLost);
102 void _setActiveVehicle(
Vehicle *vehicle);
103 void _videoSourceChanged();
106 enum class InitState : uint8_t {
115 static bool _shouldSkipGStreamerForUnitTests();
116 void _initAfterQmlIsReady();
117 void _onGstInitComplete(
bool success);
118 void _createVideoReceivers();
119 void _initVideoReceiver(
VideoReceiver *receiver, QQuickWindow *window);
123 bool _updateVideoUri(
VideoReceiver *receiver,
const QString &uri);
124 void _restartAllVideos();
128 static void _cleanupOldVideos();
130 QList<VideoReceiver*> _videoReceivers;
133 QQuickWindow *_mainWindow =
nullptr;
134 Vehicle *_activeVehicle =
nullptr;
136 InitState _initState = InitState::NotStarted;
137 QFuture<bool> _gstInitFuture;
138#if defined(QGC_GST_STREAMING) && defined(Q_OS_ANDROID)
140 bool _initialized =
false;
141 bool _gstreamerDisabledForUnitTests =
false;
142 bool _fullScreen =
false;
144 QAtomicInteger<bool> _decoding =
false;
145 QAtomicInteger<bool> _recording =
false;
146 QAtomicInteger<bool> _streaming =
false;
149 QString _uvcVideoSourceID;
151#ifdef QGC_UNITTEST_BUILD
152 std::function<void()> _createVideoReceiversForTest;
void recordingStarted(const QString &filename)
bool isStreamSource() const
static bool gstreamerEnabled()
void setfullScreen(bool on)
static bool qtmultimediaEnabled()
Q_INVOKABLE void stopRecording()
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 startGStreamerInit()
void init(QQuickWindow *mainWindow)
Q_INVOKABLE void stopVideo()
double aspectRatio() const
friend class VideoManagerInitTest
double thermalHfov() const
void imageFileChanged(const QString &filename)
bool waitForGStreamerInit(int timeoutMs=60000)
void recordingChanged(bool recording)
void isAutoStreamChanged()
QString imageFile() const
void aspectRatioChanged()
Q_INVOKABLE void grabImage(const QString &imageFile=QString())