Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
ace5e73b
Unverified
Commit
ace5e73b
authored
May 16, 2019
by
Gus Grubba
Committed by
GitHub
May 16, 2019
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #7435 from MatejFranceskin/pr-restart-video-stream-after-change
Restart video stream after change
parents
a6a161ca
f8182edd
Changes
6
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
108 additions
and
120 deletions
+108
-120
QGCCameraControl.cc
src/Camera/QGCCameraControl.cc
+24
-0
QGCCameraControl.h
src/Camera/QGCCameraControl.h
+9
-0
VideoManager.cc
src/FlightDisplay/VideoManager.cc
+17
-10
VideoManager.h
src/FlightDisplay/VideoManager.h
+2
-2
VideoReceiver.cc
src/VideoStreaming/VideoReceiver.cc
+40
-95
VideoReceiver.h
src/VideoStreaming/VideoReceiver.h
+16
-13
No files found.
src/Camera/QGCCameraControl.cc
View file @
ace5e73b
...
...
@@ -70,6 +70,9 @@ const char* QGCCameraControl::kCAM_SHUTTERSPD = "CAM_SHUTTERSPD";
const
char
*
QGCCameraControl
::
kCAM_APERTURE
=
"CAM_APERTURE"
;
const
char
*
QGCCameraControl
::
kCAM_WBMODE
=
"CAM_WBMODE"
;
const
char
*
QGCCameraControl
::
kCAM_MODE
=
"CAM_MODE"
;
const
char
*
QGCCameraControl
::
kCAM_BITRATE
=
"CAM_BITRATE"
;
const
char
*
QGCCameraControl
::
kCAM_FPS
=
"CAM_FPS"
;
const
char
*
QGCCameraControl
::
kCAM_ENC
=
"CAM_ENC"
;
//-----------------------------------------------------------------------------
QGCCameraOptionExclusion
::
QGCCameraOptionExclusion
(
QObject
*
parent
,
QString
param_
,
QString
value_
,
QStringList
exclusions_
)
...
...
@@ -2105,6 +2108,27 @@ QGCCameraControl::mode()
return
_paramComplete
?
getFact
(
kCAM_MODE
)
:
nullptr
;
}
//-----------------------------------------------------------------------------
Fact
*
QGCCameraControl
::
bitRate
()
{
return
_paramComplete
?
getFact
(
kCAM_BITRATE
)
:
nullptr
;
}
//-----------------------------------------------------------------------------
Fact
*
QGCCameraControl
::
frameRate
()
{
return
_paramComplete
?
getFact
(
kCAM_FPS
)
:
nullptr
;
}
//-----------------------------------------------------------------------------
Fact
*
QGCCameraControl
::
videoEncoding
()
{
return
_paramComplete
?
getFact
(
kCAM_ENC
)
:
nullptr
;
}
//-----------------------------------------------------------------------------
QGCVideoStreamInfo
::
QGCVideoStreamInfo
(
QObject
*
parent
,
const
mavlink_video_stream_information_t
*
si
)
:
QObject
(
parent
)
...
...
src/Camera/QGCCameraControl.h
View file @
ace5e73b
...
...
@@ -167,6 +167,9 @@ public:
Q_PROPERTY
(
Fact
*
aperture
READ
aperture
NOTIFY
parametersReady
)
Q_PROPERTY
(
Fact
*
wb
READ
wb
NOTIFY
parametersReady
)
Q_PROPERTY
(
Fact
*
mode
READ
mode
NOTIFY
parametersReady
)
Q_PROPERTY
(
Fact
*
bitRate
READ
bitRate
NOTIFY
parametersReady
)
Q_PROPERTY
(
Fact
*
frameRate
READ
frameRate
NOTIFY
parametersReady
)
Q_PROPERTY
(
Fact
*
videoEncoding
READ
videoEncoding
NOTIFY
parametersReady
)
Q_PROPERTY
(
QStringList
activeSettings
READ
activeSettings
NOTIFY
activeSettingsChanged
)
Q_PROPERTY
(
VideoStatus
videoStatus
READ
videoStatus
NOTIFY
videoStatusChanged
)
...
...
@@ -252,6 +255,9 @@ public:
virtual
Fact
*
aperture
();
virtual
Fact
*
wb
();
virtual
Fact
*
mode
();
virtual
Fact
*
bitRate
();
virtual
Fact
*
frameRate
();
virtual
Fact
*
videoEncoding
();
//-- Stream names to show the user (for selection)
virtual
QStringList
streamLabels
()
{
return
_streamLabels
;
}
...
...
@@ -292,6 +298,9 @@ public:
static
const
char
*
kCAM_APERTURE
;
static
const
char
*
kCAM_WBMODE
;
static
const
char
*
kCAM_MODE
;
static
const
char
*
kCAM_BITRATE
;
static
const
char
*
kCAM_FPS
;
static
const
char
*
kCAM_ENC
;
signals:
void
infoChanged
();
...
...
src/FlightDisplay/VideoManager.cc
View file @
ace5e73b
/****************************************************************************
*
* (c) 2009-201
6
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-201
9
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
...
...
@@ -206,28 +206,28 @@ VideoManager::_videoSourceChanged()
emit
hasVideoChanged
();
emit
isGStreamerChanged
();
emit
isAutoStreamChanged
();
_
restartVideo
();
restartVideo
();
}
//-----------------------------------------------------------------------------
void
VideoManager
::
_udpPortChanged
()
{
_
restartVideo
();
restartVideo
();
}
//-----------------------------------------------------------------------------
void
VideoManager
::
_rtspUrlChanged
()
{
_
restartVideo
();
restartVideo
();
}
//-----------------------------------------------------------------------------
void
VideoManager
::
_tcpUrlChanged
()
{
_
restartVideo
();
restartVideo
();
}
//-----------------------------------------------------------------------------
...
...
@@ -275,6 +275,13 @@ VideoManager::_updateSettings()
return
;
//-- Auto discovery
if
(
_activeVehicle
&&
_activeVehicle
->
dynamicCameras
())
{
QGCCameraControl
*
pCamera
=
_activeVehicle
->
dynamicCameras
()
->
currentCameraInstance
();
if
(
pCamera
)
{
Fact
*
fact
=
pCamera
->
videoEncoding
();
if
(
fact
)
{
_videoReceiver
->
setVideoDecoder
(
static_cast
<
VideoReceiver
::
VideoEncoding
>
(
fact
->
rawValue
().
toInt
()));
}
}
QGCVideoStreamInfo
*
pInfo
=
_activeVehicle
->
dynamicCameras
()
->
currentStreamInstance
();
if
(
pInfo
)
{
qCDebug
(
VideoManagerLog
)
<<
"Configure primary stream: "
<<
pInfo
->
uri
();
...
...
@@ -329,7 +336,7 @@ VideoManager::_updateSettings()
//-----------------------------------------------------------------------------
void
VideoManager
::
_
restartVideo
()
VideoManager
::
restartVideo
()
{
#if defined(QGC_GST_STREAMING)
qCDebug
(
VideoManagerLog
)
<<
"Restart video streaming"
;
...
...
@@ -350,13 +357,13 @@ VideoManager::_setActiveVehicle(Vehicle* vehicle)
if
(
pCamera
)
{
pCamera
->
stopStream
();
}
disconnect
(
_activeVehicle
->
dynamicCameras
(),
&
QGCCameraManager
::
streamChanged
,
this
,
&
VideoManager
::
_
restartVideo
);
disconnect
(
_activeVehicle
->
dynamicCameras
(),
&
QGCCameraManager
::
streamChanged
,
this
,
&
VideoManager
::
restartVideo
);
}
}
_activeVehicle
=
vehicle
;
if
(
_activeVehicle
)
{
if
(
_activeVehicle
->
dynamicCameras
())
{
connect
(
_activeVehicle
->
dynamicCameras
(),
&
QGCCameraManager
::
streamChanged
,
this
,
&
VideoManager
::
_
restartVideo
);
connect
(
_activeVehicle
->
dynamicCameras
(),
&
QGCCameraManager
::
streamChanged
,
this
,
&
VideoManager
::
restartVideo
);
QGCCameraControl
*
pCamera
=
_activeVehicle
->
dynamicCameras
()
->
currentCameraInstance
();
if
(
pCamera
)
{
pCamera
->
resumeStream
();
...
...
@@ -364,7 +371,7 @@ VideoManager::_setActiveVehicle(Vehicle* vehicle)
}
}
emit
autoStreamConfiguredChanged
();
_
restartVideo
();
restartVideo
();
}
//----------------------------------------------------------------------------------------
...
...
src/FlightDisplay/VideoManager.h
View file @
ace5e73b
/****************************************************************************
*
* (c) 2009-201
6
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-201
9
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
...
...
@@ -62,6 +62,7 @@ public:
double
thermalHfov
();
bool
autoStreamConfigured
();
bool
hasThermal
();
void
restartVideo
();
VideoReceiver
*
videoReceiver
()
{
return
_videoReceiver
;
}
VideoReceiver
*
thermalVideoReceiver
()
{
return
_thermalVideoReceiver
;
}
...
...
@@ -99,7 +100,6 @@ private slots:
void
_updateUVC
();
void
_setActiveVehicle
(
Vehicle
*
vehicle
);
void
_aspectRatioChanged
();
void
_restartVideo
();
private:
void
_updateSettings
();
...
...
src/VideoStreaming/VideoReceiver.cc
View file @
ace5e73b
This diff is collapsed.
Click to expand it.
src/VideoStreaming/VideoReceiver.h
View file @
ace5e73b
/****************************************************************************
*
* (c) 2009-201
8
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
* (c) 2009-201
9
QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
...
...
@@ -34,6 +34,13 @@ class VideoReceiver : public QObject
{
Q_OBJECT
public:
enum
VideoEncoding
{
H264_SW
=
1
,
H264_HW
=
2
,
H265_SW
=
3
,
H265_HW
=
4
};
#if defined(QGC_GST_STREAMING)
Q_PROPERTY
(
bool
recording
READ
recording
NOTIFY
recordingChanged
)
#endif
...
...
@@ -47,11 +54,7 @@ public:
~
VideoReceiver
();
#if defined(QGC_GST_STREAMING)
virtual
bool
running
()
{
return
_running
;
}
virtual
bool
recording
()
{
return
_recording
;
}
virtual
bool
streaming
()
{
return
_streaming
;
}
virtual
bool
starting
()
{
return
_starting
;
}
virtual
bool
stopping
()
{
return
_stopping
;
}
#endif
virtual
VideoSurface
*
videoSurface
()
{
return
_videoSurface
;
}
...
...
@@ -64,6 +67,8 @@ public:
virtual
void
setShowFullScreen
(
bool
show
)
{
_showFullScreen
=
show
;
emit
showFullScreenChanged
();
}
void
setVideoDecoder
(
VideoEncoding
encoding
);
signals:
void
videoRunningChanged
();
void
imageFileChanged
();
...
...
@@ -86,9 +91,7 @@ public slots:
protected
slots
:
virtual
void
_updateTimer
();
#if defined(QGC_GST_STREAMING)
virtual
void
_timeout
();
virtual
void
_connected
();
virtual
void
_socketError
(
QAbstractSocket
::
SocketError
socketError
);
virtual
void
_restart_timeout
();
virtual
void
_handleError
();
virtual
void
_handleEOS
();
virtual
void
_handleStateChanged
();
...
...
@@ -132,14 +135,11 @@ protected:
//-- Wait for Video Server to show up before starting
QTimer
_frameTimer
;
QTimer
_timer
;
QTcpSocket
*
_socket
;
bool
_serverPresent
;
int
_rtspTestInterval_ms
;
QTimer
_restart_timer
;
int
_restart_time_ms
;
//-- RTSP UDP reconnect timeout
uint64_t
_udpReconnect_us
;
#endif
QString
_uri
;
...
...
@@ -149,5 +149,8 @@ protected:
bool
_videoRunning
;
bool
_showFullScreen
;
VideoSettings
*
_videoSettings
;
const
char
*
_depayName
;
const
char
*
_parserName
;
const
char
*
_decoderName
;
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment