QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
VideoReceiver Class Referenceabstract

#include <VideoReceiver.h>

+ Inheritance diagram for VideoReceiver:
+ Collaboration diagram for VideoReceiver:

Public Types

enum  FILE_FORMAT {
  FILE_FORMAT_MIN = 0 , FILE_FORMAT_MKV = FILE_FORMAT_MIN , FILE_FORMAT_MOV , FILE_FORMAT_MP4 ,
  FILE_FORMAT_MAX = FILE_FORMAT_MP4
}
 
enum  STATUS {
  STATUS_MIN = 0 , STATUS_OK = STATUS_MIN , STATUS_FAIL , STATUS_INVALID_STATE ,
  STATUS_INVALID_URL , STATUS_NOT_IMPLEMENTED , STATUS_MAX = STATUS_NOT_IMPLEMENTED
}
 
using VideoSinkHandle = void *
 Backend-specific decoded-frame sink.
 

Public Slots

virtual void start (uint32_t timeout)=0
 
virtual void stop ()=0
 
virtual void startDecoding (VideoSinkHandle sink)=0
 
virtual void stopDecoding ()=0
 
virtual void startRecording (const QString &videoFile, FILE_FORMAT format)=0
 
virtual void stopRecording ()=0
 
virtual void takeScreenshot (const QString &imageFile)=0
 

Signals

void timeout ()
 
void streamingChanged (bool active)
 
void decodingChanged (bool active)
 
void recordingChanged (bool active)
 
void recordingStarted (const QString &filename)
 
void videoSizeChanged (QSize size)
 
void sinkChanged (VideoSinkHandle sink)
 
void nameChanged (const QString &name)
 
void uriChanged (const QString &uri)
 
void startedChanged (bool started)
 
void lowLatencyChanged (bool lowLatency)
 
void rtpJitterLatencyMsChanged (int ms)
 
void autoReconnectChanged (bool enabled)
 
void videoStreamInfoChanged ()
 
void widgetChanged (QQuickItem *widget)
 
void onStartComplete (STATUS status)
 
void onStopComplete (STATUS status)
 
void onStartDecodingComplete (STATUS status)
 
void onStopDecodingComplete (STATUS status)
 
void onStartRecordingComplete (STATUS status)
 
void onStopRecordingComplete (STATUS status)
 
void onTakeScreenshotComplete (STATUS status)
 

Public Member Functions

 VideoReceiver (QObject *parent=nullptr)
 
bool isThermal () const
 
VideoSinkHandle sink () const
 
QQuickItem * widget ()
 
QString name () const
 
QString uri () const
 
bool started () const
 
bool lowLatency () const
 
int rtpJitterLatencyMs () const
 
bool autoReconnect () const
 
QGCVideoStreamInfovideoStreamInfo ()
 
QString recordingOutput () const
 
virtual void setSink (VideoSinkHandle sink)
 
virtual void setWidget (QQuickItem *widget)
 
void setName (const QString &name)
 
void setUri (const QString &uri)
 
void setStarted (bool started)
 
void setLowLatency (bool lowLatency)
 
void setRtpJitterLatencyMs (int ms)
 
void setAutoReconnect (bool enabled)
 
void setVideoStreamInfo (QGCVideoStreamInfo *videoStreamInfo)
 

Static Public Member Functions

static bool isValidFileFormat (FILE_FORMAT format)
 
static bool isValidStatus (STATUS status)
 

Protected Attributes

VideoSinkHandle _sink = nullptr
 
QQuickItem * _widget = nullptr
 
QGCVideoStreamInfo_videoStreamInfo = nullptr
 
QString _name
 
QString _uri
 
bool _started = false
 
std::atomic< bool > _decoding = false
 
bool _recording = false
 
bool _streaming = false
 
bool _lowLatency = false
 
int _rtpJitterLatencyMs = 80
 
std::atomic< bool > _autoReconnect = true
 RTSP/UDP auto-reconnect with exponential backoff on watchdog/error.
 
bool _resetVideoSink = false
 
bool _endOfStream = false
 
bool _removingDecoder = false
 
bool _removingRecorder = false
 
int _buffer = 0
 
std::atomic< qint64 > _lastSourceFrameTime = 0
 
std::atomic< qint64 > _lastVideoFrameTime = 0
 
int _statsTickCounter = 0
 
QTimer _watchdogTimer
 
uint32_t _timeout = 0
 
QString _recordingOutput
 

Detailed Description

Definition at line 13 of file VideoReceiver.h.

Member Typedef Documentation

◆ VideoSinkHandle

Backend-specific decoded-frame sink.

Definition at line 20 of file VideoReceiver.h.

Member Enumeration Documentation

◆ FILE_FORMAT

Enumerator
FILE_FORMAT_MIN 
FILE_FORMAT_MKV 
FILE_FORMAT_MOV 
FILE_FORMAT_MP4 
FILE_FORMAT_MAX 

Definition at line 50 of file VideoReceiver.h.

◆ STATUS

Enumerator
STATUS_MIN 
STATUS_OK 
STATUS_FAIL 
STATUS_INVALID_STATE 
STATUS_INVALID_URL 
STATUS_NOT_IMPLEMENTED 
STATUS_MAX 

Definition at line 60 of file VideoReceiver.h.

Constructor & Destructor Documentation

◆ VideoReceiver()

VideoReceiver::VideoReceiver ( QObject *  parent = nullptr)
inlineexplicit

Definition at line 22 of file VideoReceiver.h.

Member Function Documentation

◆ autoReconnect()

bool VideoReceiver::autoReconnect ( ) const
inline

Definition at line 35 of file VideoReceiver.h.

References _autoReconnect.

◆ autoReconnectChanged

void VideoReceiver::autoReconnectChanged ( bool  enabled)
signal

Referenced by setAutoReconnect().

◆ decodingChanged

void VideoReceiver::decodingChanged ( bool  active)
signal

◆ isThermal()

◆ isValidFileFormat()

static bool VideoReceiver::isValidFileFormat ( FILE_FORMAT  format)
inlinestatic

Definition at line 58 of file VideoReceiver.h.

References FILE_FORMAT_MAX, and FILE_FORMAT_MIN.

Referenced by VideoManager::startRecording().

◆ isValidStatus()

static bool VideoReceiver::isValidStatus ( STATUS  status)
inlinestatic

Definition at line 70 of file VideoReceiver.h.

References STATUS_MAX, and STATUS_MIN.

◆ lowLatency()

bool VideoReceiver::lowLatency ( ) const
inline

Definition at line 33 of file VideoReceiver.h.

References _lowLatency.

Referenced by setLowLatency(), and GstVideoReceiver::start().

◆ lowLatencyChanged

void VideoReceiver::lowLatencyChanged ( bool  lowLatency)
signal

Referenced by setLowLatency().

◆ name()

QString VideoReceiver::name ( ) const
inline

Definition at line 30 of file VideoReceiver.h.

References _name.

Referenced by setName(), and VideoManager::startRecording().

◆ nameChanged

void VideoReceiver::nameChanged ( const QString &  name)
signal

Referenced by setName().

◆ onStartComplete

void VideoReceiver::onStartComplete ( STATUS  status)
signal

◆ onStartDecodingComplete

void VideoReceiver::onStartDecodingComplete ( STATUS  status)
signal

◆ onStartRecordingComplete

void VideoReceiver::onStartRecordingComplete ( STATUS  status)
signal

◆ onStopComplete

void VideoReceiver::onStopComplete ( STATUS  status)
signal

◆ onStopDecodingComplete

void VideoReceiver::onStopDecodingComplete ( STATUS  status)
signal

◆ onStopRecordingComplete

void VideoReceiver::onStopRecordingComplete ( STATUS  status)
signal

◆ onTakeScreenshotComplete

void VideoReceiver::onTakeScreenshotComplete ( STATUS  status)
signal

◆ recordingChanged

void VideoReceiver::recordingChanged ( bool  active)
signal

◆ recordingOutput()

QString VideoReceiver::recordingOutput ( ) const
inline

Definition at line 37 of file VideoReceiver.h.

References _recordingOutput.

◆ recordingStarted

void VideoReceiver::recordingStarted ( const QString &  filename)
signal

◆ rtpJitterLatencyMs()

int VideoReceiver::rtpJitterLatencyMs ( ) const
inline

Definition at line 34 of file VideoReceiver.h.

References _rtpJitterLatencyMs.

◆ rtpJitterLatencyMsChanged

void VideoReceiver::rtpJitterLatencyMsChanged ( int  ms)
signal

Referenced by setRtpJitterLatencyMs().

◆ setAutoReconnect()

void VideoReceiver::setAutoReconnect ( bool  enabled)
inline

Definition at line 46 of file VideoReceiver.h.

References _autoReconnect, and autoReconnectChanged().

◆ setLowLatency()

void VideoReceiver::setLowLatency ( bool  lowLatency)
inline

Definition at line 44 of file VideoReceiver.h.

References _lowLatency, lowLatency(), and lowLatencyChanged().

◆ setName()

void VideoReceiver::setName ( const QString &  name)
inline

Definition at line 41 of file VideoReceiver.h.

References _name, name(), and nameChanged().

◆ setRtpJitterLatencyMs()

void VideoReceiver::setRtpJitterLatencyMs ( int  ms)
inline

Definition at line 45 of file VideoReceiver.h.

References _rtpJitterLatencyMs, and rtpJitterLatencyMsChanged().

◆ setSink()

virtual void VideoReceiver::setSink ( VideoSinkHandle  sink)
inlinevirtual

Definition at line 39 of file VideoReceiver.h.

References _sink, sink(), and sinkChanged().

◆ setStarted()

void VideoReceiver::setStarted ( bool  started)
inline

Definition at line 43 of file VideoReceiver.h.

References _started, started(), and startedChanged().

◆ setUri()

void VideoReceiver::setUri ( const QString &  uri)
inline

Definition at line 42 of file VideoReceiver.h.

References _uri, uri(), and uriChanged().

◆ setVideoStreamInfo()

void VideoReceiver::setVideoStreamInfo ( QGCVideoStreamInfo videoStreamInfo)
inline

Definition at line 47 of file VideoReceiver.h.

References _videoStreamInfo, videoStreamInfo(), and videoStreamInfoChanged().

◆ setWidget()

virtual void VideoReceiver::setWidget ( QQuickItem *  widget)
inlinevirtual

Definition at line 40 of file VideoReceiver.h.

References _widget, widget(), and widgetChanged().

◆ sink()

VideoSinkHandle VideoReceiver::sink ( ) const
inline

◆ sinkChanged

void VideoReceiver::sinkChanged ( VideoSinkHandle  sink)
signal

Referenced by setSink().

◆ start

virtual void VideoReceiver::start ( uint32_t  timeout)
pure virtualslot

◆ startDecoding

virtual void VideoReceiver::startDecoding ( VideoSinkHandle  sink)
pure virtualslot

◆ started()

bool VideoReceiver::started ( ) const
inline

Definition at line 32 of file VideoReceiver.h.

References _started.

Referenced by setStarted(), and VideoManager::startRecording().

◆ startedChanged

void VideoReceiver::startedChanged ( bool  started)
signal

Referenced by setStarted().

◆ startRecording

virtual void VideoReceiver::startRecording ( const QString &  videoFile,
FILE_FORMAT  format 
)
pure virtualslot

◆ stop

virtual void VideoReceiver::stop ( )
pure virtualslot

◆ stopDecoding

virtual void VideoReceiver::stopDecoding ( )
pure virtualslot

◆ stopRecording

virtual void VideoReceiver::stopRecording ( )
pure virtualslot

◆ streamingChanged

void VideoReceiver::streamingChanged ( bool  active)
signal

◆ takeScreenshot

virtual void VideoReceiver::takeScreenshot ( const QString &  imageFile)
pure virtualslot

Referenced by VideoManager::grabImage().

◆ timeout

◆ uri()

QString VideoReceiver::uri ( ) const
inline

Definition at line 31 of file VideoReceiver.h.

References _uri.

Referenced by setUri().

◆ uriChanged

void VideoReceiver::uriChanged ( const QString &  uri)
signal

Referenced by setUri().

◆ videoSizeChanged

void VideoReceiver::videoSizeChanged ( QSize  size)
signal

◆ videoStreamInfo()

◆ videoStreamInfoChanged

void VideoReceiver::videoStreamInfoChanged ( )
signal

Referenced by setVideoStreamInfo().

◆ widget()

QQuickItem * VideoReceiver::widget ( )
inline

Definition at line 29 of file VideoReceiver.h.

References _widget.

Referenced by QtMultimediaReceiver::createVideoSink(), and setWidget().

◆ widgetChanged

void VideoReceiver::widgetChanged ( QQuickItem *  widget)
signal

Referenced by setWidget().

Member Data Documentation

◆ _autoReconnect

std::atomic<bool> VideoReceiver::_autoReconnect = true
protected

RTSP/UDP auto-reconnect with exponential backoff on watchdog/error.

Definition at line 121 of file VideoReceiver.h.

Referenced by autoReconnect(), and setAutoReconnect().

◆ _buffer

int VideoReceiver::_buffer = 0
protected

Definition at line 130 of file VideoReceiver.h.

Referenced by GstVideoReceiver::start().

◆ _decoding

std::atomic<bool> VideoReceiver::_decoding = false
protected

Definition at line 115 of file VideoReceiver.h.

Referenced by GstVideoReceiver::startDecoding().

◆ _endOfStream

bool VideoReceiver::_endOfStream = false
protected

Definition at line 123 of file VideoReceiver.h.

Referenced by GstVideoReceiver::start().

◆ _lastSourceFrameTime

std::atomic<qint64> VideoReceiver::_lastSourceFrameTime = 0
protected

Definition at line 132 of file VideoReceiver.h.

Referenced by GstVideoReceiver::start(), and GstVideoReceiver::stop().

◆ _lastVideoFrameTime

std::atomic<qint64> VideoReceiver::_lastVideoFrameTime = 0
protected

Definition at line 133 of file VideoReceiver.h.

Referenced by GstVideoReceiver::startDecoding().

◆ _lowLatency

bool VideoReceiver::_lowLatency = false
protected

Definition at line 118 of file VideoReceiver.h.

Referenced by lowLatency(), and setLowLatency().

◆ _name

QString VideoReceiver::_name
protected

Definition at line 111 of file VideoReceiver.h.

Referenced by isThermal(), name(), and setName().

◆ _recording

bool VideoReceiver::_recording = false
protected

◆ _recordingOutput

QString VideoReceiver::_recordingOutput
protected

◆ _removingDecoder

bool VideoReceiver::_removingDecoder = false
protected

◆ _removingRecorder

bool VideoReceiver::_removingRecorder = false
protected

◆ _resetVideoSink

bool VideoReceiver::_resetVideoSink = false
protected

Definition at line 122 of file VideoReceiver.h.

Referenced by GstVideoReceiver::startDecoding().

◆ _rtpJitterLatencyMs

int VideoReceiver::_rtpJitterLatencyMs = 80
protected

◆ _sink

VideoSinkHandle VideoReceiver::_sink = nullptr
protected

Definition at line 108 of file VideoReceiver.h.

Referenced by setSink(), and sink().

◆ _started

bool VideoReceiver::_started = false
protected

Definition at line 113 of file VideoReceiver.h.

Referenced by setStarted(), and started().

◆ _statsTickCounter

int VideoReceiver::_statsTickCounter = 0
protected

Definition at line 134 of file VideoReceiver.h.

◆ _streaming

bool VideoReceiver::_streaming = false
protected

Definition at line 117 of file VideoReceiver.h.

Referenced by GstVideoReceiver::startDecoding(), and GstVideoReceiver::stop().

◆ _timeout

uint32_t VideoReceiver::_timeout = 0
protected

Definition at line 136 of file VideoReceiver.h.

Referenced by GstVideoReceiver::start().

◆ _uri

◆ _videoStreamInfo

QGCVideoStreamInfo* VideoReceiver::_videoStreamInfo = nullptr
protected

Definition at line 110 of file VideoReceiver.h.

Referenced by setVideoStreamInfo(), and videoStreamInfo().

◆ _watchdogTimer

QTimer VideoReceiver::_watchdogTimer
protected

◆ _widget

QQuickItem* VideoReceiver::_widget = nullptr
protected

Definition at line 109 of file VideoReceiver.h.

Referenced by setWidget(), GstVideoReceiver::startDecoding(), and widget().


The documentation for this class was generated from the following file: