Merged in f5soh/librepilot/LP-575_fedora_package (pull request #491)
[librepilot.git] / ground / gcs / src / libs / gstreamer / videowidget.h
blob28c72edd26d07b0e4e7aaa415dd1e99f3a99de4a
1 /**
2 ******************************************************************************
4 * @file videogadgetwidget.h
5 * @author The LibrePilot Project, http://www.librepilot.org Copyright (C) 2017.
6 * @brief
7 * @see The GNU Public License (GPL) Version 3
8 * @defgroup
9 * @{
11 *****************************************************************************/
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License as published by
15 * the Free Software Foundation; either version 3 of the License, or
16 * (at your option) any later version.
18 * This program is distributed in the hope that it will be useful, but
19 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
20 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 * for more details.
23 * You should have received a copy of the GNU General Public License along
24 * with this program; if not, write to the Free Software Foundation, Inc.,
25 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27 #ifndef VIDEOWIDGET_H_
28 #define VIDEOWIDGET_H_
30 #include "gst_global.h"
31 #include "pipeline.h"
32 #include "overlay.h"
34 #include <QWidget>
35 #include <QResizeEvent>
36 #include <QPaintEvent>
37 #include <QMouseEvent>
39 typedef struct _GstElement GstElement;
41 class BusSyncHandler;
43 class GST_LIB_EXPORT VideoWidget : public QWidget {
44 Q_OBJECT
46 public:
47 VideoWidget(QWidget *parent = 0);
48 ~VideoWidget();
50 QString pipelineDesc();
51 void setPipelineDesc(QString pipelineDesc);
52 bool isPlaying();
54 public slots:
55 void start();
56 void pause();
57 void stop();
59 signals:
60 void message(QString);
61 void stateChanged(Pipeline::State oldState, Pipeline::State newState, Pipeline::State pendingState);
63 protected:
64 QString getStatus();
65 QString getStatusMessage();
66 void paintStatus(QPaintEvent *);
67 // QWidget overrides
68 void paintEvent(QPaintEvent *);
69 void resizeEvent(QResizeEvent *);
70 void mouseDoubleClickEvent(QMouseEvent *);
72 private:
73 void init();
74 void dispose();
75 void setOverlay(Overlay *);
77 void emitEventMessage(QString msg);
79 void toDotFile(QString name);
81 // QWidget overrides
82 bool event(QEvent *);
83 QPaintEngine *paintEngine() const;
85 QString m_pipelineDesc;
86 QString lastError;
87 GstElement *pipeline;
88 Overlay *overlay;
89 BusSyncHandler *handler;
91 // DeviceMonitor m;
94 #endif /* VIDEOWIDGET_H_ */