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
7d3cb138
Commit
7d3cb138
authored
9 years ago
by
Gus Grubba
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2133 from dogmaphobic/videoWork
Detect video stream.
parents
2583e66a
3a37fd25
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
90 additions
and
24 deletions
+90
-24
FlightDisplayView.qml
src/FlightDisplay/FlightDisplayView.qml
+0
-4
FlightDisplayViewController.cc
src/FlightDisplay/FlightDisplayViewController.cc
+33
-0
FlightDisplayViewController.h
src/FlightDisplay/FlightDisplayViewController.h
+15
-0
FlightDisplayViewVideo.qml
src/FlightDisplay/FlightDisplayViewVideo.qml
+33
-17
QGCVideoBackground.qml
src/FlightMap/QGCVideoBackground.qml
+4
-3
VideoSurface.cc
src/VideoStreaming/VideoSurface.cc
+2
-0
VideoSurface.h
src/VideoStreaming/VideoSurface.h
+3
-0
No files found.
src/FlightDisplay/FlightDisplayView.qml
View file @
7d3cb138
...
...
@@ -116,7 +116,6 @@ Item {
_flightMap
.
updateMapPosition
(
true
/* force */
)
}
else
{
_flightVideo
=
item
_flightVideo
.
visible
=
true
}
}
}
...
...
@@ -146,20 +145,17 @@ Item {
onLoaded
:
{
if
(
_mainIsMap
)
{
_flightVideo
=
item
_flightVideo
.
visible
=
true
}
else
{
_flightMap
=
item
_savedZoomLevel
=
_flightMap
.
zoomLevel
_flightMap
.
zoomLevel
=
_savedZoomLevel
-
3
}
pip
.
visible
=
_controller
.
hasVideo
}
}
MouseArea
{
anchors.fill
:
parent
onClicked
:
{
_mainIsMap
=
!
_mainIsMap
pip
.
visible
=
false
reloadContents
();
QGroundControl
.
saveBoolGlobalSetting
(
_mainIsMapKey
,
_mainIsMap
)
}
...
...
This diff is collapsed.
Click to expand it.
src/FlightDisplay/FlightDisplayViewController.cc
View file @
7d3cb138
...
...
@@ -34,6 +34,7 @@ const char* kMainFlightDisplayViewControllerGroup = "FlightDisplayViewController
FlightDisplayViewController
::
FlightDisplayViewController
(
QObject
*
parent
)
:
QObject
(
parent
)
,
_videoRunning
(
false
)
{
/*
* This is the receiving end of an UDP RTP stream. The sender can be setup with this command:
...
...
@@ -65,6 +66,8 @@ FlightDisplayViewController::FlightDisplayViewController(QObject *parent)
_videoReceiver
->
setUri
(
QLatin1Literal
(
"udp://0.0.0.0:5000"
));
#if defined(QGC_GST_STREAMING)
_videoReceiver
->
setVideoSink
(
_videoSurface
->
videoSink
());
connect
(
&
_frameTimer
,
&
QTimer
::
timeout
,
this
,
&
FlightDisplayViewController
::
_updateTimer
);
_frameTimer
.
start
(
1000
);
#endif
}
...
...
@@ -72,3 +75,33 @@ FlightDisplayViewController::~FlightDisplayViewController()
{
}
#if defined(QGC_GST_STREAMING)
void
FlightDisplayViewController
::
_updateTimer
(
void
)
{
if
(
_videoRunning
)
{
time_t
elapsed
=
0
;
if
(
_videoSurface
)
{
elapsed
=
time
(
0
)
-
_videoSurface
->
lastFrame
();
}
if
(
elapsed
>
2
)
{
_videoRunning
=
false
;
_videoSurface
->
setLastFrame
(
0
);
emit
videoRunningChanged
();
}
}
else
{
if
(
_videoSurface
&&
_videoSurface
->
lastFrame
())
{
if
(
!
_videoRunning
)
{
_videoRunning
=
true
;
emit
videoRunningChanged
();
}
}
}
}
#endif
This diff is collapsed.
Click to expand it.
src/FlightDisplay/FlightDisplayViewController.h
View file @
7d3cb138
...
...
@@ -25,6 +25,7 @@ This file is part of the QGROUNDCONTROL project
#define FlightDisplayViewController_H
#include <QObject>
#include <QTimer>
#include "VideoSurface.h"
#include "VideoReceiver.h"
...
...
@@ -42,15 +43,29 @@ public:
Q_PROPERTY
(
VideoSurface
*
videoSurface
MEMBER
_videoSurface
CONSTANT
);
Q_PROPERTY
(
VideoReceiver
*
videoReceiver
MEMBER
_videoReceiver
CONSTANT
);
Q_PROPERTY
(
bool
videoRunning
READ
videoRunning
NOTIFY
videoRunningChanged
)
#if defined(QGC_GST_STREAMING)
bool
hasVideo
()
{
return
true
;
}
#else
bool
hasVideo
()
{
return
false
;
}
#endif
bool
videoRunning
()
{
return
_videoRunning
;
}
signals:
void
videoRunningChanged
();
private:
void
_updateTimer
(
void
);
private:
VideoSurface
*
_videoSurface
;
VideoReceiver
*
_videoReceiver
;
bool
_videoRunning
;
#if defined(QGC_GST_STREAMING)
QTimer
_frameTimer
;
#endif
};
#endif
This diff is collapsed.
Click to expand it.
src/FlightDisplay/FlightDisplayViewVideo.qml
View file @
7d3cb138
...
...
@@ -34,22 +34,38 @@ import QGroundControl.Vehicle 1.0
import
QGroundControl
.
Controllers
1.0
QGCVideoBackground
{
anchors.fill
:
parent
display
:
_controller
.
videoSurface
receiver
:
_controller
.
videoReceiver
/* TODO: Come up with a way to make this an option
QGCAttitudeHUD {
id: attitudeHUD
visible: !_mainIsMap
rollAngle: _roll
pitchAngle: _pitch
width: ScreenTools.defaultFontPixelSize * (30)
height: ScreenTools.defaultFontPixelSize * (30)
active: multiVehicleManager.activeVehicleAvailable
z: QGroundControl.zOrderWidgets
Item
{
id
:
root
Rectangle
{
id
:
noVideo
anchors.fill
:
parent
color
:
"
black
"
visible
:
!
_controller
.
videoRunning
QGCLabel
{
text
:
"
NO VIDEO
"
font.weight
:
Font
.
DemiBold
color
:
"
white
"
font.pixelSize
:
ScreenTools
.
defaultFontPixelSize
*
1.5
anchors.centerIn
:
parent
}
}
QGCVideoBackground
{
anchors.fill
:
parent
display
:
_controller
.
videoSurface
receiver
:
_controller
.
videoReceiver
visible
:
_controller
.
videoRunning
runVideo
:
true
/* TODO: Come up with a way to make this an option
QGCAttitudeHUD {
id: attitudeHUD
visible: !_mainIsMap
rollAngle: _roll
pitchAngle: _pitch
width: ScreenTools.defaultFontPixelSize * (30)
height: ScreenTools.defaultFontPixelSize * (30)
active: multiVehicleManager.activeVehicleAvailable
z: QGroundControl.zOrderWidgets
}
*/
}
*/
}
This diff is collapsed.
Click to expand it.
src/FlightMap/QGCVideoBackground.qml
View file @
7d3cb138
...
...
@@ -35,10 +35,11 @@ VideoItem {
id
:
videoBackground
property
var
display
property
var
receiver
property
var
runVideo
:
false
surface
:
display
on
Visible
Changed
:
{
on
RunVideo
Changed
:
{
if
(
videoBackground
.
receiver
&&
videoBackground
.
display
)
{
if
(
videoBackground
.
visible
)
{
if
(
videoBackground
.
runVideo
)
{
videoBackground
.
receiver
.
start
();
}
else
{
videoBackground
.
receiver
.
stop
();
...
...
@@ -46,7 +47,7 @@ VideoItem {
}
}
Component.onCompleted
:
{
if
(
videoBackground
.
visible
&&
videoBackground
.
receiver
)
{
if
(
videoBackground
.
runVideo
&&
videoBackground
.
receiver
)
{
videoBackground
.
receiver
.
start
();
}
}
...
...
This diff is collapsed.
Click to expand it.
src/VideoStreaming/VideoSurface.cc
View file @
7d3cb138
...
...
@@ -39,6 +39,7 @@ VideoSurface::VideoSurface(QObject *parent)
:
QObject
(
parent
)
#if defined(QGC_GST_STREAMING)
,
_data
(
new
VideoSurfacePrivate
)
,
_lastFrame
(
0
)
#endif
{
}
...
...
@@ -68,6 +69,7 @@ GstElement* VideoSurface::videoSink() const
void
VideoSurface
::
onUpdate
()
{
_lastFrame
=
time
(
0
);
Q_FOREACH
(
QQuickItem
*
item
,
_data
->
items
)
{
item
->
update
();
}
...
...
This diff is collapsed.
Click to expand it.
src/VideoStreaming/VideoSurface.h
View file @
7d3cb138
...
...
@@ -54,6 +54,8 @@ public:
*/
#if defined(QGC_GST_STREAMING)
GstElement
*
videoSink
()
const
;
time_t
lastFrame
()
{
return
_lastFrame
;
}
void
setLastFrame
(
time_t
t
)
{
_lastFrame
=
t
;
}
#endif
protected:
...
...
@@ -66,6 +68,7 @@ private:
friend
class
VideoItem
;
#if defined(QGC_GST_STREAMING)
VideoSurfacePrivate
*
const
_data
;
time_t
_lastFrame
;
#endif
};
...
...
This diff is collapsed.
Click to expand it.
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