Commit graph

3548 commits

Author SHA1 Message Date
Niels De Graef
0314b482f3 Don't pass default GLib marshallers for signals
By passing NULL to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.

Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-08-27 07:31:57 +02:00
Mathieu Duponchelle
e0fadd6fdd docstrings: port ulinks to markdown links 2019-08-23 18:28:16 +02:00
Philippe Normand
8d122f21ad gl: New pushsrc-based glbasesrc base class
The gltestsrc element was refactored to inherit from this base class which
handles the GL context. The sub-class only needs to implement the gl_start,
gl_stop and fill_gl_memory vfuncs, along with properly advertizing the GL APIs
it supports through the supported_gl_api GstGLBaseSrc class attribute.
2019-08-20 09:51:05 +01:00
Mathieu Duponchelle
79c3304375 timeoverlay: chain up finalize
Mistakenly forgot to amend this in for !325
2019-08-07 20:18:34 +02:00
Mathieu Duponchelle
72eb7c6a74 timeoverlay: add a property to show times as dates
In this mode, buffer timestamps are displayed as an absolute date
since a user-specifiable epoch. The format is also specifiable as
a string property, that will be passed to g_date_time_format().
2019-08-06 02:09:44 +00:00
Matthew Waters
df7b189ecb gluploadelement: don't passthrough on same caps
If we do, then multiple disjoint OpenGL contexts will not perform the
necessary download and reupload of data that is necessary to cross between
each OpenGL context sharegroup.
2019-07-24 14:27:30 +10:00
Matthew Waters
f31b83bc86 glvideomixer: perform _get_highest_precision on the GL thread
gst_gl_shader_string_get_highest_precision needs to make an OpenGL call
so execution outside the OpenGL thread and context results in undefined
behaviour.
2019-06-13 09:37:37 +00:00
Matthew Waters
b596bf7cb7 glmosaic: port to opengl3/gles2
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/543
2019-06-13 09:37:37 +00:00
Thibault Saunier
ac5d0f7da6 alsa: Implement a DeviceProvider
Removing gstalsadeviceprobe.[ch] as it was a relique from the 0.10
century.

This doesn't implement device monitoring but only probing, monitoring
should be implemented in its own commit.
2019-06-04 14:07:37 +00:00
Mathieu Duponchelle
d3e983280b gstglfiltershader: don't try to link to "version" in doc 2019-05-25 17:26:52 +02:00
Mathieu Duponchelle
1c85065d16 doc: fix element section documentations
Element sections were not rendered anymore after the hotdoc
port, fixing this revealed a few incorrect links.
2019-05-25 16:55:57 +02:00
Matthew Waters
51f2d05ff6 gl/docs: add to new docs system 2019-05-21 01:49:48 +00:00
Georg Lippitsch
ed33011502 alsasrc: Don't use driver timestamp if it's zero
Some alsa interfaces don't provide timestamps and thus always set the timestamp to zero.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/453
2019-05-20 15:22:30 +03:00
Thibault Saunier
bd72ad601f Mark some properties as DOC_SHOW_DEFAULT 2019-05-13 11:34:08 -04:00
Thibault Saunier
287897e465 doc: Fix some gtk-doc comments 2019-05-13 11:34:08 -04:00
Thibault Saunier
27ba8d24ec doc: Port to hotdoc 2019-05-13 11:34:08 -04:00
Robert Rosengren
123c2f8b5d alsasrc: driver timestamps only to be considered if system clock
The system clock check when considering to use driver timestamp
should not include sub-classes of system clock (such as the net clocks).
2019-04-30 10:55:52 +02:00
Danny Smith
a4cde36476 alsasrc: added option for chosing timestamps
Added an option for chosing if driver or pipeline timestamps shall be
used.
2019-04-29 11:23:45 +02:00
Seungha Yang
e007710b59 gluploadelement: Fix caps leak
gst_event_new_caps() does not take ownership of the caps

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/885
2019-03-29 12:42:45 +09:00
Matthew Waters
6a37bf9bb9 gl: Don't restore the viewport on function exit
Doing so involves retrieving the current viewport from OpenGL which as
with any glGet operation, is expensive.

This means that the various sinks need to reset the viewport on draw.

In the process, fix resizing on cocoa.
2019-03-08 17:49:05 +11:00
Matthew Waters
4e13980e10 gl: fix a few other leaks when not getting to PAUSED 2019-03-07 02:01:09 +11:00
Matthew Waters
86aa568383 glcolorconvert: Ensure we free the internal convert object
If we only ever make it to READY, transform_caps can create an
internal convert object that will never be freed by basetransform's
stop vmethod (PAUSED->READY).
2019-03-06 23:32:18 +11:00
Tim-Philipp Müller
50aa1622e1 vorbisdec: fix leak of header buffers
handle_header_buffer() does no take ownership of
the buffer passed.

Fixes leaks in various unit tests.
2019-03-06 09:14:46 +00:00
Matthew Waters
675415bf2e gl: try to use highp precision where supported
The use of mediump as a specifier in GLSL shaders will have limited
resolution and when used as texture coordinates may become inaccurate
over texture sizes of 1024.
2019-02-28 17:26:32 +11:00
Nirbheek Chauhan
b5c44dd47e meson: Remove outdated msvc-specific disabling code
This was done ages ago when the meson build files were newly added
but now we do the appropriate disabling in Cerbero instead since this
does not apply to gst-build.

https://gitlab.freedesktop.org/gstreamer/cerbero/issues/121
2019-02-21 19:19:09 +05:30
Nicolas Dufresne
32d8ed7a86 glimagesink: Don't call set_property helper in get_property 2019-02-15 21:47:56 +00:00
Sebastian Dröge
33680a3800 glcolorbalance: Copy caps in transform_internal_caps()
We don't get ownership of the caps that are passed in, and doing so
causes crashes at a later time.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/546
2019-01-24 10:15:31 +02:00
Nicolas Dufresne
d64a4b7a69 Revert "alsa: Implement a DeviceProvider"
This reverts commit 69c3c31608.

All devices have the same name, they are duplicated with pulseaudio one
and the provided does not respond to HW being plugged/unplugged. I think
it's not ready for 1.16.
2019-01-18 11:39:02 -05:00
Thibault Saunier
69c3c31608 alsa: Implement a DeviceProvider
Removing gstalsadeviceprobe.[ch] as it was a relique from the 0.10
century.
2019-01-18 10:18:54 -03:00
Sebastian Dröge
acc098a736 gl: Only unbind buffers/vertex attrib arrays if we can't directly bind the vertex array to 0
Binding the vertex array to 0 will unbind everything else already.

In the previous order older versions of the Intel GL driver caused
errors to be printed for every single call when disabling the vertex
attrib arrays after binding the vertex array to 0.
2019-01-16 14:09:18 +02:00
Víctor Manuel Jáquez Leal
b1df1000b1 glsinkbin: validate property in internal sink
It might be the case that glgsinkbin would try to set a property to
its internal sink which doesn't exist in it, leading to a glib's
warning. For example, when playsink sets 'force-aspect-ratio' property
and glsinkbin has, as internal sink, appsink, which doesn't handle
that property.

The patch validates the incoming property to forward to internal sink
if it exists in the internal sink and both properties has the same
type.
2019-01-12 15:11:25 +01:00
Tim-Philipp Müller
4d603b00d7 Fix some typos in code comments
And don't use gtk-doc chunk markers for internal functions.
2019-01-11 11:27:11 +00:00
Andoni Morales Alastruey
a52ad2078a gl: fix build with more recent versions of MinGW 2019-01-07 10:17:25 +00:00
Tim-Philipp Müller
56688ce078 gl: build gl mixer elements, moved from -base 2018-12-28 12:16:25 +01:00
Tim-Philipp Müller
f11571f398 Move GstVideoAggregator, compositor and OpenGL mixers from -bad
Merge branch 'videoaggregator-compositor-glmixers-move'

Fixes #137 and #138.
2018-12-28 12:15:39 +01:00
Jan Alexander Steffens (heftig)
0bec36d5fa oggmux: Fix a maybe-uninitialized warning
Arch Linux, GCC 8.2.1+20181127, CFLAGS='-Og -g3'
2018-12-05 21:08:33 +00:00
Nicolas Dufresne
42a031edbe gldeinterlace: Indentation fix 2018-12-05 12:13:07 -05:00
Freyr666
7e92aa5bca opengl: gldeinterlace: remove interlace-mode from srcpad's caps
This fixes output caps format, so the output frames are not interlaced anymore
2018-11-30 02:09:50 +00:00
Philippe Normand
d5f2b5dcfa gltestsrc: Run context query only during decide_allocation
Running the context query in _start and during the NULL->READY state transition
can fail because downstream elements might not be able to answer and thus the
source element would not be able to reuse downstream GLContext and GLDisplay.

This issue happened specifically when trying to use gltestsrc in playbin.
2018-11-30 01:55:34 +00:00
Jordan Petridis
2229d53f60
Run gst-indent through the files
This is required before we enabled an indent test in the CI.

https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33
2018-11-28 05:51:53 +02:00
Michael Olbrich
b006ef97fc gluploadelement: try to avoid dropping buffers
Without this, a buffer is dropped if glupload indicates that it is
necessary to reconfigure.
Avoid this by explicitly reconfiguring immediately and uploading the buffer
again.

https://bugzilla.gnome.org/show_bug.cgi?id=783521
2018-10-30 12:25:08 +01:00
Sebastian Dröge
e0dee7f4c1 oggdemux: Answer POSITION query 2018-10-17 19:44:22 +03:00
Matthew Waters
a164d86804 Revert "Revert "gl: use correct blend functions for unpremultiplied alpha""
This reverts commit 452d90a88c.

This was actually correct. sorry for the noise!
2018-10-05 01:21:01 +10:00
Matthew Waters
89c14c955b glvideomixer: fix the default blend modes for unpremultipled alpha
Alpha in GStreamer is unpremultiplied
2018-10-05 01:18:59 +10:00
Matthew Waters
6e591403a7 glimagesink: make multiview none equivalent to mono
Fixes the internal viewconvert to not scale buffers for output with the
following pipeline:

gltestsrc ! glimagesink

It also fixes overlay composition with a resized output with an OpenGL
upstream:

gltestsrc ! timeoverlay ! glimagesink
2018-10-05 00:48:58 +10:00
Matthew Waters
452d90a88c Revert "gl: use correct blend functions for unpremultiplied alpha"
This reverts commit 779d028f27.
2018-10-05 00:03:09 +10:00
Matthew Waters
779d028f27 gl: use correct blend functions for unpremultiplied alpha
Fallback to the closest but incorrect values we had before if we can't
do this correctly.
2018-10-04 23:43:19 +10:00
Matthew Waters
d9992ba1b7 gl/meson: fix wrong overlay filename 2018-10-04 16:45:34 +10:00
Matthew Waters
2f88e2ae16 glmixerbin: add gloverlaycompositor to each input stream
Flattens the overlay compositions into the stream before the mixer will
mix them.

https://bugzilla.gnome.org/show_bug.cgi?id=759867
2018-10-04 14:32:14 +10:00
Matthew Waters
57f07fcbd4 glimagesink: only update the output info iff there's a valid display_rect
Attempting to use the MAX(1, display_rect) would result in the overlay
composition attempting to draw into 1x1 buffer and calculate some
grossly incorrect sizes.

previously failing case:
gltestsrc ! textoverlay text=GStreamer ! glimagesinkelement
2018-10-04 14:28:35 +10:00