Commit graph

441 commits

Author SHA1 Message Date
Julien Isorce
2fd84a6c86 gl: do not include GL headers in public gstgl headers
Except for gst/gl/gstglfuncs.h

It is up to the client app to include these headers.
It is coherent with the fact that gstreamer-gl.pc does not
require any egl.pc/gles.pc. I.e. it is the responsability
of the app to search these headers within its build setup.

For example gstreamer-vaapi includes explicitly EGL/egl.h
and search for it in its configure.ac.

For example with this patch, if an app includes the headers
  gst/gl/egl/gstglcontext_egl.h
  gst/gl/egl/gstgldisplay_egl.h
  gst/gl/egl/gstglmemoryegl.h
it will *no longer* automatically include EGL/egl.h and GLES2/gl2.h.
Which is good because the app might want to use the gstgl api only
without the need to bother about gl headers.

Also added a test: cd tests/check && make libs/gstglheaders.check

https://bugzilla.gnome.org/show_bug.cgi?id=784779
2017-08-22 10:00:19 +01:00
Tim-Philipp Müller
357fc8064a examples: fix compiler warning in compositor crossfade example
warning: control reaches end of non-void function
2017-08-03 20:21:17 +01:00
Thibault Saunier
9c575243e1 tests: examples: Add a simple crossfade example
https://bugzilla.gnome.org/show_bug.cgi?id=784827
2017-08-03 13:01:50 -04:00
George Kiagiadakis
e97877dc7e tests/examples: add manual tests/examples for the ipcpipeline elements
ipcpipeline1 is a very simple test that shows a short videotestsrc fragment.

ipc-play is a clone of gst-play that splits the pipeline in two
processes, running the source & demuxer on the master process
and the decoders & sinks on the slave.
2017-08-01 14:43:06 +03:00
Jan Schmidt
7ea366501b qmlsink example: Add CMakeLists.txt
Make it possible to build using cmake instead of qmake
2017-06-22 01:01:40 +10:00
Tim-Philipp Müller
624fe65f54 examples: gl: remove ancient bitrotten .vcproj files 2017-05-21 10:57:53 +01:00
Josep Torra
2c9b513695 examples: fix macOS 9.12 deprecation warnings
Add #defines to allow older versions of macOS to use the new constant names.
2017-05-20 12:41:51 +02:00
Nick Kallen
46bbc60d24 applemedia/gl: Update code to use ARC
All code interacting with Objective-C objects should now use Automated
Reference Counting rather than manual memory management or Garbage
Collection. Because ARC prohibits C-structs from containing
references to Objective-C objects, all such fields are now typed
'gpointer'. Setting and gettings Objective-C fields on such a
struct now uses explicit __bridge_* calls to tell ARC about
object lifetimes.

https://bugzilla.gnome.org/show_bug.cgi?id=777847
2017-03-07 13:37:07 +02:00
Edgard Lima
38ad22a7f1 Update Edgard Lima's email
https://bugzilla.gnome.org/show_bug.cgi?id=779230
2017-02-27 00:50:46 +00:00
Vivia Nikolaidou
fa47edf846 audiomixmatrix: New element that mixes audio channels
This element transforms a given number of input channels into a given number of
output channels according to a given transformation matrix. The matrix
coefficients must be between -1 and 1. In the auto mode, input/output channels
are automatically negotiated and the transformation matrix is a truncated or
zero-padded identity matrix.

https://bugzilla.gnome.org/show_bug.cgi?id=777376
2017-02-23 21:02:44 +02:00
Juan Pablo Ugarte
98997e9f79 gl/examples/gtk: fixed compilation on systems without GL_GEOMETRY_SHADER
https://bugzilla.gnome.org/show_bug.cgi?id=777143
2017-01-13 11:20:51 +11:00
Matthew Waters
de41d74e6f tests/examples/qmlsink: scope QApplication/Engine
So they are destroyed before gst_deinit() is run and the leaks tracer
doesn't show false-positives.

https://bugzilla.gnome.org/show_bug.cgi?id=775746
2016-12-07 23:02:02 +11:00
Garima Gaur
aa08be43c7 gst: Fix caps leak
https://bugzilla.gnome.org/show_bug.cgi?id=775072
2016-11-30 09:59:08 +02:00
Matthew Waters
5d22e0c8d0 examples/gl/qt: fix the examples for the use of newer API
gstgl doesn't undo/overwrite what GL state the examples are changing
anymore.  As such, the examples need to reset the GL state themselves
to be able to play nice with libgstgl
2016-11-08 15:14:27 +11:00
Matthew Waters
41a6448918 gl: GST_GL_TYPE -> GST_TYPE_GL
Some deprecated symbols are kept for backwards compatibility
2016-11-03 16:16:12 +11:00
Alistair Buxton
16d48770d1 gl/examples: Really remove references to $(GST_PLUGINS_GL_*).
These seem to have been missed in the previous commit to this file.

https://bugzilla.gnome.org/show_bug.cgi?id=771023
2016-09-08 09:45:56 +10:00
Matthew Waters
e6b93e18d3 gl/examples/fxtest: fix up for wayland support
- Pass the wayland display to gst
- Redrawing on resize is no longer needed.
2016-08-19 16:05:33 +10:00
Haihua Hu
65a3c35670 qmlglsrc: Add qmlglsrc unit test example
https://bugzilla.gnome.org/show_bug.cgi?id=768160
2016-08-03 22:11:11 +10:00
Sebastian Dröge
d6c173d038 qml: Don't forget to unref the actual sink element after setting it on glsinkbin 2016-07-22 17:00:14 +03:00
Sebastian Dröge
b10ab99e02 qml: Use glsinkbin instead of glupload directly 2016-07-22 16:57:45 +03:00
Martin Kelly
01d8b446a6 examples: opencv: typo fix
https://bugzilla.gnome.org/show_bug.cgi?id=766639
2016-05-19 09:18:43 +01:00
Matthew Waters
f9d03dd9c4 gl/examples: fix switchvideooverlay for wayland
and call XInitThreads() for X11
2016-03-31 20:53:18 +11:00
Matthew Waters
8fe5b198be gl/examples: remove duplicated videooverlay example
filtervideooverlay proved the exact same example (only with a extra glfiltercube).
2016-03-31 20:53:18 +11:00
Matthew Waters
14cf686e61 gl/examples/3d: additions for wayland support 2016-03-31 20:53:18 +11:00
Sebastian Dröge
10bc9a7efc gl/gtk: Fix compiler warning in example
fxtest.c: In function ‘main’:
fxtest.c:190:3: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
   GtkWidget *window;
   ^~~~~~~~~
2016-03-24 14:08:46 +02:00
Matthew Waters
df7016553e gl/examples/qt: restrict the GL API to opengl where needed
Until the examples are ported to opengl3/gles2, they will not work with any
other GL api.
2016-03-17 16:48:19 +11:00
Matthew Waters
0703c04414 gl/examples/gtk: call XInitThreads
Fixes some sporadic X11 threading assertions.
2016-03-17 16:34:05 +11:00
Matthew Waters
59da66f969 gl/examples/cube*: choose opengl by default
The examples don't work with any other GL API.

Also fix the yuv example to not translate the cube out of the clipping area.
2016-03-10 22:52:52 +11:00
Matthew Waters
bf6838d913 gl/examples/fxtest: add needed glupload to the pipeline
Fixes a negotiation failure in the example
2016-03-10 22:52:26 +11:00
Sebastian Dröge
dbefd2f8a8 gtk: examples: #define GST_USE_UNSTABLE_API and link with X11_LIBS
X11_LIBS is needed for XInitThreads() and without the #define we get
warnings about the GL API being still unstable.
2016-03-05 11:38:46 +02:00
Holger Kaelberer
0ae665e35c tests: fix warning in qml example
https://bugzilla.gnome.org/show_bug.cgi?id=756082
2016-02-01 13:55:05 +11:00
Sebastian Dröge
0b5387b96c clutter: Fix compilation error in GL examples
Include gst/gl.h instead of specific headers to prevent such problems also in
the future.

In file included from ../../../../gst-libs/gst/gl/gl.h:47:0,
                 from ../../../../gst-libs/gst/gl/gstglbasememory.h:137,
                 from ../../../../gst-libs/gst/gl/gstglmemory.h:29,
                 from cluttershare.c:39:
../../../../gst-libs/gst/gl/gstglmemorypbo.h:51:20: error: field ‘mem’ has incomplete type
   GstGLMemory      mem;
                    ^
../../../../gst-libs/gst/gl/gstglmemorypbo.h:124:24: error: field ‘parent’ has incomplete type
   GstGLMemoryAllocator parent;
                        ^
../../../../gst-libs/gst/gl/gstglmemorypbo.h:134:29: error: field ‘parent_class’ has incomplete type
   GstGLMemoryAllocatorClass parent_class;
                             ^
2015-12-14 09:38:41 +01:00
George Kiagiadakis
1c8e2f3497 tests: put the waylandsink example window.ui file in EXTRA_DIST 2015-11-22 13:11:48 +01:00
George Kiagiadakis
0b97b89575 tests: fix linking waylandsink example with the gstwayland library
First, use top_builddir, otherwise it fails in out-of-source builds.
Second, link to the libtool archive directly to let make understand
the dependency.
2015-11-22 13:08:35 +01:00
Reynaldo H. Verdejo Pinochet
86ec812429 Remove unnecessary NULL checks before g_free()
g_free() is NULL-safe
2015-11-18 16:05:42 -08:00
George Kiagiadakis
3eeec2836a tests/examples: add a waylandsink example
https://bugzilla.gnome.org/show_bug.cgi?id=748322
2015-11-18 13:10:45 +01:00
Sebastian Dröge
5c8ebb4ada mxfdemux-structure: Sync fakesink state with the bin to make the application work at all 2015-10-21 19:54:15 +03:00
Matthew Waters
b9e1cd3732 glshaderelement: implement on-demand create-shader signalling
One may not have an GstGLContext available or current in the thread where one
would need to update the shader.  Support this by signalling create-shader
whenever the one-shot 'update-shader' is set to TRUE.
2015-10-17 16:10:41 +11:00
Matthew Waters
f0a0fcb0bf gl/examples: add a live shader demo using the new GstGLSLStage
Implemented with videotestsrc ! glshader ! glupload ! gtkglsink

Errors on an invalid shader compilation are ignored however any error
provided by the glsl compiler is printed to stdout.
2015-10-17 01:10:47 +11:00
Vineeth TM
8c9ca808af gstreamer: bad: Fix memory leaks when context parse fails
When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.

And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.

https://bugzilla.gnome.org/show_bug.cgi?id=753854
2015-10-02 17:24:35 +03:00
Arnaud Vrac
697f117ddd configure.ac: fix build when the uvch264 plugin is not selected
Instead of checking for the gstreamer-video-1.0 package is installed,
just assume it is since we already check for the -base dependency.

With this replace the GST_VIDEO_* variables in makefiles and directly
link with libgstvideo.

https://bugzilla.gnome.org/show_bug.cgi?id=753820
2015-08-19 16:52:03 +03:00
Luis de Bethencourt
64513a60e9 examples: facedetect: add silent option
By default the example floods the screen with the detected face values.
Add an option to avoid this for frail terminals.
2015-08-17 23:44:47 +01:00
Luis de Bethencourt
29786be80f examples: facedetect: only create variables when needed
The variables to store face values are only needed if they will be used to
control the volume. Which isn't the default to avoid potentially being very
loud accidentally. Only create variables when needed.
2015-08-10 19:09:52 +01:00
Luis de Bethencourt
53a9374eb5 examples: facedetect: make volume control optional 2015-08-10 18:58:55 +01:00
Luis de Bethencourt
c895f3f3b3 examples: facedetect: only set to playing when it's not already 2015-08-08 13:19:47 +01:00
Luis de Bethencourt
d7fbb72c72 examples: opencv: remove unnecessary setting of a property
"/dev/video0" is the default device of v4l2src, setting it to this is
redundant.
2015-08-08 12:52:38 +01:00
Vanessa Chipirrás
02b9daafdf facedetect: Add unit test
I created four utilities of the detected features:
1- If you hide your mouth, the volume of video is low.
2- If you hide the nose, the volume of the video is up.
3- If you hide the full face, the video stops.

You can see proof of this here:
https://www.youtube.com/watch?v=pxzejNKV_WQ

https://bugzilla.gnome.org/show_bug.cgi?id=748377
2015-07-31 17:43:56 +01:00
Matthew Waters
769fffa3d9 new qt5 qml GL video sink
Very much in the same spirit as the Gtk GL sink

Two things are provided
1. A QQuickItem subclass that renders out RGBA filled GstGLMemory
   buffers that is instantiated from qml.
2. A sink element that will push buffers into (1)

To use
1. Declare the GstGLVideoItem in qml with an appropriate
   objectName property set.
2. Get the aforementioned GstGLVideoItem from qml using something like

QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

QObject *rootObject = engine.rootObjects().first();
QQuickItem *videoItem = rootObject->findChild<QQuickItem *> ("videoItem");

3. Set the videoItem on the sink

https://bugzilla.gnome.org/show_bug.cgi?id=752185
2015-07-10 15:25:26 +10:00
Tim-Philipp Müller
e7512329ca examples: move vp8 parser test to codecparser example directory 2015-06-21 11:51:38 +01:00
Tim-Philipp Müller
82be4ad395 examples: add small jpeg codecparser test
https://bugzilla.gnome.org/show_bug.cgi?id=673925
2015-06-21 11:34:39 +01:00
Jan Schmidt
3ea9f51dd7 3dvideo: Add simple gtk example stereoscopic video player
https://bugzilla.gnome.org/show_bug.cgi?id=611157
2015-06-19 01:49:33 +10:00
Matthew Waters
f600a8ac9a gl/examples: update qt examples for api changes 2015-06-15 16:47:15 +10:00
Nirbheek Chauhan
f8137dd8a6 examples: playout: Add better help text
This should help people figure out how to use the example a bit better
2015-06-12 21:15:03 +01:00
Nirbheek Chauhan
4d42704312 examples: playout: Decrement the currently-playing counter correctly
Only do that when we're removing an item that was playing, otherwise we'll mess
things up while trying to edit the play queue (playlist).
2015-06-12 21:14:57 +01:00
Nirbheek Chauhan
5da10b4f57 playout: New example for seamless audio/video playback
An example app that takes video URIs as command line arguments and switches
between them seamlessly one after the other using compositor and audiomixer.
Both audio-video and video-only media files are valid inputs, but mixing files
of both types in a single invocation is cumbersome to support, and hence does
not work. The example attempts to keep the audio stream moving along perfectly,
and duplicates video frames where necessary to cover gaps in the video
timestamps using the 'ignore-eos' videoaggregator pad property.

Ensuring seamless (and mostly-glitch-free) switching is harder than it sounds,
and hence the example contains plenty of pad probes and running time
calculations to make things work.

The GPtrArray play_queue contains items that are being played back, have been
prepared for playback, and will be played back in the future. The queue itself
is mutable besides the first two items (playing and prepared). The item that has
been prepared should not be edited or removed since it has been prepared in
advance to be activated immediately on the current item's EOS.

The example also has support for switching to the next item in the queue
prematurely; see the --switch-after/-s flag to the application.

Note: the output video is hard-coded at 1280x720, and input video is scaled as
needed to fit this size. Set OUTPUT_VIDEO_WIDTH/HEIGHT to change this.

https://bugzilla.gnome.org/show_bug.cgi?id=748947
2015-06-12 20:32:25 +01:00
Nicolas Dufresne
0c647ec8a7 gstgtk: No need to realize the widget
The widget already does that.
2015-06-11 12:41:49 -04:00
Nicolas Dufresne
1f9bdcad87 gstgtk: Don't leak the widget
g_object_get() returns a ref, gtk_container_add() only ref_sink().
That mean we still need to unref afterward. This leak was hiding
a reference bug previously present.
2015-06-11 12:41:49 -04:00
Sebastian Dröge
b9d8d83ca4 gtk: Add missing CFLAGS to example 2015-06-11 14:58:27 +02:00
Matthew Waters
23fb666dd7 Implement gtk sinks
two sinks are provided.  gtksink which is a cairo/software based renderer
and gtkglsink which utilises the GL support in gtk and gstreamer.
2015-06-11 22:01:03 +10:00
Julien Isorce
6d04b62e85 gl/example: fix build error when compiling cocoa-videooverlay
libtool: error: ignoring unknown tag OBJC
and
clang: error: argument unused during compilation: '-pthread'
2015-06-04 08:04:13 +01:00
Luis de Bethencourt
16f61e7b2d examples: gst-camerabin2-test: protect from division by zero
Highly unlikely to have 0 captures, but protect from crashes in the future by
doing none of the math if there is no data.
2015-06-03 14:58:13 +01:00
Edward Hervey
5fe88f7ed7 examples: Fix gl usage without wayland support
Not all platforms have wayland support. Handle that gracefully at
compile time
2015-06-01 14:05:06 +02:00
Matthew Waters
5f0c006a82 gl/examples: update gtk examples for glupload 2015-05-31 16:09:34 +10:00
Matthew Waters
21cbf763b0 gl/examples: update gtk examples for wayland 2015-05-31 16:09:34 +10:00
Matthew Waters
349685ad27 tests/gl/gtk: implement setting a wayland display/surface 2015-05-31 16:04:13 +10:00
Jan Schmidt
cdff13e07b Fix flags order in GL examples for uninstalled build 2015-05-21 13:42:35 +10:00
Thiago Santos
cb56a6b32b examples: gst-camera: add zoom property to UI
Add a slider to modify the zoom in camerabin
2015-04-27 21:14:09 -03:00
Thiago Santos
31b1348559 examples: gst-camera: remove widgets deprecated in GTK3.0
VBox and HBox are now simply Box
2015-04-27 21:14:09 -03:00
Thiago Santos
a1a58d438f examples: gst-camera: update to GTK3
When opening the .ui file it complains about being for GTK 2 and
automatically updates it to GTK3. Commit this version and update
the makefile
2015-04-27 21:14:09 -03:00
Tim-Philipp Müller
0ff70da6bc examples: motioncells: remove GPL3 code we don't need
If 95% of the code of an example app consists of GObject
code, maybe that's defeating the point a little. So just
remove a lot of that and trim down the example to the
absolute minimum. Also removes the last remaining GPL3
licensed code in -bad.
2015-04-25 13:44:01 +01:00
Tim-Philipp Müller
b800bba76a examples: motioncells: simplify property setting 2015-04-25 13:44:01 +01:00
Tim-Philipp Müller
d531f908e5 examples: motioncells: port to 1.x 2015-04-25 13:44:01 +01:00
Robert Jobbagy
0f4ecf52ad examples: motioncells: relicense opencv example to LGPLv2 2015-04-25 13:43:54 +01:00
Matthew Waters
199f9bd194 gl/examples: fixup generic cube example for NDC
translating outside the clip region doesn't work
2015-03-14 18:12:38 +00:00
Julien Isorce
7dd3a2ec9e gl/examples: add sdlshare2 that uses glimagesink to output textures
https://bugzilla.gnome.org/show_bug.cgi?id=739681
2015-03-14 17:56:39 +00:00
Julien Isorce
0150255a46 glimagesink: provide GstSample in client-draw signal
Instead of prividing texture and size directly.
And apply changes to examples.

https://bugzilla.gnome.org/show_bug.cgi?id=739681
2015-03-14 17:56:21 +00:00
Julien Isorce
94d4ae1840 sdlshare: use glupload and unmap frame 2015-03-14 17:42:40 +00:00
Julien Isorce
5667d34182 examples: initialize NSApp at the beginning 2015-03-14 08:37:52 +00:00
Matthew Waters
e505f6257c applemedia: new AVSampleBufferLayerSink
Renders buffers using the CALayer subclass AVSampleBufferDisplayLayer
which can be placed inside a Core Animation render tree.
2015-02-24 19:12:10 +11:00
Luis de Bethencourt
59db1789cf mxf-example: don't quit on Warning
Don't quit on Warning.
Print out a message when there is an Error or Warning.
2015-02-21 18:56:23 +00:00
Luis de Bethencourt
40b5f02dc6 mxf-example: always show gtk window
Show gtk window even when there are no tags, to always have visual feedback
about the pipeline running.
2015-02-21 18:56:23 +00:00
Luis de Bethencourt
d240c98225 mxf-example: merge returns in g_value_to_string() 2015-02-21 18:56:23 +00:00
Luis de Bethencourt
7d058c8523 mxf-example: make bus_callback consistent
Simplify the bus_callback to make it consisten with other examples.
2015-02-21 18:56:04 +00:00
Luis de Bethencourt
4e45b86ed8 mxf-example: fix usage of argc and argv 2015-02-21 17:18:02 +00:00
Luis de Bethencourt
9454e42db0 camerabin examples: remove unneeded variable
ret is only used once, we don't need to store it in a variable for that.
2015-02-21 17:02:18 +00:00
Song Bing
629b350806 camerabin examples: memory leak in camerabin examples code
should unref caps after set to profile. profile will ref it.

https://bugzilla.gnome.org/show_bug.cgi?id=744219
2015-02-10 15:48:26 -03:00
Song Bing
2d0e6d96c6 camerabin examples: memory leak in camerabin examples code
should unref after set object. The object will be refed when set
property.

https://bugzilla.gnome.org/show_bug.cgi?id=744219
2015-02-10 15:48:26 -03:00
Matthew Waters
bf87ac8cbe gl/qt/examples: update for NSOpenGL -> CGL change 2015-01-23 16:12:24 +11:00
Matthew Waters
996f193547 gl/examples: fixup sdl example for gluPerspective removal 2014-12-11 19:41:23 +11:00
Thijs Vermeir
6215b5dd14 gl/cocoa: Fix example on Mac OS X 10.10
Using NSApp directly seems to confuse something, as the compiler
was expecting an id<NSFileManagerDelegate>. Switched to using
[NSApplication sharedApplication], and specified the delegate
protocol on the window class as well.

Similar to https://bugzilla.gnome.org/show_bug.cgi?id=738740
2014-12-01 10:59:32 +01:00
Matthew Waters
6bd1150ca8 gl: remove the use of glu 2014-11-28 09:14:26 +11:00
Sreerenj Balachandran
b8a2f46a88 examples: relicense opencv gsthanddetect_test to LGPLv2+
The GPL3 license header was copy'n'pasted from a
neighbouring source file by mistake, the original
code was not GPL3 licensed, but fell under the
default GStreamer license, which is LGPLv2+.

https://bugzilla.gnome.org/show_bug.cgi?id=685655
2014-11-17 09:20:19 +00:00
Hyunjun Ko
fec8d4e7b2 opencv-example: Use g_snprintf instead of sprintf
https://bugzilla.gnome.org/show_bug.cgi?id=739846
2014-11-17 00:47:28 +00:00
Sebastian Dröge
13c8517570 gl/cocoa: Remove GNUStep support
Until gcc and GNUStep properly support Objective-C blocks and other
"new" features of Objective-C we can't properly support them without
making the code much more ugly.

https://bugzilla.gnome.org/show_bug.cgi?id=739152
2014-11-13 12:01:19 +01:00
Tim-Philipp Müller
f07de37ad1 examples: remove pointless mpegtsmux example
Serves no purpose, is not even hooked up to the
build system, has hard coded file names and paths,
and can easily be replaced with a gst-launch line.

https://bugzilla.gnome.org/show_bug.cgi?id=739844
2014-11-09 19:25:39 +00:00
Matthew Waters
c1f3cc9f1c gl/examples: update for other-context property removal 2014-10-30 18:58:50 +11:00
Jan Schmidt
37c70c8efa examples: Fix Qt/GL qglwtextureshare example for X11
We need to pass the X11 display to GstGL or else it will
use its own X11 Display pointer, and the GL Context won't get shared
correctly on newer X servers
2014-09-29 00:39:07 +10:00
Jan Schmidt
0fd0683996 examples: port GL/Qt examples to Qt5
Update the GL Qt integration examples for Qt5 changes and for GstGL
signal signature changes.
2014-09-29 00:39:07 +10:00
Matthew Waters
62507bb089 examples/gl: update for signal signature change 2014-09-28 20:37:04 +10:00
Matthew Waters
505243aa8d examples/gl/gtk: use the sync bus callback to set the window handle
And output error messages.
2014-09-22 12:03:12 +10:00