QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QtMultimediaReceiver.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4#include <QtCore/QMetaObject>
5#include <QtCore/QString>
6#include <QtCore/QTimer>
7
8#include "VideoReceiver.h"
9
10Q_DECLARE_LOGGING_CATEGORY(QtMultimediaReceiverLog)
11
12class QMediaPlayer;
13class QVideoSink;
14class QMediaCaptureSession;
15class QMediaRecorder;
16class QRhi;
17class QQuickItem;
18class QQuickVideoOutput;
19
21{
22 Q_OBJECT
23
24public:
25 explicit QtMultimediaReceiver(QObject *parent = nullptr);
26 virtual ~QtMultimediaReceiver();
27
28 static bool enabled();
29 static void *createVideoSink(QQuickItem *widget, QObject *parent = nullptr);
30 static void releaseVideoSink(void *sink);
31 static VideoReceiver *createVideoReceiver(QObject *parent);
32
33public slots:
34 void start(uint32_t timeout) override;
35 void stop() override;
36 void startDecoding(void *sink) override;
37 void stopDecoding() override;
38 void startRecording(const QString &videoFile, VideoReceiver::FILE_FORMAT format) override;
39 void stopRecording() override;
40 void takeScreenshot(const QString &imageFile) override;
41
42protected:
44 QMediaPlayer *_mediaPlayer = nullptr;
45 QVideoSink *_videoSink = nullptr;
46 QMediaCaptureSession *_captureSession = nullptr;
47 QMediaRecorder *_mediaRecorder = nullptr;
48 QMetaObject::Connection _videoSizeUpdater;
49 QMetaObject::Connection _videoFrameUpdater;
50 QRhi *_rhi = nullptr;
51 const QIODevice *_streamDevice;
52 QQuickVideoOutput *_videoOutput = nullptr;
53};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
static VideoReceiver * createVideoReceiver(QObject *parent)
QMetaObject::Connection _videoSizeUpdater
QMetaObject::Connection _videoFrameUpdater
void takeScreenshot(const QString &imageFile) override
QQuickVideoOutput * _videoOutput
void startDecoding(void *sink) override
QMediaCaptureSession * _captureSession
void start(uint32_t timeout) override
static void releaseVideoSink(void *sink)
void startRecording(const QString &videoFile, VideoReceiver::FILE_FORMAT format) override
QMediaRecorder * _mediaRecorder
const QIODevice * _streamDevice
static void * createVideoSink(QQuickItem *widget, QObject *parent=nullptr)
QQuickItem * widget()