• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

cmake/modules/H08-Jul-2014-1,2751,059

codegen/H03-May-2022-756554

docs/design/H08-Jul-2014-

elements/gstqtvideosink/H03-May-2022-5,9524,136

examples/H03-May-2022-2,7232,003

src/H03-May-2022-19,15712,042

tests/H03-May-2022-4,9703,688

COPYINGH A D08-Jul-201425.9 KiB511422

Doxyfile.inH A D08-Jul-201464.7 KiB1,5681,126

HACKINGH A D08-Jul-20146.7 KiB171126

NEWSH A D08-Jul-20144 KiB10184

READMEH A D08-Jul-20148.2 KiB202154

README

11. About
2--------
3
4QtGStreamer is a set of libraries and plugins providing C++ bindings for
5GStreamer [1] with a Qt-style API plus some helper classes for integrating
6GStreamer better in Qt [2] applications.
7
8Currently, it consists of the following parts:
9 * QtGLib           - Library providing C++/Qt bindings for parts of the GLib
10                      and GObject APIs, a base on which QtGStreamer is built.
11 * QtGStreamer      - Library providing C++/Qt bindings for GStreamer
12 * QtGStreamerUi    - Library providing integration with QtWidgets. Currently,
13                      it only provides a video widget that embeds GStreamer's
14                      video sinks.
15 * QtGStreamerUtils - Library providing some high level utility classes.
16 * QtGStreamerQuick - Library providing integration with QtQuick (Qt5 only).
17
18In addition, it provides GStreamer elements for painting video on Qt surfaces:
19 * qwidgetvideosink  - For painting on QWidgets
20 * qtvideosink       - For painting on any surface with QPainter
21 * qtglvideosink     - For painting on any surface with QPainter and OpenGL
22 * qtquick2videosink - For painting on QtQuick2 surfaces (Qt5 only)
23
24[1]. http://gstreamer.freedesktop.org/
25[2]. http://qt-project.org/
26
272. Building
28-----------
29
302.1 Dependencies
31----------------
32
33QtGStreamer requires the following software to be installed in order to build:
34 * CMake 2.8.9 or later <http://www.cmake.org/>
35 * GStreamer 1.0.0 or later <http://gstreamer.freedesktop.org/>
36   With its dependencies:
37   - Glib / GObject <http://www.gtk.org/>
38   and including gstreamer-plugins-base (1.0.0 or later)
39 * Qt4 or Qt5 (4.7 or later / 5.0 or later) <http://qt-project.org/>
40 * Boost 1.39 or later <http://www.boost.org/>
41 * Flex (only if QTGSTREAMER_CODEGEN=ON, see below) <http://flex.sourceforge.net/>
42 * Bison (only if QTGSTREAMER_CODEGEN=ON, see below) <http://www.gnu.org/software/bison/>
43
44In addition, if gcc is used as the compiler, libstdc++ version 4.5 or later is
45required at runtime. This is due to a bug in earlier versions of libstdc++ that
46sometimes makes dynamic_cast fail under conditions where it should not.
47
482.2 Compiler
49------------
50
51Note: This paragraph is outdated. It was written at a time where C++11 support
52was not very widespread among compilers. Nowadays, any C++11 capable compiler
53should work fine.
54
55A decent compiler with proper support for advanced templates, including features
56such as partial template specialization, is required. QtGStreamer can also make
57use of C++0x features (see below for details). A compiler supporting at least
58some of them is recommended. Currently, only the GNU C++ compiler (g++) version
594.5 or later is known to support all the features that QtGStreamer uses. However,
60other compilers can be used too, but with some limitations.
61
62C++0x features in use:
63 * static_assert(). Used to show nice error messages when the programmer is trying
64   to use some template in the wrong way. If not present, the templates will still
65   fail to compile if used in the wrong way, but the error messages may be quite
66   weird to understand...
67 * Variadic templates together with rvalue references. Used to support connecting
68   and emitting GObject signals with any number of arguments. If not available, a
69   hack-ish implementation using boost's preprocessor library, boost::function and
70   boost::bind is used to provide support for up to 9 arguments.
71
722.3 Procedure
73-------------
74
75The build procedure is simple:
76
77$ mkdir build && cd build
78$ cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/installation/prefix
79$ make
80$ make install
81
82Other options that can be passed to cmake include:
83
84* -DCMAKE_BUILD_TYPE=[Debug|Release|RelWithDebInfo|MinSizeRel]
85  Allows you to specify the type of the build. This is a standard
86  cmake option, see the cmake man page for details.
87
88* -DQT_VERSION=[4|5]
89  Allows you to specify the Qt version that you want to build against.
90  The default is 4.
91
92* -DQTGSTREAMER_STATIC=[ON|OFF]
93  Allows you to choose whether to build static or dynamic libraries.
94  ON means static, OFF means dynamic.
95
96* -DQTGSTREAMER_EXAMPLES=[ON|OFF]
97  Allows you to choose whether to build the examples shipped with QtGStreamer or not.
98  Note that the examples can also be built independently outside the source tree.
99
100* -DQTGSTREAMER_TESTS=[ON|OFF]
101  Allows you to choose whether to build tests or not.
102
103* -DQTGSTREAMER_CODEGEN=[ON|OFF]
104  Allows you to choose whether to build and use the QtGStreamer code generator or not.
105  This code generator generates some extra code based on the QtGlib/QtGStreamer
106  headers. This extra code is required, but it is also shipped in the source tree,
107  so it is not necessary to regenerate it, unless you are developing QtGStreamer and
108  you are making changes to the headers. If you are crosscompiling, you should make
109  sure to turn this feature off, since this will compile codegen for the target
110  architecture and then try to run it, which will fail.
111
112* -DUSE_GST_PLUGIN_DIR=[ON|OFF]
113  Allows you to choose whether to install plugin together with the rest of the
114  gstreamer plugins or whether to install them in the same prefix as QtGStreamer.
115  You will probably want to set this to OFF if you are installing in a prefix
116  different than GStreamer (say somewhere in $HOME) while GStreamer is installed
117  in a system location and you don't want to gain root privileges to do "make install".
118
119* -DUSE_QT_PLUGIN_DIR=[ON|OFF]
120  Same as USE_GST_PLUGIN_DIR, but for Qt (QML) plugins.
121
122* -DGST_PACKAGE_NAME="some string"
123  Allows you to specify the name that gst-inspect will show as the "Binary package"
124  name for all the element plugins that are build from this source package.
125
126* -DGST_PACKAGE_ORIGIN="http://some.url"
127  Allows you to specify the url that gst-inspect will show as the "Origin URL"
128  for all the element plugins that are build from this source package.
129
1302.4 Parallel installation
131-------------------------
132
133QtGStreamer can be built both with Qt4 and Qt5. Installing both versions in
134parallel is possible, since all the libraries, directories and plugins are
135named differently.
136
137Parallel installation is also possible, to a certain extent, between the
138GStreamer-0.10 based version and the GStreamer-1.0 based version. The libraries
139and the GStreamer plugins are co-installable, however the QML plugins as well
140as the headers are NOT.
141
1422.5 Generating documentation
143----------------------------
144
145QtGStreamer uses doxygen for documentation. To generate the documentation you need
146to install doxygen and run "make doc" after you have run cmake. This will generate
147the documentation in <builddir>/doc/html/.
148
1492.6 Running tests
150-----------------
151
152QtGStreamer comes with a suite of automatic unit tests that ensure QtGStreamer
153is working properly. To run them you will need ctest, a tool that comes with cmake,
154plus some gstreamer plugins from the base and good sets.
155
156To run them, simply invoke "make test" or "ctest" in the build directory.
157For advanced usage, refer to the ctest manual page.
158
1592.7 Checking build system integrity
160-----------------------------------
161
162In order to check if the installed build system files (QtGStreamerConfig.cmake,
163pkg-config files, etc) are correct and usable externally, you can run:
164
165$ make examples_distcheck
166
167This checks compilation of the examples with both cmake and qmake.
168
169Note that you should also set your environment accordingly for cmake and qmake
170to be able to find QtGStreamer. For example, on my debian system where I have
171installed the Qt5 version of QtGStreamer in /home/gkiagia/install, I would
172have to do:
173
174$ export QT_SELECT=5            # for debian's qmake wrapper to work with Qt5
175$ export PKG_CONFIG_PATH=/home/gkiagia/install/lib/x86_64-linux-gnu/pkgconfig/
176$ export CMAKE_PREFIX_PATH=/home/gkiagia/install/
177$ make examples_distcheck
178
1793. Links & Contact information
180------------------------------
181
182Web:
183    http://gstreamer.freedesktop.net
184    http://gstreamer.freedesktop.org/wiki/QtGStreamer
185
186Mailing list:
187    mailto:gstreamer-devel@lists.freedesktop.org
188
189Irc channels:
190    irc://irc.freenode.net/gstreamer
191    irc://irc.freenode.net/qtgstreamer
192
193Git repository:
194    http://cgit.freedesktop.org/gstreamer/qt-gstreamer/
195
196Bugs, feature requests & patches should be sent at:
197    https://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer&component=qt-gstreamer
198
199--
200George Kiagiadakis <george.kiagiadakis@collabora.com>
201Last updated: Jun 24, 2014
202