platform/upstream/gstreamer.git
5 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

5 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

5 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

5 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

5 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

5 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

5 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.

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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.

5 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.

5 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.

5 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.

5 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.

5 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.

5 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.

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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.

5 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.

5 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.

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 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

5 years agovideo: Add gst_video_info_set_interlaced_format()
Zeeshan Ali [Mon, 2 Jul 2018 14:48:30 +0000 (16:48 +0200)]
video: Add gst_video_info_set_interlaced_format()

Add a helper to set the interlacing mode while creating the GstVideoInfo
in addition to format and resolution. Using this helper will ensure that
size is correctly calculated for split-field interlacing mode.

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

5 years agovideo: Add GST_VIDEO_INTERLACE_MODE_ALTERNATE
Zeeshan Ali [Fri, 4 May 2018 14:16:28 +0000 (16:16 +0200)]
video: Add GST_VIDEO_INTERLACE_MODE_ALTERNATE

Add a new interlace mode enum to represent buffers containing a single
field of an interlaced video in a buffer. The name is based on the
equivalent video format in the V4L2 API, V4L2_FIELD_ALTERNATE:

https://01.org/linuxgraphics/gfx-docs/drm/media/uapi/v4l/field-order.html

Since caps fields are optional, we also introduce a new caps feature,
"format:Interlaced" that always goes with "alternate" interlace mode to ensure
that caps for this incompatible format are incompatible with other interlaced
and progressive video caps.

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

5 years agovideo: Add format for single fields of interlaced video in a buffer
Zeeshan Ali [Fri, 4 May 2018 13:19:11 +0000 (15:19 +0200)]
video: Add format for single fields of interlaced video in a buffer

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

5 years agodoc: glbasefilter: Add missing Since for gst_gl_base_filter_find_gl_context()
Nicolas Dufresne [Wed, 29 Aug 2018 14:38:32 +0000 (10:38 -0400)]
doc: glbasefilter: Add missing Since for gst_gl_base_filter_find_gl_context()

5 years agovorbisdec: Always handle in-band header packets once the first non-header packet...
Sebastian Dröge [Thu, 16 Aug 2018 16:37:33 +0000 (19:37 +0300)]
vorbisdec: Always handle in-band header packets once the first non-header packet arrives

And clean up any old pending headers if we receive a new identification
header, or if we receive a new set of headers via caps.

Otherwise it might happen that we receive one or more header but not
all, and then afterwards all headers again, and libvorbis does not like
getting headers passed multiple times and would error out.

It only makes sense to pass the very latest headers to the decoder at
the time we can actually make use of them.

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

5 years agomeson: Always define gstgl_dep to a valid dependency object
Nirbheek Chauhan [Tue, 28 Aug 2018 08:05:28 +0000 (13:35 +0530)]
meson: Always define gstgl_dep to a valid dependency object

Fixes configure error when gl support was auto-detected as not being
available:

ext/gl/meson.build:50:20: ERROR:  Unknown variable "gstgl_dep".

5 years agogl/dispmanx: fix removing foreign window handle
Yuji Kuwabara [Thu, 21 Sep 2017 05:03:28 +0000 (14:03 +0900)]
gl/dispmanx: fix removing foreign window handle

gst_gl_window_dispmanx_egl_set_window_handle() removes native window handle
(dispmanx element), regardless it was foreign window handle
(set via gst_video_overlay_set_window_handle()) or not.

This problem prevents glimagesink reusable.
(PAUSED -> READY -> PAUSED does not work)

This patch corrects it comparing the native window handle with foreign window
handle. This behavior is same as gst_gl_window_dispmanx_egl_close().

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

5 years agogl/wayland: correctly use the set_render_rectangle size first
Matthew Waters [Tue, 28 Aug 2018 04:31:43 +0000 (14:31 +1000)]
gl/wayland: correctly use the set_render_rectangle size first

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

5 years agogl/wayland: add preferred window size, and set it according to video size
memeka [Tue, 24 Oct 2017 07:09:50 +0000 (17:39 +1030)]
gl/wayland: add preferred window size, and set it according to video size

The glimagesink wayland backend lacks the implementation of
gst_gl_window_wayland_egl_set_preferred_size. Because of this, glimagesink windows on
wayland are created with a fixed window size of 320x240.

[Matthew Waters]: gst-indent sources

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

5 years agopango: Create one context per instance and remove class mutex
Sebastian Dröge [Mon, 27 Aug 2018 12:41:31 +0000 (15:41 +0300)]
pango: Create one context per instance and remove class mutex

PangoCairo is thread-safe as long as the context and fontmap are not
shared between threads. Previously each subclass had its own context and
a class mutex for this reason, but apart from hurting performance this
was also not completely safe yet: the same fontmap might've been used by
different classes from different threads as the thread-default fontmap
(at time of class initialization) was used.

5 years agooggdemux: Ensure that no pad values are set when setting up the mapper
Sebastian Dröge [Mon, 27 Aug 2018 08:07:47 +0000 (11:07 +0300)]
oggdemux: Ensure that no pad values are set when setting up the mapper

Otherwise we might have arbitrary values set that are used later and can
cause undefined behaviour, as found by ossfuzz.

5 years agoglcolorscale: fix compiler warning
Tim-Philipp Müller [Sat, 25 Aug 2018 23:52:41 +0000 (01:52 +0200)]
glcolorscale: fix compiler warning

gstglcolorscale.c(173): warning C4098: 'gst_gl_colorscale_gl_stop': 'void' function returning a value

5 years agogl: use right export decorator
Tim-Philipp Müller [Sat, 25 Aug 2018 23:41:42 +0000 (01:41 +0200)]
gl: use right export decorator

5 years agoaudio: use right export decorator
Tim-Philipp Müller [Sat, 25 Aug 2018 23:40:57 +0000 (01:40 +0200)]
audio: use right export decorator

5 years agomeson: gl: return not-found dependency instead of disabler if opengl is disabled
Tim-Philipp Müller [Sat, 18 Aug 2018 11:37:48 +0000 (12:37 +0100)]
meson: gl: return not-found dependency instead of disabler if opengl is disabled

This allows consumers of the gstgl dependency where gstgl is optional
to do things like:

  config_data.set('HAVE_GST_GL', gstgl_dep.found())
  deps = [gstvideo_dep, gstgl_dep]

meaning they can still use the dep unconditionally. With the
disabler we would just disable the whole target even if the
gstgl part was an optional extra. We can add an option to
dependency() later to let users/consumers of the dep decide
if they want a not-found dependency or a disabler instead.

5 years agomeson: host_system is 'ios' when building for iOS
Nirbheek Chauhan [Thu, 16 Aug 2018 21:29:14 +0000 (02:59 +0530)]
meson: host_system is 'ios' when building for iOS

The cross file sets this value, and we use 'ios' in Cerbero.

5 years agoplaysink: audio visualization support fixes
Philippe Normand [Sat, 16 Jun 2018 13:27:20 +0000 (14:27 +0100)]
playsink: audio visualization support fixes

The queue between the audiotee and the audio chain wasn't properly added to the
bin, leading to streamsynchronizer locks on EOS. Reconfiguration of the
visualization chain wasn't working as expected either. It is now possible to
dynamically enable/disable the audio visualization support.

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

5 years agoaudioaggregator: Also run the audio-specific caps fixation for audio aggregator subcl...
Sebastian Dröge [Thu, 16 Aug 2018 15:03:37 +0000 (18:03 +0300)]
audioaggregator: Also run the audio-specific caps fixation for audio aggregator subclasses that can't convert

5 years agoaudioaggregator: Fixate to some meaningful values if no sinkpad is configured yet
Sebastian Dröge [Thu, 16 Aug 2018 14:54:00 +0000 (17:54 +0300)]
audioaggregator: Fixate to some meaningful values if no sinkpad is configured yet

The default caps fixation code would select a rate of 1 for example,
which is not really ideal.

5 years agomeson: remove obsolete FIXME
Tim-Philipp Müller [Thu, 16 Aug 2018 10:35:33 +0000 (11:35 +0100)]
meson: remove obsolete FIXME

5 years agomeson: gl: find libjpeg via pkg-config
Tim-Philipp Müller [Thu, 16 Aug 2018 10:08:38 +0000 (11:08 +0100)]
meson: gl: find libjpeg via pkg-config

This effectively (but optionally) requires libjpeg-turbo which
ships with a .pc file and is what pretty much everyone these days
uses anyway for libjpeg, so shouldn't be a problem hopefully.

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

5 years agomeson: move gmodule check to top-level
Tim-Philipp Müller [Thu, 16 Aug 2018 09:58:47 +0000 (10:58 +0100)]
meson: move gmodule check to top-level

It's also needed by the generic/states test and the variable
is currently checked as part of the opengl lib tests so wouldn't
be available if opengl was disabled.

5 years agomeson: add option for opengl and the misc optional gl plugin deps
Tim-Philipp Müller [Thu, 16 Aug 2018 09:28:48 +0000 (10:28 +0100)]
meson: add option for opengl and the misc optional gl plugin deps

Finer control over the opengl integration library dependencies
is already implemented via the gl_api, gl_platform, and gl_winsys
options.

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

5 years agomeson: options: move gl options into separate section
Tim-Philipp Müller [Thu, 16 Aug 2018 09:13:39 +0000 (10:13 +0100)]
meson: options: move gl options into separate section

5 years agoaudioaggregator: Properly propagate caps negotiation failures
Sebastian Dröge [Mon, 13 Aug 2018 11:50:09 +0000 (14:50 +0300)]
audioaggregator: Properly propagate caps negotiation failures

Otherwise we'll end up doing a division by zero when clipping buffers,
and might even accept buffers for which we don't know the caps.

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

5 years agogst-libs: include config.h in all source files
Tim-Philipp Müller [Sat, 28 Apr 2018 13:50:11 +0000 (14:50 +0100)]
gst-libs: include config.h in all source files

This will be needed later when we get our export define from config.h

5 years agopbutils, rtsp: fix deprecation guards
Tim-Philipp Müller [Sat, 28 Apr 2018 23:18:58 +0000 (00:18 +0100)]
pbutils, rtsp: fix deprecation guards

Function body must only be removed if compiling with
GST_REMOVE_DEPRECATED. Function declaration must not
be skipped if GST_DISABLE_DEPRECATED is defined, since
it contains our export decorator and we wouldn't export
the symbol as public API any more then since we compile
with GST_DISABLE_DEPRECATED.

5 years agotests: remove unused build definition
Tim-Philipp Müller [Sat, 28 Apr 2018 12:41:11 +0000 (13:41 +0100)]
tests: remove unused build definition

5 years agomeson: add build options to disable tools and tests
Tim-Philipp Müller [Sun, 12 Aug 2018 17:12:35 +0000 (18:12 +0100)]
meson: add build options to disable tools and tests

5 years agotag: add license to generated backup language name table and update
Tim-Philipp Müller [Sun, 12 Aug 2018 12:19:44 +0000 (13:19 +0100)]
tag: add license to generated backup language name table and update

It's LGPL same as iso-codes

5 years agomeson: use iso-codes in gsttag if available
Tim-Philipp Müller [Sun, 12 Aug 2018 11:55:00 +0000 (12:55 +0100)]
meson: use iso-codes in gsttag if available

5 years agomeson: add zlib to gstreamer-1.0.pc if found
Tim-Philipp Müller [Sat, 11 Aug 2018 23:21:58 +0000 (00:21 +0100)]
meson: add zlib to gstreamer-1.0.pc if found

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

5 years agomeson: add options to disable gobject cast checks and glib asserts
Tim-Philipp Müller [Sat, 11 Aug 2018 23:13:31 +0000 (00:13 +0100)]
meson: add options to disable gobject cast checks and glib asserts

and define G_DISABLE_DEPRECATED for development versions,
like we do in autotools.

5 years agomeson: update available gl_winsys in options list
Tim-Philipp Müller [Sat, 11 Aug 2018 23:09:20 +0000 (00:09 +0100)]
meson: update available gl_winsys in options list

5 years agomeson: tag: check for zlib and support compressed id3v2 tag if found
Tim-Philipp Müller [Sat, 11 Aug 2018 17:49:10 +0000 (18:49 +0100)]
meson: tag: check for zlib and support compressed id3v2 tag if found

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

5 years agoglviewconvert: fix output when a transformation matrix is used
Matthew Waters [Fri, 10 Aug 2018 12:44:12 +0000 (22:44 +1000)]
glviewconvert: fix output when a transformation matrix is used

If we have a transformation matrix, we have no idea where in the output
the video is going to endup.  It might also be different and not cover
the entire output.

We need to clear the output to remove any previous data in the backing
texture.

Found from
https://stackoverflow.com/questions/51707229/python-gstreamer-for-dynamic-control-of-element-properties

5 years agomeson: fix install dir for generated header files
Bastian Köcher [Fri, 10 Aug 2018 11:43:38 +0000 (12:43 +0100)]
meson: fix install dir for generated header files

Nixos installs into a non-standard includedir, so need
to take account of the 'includedir' option instead of
just hard-coding 'include' here.

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

5 years agogst-play: use Fisher-Yates shuffle for shuffling the playlist
Tim-Philipp Müller [Wed, 8 Aug 2018 18:18:22 +0000 (19:18 +0100)]
gst-play: use Fisher-Yates shuffle for shuffling the playlist

5 years agotagdemux: Propagate flow returns from gst_type_find_helper_get_range() properly
Sebastian Dröge [Wed, 8 Aug 2018 10:44:55 +0000 (12:44 +0200)]
tagdemux: Propagate flow returns from gst_type_find_helper_get_range() properly

Instead of considering every failed typefinding as an error, even in
case of e.g. GST_FLOW_FLUSHING.

5 years agortsp: Include gstreamer-base gir dir in autotools
Thibault Saunier [Mon, 6 Aug 2018 18:17:09 +0000 (14:17 -0400)]
rtsp: Include gstreamer-base gir dir in autotools

5 years agogl/meson: fix macos additions for non-macos platforms
Matthew Waters [Fri, 3 Aug 2018 09:06:00 +0000 (19:06 +1000)]
gl/meson: fix macos additions for non-macos platforms

"gst-libs/gst/gl/meson.build:655:20: ERROR:  Unknown variable "quartzcore_dep"."

5 years agogl/meson: OSX support (CGL and Cocoa)
Alessandro Decina [Fri, 21 Jul 2017 06:59:28 +0000 (16:59 +1000)]
gl/meson: OSX support (CGL and Cocoa)

[Matthew Waters]: minor additions such as -fobjc-arc and relying on
dependency rather than cc.find_library()

5 years agoAdd GBM_CFLAGS and define EGL_PLATFORM_GBM_MESA
Norbert Wesp [Wed, 1 Aug 2018 11:59:45 +0000 (13:59 +0200)]
Add GBM_CFLAGS and define EGL_PLATFORM_GBM_MESA

Building an image with yocto for an 'am335x' processor will fail,
because 'gbm.h' can not be found and 'EGL_PLATFORM_GBM_MESA' is not defined.

So simply adding define of 'EGL_PLATFORM_GBM_MESA' in 'gstgldisplay_egl.c'
and adding 'GBM_CFLAGS' in 'gst-gl.m4' to get rid of this errors and complete
a full build process.

ERRORs were:
-----------
gst-plugins-base-1.14.1/gst-libs/gst/gl/gbm/gstglwindow_gbm_egl.h:24:10:
fatal error: gbm.h: No such file or directory
  #include <gbm.h>
           ^~~~~~~

gst-plugins-base-1.14.1/gst-libs/gst/gl/egl/gstgldisplay_egl.c:157:39:
error: 'EGL_PLATFORM_GBM_MESA' undeclared (first use in this function);
did you mean 'EGL_PLATFORM_WAYLAND'?
  ret = _gst_eglGetPlatformDisplay (EGL_PLATFORM_GBM_MESA, (gpointer) display,
                                    ^~~~~~~~~~~~~~~~~~~~~

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

5 years agoopusdec: Add property to control phase inversion
Nicolas Dufresne [Wed, 1 Aug 2018 02:41:16 +0000 (22:41 -0400)]
opusdec: Add property to control phase inversion

When enabled, phase-inversion slightly increase stereo quality, but
produce a stream that when downmixed to mono will present important
audio distortion. This patch disables this feature by default and
introduce a property that let user enable it if desired.

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

5 years agogl/gbm: allow headless mode
freyr [Mon, 30 Jul 2018 07:03:11 +0000 (10:03 +0300)]
gl/gbm: allow headless mode

Don't require an output for the GBM backend.

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

5 years agogl: Add switches for explicitely enabling/disabling PNG and JPEG support
Carlos Rafael Giani [Thu, 19 Jul 2018 09:16:05 +0000 (11:16 +0200)]
gl: Add switches for explicitely enabling/disabling PNG and JPEG support

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

5 years agogl: Add switch for explicitely enabling/disabling GBM support
Carlos Rafael Giani [Thu, 19 Jul 2018 08:30:54 +0000 (10:30 +0200)]
gl: Add switch for explicitely enabling/disabling GBM support

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

5 years agomeson: Fix build with x11 dependency is disabled
Nirbheek Chauhan [Tue, 31 Jul 2018 18:02:42 +0000 (23:32 +0530)]
meson: Fix build with x11 dependency is disabled

gtk_x11_dep is used unconditionally in tests/icles/meson.build

5 years agomeson: Fix detection of cdparanoia library
Nirbheek Chauhan [Tue, 31 Jul 2018 07:58:59 +0000 (13:28 +0530)]
meson: Fix detection of cdparanoia library

Without this the pkg-config file is required when the plugin is enabled.

5 years agotagdemux: Properly propagate gst_pad_pull_range() errors
Sebastian Dröge [Fri, 27 Jul 2018 12:15:34 +0000 (15:15 +0300)]
tagdemux: Properly propagate gst_pad_pull_range() errors

And don't consider FLUSHING an actual error, just stop in that case.

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

5 years agomeson: Add feature options for all plugins
Nirbheek Chauhan [Wed, 25 Jul 2018 02:05:05 +0000 (07:35 +0530)]
meson: Add feature options for all plugins

GL dependency detection is still automagic.

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

5 years agogl: Also don't leak floating references to elements set via properties
Sebastian Dröge [Wed, 25 Jul 2018 12:03:59 +0000 (15:03 +0300)]
gl: Also don't leak floating references to elements set via properties

Fixup for 58ac815eae6ed468d1db60a54a1bd34d6324c28c. Floating references
are such a mess.

5 years agogl: Don't steal callers reference when setting non-floating elements via properties
Sebastian Dröge [Wed, 25 Jul 2018 11:23:36 +0000 (14:23 +0300)]
gl: Don't steal callers reference when setting non-floating elements via properties

Introduced by fbef9220d3dc2f785081c4766901aab2ecfaed10. The code there
is only correct for elements we get from signals.

5 years agoaudio-buffer: fix typo in assignment that causes buggy behavior
George Kiagiadakis [Tue, 24 Jul 2018 12:09:25 +0000 (15:09 +0300)]
audio-buffer: fix typo in assignment that causes buggy behavior