platform/upstream/gstreamer.git
4 years agovideometa: document how the meta can be used to negotiate buffers layout
Guillaume Desmottes [Sat, 25 May 2019 17:23:35 +0000 (19:23 +0200)]
videometa: document how the meta can be used to negotiate buffers layout

I'm going to use this new API in gst-omx so an encoder can request
v4l2src to produce buffers matching the encoder stride and slice heights
preventing copies of incoming buffers.

4 years agogl/gbm: ensure we call the resize callback before attempting to draw
Matthew Waters [Sun, 3 Nov 2019 13:38:18 +0000 (00:38 +1100)]
gl/gbm: ensure we call the resize callback before attempting to draw

Without this, sinks will not be notified about size changes or even the
initial size and would render at 0x0.

4 years agovideo-scaler: Ensure we're always using the correct lines for scaling in gst_video_sc...
Sebastian Dröge [Sat, 2 Nov 2019 15:24:39 +0000 (16:24 +0100)]
video-scaler: Ensure we're always using the correct lines for scaling in gst_video_scaler_2d()

Especially for interlaced input make sure to
  a) never mix both fields
  b) never read lines after the end of the input frame
  c) allocate enough space in the temporary lines to not write outside
     the allocated memory area

This fixes various memory corruptions and rescaling artefacts.

4 years agovideodecoder: Add a property to disable dropping on QoS
Nicolas Dufresne [Tue, 2 Oct 2018 16:04:14 +0000 (12:04 -0400)]
videodecoder: Add a property to disable dropping on QoS

4 years agovideodecoder: Post QoS when we drop because of QoS
Nicolas Dufresne [Tue, 2 Oct 2018 15:09:33 +0000 (11:09 -0400)]
videodecoder: Post QoS when we drop because of QoS

At the moment, we only posted QoS messages when frame_drop() was
called, but not in finish_frame() when QoS triggered a late push.
This should fix applications that tries to account the dropped
frames. We also emit a warning on drops so it's more clear what is
happening.

4 years agogl: use gst_video_meta_set_alignment()
Guillaume Desmottes [Tue, 23 Jul 2019 06:19:07 +0000 (11:49 +0530)]
gl: use gst_video_meta_set_alignment()

4 years agox(v)image: use gst_video_meta_set_alignment()
Guillaume Desmottes [Mon, 22 Jul 2019 11:25:04 +0000 (16:55 +0530)]
x(v)image: use gst_video_meta_set_alignment()

Use the new API to tell buffer consumers about alignment details.

This change is backward compatible as non ported elements can safely
ignore the alignment information and keep processing buffers as they use
to, copying if necessary.

4 years agovideometa: add alignment field
Guillaume Desmottes [Tue, 9 Jul 2019 10:17:44 +0000 (12:17 +0200)]
videometa: add alignment field

By adding this field, buffer producers can now explicitly set the exact
geometry of planes, allowing users to easily know the padded size and
height of each plane.

GstVideoMeta is always heap allocated by GStreamer itself so we can
safely extend it.

4 years agovideo-info: add gst_video_info_align_full()
Guillaume Desmottes [Mon, 3 Jun 2019 10:56:08 +0000 (16:26 +0530)]
video-info: add gst_video_info_align_full()

When using gst_video_info_align() user had no easy way to retrieve the
padded size and height of each plane.
This can easily be implemented in fill_planes() as it's already called
in align() with the padded height.

Ideally we'd add a plane_size field to GstVideoInfo but the remaining
padding is too small so that would be an ABI break.

Fix #618

4 years agovideo-info: fix GST_VIDEO_INFO_FIELD_HEIGHT() with frame odd height
Guillaume Desmottes [Sat, 2 Nov 2019 11:15:15 +0000 (12:15 +0100)]
video-info: fix GST_VIDEO_INFO_FIELD_HEIGHT() with frame odd height

We want to round up when halfing height.

I do have a test for this but it relies on my new video-align tests so
it's part of the next commit. Recording the fix separately if we want to
backport this fix to the stable branch.

4 years agoglimagesink: fix upper-left and upper-right rotate matrices
Nicola Murino [Wed, 30 Oct 2019 13:59:40 +0000 (14:59 +0100)]
glimagesink: fix upper-left and upper-right rotate matrices

4 years agotests: audio: Add test for gst_audio_info_from_caps() method
Seungha Yang [Fri, 25 Oct 2019 11:44:27 +0000 (20:44 +0900)]
tests: audio: Add test for gst_audio_info_from_caps() method

Test gst_audio_info_from_caps() with raw and encoded formats.

4 years agoaudio-info: Allow from_caps() with encoded audio format
Seungha Yang [Fri, 25 Oct 2019 03:05:54 +0000 (12:05 +0900)]
audio-info: Allow from_caps() with encoded audio format

Similar to gst_video_info_from_caps() which allows encoded video format,
don't error gst_audio_info_from_caps() with encoded audio format.
Because gst_audio_info_set_format() supports encoded format, current
behavior does not seem to be consistent.

4 years agovideo-converter: Use G_N_ELEMENTS instead of writing it out manually
Sebastian Dröge [Mon, 21 Oct 2019 13:43:32 +0000 (16:43 +0300)]
video-converter: Use G_N_ELEMENTS instead of writing it out manually

4 years agovideo-converter: Scaling-only fast-paths for planar formats are keeping interlacing
Sebastian Dröge [Mon, 21 Oct 2019 14:40:35 +0000 (17:40 +0300)]
video-converter: Scaling-only fast-paths for planar formats are keeping interlacing

So we can also use them for interlaced content and speed up scaling a
bit.

4 years agovideo-scaler: Correctly handle interlaced vertical scalers in gst_video_scaler_2d()
Sebastian Dröge [Mon, 21 Oct 2019 14:28:46 +0000 (17:28 +0300)]
video-scaler: Correctly handle interlaced vertical scalers in gst_video_scaler_2d()

We need to provide twice as many lines as usual to the scaling function
as every second lines would be skipped.

Without this we read from random memory and produce colorful output and
crashes.

4 years agovideo-converter: Don't use fast-path halfing/doubling rescalers for interlaced planar...
Sebastian Dröge [Mon, 21 Oct 2019 13:43:02 +0000 (16:43 +0300)]
video-converter: Don't use fast-path halfing/doubling rescalers for interlaced planar formats

They will mix lines from the top and bottom field and by that
effectively deinterlace the video, badly.

4 years agovideo-converter: Use interlaced scalers for vertical scaling if needed
Sebastian Dröge [Mon, 21 Oct 2019 13:43:02 +0000 (16:43 +0300)]
video-converter: Use interlaced scalers for vertical scaling if needed

Without this, scaling e.g. interlaced UYVY causes corrupted output with
lines as follows: f1 f1 f2 f2, i.e. two lines of each field and only
then the other field.

4 years agogstrtspconnection: messages_bytes not decreased
Joakim Johansson [Thu, 3 Oct 2019 10:03:09 +0000 (12:03 +0200)]
gstrtspconnection: messages_bytes not decreased

The watch->messages_bytes is not decreased when the write operation
from the backlog is only partly successfull.

This commit decreases the watch->messages_bytes for the successfully
sent messages.

Fixes #679

4 years agomeson: build gir even when cross-compiling if introspection was enabled explicitly
Tim-Philipp Müller [Thu, 17 Oct 2019 19:06:24 +0000 (20:06 +0100)]
meson: build gir even when cross-compiling if introspection was enabled explicitly

This can be made to work in certain circumstances when
cross-compiling, so default to not building g-i stuff
when cross-compiling, but allow it if introspection was
enabled explicitly via -Dintrospection=enabled.

See gstreamer/gstreamer#454 and gstreamer/gstreamer#381.

4 years agoglimagesink: add support for Y210 format
Haihao Xiang [Sat, 12 Oct 2019 04:00:46 +0000 (12:00 +0800)]
glimagesink: add support for Y210 format

Y210 is a 10-bit YUY2, so we may re-use the YUY2 shaders but gl format
is set to RG16

Sample pipeline:
gst-launch-1.0 videotestsrc ! video/x-raw,format=Y210 ! glimagesink

4 years agoglcolorconvert: add support for the NV16 and NV61 formats
David Trussel [Fri, 11 Oct 2019 08:14:49 +0000 (10:14 +0200)]
glcolorconvert: add support for the NV16 and NV61 formats

NV16/NV61 is basically the same as NV12/NV21 with a higher chroma resolution.
Since only the size of the UV plane/texture is different, the same shaders are used as for NV12/NV21.

4 years agoglimagesink: add support for Y410 format
Haihao Xiang [Fri, 11 Oct 2019 14:54:02 +0000 (22:54 +0800)]
glimagesink: add support for Y410 format

Sample pipeline:
gst-launch-1.0 videotestsrc ! video/x-raw,format=Y410 ! glimagesink

4 years agoglcolorconvert: merge shaders for AYUV and VUYA formats
Haihao Xiang [Mon, 14 Oct 2019 02:02:59 +0000 (10:02 +0800)]
glcolorconvert: merge shaders for AYUV and VUYA formats

The shaders can be used for AYUV and varieties.

4 years agoRemove autotools build system
Tim-Philipp Müller [Sat, 8 Jun 2019 23:57:47 +0000 (00:57 +0100)]
Remove autotools build system

4 years agobase: Avoid usage of deprecated API
Edward Hervey [Thu, 10 Oct 2019 15:18:34 +0000 (17:18 +0200)]
base: Avoid usage of deprecated API

GTimeval and related functions are now deprecated in glib.
Replacement APIs have been present since 2.26

4 years agocheck: Don't use real audio devices for tests
Edward Hervey [Thu, 10 Oct 2019 14:58:26 +0000 (16:58 +0200)]
check: Don't use real audio devices for tests

When checking the behaviour of live seeking on audiomixer or
adder we don't *really* need real audio devices. audiotestsrc
in live mode is enough to test the behaviour of those elements.

Also avoids people repeatedly wasting hours trying to figure out
whether that failing behaviour is due to their code or not.

4 years agopbutils: add description for CineForm codec
Tim-Philipp Müller [Tue, 8 Oct 2019 18:35:49 +0000 (19:35 +0100)]
pbutils: add description for CineForm codec

4 years agoriff: add mapping for CineForm codec
Tim-Philipp Müller [Tue, 8 Oct 2019 18:35:23 +0000 (19:35 +0100)]
riff: add mapping for CineForm codec

Makes CineForm-in-AVI work.

4 years agoexamples: add device provider example
Mathieu Duponchelle [Sat, 7 Sep 2019 02:28:46 +0000 (04:28 +0200)]
examples: add device provider example

4 years agoglfilters: Don't use static variables for storing per-element state
Sebastian Dröge [Wed, 2 Oct 2019 20:21:09 +0000 (23:21 +0300)]
glfilters: Don't use static variables for storing per-element state

4 years agoglupload: Add VideoMetas and GLSyncMeta to the raw uploaded buffers
Thibault Saunier [Fri, 27 Sep 2019 14:10:43 +0000 (11:10 -0300)]
glupload: Add VideoMetas and GLSyncMeta to the raw uploaded buffers

This is done by reusing `gst_gl_memory_setup_buffer` avoiding to
duplicate code.

Without a VideoMeta, mapping those buffers lead to GstBuffer mapping the
buffer in system memory even when specifying the GL flags (through the
buffer merging mechanism) making the result totally broken.

4 years agoexamples/gl/sdlshare: port to OpenGL 3.0 core profile
Matthew Waters [Wed, 2 Oct 2019 13:35:36 +0000 (23:35 +1000)]
examples/gl/sdlshare: port to OpenGL 3.0 core profile

4 years agobuild: fix werror build on windows
Matthew Waters [Mon, 30 Sep 2019 14:00:57 +0000 (00:00 +1000)]
build: fix werror build on windows

_isatty() is in the io.h header

4 years agodevice-monitor: fix device listing without --follow
Mathieu Duponchelle [Mon, 30 Sep 2019 14:11:18 +0000 (16:11 +0200)]
device-monitor: fix device listing without --follow

In !427, I removed the call to get_devices in order to always
print added devices from the bus handler, however this requires
the main loop to run until all pending messages have been consumed.

This commit achieves this by always running the main loop, and
simply adding an idle source to quit it in the non --follow case.

4 years agovideo-format: correct the pixel stride for Y410
Haihao Xiang [Mon, 30 Sep 2019 02:27:03 +0000 (10:27 +0800)]
video-format: correct the pixel stride for Y410

The stride for Y410 is 4 bytes, not 0 byte

4 years agoexamples/sdlshare: Map video frames as early as possible and wait via GL sync meta...
Sebastian Dröge [Thu, 14 Mar 2019 15:24:11 +0000 (16:24 +0100)]
examples/sdlshare: Map video frames as early as possible and wait via GL sync meta before using texture ids

4 years agoexamples/sdlshare: Initialize GL as part of the event loop
Sebastian Dröge [Wed, 13 Mar 2019 07:28:58 +0000 (08:28 +0100)]
examples/sdlshare: Initialize GL as part of the event loop

And unref additional buffers we never use for rendering directly instead
of going via the output queue.

4 years agoexamples/sdlshare: Activate and initialize our wrapped GL context
Sebastian Dröge [Wed, 13 Mar 2019 07:20:57 +0000 (08:20 +0100)]
examples/sdlshare: Activate and initialize our wrapped GL context

This allows us to e.g. use the GL functions vtable on it later.

4 years agoexamples/sdlshare: Call gst_init() a bit earlier in main()
Sebastian Dröge [Wed, 13 Mar 2019 06:31:43 +0000 (07:31 +0100)]
examples/sdlshare: Call gst_init() a bit earlier in main()

Let's not accidentally call other GStreamer API before that.

4 years agoexamples/sdlshare: Create an OpenGL context for OpenGL 2.0
Sebastian Dröge [Wed, 13 Mar 2019 06:21:12 +0000 (07:21 +0100)]
examples/sdlshare: Create an OpenGL context for OpenGL 2.0

4 years agoexamples/sdlshare: Switch from a GLib main loop to a normal SDL event loop
Sebastian Dröge [Tue, 12 Mar 2019 21:37:48 +0000 (22:37 +0100)]
examples/sdlshare: Switch from a GLib main loop to a normal SDL event loop

4 years agoexamples/sdlshare: Port to SDL2
Sebastian Dröge [Tue, 12 Mar 2019 21:09:18 +0000 (22:09 +0100)]
examples/sdlshare: Port to SDL2

4 years agoexamples/sdlshare: Move from a fakesink to an appsink
Sebastian Dröge [Tue, 12 Mar 2019 20:31:24 +0000 (21:31 +0100)]
examples/sdlshare: Move from a fakesink to an appsink

4 years agoexamples/sdlshare: Store buffer queues and loop in a global variable
Sebastian Dröge [Tue, 12 Mar 2019 20:29:07 +0000 (21:29 +0100)]
examples/sdlshare: Store buffer queues and loop in a global variable

There's no point storing them in GObject data, we already have other
global variables anyway.

4 years agoexamples/sdlshare: Bus sync handlers return no value
Sebastian Dröge [Tue, 12 Mar 2019 20:24:03 +0000 (21:24 +0100)]
examples/sdlshare: Bus sync handlers return no value

4 years agoexamples/sdlshare: Fix various memory leaks
Sebastian Dröge [Tue, 12 Mar 2019 20:20:24 +0000 (21:20 +0100)]
examples/sdlshare: Fix various memory leaks

4 years agoalsasink: pause/resume
Axel Mårtensson [Mon, 18 Jun 2018 08:49:28 +0000 (10:49 +0200)]
alsasink: pause/resume

alsasink can now detect a resume, stop and pause. The sink is now
properly paused using snd_pcm_pause(), and without losing any data

4 years agoaudiosink: fix resuming after pause
Axel Mårtensson [Mon, 18 Jun 2018 08:44:55 +0000 (10:44 +0200)]
audiosink: fix resuming after pause

For resuming after paused, gst_audio_sink_ring_buffer_start() needs to
be called to notify the ringbuffer to continue to play.

4 years agoaudiosink: expose more audioringbuffer vmethods to child sinks
Philippe Renon [Tue, 10 Oct 2017 18:41:31 +0000 (20:41 +0200)]
audiosink: expose more audioringbuffer vmethods to child sinks

The newly exposed vmethods are pause, resume, stop and clear_all.
The existing reset vmethod is deprecated.

The audio sink will fallback to calling reset if pause or stop
are not provided and will fallback to calling start if
resume is not provided. There is no default clear_all
implementation.
Existing audio sinks continue to work as before.

This change is useful for sinks that need to distinguish
between a pause and a stop (currently both are handled
by a reset) and is needed for https://bugzilla.gnome.org/show_bug.cgi?id=788362

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

4 years agogst-play: Add support for interacting console input on Windows
Seungha Yang [Tue, 24 Sep 2019 06:05:30 +0000 (15:05 +0900)]
gst-play: Add support for interacting console input on Windows

Add Windows keyboard input handler. This could make gst-play UX
consistent between *nix and Windows.

4 years agostreamsynchronizer: avoid pad destruction races.
Charlie Turner [Fri, 20 Sep 2019 08:48:30 +0000 (09:48 +0100)]
streamsynchronizer: avoid pad destruction races.

Due to the use of {set/get}-element_private methods being used to store
the GstSyncStream in the src and sink pads, and the racey nature of pad
destruction, there are numerous ways we can be bitten by race conditions
in the stream synchronizer. Fix that by tying the pads toghether with
references.

4 years agoaudio: Use LoadPackagedLibrary when building for UWP
Nirbheek Chauhan [Fri, 10 May 2019 02:02:21 +0000 (07:32 +0530)]
audio: Use LoadPackagedLibrary when building for UWP

Universal Windows Platform apps are not allowed to use LoadLibrary to
load arbitrary DLLs from the filesystem. They can only use
LoadPackagedLibrary to load DLLs that have been packaged with the app
as assets.

See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/190

4 years agogst-play: Use gst_print* to avoid broken stdout string on Windows
Seungha Yang [Tue, 24 Sep 2019 06:32:33 +0000 (15:32 +0900)]
gst-play: Use gst_print* to avoid broken stdout string on Windows

Equvalant to https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/258

When debug enabled, the debug string might be broken on Windows.

4 years agobuild: fix debug output werror build with newer gcc
Matthew Waters [Mon, 23 Sep 2019 05:39:55 +0000 (15:39 +1000)]
build: fix debug output werror build with newer gcc

In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../gst-libs/gst/tag/tag.h:25,
                 from ../gst-libs/gst/tag/gsttageditingprivate.h:24,
                 from ../gst-libs/gst/tag/gsttageditingprivate.c:23:
../gst-libs/gst/tag/gsttageditingprivate.c: In function ‘__exif_tag_capturing_white_balance_to_exif_value’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1068:27: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1068 | #define GST_WARNING(...)  GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, __VA_ARGS__)
      |                           ^~~~~~~~~~~~~~~~~
../gst-libs/gst/tag/gsttageditingprivate.c:265:3: note: in expansion of macro ‘GST_WARNING’
  265 |   GST_WARNING ("Invalid white balance: %s", str);
      |   ^~~~~~~~~~~
../gst-libs/gst/tag/gsttageditingprivate.c:265:40: note: format string is defined here
  265 |   GST_WARNING ("Invalid white balance: %s", str);
      |                                        ^~

In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../gst-libs/gst/tag/tag.h:25,
                 from ../gst-libs/gst/tag/gstxmptag.c:39:
../gst-libs/gst/tag/gstxmptag.c: In function ‘deserialize_exif_gps_direction’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1068:27: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1068 | #define GST_WARNING(...)  GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, __VA_ARGS__)
      |                           ^~~~~~~~~~~~~~~~~
../gst-libs/gst/tag/gstxmptag.c:818:5: note: in expansion of macro ‘GST_WARNING’
  818 |     GST_WARNING ("Missing %s tag", dirref_str);
      |     ^~~~~~~~~~~
../gst-libs/gst/tag/gstxmptag.c:818:27: note: format string is defined here
  818 |     GST_WARNING ("Missing %s tag", dirref_str);
      |                           ^~
In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../gst-libs/gst/tag/tag.h:25,
                 from ../gst-libs/gst/tag/gstxmptag.c:39:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1068:27: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1068 | #define GST_WARNING(...)  GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, __VA_ARGS__)
      |                           ^~~~~~~~~~~~~~~~~
../gst-libs/gst/tag/gstxmptag.c:814:5: note: in expansion of macro ‘GST_WARNING’
  814 |     GST_WARNING ("Missing %s tag", dir_str);
      |     ^~~~~~~~~~~
../gst-libs/gst/tag/gstxmptag.c:814:27: note: format string is defined here
  814 |     GST_WARNING ("Missing %s tag", dir_str);
      |                           ^~

In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55,
                 from ../gst-libs/gst/gl/gstgl_fwd.h:24,
                 from ../gst-libs/gst/gl/gl.h:24,
                 from ../gst-libs/gst/gl/gstglsl.c:25:
../gst-libs/gst/gl/gstglsl.c: In function ‘gst_glsl_version_profile_from_string’:
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  645 |     gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  646 |         (GObject *) (object), __VA_ARGS__);    \
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1068:27: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’
 1068 | #define GST_WARNING(...)  GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, NULL, __VA_ARGS__)
      |                           ^~~~~~~~~~~~~~~~~
../gst-libs/gst/gl/gstglsl.c:333:7: note: in expansion of macro ‘GST_WARNING’
  333 |       GST_WARNING ("Invalid preprocesser directive detected: %s", version_s);
      |       ^~~~~~~~~~~
../gst-libs/gst/gl/gstglsl.c:333:62: note: format string is defined here
  333 |       GST_WARNING ("Invalid preprocesser directive detected: %s", version_s);
      |                                                              ^~

In function ‘print_stream_info’,
    inlined from ‘print_topology’ at ../tools/gst-discoverer.c:352:3:
../tools/gst-discoverer.c:316:3: error: ‘%s’ directive argument is null [-Werror=format-overflow=]
  316 |   g_print ("%*s%s: %s\n", 2 * GPOINTER_TO_INT (depth), " ",
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  317 |       gst_discoverer_stream_info_get_stream_type_nick (info), desc);
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4 years agogst-device-monitor: stop calling gst_device_monitor_get_devices()
Mathieu Duponchelle [Tue, 10 Sep 2019 23:29:23 +0000 (01:29 +0200)]
gst-device-monitor: stop calling gst_device_monitor_get_devices()

See https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/280

4 years agodevice-monitor: print caps features in the caps
Matthew Waters [Tue, 17 Sep 2019 11:33:49 +0000 (21:33 +1000)]
device-monitor: print caps features in the caps

4 years agoglimagesink: Fix VUYA in memory:DMABuf
Haihao Xiang [Mon, 16 Sep 2019 03:03:59 +0000 (11:03 +0800)]
glimagesink: Fix VUYA in memory:DMABuf

Sample pipeline:
gst-launch-1.0 videotestsrc ! msdkvpp ! \
video/x-raw\(memory:DMABuf\),format=VUYA ! glimagesink

4 years agoegldevice: Fix undeclared type build error
Seungha Yang [Wed, 28 Aug 2019 05:50:24 +0000 (14:50 +0900)]
egldevice: Fix undeclared type build error

Not all eglext.h defines EGLDeviceEXT type. That's implementation and
egl extension version dependent.

4 years agotests: fix up valgrind suppressions for glibc getaddrinfo leaks
Tim-Philipp Müller [Sun, 8 Sep 2019 00:03:57 +0000 (01:03 +0100)]
tests: fix up valgrind suppressions for glibc getaddrinfo leaks

Make more flexible. There is an extra
  gethostbyname2_r@@GLIBC_2.2.5 (getXXbyYY_r.c:217)
in the trace on the build bots (F30).

Fixes the -base and -good valgrind jobs on the 1.16 branch CI.

4 years agooggdemux: Move seeking in pull mode to the streaming thread
Thibault Saunier [Thu, 29 Aug 2019 15:16:39 +0000 (11:16 -0400)]
oggdemux: Move seeking in pull mode to the streaming thread

Flushing and teering down the streaming thread from the seeking thread
and simply letting the streaming thread handle the seek event in its
loop function.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/639

4 years agostreamsplitter: Drop duplicated force-key-unit events
Seungha Yang [Sun, 15 Apr 2018 10:19:34 +0000 (19:19 +0900)]
streamsplitter: Drop duplicated force-key-unit events

Forward force-key-unit event only once for the corresponding sequence number.

4 years agostreamcombiner: Forward upstream force-key-unit events to all sinkpads
Seungha Yang [Sun, 15 Apr 2018 10:15:28 +0000 (19:15 +0900)]
streamcombiner: Forward upstream force-key-unit events to all sinkpads

streamcombiner element forwards a upstream event only to one sinkpad.
When the streamcombiner is used with encodebin, the sinkpad
corresponding to pass-through path is configured before that of encoder,
and therefore streamcombiner forwards upstream events only to
the firstly configured one (i.e., pass-through path).

4 years agomeson: Reenable NEON support
Doug Nazar [Mon, 2 Sep 2019 20:20:07 +0000 (16:20 -0400)]
meson: Reenable NEON support

4 years agoaudio-resampler: Update NEON to handle remainders not multiples of 4
Doug Nazar [Tue, 3 Sep 2019 03:25:39 +0000 (23:25 -0400)]
audio-resampler: Update NEON to handle remainders not multiples of 4

If the remainder is not evenly divisable by 4, we'd miss the check
for zero and continue the loop until crashing. Change the branch
to take into account negatives as well.

This more closely matches the SSE loop.

4 years agoPass the code through codespell
Thibault Saunier [Thu, 29 Aug 2019 17:42:39 +0000 (13:42 -0400)]
Pass the code through codespell

4 years agooggdemux: fix werror build on macos
Matthew Waters [Fri, 30 Aug 2019 03:27:28 +0000 (13:27 +1000)]
oggdemux: fix werror build on macos

../ext/ogg/gstoggdemux.c:1071:7: error: format specifies type 'long' but the argument has type 'ogg_int64_t' (aka 'long long') [-Werror,-Wformat]
      packet->granulepos);
      ^~~~~~~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1062:96: note: expanded from macro 'GST_DEBUG_OBJECT'
#define GST_DEBUG_OBJECT(obj,...)       GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG,   obj,  __VA_ARGS__)
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
        (GObject *) (object), __VA_ARGS__);                             \
                              ^~~~~~~~~~~
../ext/ogg/gstoggdemux.c:1312:15: error: format specifies type 'long' but the argument has type 'ogg_int64_t' (aka 'long long') [-Werror,-Wformat]
              packet.granulepos);
              ^~~~~~~~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1060:98: note: expanded from macro 'GST_WARNING_OBJECT'
#define GST_WARNING_OBJECT(obj,...)     GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_WARNING, obj,  __VA_ARGS__)
                                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
/Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG'
        (GObject *) (object), __VA_ARGS__);                             \
                              ^~~~~~~~~~~

4 years agogl: also build plugin with -fobjc-arc
Matthew Waters [Fri, 30 Aug 2019 03:13:54 +0000 (13:13 +1000)]
gl: also build plugin with -fobjc-arc

Fixes macos werror build

../ext/gl/caopengllayersink.m:336:23: error: '__bridge_retained' casts have no effect when not using ARC [-Werror,-Warc-bridge-casts-disallowed-in-nonarc]
    ca_sink->layer = (__bridge_retained gpointer)layer;
                      ^~~~~~~~~~~~~~~~~~

4 years agoglwindow/cocoa: silence unused-variable warning
Matthew Waters [Fri, 30 Aug 2019 03:00:14 +0000 (13:00 +1000)]
glwindow/cocoa: silence unused-variable warning

We are using ARC to cleanup after ourselves.

../gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:159:20: error: unused variable 'queue' [-Werror,-Wunused-variable]
  dispatch_queue_t queue = (__bridge_transfer dispatch_queue_t) window->priv->gl_queue;
                   ^

4 years agom4/gst-gl: Add dummy GST_GL_HAVE_WINDOW_WINRT
Jan Schmidt [Wed, 28 Aug 2019 14:48:16 +0000 (00:48 +1000)]
m4/gst-gl: Add dummy GST_GL_HAVE_WINDOW_WINRT

Add a dummy define to make fix the autotools build for now. To
actually build WinRT support, use the meson build.

4 years agoglcontext/egl: fallback to WINDOW_BIT if PBUFFER_BIT fails
Matthew Waters [Wed, 28 Aug 2019 15:21:12 +0000 (01:21 +1000)]
glcontext/egl: fallback to WINDOW_BIT if PBUFFER_BIT fails

There are some drivers that do not advertise any PBUFFER EGLConfig's.

4 years agoeglimage: Fix memory leak
Jonas Larsson [Wed, 28 Aug 2019 18:24:01 +0000 (11:24 -0700)]
eglimage: Fix memory leak

Also free the GstEGLImage struct allocated by g_new0.

Fixes #661

4 years ago{audio,video}aggregator: define autoptr cleanup functions
Mathieu Duponchelle [Mon, 26 Aug 2019 22:10:32 +0000 (00:10 +0200)]
{audio,video}aggregator: define autoptr cleanup functions

4 years agoaudiodecoder: fix ctitical info assertion 'GST_IS_CAPS (dec->priv->ctx.caps)' failed
Hou Qi [Wed, 21 Aug 2019 11:04:56 +0000 (19:04 +0800)]
audiodecoder: fix ctitical info assertion 'GST_IS_CAPS (dec->priv->ctx.caps)' failed

Matroskademux will send gap event when lag of video and audio is over 3 seconds.
audiodecoder needs to handle gap event and set default output caps.
Only audio info is set, while output caps is ignored. This cause the assertion failed.

Need to fill output caps in gst_audio_decoder_negotiate_default_caps() with
negotiated caps to avoid critical info printed when check it later.

4 years agogstgl: Add a new window type for WinRT
Nirbheek Chauhan [Tue, 21 May 2019 06:14:39 +0000 (11:44 +0530)]
gstgl: Add a new window type for WinRT

This is needed for using GstGL with ANGLE as the GLES implementation
in Universal Windows Platform apps that use the Windows Runtime
(WinRT) instead of Win32, which is deprecated and not allowed in
Windows Store apps.

This has been tested with Servo on the Microsoft HoloLens 2, and seems
to work quite well.

4 years agoencoding-target: fix SECTION comment syntax
Mathieu Duponchelle [Mon, 26 Aug 2019 23:03:40 +0000 (01:03 +0200)]
encoding-target: fix SECTION comment syntax

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/658

4 years agoDon't pass default GLib marshallers for signals
Niels De Graef [Mon, 26 Aug 2019 05:54:48 +0000 (07:54 +0200)]
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.

4 years agodocstrings: port ulinks to markdown links
Mathieu Duponchelle [Fri, 23 Aug 2019 16:28:16 +0000 (18:28 +0200)]
docstrings: port ulinks to markdown links

4 years agopo: update POTFILES
Piotr Drąg [Wed, 21 Aug 2019 14:50:12 +0000 (14:50 +0000)]
po: update POTFILES

4 years agogl/egl/display: Add support EGLDevice display type
Seungha Yang [Thu, 4 Apr 2019 08:41:13 +0000 (17:41 +0900)]
gl/egl/display: Add support EGLDevice display type

Simple addition for supporting EXT_platform_device typed display.
It's a kind of special display type (part of EGL specification)
which has no window at all.
To use EGLDevice explicitly, set environment "GST_GL_WINDOW=egl-device"

See also https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_platform_device.txt

4 years agoglwindow: Introduce new vfunc for querying output surface availability
Seungha Yang [Thu, 4 Apr 2019 15:43:02 +0000 (00:43 +0900)]
glwindow: Introduce new vfunc for querying output surface availability

Only dummy window will return FALSE for now.

4 years agovideo-hdr: Update documentation
Seungha Yang [Tue, 20 Aug 2019 12:10:45 +0000 (21:10 +0900)]
video-hdr: Update documentation

* Fix typo
s/nunormalized/normalized/g

* Update GstVideoMasteringDisplayInfo description
Each values are not array.

* Add missing newline between arguments description and
detailed comment.

4 years agogl: New pushsrc-based glbasesrc base class
Philippe Normand [Wed, 7 Aug 2019 15:15:40 +0000 (16:15 +0100)]
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.

4 years agovideo-frame: Take TFF flag from the video info if it was set in there
Sebastian Dröge [Fri, 16 Aug 2019 08:58:28 +0000 (11:58 +0300)]
video-frame: Take TFF flag from the video info if it was set in there

The caps and thus the video info have preference. If the field order is
set in there then it applies to all frames.

This works around issues where the tff field order is only set in the
caps but not additionally in the buffer flags.

4 years agoaudioaggregator: add missing Since tag
Mathieu Duponchelle [Mon, 12 Aug 2019 16:00:34 +0000 (18:00 +0200)]
audioaggregator: add missing Since tag

4 years agoglcolorconvert: Fix external-oes shader
Xavier Claessens [Fri, 9 Aug 2019 20:04:03 +0000 (16:04 -0400)]
glcolorconvert: Fix external-oes shader

The #extention must come before 'precision highp float;'.

Closes: #650

4 years agovideo-hdr: Fix document typo
Seungha Yang [Mon, 12 Aug 2019 13:42:10 +0000 (22:42 +0900)]
video-hdr: Fix document typo

Fix missing document update. GstVideoContentLightMeta was changed to
GstVideoContentLightLevel during code review.

4 years agovideo-color: keep UNKNOWN colorimetry define automatically up-to-date
Tim-Philipp Müller [Sun, 11 Aug 2019 13:16:51 +0000 (14:16 +0100)]
video-color: keep UNKNOWN colorimetry define automatically up-to-date

Follow-up to !310 and helps with backport commits like !360

4 years agogl: Add support for P016 format
Seungha Yang [Thu, 8 Aug 2019 02:43:03 +0000 (11:43 +0900)]
gl: Add support for P016 format

All implementation for P010_10LE/BE can be reused.

4 years agovideo: Add P016 LE/BE formats
Seungha Yang [Wed, 7 Aug 2019 16:06:57 +0000 (01:06 +0900)]
video: Add P016 LE/BE formats

Add semi-planar 4:2:0 16 bits format.

4 years agotimeoverlay: chain up finalize
Mathieu Duponchelle [Wed, 7 Aug 2019 18:18:34 +0000 (20:18 +0200)]
timeoverlay: chain up finalize

Mistakenly forgot to amend this in for !325

4 years agovideo: Add Y444_16LE and Y444_16BE formats
Seungha Yang [Tue, 6 Aug 2019 12:49:04 +0000 (21:49 +0900)]
video: Add Y444_16LE and Y444_16BE formats

Add 16 bits planar 4:4:4 YUV formats.

4 years agovideo-anc: Fix ADF detection when trying to extract data from vanc
Sebastian Dröge [Wed, 7 Aug 2019 10:01:07 +0000 (13:01 +0300)]
video-anc: Fix ADF detection when trying to extract data from vanc

Previously we were checking offset 1 twice, but the second check
should've been for offset 2.

4 years agotimeoverlay: add a property to show times as dates
Mathieu Duponchelle [Wed, 10 Jul 2019 12:00:56 +0000 (14:00 +0200)]
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().

4 years agoplayback-test: plug some memory leaks
Aaron Boxer [Fri, 2 Aug 2019 14:26:24 +0000 (10:26 -0400)]
playback-test: plug some memory leaks

4 years agoexiftag: Don't output rational numbers with denominator = 0
Jan Schmidt [Mon, 29 Jul 2019 18:01:55 +0000 (04:01 +1000)]
exiftag: Don't output rational numbers with denominator = 0

4 years agogl/wayland: fix wayland event source burning CPU
Lucas Stach [Tue, 28 May 2019 15:43:25 +0000 (17:43 +0200)]
gl/wayland: fix wayland event source burning CPU

Commit c71dd72b "gl/wayland: fix glib mainloop integration" was overeager
in removing the poll result test from the check function. This caused
dispatch to be called even if no new events are available on the
Wayland connection, which in turn would wake up the glib mainloop,
causing effectively a tight loop without ever blocking on the poll.

Fixes #603

4 years agoAdd used attribute in order to make NEON detection working with -flto.
Martin Liska [Wed, 24 Jul 2019 08:12:17 +0000 (10:12 +0200)]
Add used attribute in order to make NEON detection working with -flto.

4 years agogluploadelement: don't passthrough on same caps
Matthew Waters [Wed, 24 Jul 2019 04:25:19 +0000 (14:25 +1000)]
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.

4 years agotypefindfunctions: Check for NULL return of gst_type_find_peek() instead of segfaulti...
Sebastian Dröge [Tue, 23 Jul 2019 10:54:24 +0000 (13:54 +0300)]
typefindfunctions: Check for NULL return of gst_type_find_peek() instead of segfaulting in otio typefinder

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/merge_requests/329#note_194943