platform/upstream/gstreamer.git
4 years agovideo-hdr: Fix a docs typo (x -> y)
Jan Schmidt [Thu, 2 Apr 2020 12:30:57 +0000 (23:30 +1100)]
video-hdr: Fix a docs typo (x -> y)

4 years agoaudiodecoder: Handle instant-rate-change event
Jan Schmidt [Fri, 30 Nov 2018 12:10:55 +0000 (23:10 +1100)]
audiodecoder: Handle instant-rate-change event

When receiving an instant-rate-change event, store the updated
seek flags and replace the flags in any input segments with them
to allow for instant switching between trickmodes and not.

4 years agovideodecoder: Handle instant-rate-change event
Jan Schmidt [Fri, 30 Nov 2018 11:56:11 +0000 (22:56 +1100)]
videodecoder: Handle instant-rate-change event

When receiving an instant-rate-change event, store the updated
seek flags and replace the flags in any input segments with them
to allow for instant switching between trickmodes and not.

4 years agoaudiobasesink: Handle an extra case of buffers being out of segment
Jan Schmidt [Fri, 28 Sep 2018 14:49:46 +0000 (00:49 +1000)]
audiobasesink: Handle an extra case of buffers being out of segment

It's possible that a buffer might be within the segment proper,
but not within the "valid" part we're playing, which is only
things after the 'offset' part of the segment. In that case,
the running-times of the buffer-start and buffer-stop will be
GST_CLOCK_TIME_NONE, and we'd better not schedule playback that
far in the future.

4 years agogst-play: Add -i parameter for instant rate changes
Jan Schmidt [Mon, 20 Aug 2018 16:21:23 +0000 (02:21 +1000)]
gst-play: Add -i parameter for instant rate changes

Add a command line flag that enables use of the
instant rate changes flag when doing rate changes.

4 years agotests/examples/seek/instant-rate-change: Add example app
Jan Schmidt [Fri, 17 Aug 2018 17:37:09 +0000 (03:37 +1000)]
tests/examples/seek/instant-rate-change: Add example app

Add an example app to exercise instant rate changes in a few
scenarios. Currently it deadlocks a lot sending rate changes to
paused pipelines.

4 years agoplayback-test: Add support for start_type=stop_type=NONE seeks
Sebastian Dröge [Mon, 18 Jun 2018 05:51:05 +0000 (08:51 +0300)]
playback-test: Add support for start_type=stop_type=NONE seeks

4 years agoplayback-test: Add support for sending instant-rate-change seeks
Sebastian Dröge [Fri, 25 May 2018 08:01:58 +0000 (11:01 +0300)]
playback-test: Add support for sending instant-rate-change seeks

4 years agovideoencoder: subclass 'set_format' should be optional
Stéphane Cerveau [Wed, 1 Apr 2020 15:47:04 +0000 (17:47 +0200)]
videoencoder: subclass 'set_format' should be optional

Aligns documentation with the code to make the subclass
'set_format' call optional.

4 years agovideo-hdr: Rework for GstVideoMasteringDisplayInfo and GstVideoContentLightLevel...
Seungha Yang [Tue, 10 Mar 2020 11:36:16 +0000 (20:36 +0900)]
video-hdr: Rework for GstVideoMasteringDisplayInfo and GstVideoContentLightLevel struct

This commit modifies GstVideoMasteringDisplayInfo and GstVideoContentLightLevel
structs so that each value is to be more like hdr_metadata_infoframe struct
of linux drm header and DXGI_HDR_METADATA_HDR10 struct of Windows.
So each value is no more fraction but normalized one as per CTA 861.G spec.
Also the unit of each value will be consistent with H.264, H.265
specifications, hdr_metadata_infoframe struct for linux and
DXGI_HDR_METADATA_HDR10 struct for Windows.

4 years agovideoaggregator: fix gir warning about invalid doc comment
Matthew Waters [Wed, 1 Apr 2020 09:05:06 +0000 (20:05 +1100)]
videoaggregator: fix gir warning about invalid doc comment

[38/1301] Generating GstVideo-1.0.gir with a custom command.
../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideoaggregator.c:231: Error: GstVideo: identifier not found on the first line:
   *
    ^

4 years agogl: add support for Y412_LE / Y412_BE format
Haihao Xiang [Wed, 1 Apr 2020 05:55:50 +0000 (13:55 +0800)]
gl: add support for Y412_LE / Y412_BE format

Reuse Y410 code for Y412_LE / Y412_BE except gl format. The gl format is
RGBA16 for Y412_LE / Y412_BE.

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

4 years agogl: add support for Y212_LE / Y212_BE format
Haihao Xiang [Mon, 30 Mar 2020 06:37:26 +0000 (14:37 +0800)]
gl: add support for Y212_LE / Y212_BE format

Because the color value is stored in MSB, so we can reuse the
Y210 code for P012_LE / P012_BE

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

4 years agogstvideoaggregator: expose max-last-buffer-repeat property on pads
Mathieu Duponchelle [Fri, 27 Mar 2020 01:48:39 +0000 (02:48 +0100)]
gstvideoaggregator: expose max-last-buffer-repeat property on pads

This can be used to have compositor display either the background
or a stream on a lower zorder after a live input stream freezes
for a certain amount of time, for example because of network
issues.

4 years agosubparse: convert from pango-markup to utf8 ..
Mathieu Duponchelle [Fri, 20 Mar 2020 18:09:17 +0000 (19:09 +0100)]
subparse: convert from pango-markup to utf8 ..

when downstream requires it

4 years agovideo: add support for Y412 format
Haihao Xiang [Thu, 12 Mar 2020 02:27:34 +0000 (10:27 +0800)]
video: add support for Y412 format

Y412 is a packed 12 bits 4:4:4:4 format in the order U, Y, V, A, 2 bytes
per component with the color value stored in the 12 most significant
bits

Refer to https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h#L182
for the LE variant

4 years agovideo: add support for Y212 format
Haihao Xiang [Wed, 11 Mar 2020 02:58:00 +0000 (10:58 +0800)]
video: add support for Y212 format

Y212 is a packed 12 bits 4:2:2 format in the order Y, U, Y, V, 2 bytes
per component with the color value stored in the 12 most significant
bits

Refer to https://github.com/torvalds/linux/blob/master/include/uapi/drm/drm_fourcc.h#L174
for the LE variant

4 years agovideo-blend: Add support for blending on top of 16 bit per component formats
Sebastian Dröge [Thu, 12 Mar 2020 13:18:22 +0000 (15:18 +0200)]
video-blend: Add support for blending on top of 16 bit per component formats

With this we can support every currently supported video format for
blending.

4 years agoglcontext/cocoa: handle sending one message during shutdown
Matthew Waters [Thu, 26 Mar 2020 02:51:24 +0000 (13:51 +1100)]
glcontext/cocoa: handle sending one message during shutdown

gst_gl_window_quit() will attempt to send a message but will be called
from GstGLContext's finalize handler and so the weak ref that backs
gst_gl_window_get_context will return NULL as it has already been
cleared.  We need that context in send_message_async to decide whether
to run the provided callback immediately or queue in GCD

4 years agoglcontext: add context is valid precondition to get_thread()
Matthew Waters [Thu, 26 Mar 2020 02:50:52 +0000 (13:50 +1100)]
glcontext: add context is valid precondition to get_thread()

4 years agoglwindow: remove unused private alive variable
Matthew Waters [Thu, 26 Mar 2020 02:50:22 +0000 (13:50 +1100)]
glwindow: remove unused private alive variable

4 years agoglupload: fix segfault
Haihao Xiang [Thu, 26 Mar 2020 05:46:56 +0000 (13:46 +0800)]
glupload: fix segfault

Without this fix, it is possible that outbuf is not initialized, which
will result in segfault when call gst_buffer_replace (&outbuf, NULL). In
addition, the patch fixes potential memory leak in restart path.

The segfault can be reproduced by the pipeline below:

GST_GL_PLATFORM=egl \
gst-launch-1.0 videotestsrc ! msdkh265enc ! msdkh265dec ! \
'video/x-raw(memory:DMABuf)' ! glimagesink

4 years agogl: add support for P012_LE / P012_BE format
Haihao Xiang [Tue, 24 Mar 2020 04:39:50 +0000 (12:39 +0800)]
gl: add support for P012_LE / P012_BE format

Because the color value is stored in MSB, so we can reuse the
P016_LE / P016_BE code for P012_LE / P012_BE

4 years agoglupload: Fix fallback from direct dmabuf to dmabuf upload method
Chris Lord [Mon, 9 Mar 2020 10:21:53 +0000 (10:21 +0000)]
glupload: Fix fallback from direct dmabuf to dmabuf upload method

In the situation that the direct dmabuf path is chosen, but with an
unsupported texture format, this causes accept to fail rather than
continue and fail at the upload stage. It is also possibly necessary to
reconfigure after falling back from direct to non-direct dmabuf upload
paths.

4 years agovideorate: Signalling reconfigure to upstream whenever updating downstream caps
Seungha Yang [Mon, 23 Mar 2020 09:42:19 +0000 (18:42 +0900)]
videorate: Signalling reconfigure to upstream whenever updating downstream caps

Previously configured bufferpool can be expired/inactivate by the
updated caps. Therefore new reconfigure event should be signalled in order to
do allocation query dancing between upstream and downstream again.

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

4 years agopkgconfig: fix missing gst-tag Requires
Loïc Minier [Sat, 14 Mar 2020 19:22:50 +0000 (20:22 +0100)]
pkgconfig: fix missing gst-tag Requires

Promote deps gstreamer-tag to Requires for pbutils and add missing
gstreamer-tag Requires for gst-audio. Uninstalled builds would fail
with:
stage/usr/local/lib/x86_64-linux-gnu/libgstpbutils-1.0.so: undefined reference to `gst_tag_list_to_vorbiscomment_buffer'
[...]
stage/usr/local/lib/x86_64-linux-gnu/libgstaudio-1.0.so: undefined reference to `gst_tag_register_musicbrainz_tags'

4 years agopkgconfig: add missing gst-rtp dep to gst-sdp
Loïc Minier [Sat, 14 Mar 2020 18:42:24 +0000 (19:42 +0100)]
pkgconfig: add missing gst-rtp dep to gst-sdp

Uninstalled builds using rtp would fail with:
stage/usr/local/lib/x86_64-linux-gnu/libgstsdp-1.0.so: undefined reference to `gst_rtp_payload_info_for_pt'

4 years agovideodecoder: fix documentation
Víctor Manuel Jáquez Leal [Sat, 21 Mar 2020 13:03:44 +0000 (14:03 +0100)]
videodecoder: fix documentation

Fix list indentation, othewise it is interpreted as verbatim.

4 years agonavigation: Use G_DEFINE_INTERFACE
Niels De Graef [Tue, 17 Mar 2020 17:40:26 +0000 (18:40 +0100)]
navigation: Use G_DEFINE_INTERFACE

4 years agostreamvolume: Use G_DECLARE_INTERFACE
Niels De Graef [Tue, 17 Mar 2020 17:20:59 +0000 (18:20 +0100)]
streamvolume: Use G_DECLARE_INTERFACE

4 years agogstphysmemory: Use G_DECLARE_INTERFACE
Niels De Graef [Tue, 17 Mar 2020 16:51:36 +0000 (17:51 +0100)]
gstphysmemory: Use G_DECLARE_INTERFACE

4 years agoaudiovisualizer: Add support for g_autoptr()
Niels De Graef [Tue, 17 Mar 2020 16:47:47 +0000 (17:47 +0100)]
audiovisualizer: Add support for g_autoptr()

Ideally, we would use something like `G_DECLARE_DERIVABLE_TYPE`, but
that would break API.

4 years agortpbuffer: add_extension_onebyte_header: fix the proper wordlen
Miguel Paris [Thu, 20 Feb 2020 16:25:19 +0000 (17:25 +0100)]
rtpbuffer: add_extension_onebyte_header: fix the proper wordlen

The wordlen ("length") MUST represent the total "number of 32-bit words
in the extension, excluding the four-octet extension header" (rfc3550).
There are cases where already existent padding is reused for adding
the new extension. So the new wordlen should be updated if the new
added extension makes it to increase.

4 years agortpbuffer: get_onebyte_header_end_offset: allow 0 offset
Miguel Paris [Fri, 13 Dec 2019 15:06:44 +0000 (16:06 +0100)]
rtpbuffer: get_onebyte_header_end_offset: allow 0 offset

There are some cases where the full extension data could be padding.
In order to make the GstRtpBuffer robust enough, this change supports
this case.

4 years agogl/wayland: Mouse events handling
Philippe Normand [Mon, 10 Feb 2020 18:17:42 +0000 (18:17 +0000)]
gl/wayland: Mouse events handling

4 years agogl/navigation: Scroll events dispatch support
Philippe Normand [Mon, 10 Feb 2020 18:05:01 +0000 (18:05 +0000)]
gl/navigation: Scroll events dispatch support

4 years agonavigation: Mouse scroll events support
Philippe Normand [Mon, 10 Feb 2020 17:55:24 +0000 (17:55 +0000)]
navigation: Mouse scroll events support

This patch introduces a new API to send and parse mouse scroll events. Mouse
event coordinates are sent relative to the display space of the related output
area. This is usually the size in pixels of the window associated with the
element implementing the GstNavigation interface.

4 years agoaudio: annotate @buf in finish_frame methods
Guillaume Desmottes [Wed, 18 Mar 2020 14:38:25 +0000 (15:38 +0100)]
audio: annotate @buf in finish_frame methods

4 years agovideo: add support for P012 format
Haihao Xiang [Thu, 27 Feb 2020 09:52:20 +0000 (17:52 +0800)]
video: add support for P012 format

P012 is a semi-planar 4:2:0 format, 2bytes per component with the value
stored in the 12 most significant bits

4 years agovolume: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:32:23 +0000 (13:32 +0100)]
volume: Use G_DECLARE_FINAL_TYPE

4 years agovideotestsrc: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:31:22 +0000 (13:31 +0100)]
videotestsrc: Use G_DECLARE_FINAL_TYPE

4 years agovideoscale: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:29:22 +0000 (13:29 +0100)]
videoscale: Use G_DECLARE_FINAL_TYPE

4 years agovideorate: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:27:40 +0000 (13:27 +0100)]
videorate: Use G_DECLARE_FINAL_TYPE

4 years agovideoconvert: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:25:47 +0000 (13:25 +0100)]
videoconvert: Use G_DECLARE_FINAL_TYPE

4 years agosubparse: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:23:36 +0000 (13:23 +0100)]
subparse: Use G_DECLARE_FINAL_TYPE

4 years agorawparse: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:20:51 +0000 (13:20 +0100)]
rawparse: Use G_DECLARE_FINAL_TYPE

4 years agooverlaycomposition: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 12:20:31 +0000 (13:20 +0100)]
overlaycomposition: Use G_DECLARE_FINAL_TYPE

4 years agogio: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 07:02:02 +0000 (08:02 +0100)]
gio: Use G_DECLARE_FINAL_TYPE

4 years agoencoding: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:55:52 +0000 (07:55 +0100)]
encoding: Use G_DECLARE_FINAL_TYPE

Note that we didn't do it for encodebin, as it has a class struct. We
_could_ techincally use `G_DECLARE_DERIVABLE_TYPE()` for that one, but
that would mean also using a private struct, which is even more work for
no gain.

4 years agoadder: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:51:24 +0000 (07:51 +0100)]
adder: Use G_DECLARE_FINAL_TYPE

4 years agoaudioconvert: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:49:45 +0000 (07:49 +0100)]
audioconvert: Use G_DECLARE_FINAL_TYPE

4 years agoaudiomixer: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:46:47 +0000 (07:46 +0100)]
audiomixer: Use G_DECLARE_FINAL_TYPE

4 years agoaudiorate: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:44:28 +0000 (07:44 +0100)]
audiorate: Use G_DECLARE_FINAL_TYPE

4 years agoaudioresample: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:42:52 +0000 (07:42 +0100)]
audioresample: Use G_DECLARE_FINAL_TYPE

4 years agoaudiotestsrc: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:41:16 +0000 (07:41 +0100)]
audiotestsrc: Use G_DECLARE_FINAL_TYPE

4 years agocompositor: Use G_DECLARE_FINAL_TYPE
Niels De Graef [Thu, 12 Mar 2020 06:39:09 +0000 (07:39 +0100)]
compositor: Use G_DECLARE_FINAL_TYPE

4 years ago*aggregator: Add g_autoptr support for *ConvertPad
Niels De Graef [Sat, 14 Mar 2020 13:42:12 +0000 (14:42 +0100)]
*aggregator: Add g_autoptr support for *ConvertPad

4 years agogstrtpbasepayloader: Add property for scaling RTP timestamp
Tobias Ronge [Mon, 9 Mar 2020 14:26:42 +0000 (15:26 +0100)]
gstrtpbasepayloader: Add property for scaling RTP timestamp

This patch introduces a property which, if set to FALSE, prevents RTP
basepayloader from scaling the RTP time when a segment's rate is not
equal to 1.0. The specification is ambiguous on this subject and some
clients expect the timestamps not to be scaled.

4 years agovideometa: constify tc argument to add_video_time_meta()
Matthew Waters [Mon, 16 Mar 2020 04:32:47 +0000 (15:32 +1100)]
videometa: constify tc argument to add_video_time_meta()

We don't modify the argument.

4 years agomeson: add window system egl
Peter Seiderer [Mon, 16 Dec 2019 18:49:09 +0000 (19:49 +0100)]
meson: add window system egl

4 years agortsp: remove documentation link on GTimeVal
Guillaume Desmottes [Thu, 12 Mar 2020 08:14:10 +0000 (13:44 +0530)]
rtsp: remove documentation link on GTimeVal

Looks like it's been removed from glib.devhelp2 on Fedora 31.

Fix #508

4 years agogl/wayland: use wayland's roundtrip_queue()
Matthew Waters [Thu, 5 Mar 2020 01:29:49 +0000 (12:29 +1100)]
gl/wayland: use wayland's roundtrip_queue()

There's no need to roll our own anymore

4 years agosubparse: accept WebVTT timestamps without an hour component
Mathieu Duponchelle [Wed, 11 Mar 2020 00:01:34 +0000 (01:01 +0100)]
subparse: accept WebVTT timestamps without an hour component

https://www.w3.org/TR/webvtt1/#webvtt-timestamp

mm:ss,000 is a valid WebVTT timestamp

4 years agocompositor: Create a square checkerboard for UYVY/YUY2/YVYU too
Sebastian Dröge [Mon, 9 Mar 2020 18:16:47 +0000 (20:16 +0200)]
compositor: Create a square checkerboard for UYVY/YUY2/YVYU too

Previously the "squares" were twice as wide.

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

4 years agocompositor: Define a separate checker fill function for BGRx/RGBx than for xBGR/xRGB
Sebastian Dröge [Mon, 9 Mar 2020 18:12:12 +0000 (20:12 +0200)]
compositor: Define a separate checker fill function for BGRx/RGBx than for xBGR/xRGB

Otherwise we'll create a cyan or yellow checkerboard.

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

4 years agotcpclientsrc: Fix compilation on FreeBSD
Vivia Nikolaidou [Tue, 3 Mar 2020 13:19:21 +0000 (15:19 +0200)]
tcpclientsrc: Fix compilation on FreeBSD

The members of the tcp_info struct are prefixed with a double
underscore, as reported in
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/584#note_423487

4 years agoglupload: dmabuf: only accept uploads to external-oes if supported by the context
Philipp Zabel [Thu, 5 Mar 2020 23:03:49 +0000 (00:03 +0100)]
glupload: dmabuf: only accept uploads to external-oes if supported by the context

This keeps the DirectDmabufExternal uploader from accepting buffers if
texture-target=external-oes is not supported by the GL context.

4 years agogloverlay: Fix various issues in allocation handling
Edward Hervey [Thu, 28 Nov 2019 16:31:57 +0000 (17:31 +0100)]
gloverlay: Fix various issues in allocation handling

* A copy-paste error was getting the information from the wrong
  query
* The 'allocation_meta' GstStructure was being leaked
* No check was done on whether the query existed (to try to set the
  resulting allocation meta on)

CID: 1439872
CID: 1439873
CID: 1439874
CID: 1439875
CID: 1439876
CID: 1439877

4 years agomeson: static linkig of tools needs gmodule_dep
Peter Seiderer [Tue, 3 Mar 2020 16:07:24 +0000 (17:07 +0100)]
meson: static linkig of tools needs gmodule_dep

Add gmodule_dep (analog to gstreamer/tools/meson.build).

Fixes:

.../bin/ld: .../usr/lib/libgstreamer-1.0.a(gstplugin.c.o): in function `gst_plugin_register_func':
gstplugin.c:(.text+0x3bc): undefined reference to `g_module_make_resident'
.../bin/ld: .../usr/lib/libgstreamer-1.0.a(gstplugin.c.o): in function `_priv_gst_plugin_load_file_for_registry':
gstplugin.c:(.text+0x1228): undefined reference to `g_module_supported'
.../bin/ld: gstplugin.c:(.text+0x126c): undefined reference to `g_module_open'
.../bin/ld: gstplugin.c:(.text+0x1368): undefined reference to `g_module_symbol'
.../bin/ld: gstplugin.c:(.text+0x1494): undefined reference to `g_module_supported'
.../bin/ld: gstplugin.c:(.text+0x17f4): undefined reference to `g_module_close'
.../bin/ld: gstplugin.c:(.text+0x1a2c): undefined reference to `g_module_error'

4 years agogl/wayland: use a proxy wrapper for the wl_display
Matthew Waters [Tue, 3 Mar 2020 00:53:53 +0000 (11:53 +1100)]
gl/wayland: use a proxy wrapper for the wl_display

This allows us to remove races when setting the wl_queue on wayland
objects with wl_proxy_set_queue() as each created object is created with
the queue already set.

We can also move all our initilization code into the window as we
can retrieve all wayland objects from each window instance.  This
removes a possible race when integrating with external API's as we would
always attempt to immediately retrieve a small set of wayland objects.
That is no longer the case with the objects from each window instance.

4 years agoglfilter: use gst_object_unref/ref functions
Matthew Waters [Tue, 3 Mar 2020 00:43:48 +0000 (11:43 +1100)]
glfilter: use gst_object_unref/ref functions

Allows better visibility into ref/unref points with the leaks tracer

4 years agogl/wayland: fix xdg shell close notification
Matthew Waters [Tue, 3 Mar 2020 00:42:11 +0000 (11:42 +1100)]
gl/wayland: fix xdg shell close notification

Don't segfault by not calling the appropriate callback that destroys
resources in the correct order.

4 years agoglstereomix: support gl display changes
Matthew Waters [Wed, 12 Feb 2020 01:44:54 +0000 (12:44 +1100)]
glstereomix: support gl display changes

4 years agoglbasefilter: add support for changing the display
Matthew Waters [Wed, 5 Feb 2020 01:26:54 +0000 (12:26 +1100)]
glbasefilter: add support for changing the display

Each element will remove its usage of the old display and context and
try to retrieve a new GL context.

4 years agoglstereosplit: support gl display changes
Matthew Waters [Tue, 4 Feb 2020 03:19:21 +0000 (14:19 +1100)]
glstereosplit: support gl display changes

4 years agoglbasesrc: add support for changing display's
Matthew Waters [Tue, 4 Feb 2020 03:06:05 +0000 (14:06 +1100)]
glbasesrc: add support for changing display's

4 years agogldisplay: add support removing a context from the internal list
Matthew Waters [Tue, 4 Feb 2020 03:04:21 +0000 (14:04 +1100)]
gldisplay: add support removing a context from the internal list

4 years agogl/mixer: support GstGLDisplay changes
Matthew Waters [Tue, 4 Feb 2020 02:58:06 +0000 (13:58 +1100)]
gl/mixer: support GstGLDisplay changes

4 years agoglupload: dmabuf: add DirectDmabufExternal uploader
Philipp Zabel [Tue, 18 Feb 2020 12:46:08 +0000 (13:46 +0100)]
glupload: dmabuf: add DirectDmabufExternal uploader

Automatic negotiation of texture-target=external-oes does not work
without separating the external-oes support out of the DirectDmabuf
uploader into a separate DirectDmabufExternal uploader.

4 years agoglupload: fix transform_caps NULL pointer dereference
Philipp Zabel [Mon, 24 Feb 2020 15:38:56 +0000 (16:38 +0100)]
glupload: fix transform_caps NULL pointer dereference

gst_gl_upload_transform_caps() is missing a NULL pointer check in case
the current upload method's transform_caps returns a NULL pointer. In
the following loop over all upload methods, NULL pointer return values
are already handled correctly.

4 years agoglupload: dmabuf: support direct upload into external-oes textures
Philipp Zabel [Wed, 12 Feb 2020 17:25:54 +0000 (18:25 +0100)]
glupload: dmabuf: support direct upload into external-oes textures

Some drivers support directly importing DMA buffers in some formats into
external-oes textures only, for example because the hardware contains
native YUV samplers.
Note that in these cases colorimetry can only be passed as hints and
there is no feedback whether the driver supports the required YUV
encoding matrix and quantization range.

4 years agogl/egl: support direct dmabuf import with external-oes only formats
Philipp Zabel [Thu, 13 Feb 2020 09:28:40 +0000 (10:28 +0100)]
gl/egl: support direct dmabuf import with external-oes only formats

Allow creating EGL images from DMA buffers in formats that the driver
only supports for the external-oes texture target.

Pass the intended texture target to gst_egl_image_from_dmabuf_direct so
that _gst_egl_image_check_dmabuf_direct can decide whether to create an
EGL image for a format that can only be targeted at external-oes
textures by the driver. Allow creating GstGLMemoryEGL objects from these
DMA buffers.

4 years agoglquery: fix a possible unintialized value
Matthew Waters [Mon, 2 Mar 2020 08:35:16 +0000 (19:35 +1100)]
glquery: fix a possible unintialized value

A GL driver may not fill the resulting value so initialize it to 0
ourselves.

4 years agogl/context/glx: dump GLXFBConfig information to debug logs
Matthew Waters [Wed, 26 Feb 2020 03:33:16 +0000 (14:33 +1100)]
gl/context/glx: dump GLXFBConfig information to debug logs

4 years agotcpclientsrc: Expose connection stats as property
Vivia Nikolaidou [Mon, 24 Feb 2020 14:44:12 +0000 (16:44 +0200)]
tcpclientsrc: Expose connection stats as property

Unfortunately the OS takes care of bad connections for us, so we can't
get the stats in a platform-independent way. Count total bytes received
as well, platform-independently.

4 years agovideo-info: fix typo in doc
Guillaume Desmottes [Mon, 10 Feb 2020 04:59:25 +0000 (10:29 +0530)]
video-info: fix typo in doc

4 years agovideo: fix GST_VIDEO_FRAME_IS_BOTTOM_FIELD()
Guillaume Desmottes [Fri, 7 Feb 2020 05:48:24 +0000 (11:18 +0530)]
video: fix GST_VIDEO_FRAME_IS_BOTTOM_FIELD()

GST_VIDEO_FRAME_FLAG_BOTTOM_FIELD is a subset of
GST_VIDEO_FRAME_FLAG_TOP_FIELD so needs to be checked accordingly.

Fix #726

4 years agovideo: add macros checking for GST_VIDEO_BUFFER_FLAG_TOP/BOTTOM_FIELD flags
Guillaume Desmottes [Thu, 6 Feb 2020 09:05:47 +0000 (14:35 +0530)]
video: add macros checking for GST_VIDEO_BUFFER_FLAG_TOP/BOTTOM_FIELD flags

The GST_VIDEO_BUFFER_FLAG_TOP_FIELD flag is a superset of
GST_VIDEO_BUFFER_FLAG_BOTTOM_FIELD as they are defined using other
flags. As a result we can't use GST_BUFFER_FLAG_IS_SET() to check for
those flags.

4 years agovideoencoder: protect the use of num_subframes
Stéphane Cerveau [Thu, 6 Feb 2020 08:52:31 +0000 (09:52 +0100)]
videoencoder: protect the use of num_subframes

change stream lock location to protect the use of
frame->abidata.ABI.num_subframes

4 years agovideoencoder: Release stream lock in finish_subframe before pad_push
Devarsh Thakkar [Wed, 5 Feb 2020 10:58:14 +0000 (02:58 -0800)]
videoencoder: Release stream lock in finish_subframe before pad_push

Derived from 780d635dadc0723e39a8ba90cfe0903a2de346fd for
https://bugzilla.gnome.org/show_bug.cgi?id=715192
which was for finish_frame.

4 years agomeson: gl: Update to support when egl and win32 window system are explicitly requested
Seungha Yang [Tue, 18 Feb 2020 11:36:38 +0000 (20:36 +0900)]
meson: gl: Update to support when egl and win32 window system are explicitly requested

4 years agoglwindow/win32: Accept both win32 and egl display
Seungha Yang [Tue, 18 Feb 2020 11:09:19 +0000 (20:09 +0900)]
glwindow/win32: Accept both win32 and egl display

EGL would be the case where we use ANGLE.

4 years agoglcontext: egl: Fix build with win32 window system
Seungha Yang [Tue, 18 Feb 2020 10:40:34 +0000 (19:40 +0900)]
glcontext: egl: Fix build with win32 window system

4 years agogl: Decouple win32 window and wgl context
Seungha Yang [Tue, 18 Feb 2020 10:33:18 +0000 (19:33 +0900)]
gl: Decouple win32 window and wgl context

With ANGLE, win32 window can be used with gles and egl

4 years agoglcontext/egl: Fix build with upstream ANGLE
Seungha Yang [Tue, 18 Feb 2020 04:03:00 +0000 (13:03 +0900)]
glcontext/egl: Fix build with upstream ANGLE

ANGLE_surface_d3d_render_to_back_buffer extension is only available
with Microsoft fork of ANGLE. Note that Microsoft's ANGLE repository
has been deprecated.

4 years agogl/window/win32: Handle mouse and key events
Seungha Yang [Thu, 13 Feb 2020 12:33:11 +0000 (21:33 +0900)]
gl/window/win32: Handle mouse and key events

This is at least useful for the gst-play-1.0 use case.

4 years agolibs: dmabuf: init the GST_CAT_DEFAULT in type define.
He Junyan [Fri, 14 Feb 2020 17:19:29 +0000 (01:19 +0800)]
libs: dmabuf: init the GST_CAT_DEFAULT in type define.

To avoid `gst_debug_log_valist: assertion 'category != NULL' failed`
if we do not call gst_dmabuf_allocator_new

4 years agoappsrc/appsink: Make setting/replacing callbacks thread-safe
Sebastian Dröge [Wed, 12 Feb 2020 11:11:43 +0000 (13:11 +0200)]
appsrc/appsink: Make setting/replacing callbacks thread-safe

Previously we would simply use them without any locking at all, while
using the object lock for setting them. Nothing prevented new callbacks
to be set in the meantime, potentially calling a callback with already
freed user_data.

To prevent this move the callbacks into a reference counted struct and
use the appsrc/appsink mutex to protect access to it, which is used in
all functions calling the callbacks already anyway.

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

4 years agortpbasepayload: add property for embedding twcc sequencenumbers
Håvard Graff [Fri, 14 Feb 2020 09:40:59 +0000 (09:40 +0000)]
rtpbasepayload: add property for embedding twcc sequencenumbers

By setting the extension-ID for TWCC (Transport Wide Congestion Control),
the payloader will embed sequencenumbers as a RTP header-extension
according to https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01#section-2

The negotiation of this being enabled with downstream elements
is done with caps reflecting the way this is communicated using SDP.

4 years agogl/window/win32: implement get_window_handle()
Matthew Waters [Wed, 12 Feb 2020 23:41:29 +0000 (10:41 +1100)]
gl/window/win32: implement get_window_handle()

Some other frameworks need the HWND to retrieve information from.