platform/upstream/gstreamer.git
6 years agogluploadelement: try to avoid dropping buffers
Michael Olbrich [Wed, 4 Jul 2018 07:29:57 +0000 (09:29 +0200)]
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

6 years agoglupload: handle upload methods with different caps
Michael Olbrich [Wed, 4 Jul 2018 07:21:00 +0000 (09:21 +0200)]
glupload: handle upload methods with different caps

If a upload method is selected then use it exclusively in transform_caps().
Also, reconfigure if the current caps don't match the current upload
method.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglupload: allow system memory for dmabuf in transform_caps
Michael Olbrich [Thu, 5 Jul 2018 13:17:30 +0000 (15:17 +0200)]
glupload: allow system memory for dmabuf in transform_caps

This should not be necessary, but currently not all plugins that provide
dmabuf memory announce this with caps features, e.g. v4l2.
The static caps already contain the system memory. It didn't break before
because other upload methods provide the necessary transformation.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglupload: try to use the last method after reconfigure
Michael Olbrich [Wed, 4 Jul 2018 07:17:11 +0000 (09:17 +0200)]
glupload: try to use the last method after reconfigure

Reconfigure will trigger a set_caps which clears the upload method.
Remember the method in this case and start with it.
Wrap around once to try all methods if necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agogl/egl: Add gst_egl_image_from_dmabuf_direct() function
Michael Olbrich [Tue, 30 Oct 2018 11:25:02 +0000 (12:25 +0100)]
gl/egl: Add gst_egl_image_from_dmabuf_direct() function

The colorspace conversion happens during the upload so the necessary hints
must be provided to ensure that the conversion works correctly.

At least the Mesa Intel driver will create a texture without error but
produces an incorrect result. Use eglQueryDmaBufModifiersEXT() to check if
non-external upload is supported for the given format.

Based on a patch from Carlos Rafael Giani <dv@pseudoterminal.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglmemory: Fix n_wrapped_pointers usage
Nicolas Dufresne [Wed, 7 Jun 2017 16:00:08 +0000 (18:00 +0200)]
glmemory: Fix n_wrapped_pointers usage

gst_gl_memory_setup_buffer() was not properly using the number
of pointers to wrapped. This also fixes the validation, as we
only support 1 wrapper per view, or num_planes * views wrapper.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agooverlaycomposition: Fix implicit use of memset
Johan Bjäreholt [Mon, 29 Oct 2018 08:18:35 +0000 (09:18 +0100)]
overlaycomposition: Fix implicit use of memset

https://bugzilla.gnome.org/show_bug.cgi?id=797353

6 years agooverlaycomposition: Add plugin inspect file
Sebastian Dröge [Sun, 28 Oct 2018 17:41:38 +0000 (17:41 +0000)]
overlaycomposition: Add plugin inspect file

6 years agoexamples: overlaycomposition: Fix Meson build
Philippe Normand [Sun, 28 Oct 2018 17:21:08 +0000 (17:21 +0000)]
examples: overlaycomposition: Fix Meson build

6 years agooverlaycomposition: New element that allows applications to draw GstVideoOverlayCompo...
Sebastian Dröge [Mon, 1 Oct 2018 15:10:34 +0000 (18:10 +0300)]
overlaycomposition: New element that allows applications to draw GstVideoOverlayComposition on a stream

https://bugzilla.gnome.org/show_bug.cgi?id=797234

6 years agoparsebin: Add missing locks/unlocks of the chain mutex
Sebastian Dröge [Wed, 8 Aug 2018 15:35:08 +0000 (17:35 +0200)]
parsebin: Add missing locks/unlocks of the chain mutex

Before freeing pending pads it is required to hold the mutex, that's
what is protecting the list of pending pads in other places.

https://bugzilla.gnome.org/show_bug.cgi?id=796935

6 years agotests: Solidify tcp connection check
Edward Hervey [Sat, 27 Oct 2018 13:48:13 +0000 (15:48 +0200)]
tests: Solidify tcp connection check

The previous failure was a timeout which was due to the sending pipeline
pushing test buffer *before* the remote client was accepted. We would
therefore never get the buffer on the other side.

While the client socket would indeed appear as "connected", this doesn't
mean that the remote server side did "accept" it (which is where we then
add it to the list of remote parties to which data will be sent).

The problem isn't with the element implementation, but to the nature of
TCP 3-way handshake.

In order to make the test reliable, wait for the sink to have accepted
the remote client (by checking the number of handles) before sending out
test buffers.

6 years agodecodebin3: fix eos event leak
Roland Jon [Tue, 24 Jul 2018 10:40:36 +0000 (18:40 +0800)]
decodebin3: fix eos event leak

https://bugzilla.gnome.org/show_bug.cgi?id=796860

6 years agooggdemux: Answer POSITION query
Sebastian Dröge [Wed, 17 Oct 2018 16:43:51 +0000 (19:43 +0300)]
oggdemux: Answer POSITION query

6 years agomeson: Replace empty configuration_data() with copy keyword
Seungha Yang [Thu, 27 Sep 2018 12:21:14 +0000 (21:21 +0900)]
meson: Replace empty configuration_data() with copy keyword

Use 'copy' keyword to avoid meson warning message.
Note that 'copy' keyword in configure_file() is available
since meson 0.47.0

https://bugzilla.gnome.org/show_bug.cgi?id=797298

6 years agovideometa: Log map errors with GST_ERROR, not DEBUG
Nirbheek Chauhan [Mon, 15 Oct 2018 14:15:46 +0000 (19:45 +0530)]
videometa: Log map errors with GST_ERROR, not DEBUG

Otherwise it's very easy to miss them when gst_video_frame_map() fails

6 years agortspconnection: do not duplicate authentication headers
Mathieu Duponchelle [Wed, 10 Oct 2018 21:15:49 +0000 (23:15 +0200)]
rtspconnection: do not duplicate authentication headers

rtsp_connection_send takes care of adding those already,
and some reverse proxies such as nginx will reject the request
altogether if the Authorization header is present twice,
even with the same value.

https://bugzilla.gnome.org/show_bug.cgi?id=797272

6 years agortpbasepayload: rtpbasedepayload: Add source-info property
Stian Selnes [Wed, 10 Oct 2018 18:16:12 +0000 (14:16 -0400)]
rtpbasepayload: rtpbasedepayload: Add source-info property

Add a source-info property that will read/write meta to the buffers
about RTP source information. The GstRTPSourceMeta can be used to
transport information about the origin of a buffer, e.g. the sources
that is included in a mixed audio buffer.

A new function gst_rtp_base_payload_allocate_output_buffer() is added
for payloaders to use to allocate the output RTP buffer with the correct
number of CSRCs according to the meta and fill it.

RTPSourceMeta does not make sense on RTP buffers since the information
is in the RTP header. So the payloader will strip the meta from the
output buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=761947

6 years agomeson: use new 'python' module instead of deprecated
Tim-Philipp Müller [Mon, 8 Oct 2018 00:07:45 +0000 (01:07 +0100)]
meson: use new 'python' module instead of deprecated

https://github.com/mesonbuild/meson/pull/4169

6 years agoexamples: gl: remove bitrotten clutter examples
Tim-Philipp Müller [Sun, 7 Oct 2018 18:09:24 +0000 (19:09 +0100)]
examples: gl: remove bitrotten clutter examples

https://bugzilla.gnome.org/show_bug.cgi?id=797173

6 years agotests: audioconvert: test caps fixate with layout conversion
George Kiagiadakis [Fri, 5 Oct 2018 12:37:45 +0000 (15:37 +0300)]
tests: audioconvert: test caps fixate with layout conversion

https://bugzilla.gnome.org/show_bug.cgi?id=797225

6 years agoaudioconvert: remove layout from structure when fixating caps
Matej Knopp [Sat, 29 Sep 2018 08:39:46 +0000 (10:39 +0200)]
audioconvert: remove layout from structure when fixating caps

otherwise caps intersection always fails when converting non-interleaved to interleaved audio

https://bugzilla.gnome.org/show_bug.cgi?id=797225

6 years agoRevert "Revert "gl: use correct blend functions for unpremultiplied alpha""
Matthew Waters [Thu, 4 Oct 2018 15:19:29 +0000 (01:19 +1000)]
Revert "Revert "gl: use correct blend functions for unpremultiplied alpha""

This reverts commit 452d90a88c6e68a3daa38e02213782836788236a.

This was actually correct. sorry for the noise!

6 years agoglimagesink: make multiview none equivalent to mono
Matthew Waters [Thu, 4 Oct 2018 14:48:58 +0000 (00:48 +1000)]
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

6 years agoRevert "gl: use correct blend functions for unpremultiplied alpha"
Matthew Waters [Thu, 4 Oct 2018 14:03:09 +0000 (00:03 +1000)]
Revert "gl: use correct blend functions for unpremultiplied alpha"

This reverts commit 779d028f27b7bc6eb7abe841fe2cda97de3be983.

6 years agogl: use correct blend functions for unpremultiplied alpha
Matthew Waters [Thu, 4 Oct 2018 13:43:19 +0000 (23:43 +1000)]
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.

6 years agogl/overlaycompositor: don't force unpremultiplied alpha
Matthew Waters [Thu, 4 Oct 2018 13:23:03 +0000 (23:23 +1000)]
gl/overlaycompositor: don't force unpremultiplied alpha

Remove testing code from 23159365618409011745b554b4ad371700961121

6 years agogl/overlaycompositor: support both (un)premultiplied alpha
Matthew Waters [Thu, 4 Oct 2018 13:02:05 +0000 (23:02 +1000)]
gl/overlaycompositor: support both (un)premultiplied alpha

Using the correct blend modes for each case or converting to
premultipled in the very unlikely case that separate blend modes are
unavailable on ancient opengl hardware.

6 years agogl: GstGLAPI should be gst_gl_api_ in lower-case
Sebastian Dröge [Thu, 4 Oct 2018 11:50:43 +0000 (14:50 +0300)]
gl: GstGLAPI should be gst_gl_api_ in lower-case

6 years agoglviewconvert: Add backwards compatibility gst_gl_stereo_downmix_mode_get_type()
Sebastian Dröge [Thu, 4 Oct 2018 10:38:59 +0000 (13:38 +0300)]
glviewconvert: Add backwards compatibility gst_gl_stereo_downmix_mode_get_type()

It's proper new name is gst_gl_stereo_downmix_get_type().

6 years agogl: Add gl-enumtypes.[ch] to CLEANFILES
Sebastian Dröge [Thu, 4 Oct 2018 10:33:30 +0000 (13:33 +0300)]
gl: Add gl-enumtypes.[ch] to CLEANFILES

6 years agovideo-overlay-composition: Correctly mark GstVideoOverlayFormatFlags as flags
Sebastian Dröge [Thu, 4 Oct 2018 08:36:09 +0000 (11:36 +0300)]
video-overlay-composition: Correctly mark GstVideoOverlayFormatFlags as flags

And register a GType for it.

6 years agogl/meson: fix wrong overlay filename
Matthew Waters [Thu, 4 Oct 2018 06:45:34 +0000 (16:45 +1000)]
gl/meson: fix wrong overlay filename

6 years agoglimagesink: only update the output info iff there's a valid display_rect
Matthew Waters [Fri, 28 Sep 2018 02:09:16 +0000 (12:09 +1000)]
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

6 years agogl: add a new overlay compositor element
Matthew Waters [Thu, 27 Sep 2018 03:35:15 +0000 (13:35 +1000)]
gl: add a new overlay compositor element

Flattens all the overlays from the GstVideoOverlayCompositionMeta into
the video stream.

https://bugzilla.gnome.org/show_bug.cgi?id=759867

6 years agogl/overlaycompositor: add support for flipping the output
Matthew Waters [Thu, 27 Sep 2018 03:31:09 +0000 (13:31 +1000)]
gl/overlaycompositor: add support for flipping the output

This is required to use gloverlaycompositor outside of glimagesink where
the output is not automatically flipped

6 years agogl/overlaycompositor: handle ANY caps features gracefully
Matthew Waters [Thu, 27 Sep 2018 03:30:35 +0000 (13:30 +1000)]
gl/overlaycompositor: handle ANY caps features gracefully

6 years agoglfilter: don't complete overwrite caps features from the subclass
Matthew Waters [Thu, 27 Sep 2018 03:29:03 +0000 (13:29 +1000)]
glfilter: don't complete overwrite caps features from the subclass

We can get away with ensuring that the memory:GLMemory caps feature is
present in the output caps

6 years agogl: Add gl-enumtypes.h to nodist_HEADERS
Sebastian Dröge [Wed, 3 Oct 2018 20:27:32 +0000 (23:27 +0300)]
gl: Add gl-enumtypes.h to nodist_HEADERS

6 years agoglviewconvert: Create an anonymous enum for GstGLStereoDownmix
Sebastian Dröge [Wed, 3 Oct 2018 20:17:56 +0000 (23:17 +0300)]
glviewconvert: Create an anonymous enum for GstGLStereoDownmix

Older glib-mkenums completely fails to parse it otherwise.

6 years agogl: Rename GST_TYPE_GL_STEREO_DOWNMIX GType macro everywhere
Sebastian Dröge [Wed, 3 Oct 2018 11:49:32 +0000 (14:49 +0300)]
gl: Rename GST_TYPE_GL_STEREO_DOWNMIX GType macro everywhere

The old one still exists but behind GST_DISABLE_DEPRECATED

6 years agogl: Generate enum GTypes via glib-mkenums
Sebastian Dröge [Wed, 3 Oct 2018 10:06:42 +0000 (13:06 +0300)]
gl: Generate enum GTypes via glib-mkenums

https://bugzilla.gnome.org/show_bug.cgi?id=797240
https://bugzilla.gnome.org/show_bug.cgi?id=797144

6 years agoglsl: Fix error quark string to be more consistent
Sebastian Dröge [Tue, 2 Oct 2018 18:01:31 +0000 (21:01 +0300)]
glsl: Fix error quark string to be more consistent

6 years agoglbasememory: Fix error quark string and move documentation to the right place
Sebastian Dröge [Tue, 2 Oct 2018 17:59:01 +0000 (20:59 +0300)]
glbasememory: Fix error quark string and move documentation to the right place

6 years agoencoding-profile: set_restriction should accept null as valid
Thiago Santos [Tue, 2 Oct 2018 00:51:26 +0000 (17:51 -0700)]
encoding-profile: set_restriction should accept null as valid

It was checking for GST_IS_CAPS only and that would fail if the new
restriction caps was NULL and its documentation says it accepts NULL as
valid input.

6 years agobasetextoverlay: Append our rectangle to the upstream composition, not the other...
Sebastian Dröge [Mon, 1 Oct 2018 16:13:39 +0000 (19:13 +0300)]
basetextoverlay: Append our rectangle to the upstream composition, not the other way around

Upstream is supposed to be painted first, and only then our rectangle.

6 years agobasetextoverlay: Minor cleanup of negotiation functions
Sebastian Dröge [Mon, 1 Oct 2018 15:27:22 +0000 (18:27 +0300)]
basetextoverlay: Minor cleanup of negotiation functions

6 years agovideo-overlay-composition: Handle miniobject writability correctly
Sebastian Dröge [Mon, 1 Oct 2018 09:17:42 +0000 (12:17 +0300)]
video-overlay-composition: Handle miniobject writability correctly

By tracking parents and using the proper GstMiniObject API for detecting
writability instead of just the reference count.

https://bugzilla.gnome.org/show_bug.cgi?id=797230

6 years agovideo: Fix annotations for gst_buffer_add_video_meta_full()
Sebastian Dröge [Sat, 29 Sep 2018 08:26:27 +0000 (11:26 +0300)]
video: Fix annotations for gst_buffer_add_video_meta_full()

6 years agotagdemux: Use upstream GST_EVENT_STREAM_START if present
Edward Hervey [Thu, 27 Sep 2018 13:03:10 +0000 (15:03 +0200)]
tagdemux: Use upstream GST_EVENT_STREAM_START if present

If we have an upstream GST_EVENT_STREAM_START, use that one instead
of creating a new one which could be completely different from the
upstream one and drop information (like the stream flags and stream
object).

Only create a new event if we don't already have one from upstream

https://bugzilla.gnome.org/show_bug.cgi?id=797215

6 years agoglviewconvert: wait and set the gl sync meta on buffers
Matthew Waters [Wed, 26 Sep 2018 03:22:14 +0000 (13:22 +1000)]
glviewconvert: wait and set the gl sync meta on buffers

This may be a cause of out-of-place frames when transforming multiview
buffers.

6 years agoglviewconvert: Copy composition meta from the primary buffer to both outputs
Sebastian Dröge [Tue, 25 Sep 2018 13:56:24 +0000 (16:56 +0300)]
glviewconvert: Copy composition meta from the primary buffer to both outputs

Without this, glviewconvert (and thus glimagesink) will drop all overlay
composition metas.

6 years agoglcolorconvert: Don't copy overlay composition meta over to NULL outbufs
Sebastian Dröge [Tue, 25 Sep 2018 13:56:07 +0000 (16:56 +0300)]
glcolorconvert: Don't copy overlay composition meta over to NULL outbufs

6 years agogstaudioutilsprivate: Fix warnings while setting thread priority
Nirbheek Chauhan [Mon, 24 Sep 2018 13:55:28 +0000 (19:25 +0530)]
gstaudioutilsprivate: Fix warnings while setting thread priority

Also use G_OS_WIN32 instead of _WIN32 for clarity.

6 years agolibs: fix API export/import and 'inconsistent linkage' on MSVC
Tim-Philipp Müller [Sat, 28 Apr 2018 13:50:11 +0000 (14:50 +0100)]
libs: fix API export/import and 'inconsistent linkage' on MSVC

For each lib we build export its own API in headers when we're
building it, otherwise import the API from the headers.

This fixes linker warnings on Windows when building with MSVC.

The problem was that we had defined all GST_*_API decorators
unconditionally to GST_EXPORT. This was intentional and only
supposed to be temporary, but caused linker warnings because
we tell the linker that we want to export all symbols even
those from externall DLLs, and when the linker notices that
they were in external DLLS and not present locally it warns.

What we need to do when building each library is: export
the library's own symbols and import all other symbols. To
this end we define e.g. BUILDING_GST_FOO and then we define
the GST_FOO_API decorator either to export or to import
symbols depending on whether BUILDING_GST_FOO is set or not.
That way external users of each library API automatically
get the import.

While we're at it, add new GST_API_EXPORT in config.h and use
that for GST_*_API decorators instead of GST_EXPORT.

The right export define depends on the toolchain and whether
we're using -fvisibility=hidden or not, so it's better to set it
to the right thing directly than hard-coding a compiler whitelist
in the public header.

We put the export define into config.h instead of passing it via the
command line to the compiler because it might contain spaces and brackets
and in the autotools scenario we'd have to pass that through multiple
layers of plumbing and Makefile/shell escaping and we're just not going
to be *that* lucky.

The export define is only used if we're compiling our lib, not by external
users of the lib headers, so it's not a problem to put it into config.h

Also, this means all .c files of libs need to include config.h
to get the export marker defined, so fix up a few that didn't
include config.h.

This commit depends on a common submodule commit that makes gst-glib-gen.mak
add an #include "config.h" to generated enum/marshal .c files for the
autotools build.

https://bugzilla.gnome.org/show_bug.cgi?id=797185

6 years agomeson: Specify encoding to UTF-8 when building with MSVC
Seungha Yang [Fri, 21 Sep 2018 13:31:33 +0000 (22:31 +0900)]
meson: Specify encoding to UTF-8 when building with MSVC

Fix build on some non-US locale Windows systems

Error:
  gst-plugins-base/tools/gst-device-monitor.c(278): error C2001

https://bugzilla.gnome.org/show_bug.cgi?id=797186

6 years agogl/win32: Use g_io_channel_win32_new_messages() instead of our custom GSource
Sebastian Dröge [Fri, 21 Sep 2018 08:29:42 +0000 (11:29 +0300)]
gl/win32: Use g_io_channel_win32_new_messages() instead of our custom GSource

Removes some unneeded code duplication between here and GLib.

https://bugzilla.gnome.org/show_bug.cgi?id=797184

6 years agovorbisdec: Initialize decoder directly once we have the 3 headers
Sebastian Dröge [Thu, 20 Sep 2018 11:04:39 +0000 (14:04 +0300)]
vorbisdec: Initialize decoder directly once we have the 3 headers

... instead of waiting for the first non-header buffer.

Also drop non-identification headers arriving after initialization or
before the identification header. We don't do anything with them and
they would just accumulate.

https://bugzilla.gnome.org/show_bug.cgi?id=796980

6 years agoexamples: gl: generic: recordgraphic: fix build with MSVC
Tim-Philipp Müller [Wed, 19 Sep 2018 22:43:10 +0000 (23:43 +0100)]
examples: gl: generic: recordgraphic: fix build with MSVC

6 years agoRemoved unused GST_CAT_PERFORMANCE
Johan Bjäreholt [Wed, 27 Jun 2018 08:34:09 +0000 (10:34 +0200)]
Removed unused GST_CAT_PERFORMANCE

https://bugzilla.gnome.org/show_bug.cgi?id=797175

6 years agomeson: add glib-checks option to disable API guards and such
Tim-Philipp Müller [Wed, 19 Sep 2018 10:42:14 +0000 (11:42 +0100)]
meson: add glib-checks option to disable API guards and such

We want this enabled by default, also in releases, but people
may want to disable this for performance-critical workloads or
on embedded devices.

6 years agomeson: fix missing closing bracket in option descriptions
Tim-Philipp Müller [Wed, 19 Sep 2018 10:34:37 +0000 (11:34 +0100)]
meson: fix missing closing bracket in option descriptions

6 years agomeson: add clutter gl examples to Meson build
Tim-Philipp Müller [Wed, 19 Sep 2018 10:16:17 +0000 (11:16 +0100)]
meson: add clutter gl examples to Meson build

6 years agoexamples: gl: remove old and broken vs solution files
Tim-Philipp Müller [Wed, 19 Sep 2018 09:52:40 +0000 (10:52 +0100)]
examples: gl: remove old and broken vs solution files

6 years agomeson: add generic gl examples to Meson build
Tim-Philipp Müller [Wed, 19 Sep 2018 09:49:56 +0000 (10:49 +0100)]
meson: add generic gl examples to Meson build

6 years agogl/egl: fix annotation for gst_egl_image_new_wrapped()
Víctor Manuel Jáquez Leal [Mon, 17 Sep 2018 16:36:03 +0000 (18:36 +0200)]
gl/egl: fix annotation for gst_egl_image_new_wrapped()

https://bugzilla.gnome.org/show_bug.cgi?id=797158

6 years agogl: meson: add missing headers for gir generations
Víctor Manuel Jáquez Leal [Mon, 17 Sep 2018 15:45:42 +0000 (17:45 +0200)]
gl: meson: add missing headers for gir generations

There are a lot of symbols in GstGL-1.0.gir generated by automake that
are not when it is generated by meson, because a lot of headers were
not included in meson's gir generation.

https://bugzilla.gnome.org/show_bug.cgi?id=797158

6 years agogl/build: don't pass OpenGL headers to GIR
Matthew Waters [Mon, 3 Sep 2018 06:20:33 +0000 (16:20 +1000)]
gl/build: don't pass OpenGL headers to GIR

g-ir-scanner does not have a good enough C parser to parse the GL system
headers

6 years agoglshader: macro out all the extremely similar uniform setting
Matthew Waters [Mon, 3 Sep 2018 06:06:45 +0000 (16:06 +1000)]
glshader: macro out all the extremely similar uniform setting

6 years agoglviewconvert: fix GEnumValue declaration
Víctor Manuel Jáquez Leal [Fri, 14 Sep 2018 12:12:40 +0000 (14:12 +0200)]
glviewconvert: fix GEnumValue declaration

The purpose of value_name in GEnumValue structure is to express in
text format the name of the enum, not a description of the value, so
it can be use later for the gir file generation.

https://bugzilla.gnome.org/show_bug.cgi?id=797144

6 years agoRevert "glmemory: Fix n_wrapped_pointers usage"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:43 +0000 (20:02 -0400)]
Revert "glmemory: Fix n_wrapped_pointers usage"

This reverts commit b1299c179bb185bc78df58dd3af9988e6e1f5490.

6 years agoRevert "glupload: allow system memory for dmabuf in transform_caps"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:41 +0000 (20:02 -0400)]
Revert "glupload: allow system memory for dmabuf in transform_caps"

This reverts commit d7eb48cce7ddb2b9f0d0bee84f66516c8113d167.

6 years agoRevert "glupload: handle upload methods with different caps"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:40 +0000 (20:02 -0400)]
Revert "glupload: handle upload methods with different caps"

This reverts commit 87336b19577b7677c0574e8cb4c4914f6d934b81.

6 years agoRevert "gl/egl: Add gst_egl_image_from_dmabuf_direct() function"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:39 +0000 (20:02 -0400)]
Revert "gl/egl: Add gst_egl_image_from_dmabuf_direct() function"

This reverts commit 8f0d75d4d6f622483302e689653ec1d8c90bcaa4.

6 years agoRevert "glupload: Implement direct dmabuf uploader"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:38 +0000 (20:02 -0400)]
Revert "glupload: Implement direct dmabuf uploader"

This reverts commit 3b1ae6262b99b45095c6aca02af0d7bbf88cfbbc.

6 years agoRevert "glupload: try to use the last method after reconfigure"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:37 +0000 (20:02 -0400)]
Revert "glupload: try to use the last method after reconfigure"

This reverts commit c1053e17d58c44f5509aaf9949c02b82332cb193.

6 years agoRevert "gluploadelement: try to avoid dropping buffers"
Nicolas Dufresne [Fri, 14 Sep 2018 00:02:34 +0000 (20:02 -0400)]
Revert "gluploadelement: try to avoid dropping buffers"

This reverts commit 75f2532da784731190d44f118f01a12841ecb683.

6 years agoopusenc: fix segmentation fault at x86 version
Marcos Kintschner [Thu, 13 Sep 2018 23:34:08 +0000 (20:34 -0300)]
opusenc: fix segmentation fault at x86 version

The argument 0x0 is interpreted by the x86 compiler as a 32-bit int, but
it is consumed as a 64-bit uint causing a segmentation fault. We need to
explicit cast it to guint64 in order for the va_list to be built correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=797092

6 years agogluploadelement: try to avoid dropping buffers
Michael Olbrich [Wed, 4 Jul 2018 07:29:57 +0000 (09:29 +0200)]
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

6 years agoglupload: try to use the last method after reconfigure
Michael Olbrich [Wed, 4 Jul 2018 07:17:11 +0000 (09:17 +0200)]
glupload: try to use the last method after reconfigure

Reconfigure will trigger a set_caps which clears the upload method.
Remember the method in this case and start with it.
Wrap around once to try all methods if necessary.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglupload: Implement direct dmabuf uploader
Michael Olbrich [Thu, 5 Jul 2018 08:17:27 +0000 (10:17 +0200)]
glupload: Implement direct dmabuf uploader

The idea is that some GPUs (like the Vivante series) can actually
perform the YUV->RGB conversion internally, so no custom conversion
shaders are needed. To make use of this feature, we need an additional
uploader that can import DMABUF FDs and also directly pass the pixel
format, relying on the GPU to do the conversion.

Based on patches from Nicolas Dufresne <nicolas.dufresne@collabora.com> and
Carlos Rafael Giani <dv@pseudoterminal.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agogl/egl: Add gst_egl_image_from_dmabuf_direct() function
Nicolas Dufresne [Tue, 11 Sep 2018 03:28:30 +0000 (23:28 -0400)]
gl/egl: Add gst_egl_image_from_dmabuf_direct() function

The colorspace conversion happens during the upload so the necessary hints
must be provided to ensure that the conversion works correctly.

At least the Mesa Intel driver will create a texture without error but
produces an incorrect result. Use eglQueryDmaBufModifiersEXT() to check if
non-external upload is supported for the given format.

Based on a patch from Carlos Rafael Giani <dv@pseudoterminal.org>.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglupload: handle upload methods with different caps
Michael Olbrich [Wed, 4 Jul 2018 07:21:00 +0000 (09:21 +0200)]
glupload: handle upload methods with different caps

If a upload method is selected then use it exclusively in transform_caps().
Also, reconfigure if the current caps don't match the current upload
method.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglupload: allow system memory for dmabuf in transform_caps
Michael Olbrich [Thu, 5 Jul 2018 13:17:30 +0000 (15:17 +0200)]
glupload: allow system memory for dmabuf in transform_caps

This should not be necessary, but currently not all plugins that provide
dmabuf memory announce this with caps features, e.g. v4l2.
The static caps already contain the system memory. It didn't break before
because other upload methods provide the necessary transformation.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agoglmemory: Fix n_wrapped_pointers usage
Nicolas Dufresne [Wed, 7 Jun 2017 16:00:08 +0000 (18:00 +0200)]
glmemory: Fix n_wrapped_pointers usage

gst_gl_memory_setup_buffer() was not properly using the number
of pointers to wrapped. This also fixes the validation, as we
only support 1 wrapper per view, or num_planes * views wrapper.

https://bugzilla.gnome.org/show_bug.cgi?id=783521

6 years agovideodecoder: Delete the link before pushing
Nicolas Dufresne [Sat, 8 Sep 2018 02:15:35 +0000 (22:15 -0400)]
videodecoder: Delete the link before pushing

The gst_video_decoder_clip_and_push_buf() now drops the internal stream
lock while pushing. This means, the output_queued list could be modififed
during that time. To make the code safe again, we delete the link before
pushing the data. The walk pointer will later be updated with the list
head, which makes it safe in case the list was modififed.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agogstaudiosrc/sink: Set audio ringbuffer thread priority
Nirbheek Chauhan [Mon, 10 Sep 2018 19:11:59 +0000 (00:41 +0530)]
gstaudiosrc/sink: Set audio ringbuffer thread priority

On Windows, the ringbuffer thread function must have the "Pro Audio"
priority set, otherwise it sometimes doesn't get scheduled for
200-300ms, which will immediately cause an underrun unless you set
a very high latency-time and buffer-time.

This has no compile-time deps since it tries to load avrt.dll at
runtime to set the thread priority.

6 years agomeson: Add an option for the 'Tremor' Vorbis implementation
Nirbheek Chauhan [Mon, 10 Sep 2018 16:52:16 +0000 (22:22 +0530)]
meson: Add an option for the 'Tremor' Vorbis implementation

It makes sense to control it explicitly to allow us to enable it on
platforms that don't have hardware floating-point, and to allow people
to enable the 'vorbis' plugin without having to also provide the
Tremor dependency which is useless on most devices.

6 years agogl/meson: check for EGL headers before allowing use of EGL
Matthew Waters [Wed, 5 Sep 2018 08:34:06 +0000 (18:34 +1000)]
gl/meson: check for EGL headers before allowing use of EGL

For distros that provide headers in seperate dev/devel packages this
won't build egl support without the necessary EGL headers.

6 years agodiscoverer: Consider closedcaption/ as subtitles and improve subtitle caps detection
Sebastian Dröge [Tue, 4 Sep 2018 08:55:03 +0000 (11:55 +0300)]
discoverer: Consider closedcaption/ as subtitles and improve subtitle caps detection

Generally all subtitle/, subpicture/, text/, closedcaption/ and
application/x-subtitle caps instead of hardcoding a small set of caps.

https://bugzilla.gnome.org/show_bug.cgi?id=797072

6 years agovideoencoder: Release STREAM_LOCK during gst_pad_push()
Alexey Chernov [Mon, 25 Nov 2013 16:49:50 +0000 (20:49 +0400)]
videoencoder: Release STREAM_LOCK during gst_pad_push()

Release STREAM_LOCK before calling gst_pad_push() and take it
back afterward so that upstream isn't blocked while output
buffer is being pushed downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agovideodecoder: Release STREAM_LOCK during gst_pad_push()
Alexey Chernov [Mon, 25 Nov 2013 16:45:18 +0000 (20:45 +0400)]
videodecoder: Release STREAM_LOCK during gst_pad_push()

Release STREAM_LOCK before calling gst_pad_push() and take it
back afterward so that upstream isn't blocked while output
buffer is being pushed downstream.

https://bugzilla.gnome.org/show_bug.cgi?id=715192

6 years agomeson: Maintain macOS ABI through dylib versioning
Nirbheek Chauhan [Fri, 31 Aug 2018 09:06:30 +0000 (14:36 +0530)]
meson: Maintain macOS ABI through dylib versioning

Requires Meson 0.48, but the feature will be ignored on older versions
so it's safe to add it without bumping the requirement.

Documentation:
https://github.com/mesonbuild/meson/blob/master/docs/markdown/Reference-manual.md#shared_library

6 years agogl/meson: fix gbm option to enable rather than disable
Matthew Waters [Fri, 31 Aug 2018 08:14:13 +0000 (18:14 +1000)]
gl/meson: fix gbm option to enable rather than disable

This change matches what the other winsys/platforms are doing

6 years agogl/meson: add Android build definitions
Matthew Waters [Thu, 30 Aug 2018 14:15:35 +0000 (00:15 +1000)]
gl/meson: add Android build definitions

6 years agogl/meson: add build for iOS
Matthew Waters [Thu, 2 Aug 2018 05:59:20 +0000 (15:59 +1000)]
gl/meson: add build for iOS

6 years agovideo: Add GST_VIDEO_INFO_FIELD_RATE_N() macro
Zeeshan Ali [Mon, 2 Jul 2018 21:48:04 +0000 (23:48 +0200)]
video: Add GST_VIDEO_INFO_FIELD_RATE_N() macro

Add a new macro that gives you the rate of the fields, which is the
numerator of the field-rate for ALTERNATE interlacing video and FPS for
progressive and other interlacing formats.

https://bugzilla.gnome.org/show_bug.cgi?id=796106

6 years agovideo: Add gst_video_decoder_set_interlaced_output_state()
Zeeshan Ali [Fri, 6 Jul 2018 13:48:35 +0000 (15:48 +0200)]
video: Add gst_video_decoder_set_interlaced_output_state()

Add a variant of gst_video_decoder_set_output_state() that allows the user
to pass an interlacing mode as well. This is needed to ensure that
gst_video_info_set_interlaced_format() is used instead so that
GstVideoInfo.size is correctly initialized.

https://bugzilla.gnome.org/show_bug.cgi?id=796106

6 years agovideo: Add GST_VIDEO_INFO_FIELD_HEIGHT() macro
Zeeshan Ali [Mon, 2 Jul 2018 21:48:04 +0000 (23:48 +0200)]
video: Add GST_VIDEO_INFO_FIELD_HEIGHT() macro

Add a new macro that gives you the height of a field. It returns the
height of the full frame unless split-field (alternate) interlacing is
in use. Also GST_VIDEO_INFO_COMP_HEIGHT macro now uses this new macro to
get the height for its calculation.

https://bugzilla.gnome.org/show_bug.cgi?id=796106

6 years agotest: Ensure gst_video_info_set_format() calls succeed
Zeeshan Ali [Mon, 2 Jul 2018 15:51:06 +0000 (17:51 +0200)]
test: Ensure gst_video_info_set_format() calls succeed

https://bugzilla.gnome.org/show_bug.cgi?id=796106