platform/upstream/gstreamer.git
3 years agoalsamidisrc: fix compiler warning with clang 10
Jordan Petridis [Tue, 4 Aug 2020 12:17:35 +0000 (15:17 +0300)]
alsamidisrc: fix compiler warning with clang 10

```
../subprojects/gst-plugins-base/ext/alsa/gstalsamidisrc.c:201:54: error: converting the result of '<<' to a boolean always evaluates to false [-Werror,-Wtautological-constant-compare]
  snd_seq_ev_schedule_real (&ev, alsamidisrc->queue, SND_SEQ_TIME_MODE_ABS,
                                                     ^
/usr/include/alsa/seq_event.h:215:34: note: expanded from macro 'SND_SEQ_TIME_MODE_ABS'
```

The ALSA API expects 0 or 1 here and will then add the flags accordingly,
and that's also what other code using this API does.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/777>

3 years agoMeson: find_program() will return gst-tester from subproject
Xavier Claessens [Tue, 4 Aug 2020 11:11:54 +0000 (07:11 -0400)]
Meson: find_program() will return gst-tester from subproject

gstreamer now use override_find_program() so it won't return the system
version.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/776>

3 years agomeson: Only look for Objective-C compiler on macOS/iOS
Nirbheek Chauhan [Tue, 4 Aug 2020 00:02:08 +0000 (05:32 +0530)]
meson: Only look for Objective-C compiler on macOS/iOS

On Windows, MinGW-GCC Objective-C compilers can be in PATH and mess up
the build since they may not match the CPU family of the C/C++
compilers we are using.

Also require them on macOS/iOS, because they should always be present.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-build/-/issues/88

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/774>

3 years agoexamples: compositor: fix build with older GLib versions
Tim-Philipp Müller [Fri, 31 Jul 2020 23:22:28 +0000 (00:22 +0100)]
examples: compositor: fix build with older GLib versions

Don't use g_hash_table_steal_extended() which was only
added in 2.58.

Fixes #801

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/772>

3 years agocompositor: Frames where we introduce alpha can't obscure anything
Thibault Saunier [Fri, 17 Jul 2020 01:56:47 +0000 (21:56 -0400)]
compositor: Frames where we introduce alpha can't obscure anything

When a pad has alpha != 1.0 it means that the resulting frames will
contain alpha and thus can't fully obscure with a lower zorder.

Also simplifies the other checks as blending with an OVER or on a
transparent is not a no-op as previously assumed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/764>

3 years agovideoaggregator: implement samples selection API
Mathieu Duponchelle [Wed, 1 Jul 2020 01:47:00 +0000 (03:47 +0200)]
videoaggregator: implement samples selection API

Call gst_aggregator_selected_samples() after filling the queues
(but before preparing frames).

Implement GstAggregator.peek_next_sample.

Add an example that demonstrates usage of the new API in combination
with the existing buffer-consumed signal.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/728>

3 years agoencoding: Support more topologies in profile_from_discoverer()
Thibault Saunier [Fri, 24 Jul 2020 12:33:23 +0000 (08:33 -0400)]
encoding: Support more topologies in profile_from_discoverer()

Previous implementation was only working when the stream was inside a
container, this refactoring allows using virtually any stream as input.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/766>

3 years agoglwindow/winrt: Increase timeout value to 15 seconds
Seungha Yang [Thu, 30 Jul 2020 10:16:06 +0000 (19:16 +0900)]
glwindow/winrt: Increase timeout value to 15 seconds

5 seconds might not be enough value for timeout in case an application
is running on a device with very limited computing power.
Note that ANGLE uses 10 seconds timeout value. So even if a timeout
happens here, it's also ANGLE's timeout condition as well
(meaning that bad things will happen either way)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/769>

3 years agoaudioaggregator: Only check downstream caps when handling CAPS events if we didn...
Sebastian Dröge [Mon, 27 Jul 2020 15:55:35 +0000 (18:55 +0300)]
audioaggregator: Only check downstream caps when handling CAPS events if we didn't negotiate with downstream yet

If we already negotiated with downstream there is not point in checking
if the caps are supported. We already know that this is the case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/768>

3 years agoaudioaggregator: Check all downstream allowed caps structures if they support the...
Sebastian Dröge [Mon, 27 Jul 2020 15:49:48 +0000 (18:49 +0300)]
audioaggregator: Check all downstream allowed caps structures if they support the upstream rate

Otherwise it might happen that downstream prefers a different rate (i.e.
puts it into the first structure) and also supports other rates, but
audioaggregator would then fail negotiation.

Also this now correctly handles downstream returning a range of
supported rates.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/768>

3 years agomeson: add a plugin summary
Stéphane Cerveau [Thu, 23 Jul 2020 14:52:11 +0000 (16:52 +0200)]
meson: add a plugin summary

This summary displays a list of plugins which
have been enabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/765>

3 years agoencodebin: Fix and refactor smart encoding
Thibault Saunier [Sat, 4 Jul 2020 16:33:20 +0000 (12:33 -0400)]
encodebin: Fix and refactor smart encoding

It was not working properly and the implementation of the smartencoder
element was weird. This introduce a number of changes (which are all
in one single commit because they basically all work together and lead
to basically reimplementing the element):

* Make smartencoder a bin so that the reencoding chain of elements are
  inside of it instead of not having any parent. Those elements were not
  be visible when dumping the pipeline which was very confusing.
* Make encodebin create the right encoder with a capsfilter (and parser)
  to properly enforce the format specified by the user, and so that the
  encoder properties specified in the encoding profile are respected.
* Use `decodebin` to do the decoding instead of selecting a decoder
  ourself and not plug any parser etc...
* Ensure that negotiated format in the sinkpad of smart encoder is fixed
  through time when the user requested a non dynamic output
* Add a parser at the beginning of the smart encoder
* Handle errors when reencoding

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>

3 years agostreamsplitter: Forward STREAM_START to all branchs
Thibault Saunier [Sat, 4 Jul 2020 16:32:26 +0000 (12:32 -0400)]
streamsplitter: Forward STREAM_START to all branchs

Otherwise the branch that get selected later won't receive it ever.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>

3 years agostreamsplitter/combiner: Drain encoder before switching branch
Thibault Saunier [Sat, 4 Jul 2020 16:29:06 +0000 (12:29 -0400)]
streamsplitter/combiner: Drain encoder before switching branch

Otherwise we miht have frames queued in the encoder from the old branch
that do not get encoded/muxed when they should.

The implementation is a bit 'weird' but the rational and solution
is documented in the code.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>

3 years agoencodebin: Rebuilt internal state when swicthing to avoid-reencoding
Thibault Saunier [Sat, 4 Jul 2020 16:20:44 +0000 (12:20 -0400)]
encodebin: Rebuilt internal state when swicthing to avoid-reencoding

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/751>

3 years agortpbasepayload: place twcc-ext-id behind environment variable
Matthew Waters [Wed, 15 Jul 2020 07:51:18 +0000 (17:51 +1000)]
rtpbasepayload: place twcc-ext-id behind environment variable

Adding properties for each and every rtp header extension is not
scalable and a new interface will be implemented for the general case
(https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/777).

Set the environment variable "GST_RTP_ENABLE_EXPERIMENTAL_TWCC_PROPERTY"
to any value to reenable the short-lived twcc-ext-id property.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/761

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/756>

3 years agovideorate: Error out on streams with no way to guess framerate
Olivier Crête [Thu, 16 Jul 2020 20:25:15 +0000 (16:25 -0400)]
videorate: Error out on streams with no way to guess framerate

This is better than going into an infinite loop.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>

3 years agovideorate: Assert on invalid result from internal code
Olivier Crête [Thu, 16 Jul 2020 20:04:23 +0000 (16:04 -0400)]
videorate: Assert on invalid result from internal code

Letting this through instead results in an infinite loop where
the exact same buffer gets pushed out ad infinitum.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>

3 years agovideorate: Add test that reproduces infinite loop
Olivier Crête [Thu, 16 Jul 2020 02:54:55 +0000 (22:54 -0400)]
videorate: Add test that reproduces infinite loop

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/761>

3 years agoalsadeviceprovider: Remove redundant start function
Olivier Crête [Mon, 6 Jul 2020 18:46:33 +0000 (14:46 -0400)]
alsadeviceprovider: Remove redundant start function

The ALSA provider doesn't provider live monitoring, so don't
pretend otherwise.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/735>

3 years agoRevert "gstgldisplay: Add public foreign_display property"
Matthew Waters [Thu, 16 Jul 2020 06:31:28 +0000 (16:31 +1000)]
Revert "gstgldisplay: Add public foreign_display property"

This introduced a possible regression where the EGL display connection
could be leaked when a foreign native display (x11, wayland, etc) could
create a non-foreign EGL display that would never be destroyed.

The underlying problem needed to be solved in a different way.  See
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/640
for more details.

This reverts commit 2e686b0dad9700b10d91da5e91f34849fa7d32ae.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/758>

3 years agoaudioutilsprivate: restore thread priority before ending
Silvio Lazzeretti [Thu, 16 Jul 2020 12:34:51 +0000 (14:34 +0200)]
audioutilsprivate: restore thread priority before ending

The priority of the thread that executes audioringbuffer_thread_func
is incremented on Windows by the usage of the AvSetMmThreadCharacteristics
API. This change has to be restored, as described on the documentation
of the API (https://docs.microsoft.com/en-us/windows/win32/api/avrt/nf-avrt-avsetmmthreadcharacteristicsw#remarks),
with a call to the AvRevertMmThreadCharacteristics. If this is not done,
a handle will be leaked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/760>

3 years agoaudioutilsprivate: Don't try to load avrt for UWP application
Seungha Yang [Fri, 17 Jul 2020 09:48:15 +0000 (18:48 +0900)]
audioutilsprivate: Don't try to load avrt for UWP application

All APIs in avrt.h are desktop only.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/763>

3 years agobuild/gl: remove unused cocoa/win32 header variables
Matthew Waters [Thu, 16 Jul 2020 08:07:34 +0000 (18:07 +1000)]
build/gl: remove unused cocoa/win32 header variables

We don't install any cocoa/win32 specific headers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/759>

3 years agotest/rtp: use the proper _INIT for initializing rtp/rtcp buffer structs.
Havard Graff [Tue, 7 Apr 2020 09:00:39 +0000 (11:00 +0200)]
test/rtp: use the proper _INIT for initializing rtp/rtcp buffer structs.

Fixes -Wmissing-field-initializers in Clang.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/757>

3 years agortpbasedepayload: test warning fixes
Havard Graff [Wed, 12 Feb 2020 13:48:36 +0000 (14:48 +0100)]
rtpbasedepayload: test warning fixes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/757>

3 years agodoc: Update cache with new raw pixel format
Nicolas Dufresne [Wed, 15 Jul 2020 02:03:39 +0000 (22:03 -0400)]
doc: Update cache with new raw pixel format

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/754>

3 years agovideo: Add support for linear 32x32 NV12 tiles
Nicolas Dufresne [Wed, 15 Jul 2020 01:43:56 +0000 (21:43 -0400)]
video: Add support for linear 32x32 NV12 tiles

This adds linear 32x32 NV12 based tiles. This format is notably used by
Allwinner VCU and exposed in V4L2 as being "SUNXI Tiled" format. In this
patch we generalize the plane info calculation so we can share this part
with the 4L4 variant.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/754>

3 years agodoc: Update cache after adding a new pixel format
Nicolas Dufresne [Tue, 14 Jul 2020 15:29:57 +0000 (11:29 -0400)]
doc: Update cache after adding a new pixel format

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>

3 years agorawvideoparse: Fix tiling support
Nicolas Dufresne [Tue, 14 Jul 2020 14:42:01 +0000 (10:42 -0400)]
rawvideoparse: Fix tiling support

When using tile format, the stride has a different meaning. It used
the MSB and LSB 16bits to encode respectively the width and height in
number of tiles.

This issue was introduce with commit e5b70d384c which was fixing
missing size recalculation when strides and offset is updated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>

3 years agovideo: Add NV12_4L4 tile format
Nicolas Dufresne [Mon, 13 Jul 2020 20:18:29 +0000 (16:18 -0400)]
video: Add NV12_4L4 tile format

This format is produced by Verisillicon VC8000D VPU decoder, it is a simple 4x4
tiling layout in a linear way.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/753>

3 years agovideo: allow frame copy destination to have dimensions smaller than source
Aaron Boxer [Tue, 16 Jun 2020 15:44:08 +0000 (11:44 -0400)]
video: allow frame copy destination to have dimensions smaller than source

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/707>

3 years agoexamples/gl/qt: silence compiler warnings
Matthew Waters [Tue, 14 Jul 2020 04:06:58 +0000 (14:06 +1000)]
examples/gl/qt: silence compiler warnings

-Waggregate-return: used by some Qt clases extensively and not super
useful for this example. Supress it.

warning: "GL_GLEXT_VERSION" redefined: Perform the same workaround as
qmlglsink by defining the old gl/GL.h header guard if the new GL/gl.h
guard exists.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/752>

3 years agortcpbuffer: Notify error in case packet can not be added to an RTCP compound packet
Santiago Carot-Nemesio [Wed, 27 Nov 2019 15:51:55 +0000 (16:51 +0100)]
rtcpbuffer: Notify error in case packet can not be added to an RTCP compound packet

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/476>

3 years agovideo-converter: Add scaling fast-path for GBRA format
Sebastian Dröge [Fri, 10 Jul 2020 11:57:53 +0000 (14:57 +0300)]
video-converter: Add scaling fast-path for GBRA format

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/749>

3 years agoglwindow/winrt: Add warning message if window is being closed from a UI thread
Seungha Yang [Fri, 10 Jul 2020 10:49:56 +0000 (19:49 +0900)]
glwindow/winrt: Add warning message if window is being closed from a UI thread

All UI elements will follow Single-Threaded Apartments (STA) model.
As a result, we should access them from dedicated UI thread.
Due to the nature of the threading model, ANGLE will wait the UI
thread while closing internal window/swapchain objects.

A problem here is that when destroying GstGLWindow from the UI thread,
it will wait GstGLContext's internal thread. Meanwhile, the GstGLContext's
internal thread will be blocked because ANGLE wants to access the UI thread.
That will cause a deadlock or exceptions.

In short, application should not try to call
gst_element_set_state(pipeline, GST_STATE_NULL) from a UI thread.
That's a limitation of current implementation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>

3 years agoglwindow/winrt: Add window resize event handler
Seungha Yang [Thu, 9 Jul 2020 13:23:33 +0000 (22:23 +0900)]
glwindow/winrt: Add window resize event handler

GstGLWindow implmentaion should be able to report native window size
and also it need to handle resize event for glimagesink.

Note that GstD3D11Window implementation was referenced for this change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>

3 years agoglwindow/winrt: Move to c++
Seungha Yang [Thu, 9 Jul 2020 10:51:57 +0000 (19:51 +0900)]
glwindow/winrt: Move to c++

For native window size query, c++ API is much convenient than c API

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/745>

3 years agoappsrc: Fix annotations
Seungha Yang [Thu, 9 Jul 2020 17:46:56 +0000 (02:46 +0900)]
appsrc: Fix annotations

Don't put double ':' there

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>

3 years agotests: appsrc: Add unit test for custom segment
Seungha Yang [Sat, 16 May 2020 17:44:42 +0000 (02:44 +0900)]
tests: appsrc: Add unit test for custom segment

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>

3 years agoappsrc: Add support for custom GstSegment
Seungha Yang [Sat, 16 May 2020 17:29:39 +0000 (02:29 +0900)]
appsrc: Add support for custom GstSegment

Add property "handle-segment-change" for user to allow pushing
custom segment event. For now, this property can work only for
time format GstSegment.
This property can be useful in case application controls timeline
of stream such as there is timestamp discontinuity but playback is
expected to be continuous. Multi-period scenario of MPEG-DASH is an
example of this use case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/663>

3 years agopbutils: Do not restrict number of similar profiles in a container
Thibault Saunier [Thu, 9 Jul 2020 15:05:35 +0000 (11:05 -0400)]
pbutils: Do not restrict number of similar profiles in a container

We have the notion of presence, and when the user want to be in control
it is totally legitimate for him to have several occurrences of a
similar profile

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/746>

3 years agovideoconverter: Relax frame size checks
Nicolas Dufresne [Thu, 9 Jul 2020 17:13:14 +0000 (13:13 -0400)]
videoconverter: Relax frame size checks

Since we are using VideoMeta, the converter (similarly to the video_frame_copy
utility) should have no issue dealing with frames that are slightly larger.
This situation occure as some element will use padded width/height for
allocation, which results in a VideoMeta width/height being larger then the
display width/height found in the negotiated caps.

Fixes #790

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/747>

3 years agoaudioaggregator: Fix negotiation with downstream if there is no peer yet
Sebastian Dröge [Thu, 9 Jul 2020 09:45:27 +0000 (12:45 +0300)]
audioaggregator: Fix negotiation with downstream if there is no peer yet

get_allowed_caps() will return NULL, which is not a problem in itself.
Just take the template caps for negotiation in that case instead of
erroring out.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/744>

3 years agomeson: set release date from .doap file for releases
Tim-Philipp Müller [Wed, 8 Jul 2020 15:48:30 +0000 (16:48 +0100)]
meson: set release date from .doap file for releases

And fix up DOAP file XML. Parser would complain about
unknown entity &excl; here.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/743>

3 years agopkgconfig: fix gstreamer-plugins-base-1.0 .pc files for no OpenGL case
Tim-Philipp Müller [Wed, 8 Jul 2020 14:15:34 +0000 (15:15 +0100)]
pkgconfig: fix gstreamer-plugins-base-1.0 .pc files for no OpenGL case

Don't put gl into the libraries list if the gst-gl library isn't
being built, and also don't include it in the list of linker flags
then.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/742>

3 years agoglwindow/win32: Fix possible deadlock around key/mouse event handling
Seungha Yang [Thu, 2 Jul 2020 13:33:44 +0000 (22:33 +0900)]
glwindow/win32: Fix possible deadlock around key/mouse event handling

Calling gst_gl_window_send_{key,mouse}_event() from GstGLContext
thread might cause a deadlock. Instead, use the dedicated event handling
thread in GstGLDisplay.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/721>

3 years agoexamples: win32-videooverlay: Add test for fullscreen mode switch
Seungha Yang [Tue, 23 Jun 2020 07:41:31 +0000 (16:41 +0900)]
examples: win32-videooverlay: Add test for fullscreen mode switch

Add test option "--fullscreen" for testing fullscreen mode switch.
When enabled, user can switch fullscreen mode via SPACE key or
right mouse button click.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/721>

3 years agopkgconfig: fix meson warnings about GL_CFLAGS in gstreamer-gl .pc files
Tim-Philipp Müller [Wed, 8 Jul 2020 08:53:42 +0000 (09:53 +0100)]
pkgconfig: fix meson warnings about GL_CFLAGS in gstreamer-gl .pc files

We added GL_CFLAGS in autotools because we unconditionally included OpenGL
headers. We do not do that anymore for a standard #include <gst/gl/gl.h>.
OpenGL headers are only included for the platform specific files
e.g. #include <gst/gl/x11/gstgldisplay_x11.h> which must always be hidden
behind a #if GST_GL_HAVE_WINDOW_X11, or #include <gst/gl/gstglfuncs.h> to
gain access to the contents of the GstGLFuncs object.

Users of our headers must include the necessary include paths for the
platforms they are intending to support.

We might introduce extra .pc files for what GstGL was built against though.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/741>

3 years agoexamples/gl/qt: Don't include GL/glx.h unconditionally
Seungha Yang [Tue, 7 Jul 2020 19:08:33 +0000 (04:08 +0900)]
examples/gl/qt: Don't include GL/glx.h unconditionally

The header file might not be available on non-*nix platform.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/740>

3 years agotests: validate: fix meson warning
Tim-Philipp Müller [Tue, 7 Jul 2020 19:01:33 +0000 (20:01 +0100)]
tests: validate: fix meson warning

meson.build:4: WARNING: Trying to compare values of different types (ExecutableHolder, bool) using ==.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/739>

3 years agodocs: Update cache for removed properties
Edward Hervey [Tue, 7 Jul 2020 12:55:06 +0000 (14:55 +0200)]
docs: Update cache for removed properties

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>

3 years agoplayback: Clarify flag usage for playbin3
Edward Hervey [Tue, 7 Jul 2020 08:57:38 +0000 (10:57 +0200)]
playback: Clarify flag usage for playbin3

Forcing software-decoder has no effect on playbin3 now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>

3 years agoRevert "playbin3: handle GST_PLAY_FLAG_FORCE_SW_DECODERS"
Edward Hervey [Tue, 7 Jul 2020 08:52:40 +0000 (10:52 +0200)]
Revert "playbin3: handle GST_PLAY_FLAG_FORCE_SW_DECODERS"

This reverts commit f4bcf8290b3568690dacf0dac95af7f7036f7110.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/738>

3 years agodecodebin3: Only override the selection if needed
Edward Hervey [Thu, 2 Jul 2020 12:25:27 +0000 (14:25 +0200)]
decodebin3: Only override the selection if needed

Whenever a new collection is calculated, the internal `select_streams_seqnum`
variable is reset. This ensures that we reliably know whether a select-streams
event has been received for that new collection.

Use that to decide whether we should add previously un-selected streams or new
streams in the current selection

Fixes #784

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/733>

3 years agoalsadeviceprovider: Rank down to secondary so PulseAudio can hide it
Olivier Crête [Mon, 29 Jun 2020 22:21:23 +0000 (18:21 -0400)]
alsadeviceprovider: Rank down to secondary so PulseAudio can hide it

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/727>

3 years agoUpdate disted generated orc backup files
Tim-Philipp Müller [Sat, 4 Jul 2020 11:13:14 +0000 (12:13 +0100)]
Update disted generated orc backup files

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/734>

3 years agomeson: add update-orc-dist target
Tim-Philipp Müller [Fri, 3 Jul 2020 23:31:49 +0000 (00:31 +0100)]
meson: add update-orc-dist target

Add target to update backup orc -dist.[ch] files.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/734>

3 years agovideo-color.h: fix comment syntax
Mathieu Duponchelle [Fri, 3 Jul 2020 22:39:18 +0000 (00:39 +0200)]
video-color.h: fix comment syntax

3 years agovideo-converter: Make fast path work for equivalent transfer functions
Vivia Nikolaidou [Fri, 26 Jun 2020 09:22:08 +0000 (12:22 +0300)]
video-converter: Make fast path work for equivalent transfer functions

For example, BT709, BT601, and BT2020_10 all have theoretically
different transfer functions, but the same function in practice. In
these cases, we should use the fast path for negotiating. Also,
BT2020_12 is essentially the same as the other three, just with one more
decimal point, so it gives the same result for fewer bits. This is now
also aliased to the former three.

Also make videoconvert do passthrough if the caps have equivalent
transfer functions but are otherwise matching.

As of the previous commit, we write the correct transfer function for
BT601, instead of the (functionally identical but different ISO code)
transfer function for BT709. Files created using GStreamer prior to that
commit write the wrong transfer function for BT601 and are, strictly
speaking, 2:4:5:4 instead. However, this commit takes care of
negotiation, so that conversions from/to the same transfer function are
done using the fast path.

Fixes #783

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724>

3 years agovideo-color: Add bt601 transfer function
Vivia Nikolaidou [Thu, 25 Jun 2020 17:56:48 +0000 (20:56 +0300)]
video-color: Add bt601 transfer function

Functionally the same as 709 but technically has a different value, and
external software (e.g. ffmpeg) finds "wrong" values produced by
GStreamer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/724>

3 years agoBack to development
Tim-Philipp Müller [Fri, 3 Jul 2020 01:03:24 +0000 (02:03 +0100)]
Back to development

3 years agoRelease 1.17.2
Tim-Philipp Müller [Thu, 2 Jul 2020 23:24:57 +0000 (00:24 +0100)]
Release 1.17.2

3 years agovideo-anc: Fix gst_buffer_get_video_(afd|bar)_meta
Jan Alexander Steffens (heftig) [Wed, 1 Jul 2020 18:14:57 +0000 (20:14 +0200)]
video-anc: Fix gst_buffer_get_video_(afd|bar)_meta

The macros were not passing the meta GType to gst_buffer_get_meta,
rendering them unusable.

Also, the doc comments were specifying parameters meant for the
add_video_X_meta functions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/732>

3 years agobasetextoverlay: mark valign and halign props as DOC_SHOW_DEFAULT
Mathieu Duponchelle [Wed, 24 Jun 2020 13:59:03 +0000 (15:59 +0200)]
basetextoverlay: mark valign and halign props as DOC_SHOW_DEFAULT

To document it, we instantiate a subclass and inspect the properties
on the created object. Subclasses (in that case textrender) may
initialize those properties with a different default, we do not
want to expose that in the base class documentation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/723>

3 years agoaudio: video: Optimize by using cached quark for meta tag
Havard Graff [Fri, 14 Jun 2019 08:14:23 +0000 (10:14 +0200)]
audio: video: Optimize by using cached quark for meta tag

Avoid taking the global quark lock for every single buffer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/295>

3 years agortpbasedepayload: improve logging around negative gaps
Havard Graff [Thu, 14 May 2020 13:49:54 +0000 (15:49 +0200)]
rtpbasedepayload: improve logging around negative gaps

When warning, it is important that the log will contain information to
help debug the problem. Sequence-numbers are crucial here.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/725>

3 years agoAdded the path property in encoding-target
Ayush Mittal [Fri, 19 Jun 2020 19:07:09 +0000 (00:37 +0530)]
Added the path property in encoding-target

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/714>

3 years agodocs: add GstVisual to plugins cache
Mathieu Duponchelle [Tue, 23 Jun 2020 15:31:52 +0000 (17:31 +0200)]
docs: add GstVisual to plugins cache

3 years agodocs: mark more plugin API
Mathieu Duponchelle [Tue, 23 Jun 2020 00:49:44 +0000 (02:49 +0200)]
docs: mark more plugin API

3 years agodoc: Fix link in tcp multi*sinks.
Thibault Saunier [Tue, 23 Jun 2020 00:10:10 +0000 (20:10 -0400)]
doc: Fix link in tcp multi*sinks.

3 years agoplugins_cache: add base classes
Mathieu Duponchelle [Mon, 22 Jun 2020 22:01:13 +0000 (00:01 +0200)]
plugins_cache: add base classes

3 years agomeson: mark plugins cache target as always stale
Mathieu Duponchelle [Mon, 22 Jun 2020 22:00:40 +0000 (00:00 +0200)]
meson: mark plugins cache target as always stale

3 years agodocs: mark more types as plugin API
Mathieu Duponchelle [Sat, 20 Jun 2020 23:33:50 +0000 (01:33 +0200)]
docs: mark more types as plugin API

3 years agodoc: Stop documenting properties from parents
Thibault Saunier [Sat, 20 Jun 2020 02:49:44 +0000 (22:49 -0400)]
doc: Stop documenting properties from parents

3 years agovideometa: Fix documentation
Seungha Yang [Tue, 23 Jun 2020 16:57:57 +0000 (01:57 +0900)]
videometa: Fix documentation

Fix gst_video_region_of_interest_meta_add_params to
gst_video_region_of_interest_meta_add_param and add newline to be
more readable.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/722>

3 years agoaudiodecoder: Add max-errors property
Sebastian Dröge [Mon, 22 Jun 2020 18:43:44 +0000 (21:43 +0300)]
audiodecoder: Add max-errors property

The number of consecutive decode errors that should be tolerated before
returning flow error should be up to the application, not the element.

Hence max-error should be exposed as a property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/720>

3 years agovideodecoder: Add max-errors property
Haakon Sporsheim [Mon, 22 Jun 2020 18:36:02 +0000 (21:36 +0300)]
videodecoder: Add max-errors property

The number of consecutive decode errors that should be tolerated before
returning flow error should be up to the application, not the element.

Hence max-error should be exposed as a property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/720>

3 years agoglwindow/win32: Chain up mouse event to parent window
Seungha Yang [Mon, 22 Jun 2020 10:35:57 +0000 (19:35 +0900)]
glwindow/win32: Chain up mouse event to parent window

Fix a regression of the commit 940c9998e5cfffd90fade8a7f39f29a426e20460

Unlike key event, mouse event will not be chained up to parent window
by DefWindowProc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/718>

3 years agoDon't call gst_ghost_pad_construct() anymore
Sebastian Dröge [Mon, 22 Jun 2020 09:32:03 +0000 (12:32 +0300)]
Don't call gst_ghost_pad_construct() anymore

It's deprecated, unneeded and doesn't do anything anymore.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/717>

3 years agotools:discoverer: Remove short name for use-cache
Jimmy Ohn [Mon, 22 Jun 2020 03:19:28 +0000 (12:19 +0900)]
tools:discoverer: Remove short name for use-cache

There is no need to add short name for 'use-cache'.
The 'async' option already has 'a' short name.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/716>

3 years agosubparse: lower text buffer threshold
Hosang Lee [Wed, 17 Jun 2020 00:03:51 +0000 (09:03 +0900)]
subparse: lower text buffer threshold

It is possible for subtitle files to have a string length less than 30.
WebVTT for example may contain only the 'WEBVTT' string in the file
without any cues.
As an example in hls streams, since WEBVTT files can be segmented
like video/audio, some subtitle segments may only contain just the
header string.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/708>

3 years agoBack to development
Tim-Philipp Müller [Fri, 19 Jun 2020 23:28:04 +0000 (00:28 +0100)]
Back to development

3 years agoRelease 1.17.1
Tim-Philipp Müller [Fri, 19 Jun 2020 18:16:01 +0000 (19:16 +0100)]
Release 1.17.1

3 years agoFix up and add various "Since" markers and other related docs fixes
Sebastian Dröge [Fri, 19 Jun 2020 09:17:55 +0000 (12:17 +0300)]
Fix up and add various "Since" markers and other related docs fixes

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/713>

3 years agosdp: fix gst_sdp_message_new_from_text() doc
Guillaume Desmottes [Thu, 18 Jun 2020 10:15:57 +0000 (12:15 +0200)]
sdp: fix gst_sdp_message_new_from_text() doc

Arguments were in the wrong order in the doc.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/711>

3 years agotests: validate: Add workaround for older meson versions
Tim-Philipp Müller [Thu, 18 Jun 2020 09:40:14 +0000 (10:40 +0100)]
tests: validate: Add workaround for older meson versions

subproject.get_variable() only has fallback since 0.51

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/710>

3 years agotests: subparse: add test for webvtt without hour component
Hosang Lee [Thu, 18 Jun 2020 00:01:34 +0000 (09:01 +0900)]
tests: subparse: add test for webvtt without hour component

Test for webvtt without hour component.
mm:ss.000

3 years agovideotestsrc: Do not try to answer the duration query before negotiation
Thibault Saunier [Mon, 15 Jun 2020 17:22:38 +0000 (13:22 -0400)]
videotestsrc: Do not try to answer the duration query before negotiation

We have no idea at that moment and this code was trying to divide by 0!

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/705>

3 years agovideo: allow frame copy where destination dimensions are smaller than source
Aaron Boxer [Mon, 15 Jun 2020 13:46:17 +0000 (09:46 -0400)]
video: allow frame copy where destination dimensions are smaller than source

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/695>

4 years agogl/examples/qt: hook up to meson build
Matthew Waters [Fri, 12 Jun 2020 03:04:23 +0000 (13:04 +1000)]
gl/examples/qt: hook up to meson build

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/702>

4 years agovideo-converter: Add checks for configuration sanity.
Jan Schmidt [Fri, 5 Jun 2020 15:22:21 +0000 (01:22 +1000)]
video-converter: Add checks for configuration sanity.

If the cropping or scaling input or output rects put us completely
outside the input/output frame respectively, we can't draw anything
except black safely. Check for those conditions and don't set up a
configuration that attempts to access out of bounds memory outside
the input/output framebuffers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/696>

4 years agovideo-converter: Guard against invalid frame input
Jan Schmidt [Fri, 5 Jun 2020 13:34:44 +0000 (23:34 +1000)]
video-converter: Guard against invalid frame input

If the frames passed in to gst_video_converter_frame()
have a different layout than was configured for, the
conversion code might go out of bounds and crash.

Do a sanity check on each frame passed in, and in the
absence of a return value in the API, just
refuse the conversion in invalid cases and leave the
destination frame untouched so it's obvious to
users that it was broken.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/696>

4 years agogstglwindow_x11: fix resize
David Bender [Thu, 11 Jun 2020 22:21:56 +0000 (00:21 +0200)]
gstglwindow_x11: fix resize

This patch was taken from #629#note_178766, the comment made
at the time was:

The root issue is a mismatch between the initialization of render_rect
in GstGLWindowX11Private and what's expected in the draw_cb function.
Because render_rect is not explicitly initialized to a width and height
of -1 (unlike gstglwindow_wayland_egl.c which does initialize to -1),
the less-than check for explicitly-set render_rect at gstglwindow_x11.c:453-454
always fails, even when the parent_win has been set and the render rectangle
has never been set.

Maybe this came from copying the similar check in the wayland code? Regardless,
I think the correct inequality should be '<= 0' (on both lines).

Alternatively initialization could be changed, but other sinks, e.g.
xvimagesink don't appear to use -1 to mean "unset" render_rect this way.

The issue can be reproduced by running the example in
tests/examples/gl/qt/videooverlay/ on X11, and resizing the output
window

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/701>

4 years agovideooverlay: chevrons don't need to be escaped in code examples
Mathieu Duponchelle [Thu, 11 Jun 2020 22:17:24 +0000 (00:17 +0200)]
videooverlay: chevrons don't need to be escaped in code examples

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/700>

4 years agodecodebin3: Lower error message to debug
Thibault Saunier [Thu, 11 Jun 2020 20:39:23 +0000 (16:39 -0400)]
decodebin3: Lower error message to debug

Debugging leftover

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/699>

4 years agolibvisual: use gst_element_class_set_metadata when passing dynamic strings
Jordan Petridis [Thu, 11 Jun 2020 17:57:58 +0000 (20:57 +0300)]
libvisual: use gst_element_class_set_metadata when passing dynamic strings

gst_element_class_set_metadata is meant to only be used with
static or inlined strings, which isn't the case for this element
resulting in use-after-free later on.

https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c#gst_element_class_set_static_metadata

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/698>

4 years agomeson: Use the tests option for validate
Nirbheek Chauhan [Thu, 11 Jun 2020 07:46:40 +0000 (13:16 +0530)]
meson: Use the tests option for validate

This is what gstreamer core does too, and avoids a configure error
when tests are disabled globally. Also print a useful error when
gst_tester is not found from the gstreamer subproject.

This broke in https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/667

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/697>

4 years agodocs: Update plugins cache
Thibault Saunier [Tue, 9 Jun 2020 19:18:43 +0000 (15:18 -0400)]
docs: Update plugins cache

4 years agoaudio: add missing space in GST_AUDIO_FORMATS_ALL
Guillaume Desmottes [Wed, 10 Jun 2020 08:43:42 +0000 (10:43 +0200)]
audio: add missing space in GST_AUDIO_FORMATS_ALL

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/694>