platform/upstream/gstreamer.git
3 years agogluploadelement: Avoid race condition in propose_allocation().
He Junyan [Wed, 4 Nov 2020 15:05:27 +0000 (23:05 +0800)]
gluploadelement: Avoid race condition in propose_allocation().

The inside upload and context may have race condition in the function
of propose_allocation(). They may be destroyed while this function is
stilling using it.

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

3 years agogluploadelement: Avoid race condition of base class' context.
He Junyan [Wed, 4 Nov 2020 09:02:13 +0000 (17:02 +0800)]
gluploadelement: Avoid race condition of base class' context.

The base class' context may change, we should use the common API
with lock to access it, rather than the just directly access the
struct field.

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

3 years agomeson: Enable some MSVC warnings for parity with GCC/Clang
Nirbheek Chauhan [Wed, 4 Nov 2020 13:12:11 +0000 (18:42 +0530)]
meson: Enable some MSVC warnings for parity with GCC/Clang

This makes it easier to do development with MSVC by making it warn
on common issues that GCC/Clang error out for in our CI configuration.

Continuation from https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/223

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

3 years agogluploadelement: Avoid race condition of inside upload creation.
He Junyan [Tue, 3 Nov 2020 12:19:16 +0000 (20:19 +0800)]
gluploadelement: Avoid race condition of inside upload creation.

The operations for the inside GstGLUploadElement->upload have race
condition. The _transform_caps() will creates this object if it does
not exist, while the _stop() and change_state() can destroy this object.
The _transform_caps() is called by the gst_base_transform_query(),
so it does not hold the stream lock. It may use the upload while the
_stop() and change_state() has already destroy that object, and then
crash.

Fix: #645
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/913>

3 years agogl: Fix prototype of glGetSynciv()
Sebastian Dröge [Tue, 3 Nov 2020 14:40:38 +0000 (16:40 +0200)]
gl: Fix prototype of glGetSynciv()

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

3 years agovideoaggregator: Guarantee that the output format is supported
Thibault Saunier [Fri, 30 Oct 2020 16:56:16 +0000 (13:56 -0300)]
videoaggregator: Guarantee that the output format is supported

In the case `videoaggregator` is set as allowing format conversions,
and as we convert only on the sinkpads, we should ensure that the
chosen format is usable by the subclass. This in turns implies
that the format is usable on the srcpad.

When doing conversion *any* format can be used on the sinkpads, and this
is the only way that we can avoid race conditions during renegotiations
so we can not change that fact, we just need to ensure that the chosen
intermediary format is usable, which was not actually ensured before
that patch.

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

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

3 years agovideodecoder: Don't assume GstVideoChromaSite and GstVideoColorimetry
Seungha Yang [Fri, 30 Oct 2020 18:14:20 +0000 (03:14 +0900)]
videodecoder: Don't assume GstVideoChromaSite and GstVideoColorimetry

Even if given GstVideoChromaSite and/or GstVideoColorimetry has unknown
value(s), assumption for an unknown value should be done by subclass or
downstream element, not a role of video decoder. And subclass might
want to output unknown value as is.

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

3 years agovideodecoder: Remove trailing whitespace
Seungha Yang [Fri, 30 Oct 2020 18:16:00 +0000 (03:16 +0900)]
videodecoder: Remove trailing whitespace

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

3 years agotcpserversink: Don't assume g_socket_get_remote_address succeeds
Jan Alexander Steffens (heftig) [Fri, 30 Oct 2020 12:52:29 +0000 (13:52 +0100)]
tcpserversink: Don't assume g_socket_get_remote_address succeeds

When the client disconnects immediately after connecting, the remote
address is no longer available.

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

3 years agovideo-aggregator: Fix renegotiation when using convert pads
Thibault Saunier [Thu, 29 Oct 2020 19:38:44 +0000 (16:38 -0300)]
video-aggregator: Fix renegotiation when using convert pads

Since 23189c60f4cff998c7880e1768cee2f6d1b719d0 we started using the
useless result of `modified_caps` which, was never used since it was
introduced 7 years ago (in videomixer2). The intersection is useless and
we should just avoid doing it at all (which was always the case before)
as it can end up failing renegotiation for bad reasons.

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

3 years agogst-play: Add support for audio mute control
Seungha Yang [Wed, 27 May 2020 14:20:25 +0000 (23:20 +0900)]
gst-play: Add support for audio mute control

Assign 'm' keyboard input to control audio mute state

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

3 years agotests: allocator: Fix FDMemory portability issue
Nicolas Dufresne [Wed, 28 Oct 2020 19:51:27 +0000 (15:51 -0400)]
tests: allocator: Fix FDMemory portability issue

This fixes few issues in the test but mainly some portability issue reported
on Ubutun. The test now uses a randomly name tempory file located into system
default tempory location and uses glib wrappers when available.

Fixes !895

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

3 years agogl: optimize glcolorbalance by precomputing shader math
Dinesh Manajipet [Sat, 24 Oct 2020 18:15:19 +0000 (23:45 +0530)]
gl: optimize glcolorbalance by precomputing shader math

Precompute the rgb -> yuv conversion and color balance adjustment math
so that the shader does minimal work per pixel.

Merging these 15+ steps into 3 steps let us jump from choppy
360p video to smooth 720p video on our underpowered embedded system.

If we can remove the clamp() step inside the shader, or apply it after
rgba
conversion, there are more performance benefits to reap. But I am not
sure
what the side effects will be in that case.

<https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/893>

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

3 years agogl/build: use the brcm GL libraries on the rpi
Matthew Waters [Wed, 28 Oct 2020 12:26:27 +0000 (23:26 +1100)]
gl/build: use the brcm GL libraries on the rpi

Upstream RPi has moved to a completely separate GL library names now due
to conflicts.

See https://github.com/RPi-Distro/repo/issues/134

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

3 years agofdmemory: Allow for change of protection mode
Tobias Ronge [Tue, 27 Oct 2020 13:12:42 +0000 (14:12 +0100)]
fdmemory: Allow for change of protection mode

After a memory has been unmapped, protection mode can now be changed
when mapping it again.

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

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

3 years agovideoaggregator: document and fix locking in convert pad
Mathieu Duponchelle [Wed, 28 Oct 2020 00:19:37 +0000 (01:19 +0100)]
videoaggregator: document and fix locking in convert pad

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

3 years agogldeinterlace: fix doc blurb
Tim-Philipp Müller [Wed, 28 Oct 2020 13:22:09 +0000 (13:22 +0000)]
gldeinterlace: fix doc blurb

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

3 years agoMeson: Use pkg-config generator
Xavier Claessens [Sun, 8 Apr 2018 00:52:12 +0000 (20:52 -0400)]
Meson: Use pkg-config generator

3 years agourisourcebin: Fix crash caused by use after free
Seungha Yang [Thu, 22 Oct 2020 10:16:42 +0000 (19:16 +0900)]
urisourcebin: Fix crash caused by use after free

OutputSlotInfo doesn't hold ref of queue, so gst_bin_remove()
will free the queue memory.

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

3 years agotheoradec: Set telemetry options only if they are nonzero
Zebediah Figura [Wed, 21 Oct 2020 19:55:40 +0000 (14:55 -0500)]
theoradec: Set telemetry options only if they are nonzero

Setting telemetry options, even to zero, causes libtheora to enable an expensive code path. For large enough videos (e.g. 1920x1080) this can increase the time to decode each frame by 30-40 ms, which can be enough to cause noticeable stutter.

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

3 years agoglslstage: delete shader on finalize of stage
Michael Tretter [Wed, 21 Oct 2020 09:42:54 +0000 (11:42 +0200)]
glslstage: delete shader on finalize of stage

GLSLstage creates the glShader using glCreateShader, but never calls
glDeleteShader if the glShader is not used anymore. This forces the GL
library to keep the compiled shader around, because it might be used in
the future. Therefore, the glShader is leaked whenever a GLSLStage is
destroyed.

Fix the leak by deleting the glShader when finishing the GLSLStage.

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

3 years agoaudio/videodecoder: Initialize max_errors in instance_init()
Sebastian Dröge [Tue, 20 Oct 2020 09:44:21 +0000 (12:44 +0300)]
audio/videodecoder: Initialize max_errors in instance_init()

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

3 years agoaudio/videodecoder: Don't reset max-errors in reset()
Sebastian Dröge [Tue, 20 Oct 2020 08:51:08 +0000 (11:51 +0300)]
audio/videodecoder: Don't reset max-errors in reset()

Otherwise setting the property on the elements has no effect at all
because it's immediately reset during startup.

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

3 years agoexamples: Add an uridecodebin3 example
Seungha Yang [Mon, 12 Oct 2020 18:34:07 +0000 (03:34 +0900)]
examples: Add an uridecodebin3 example

Demonstrate a way to select multiple streams

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

3 years agodecodebin3: Store stream-start event on output pad before exposing it
Seungha Yang [Mon, 19 Oct 2020 11:03:40 +0000 (20:03 +0900)]
decodebin3: Store stream-start event on output pad before exposing it

It's required for users to be able to figure out associated GstStream
object with a pad on pad-added callback.

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

3 years agoAdd some missing nullable annotations
Sebastian Dröge [Sat, 17 Oct 2020 09:35:16 +0000 (12:35 +0300)]
Add some missing nullable annotations

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

3 years agotypefind/xdgmime: Validate mimetypes to be valid GstStructure names before using...
Sebastian Dröge [Sat, 17 Oct 2020 07:42:49 +0000 (10:42 +0300)]
typefind/xdgmime: Validate mimetypes to be valid GstStructure names before using them

On macOS, for example, "text/*" can be returned as mimetype for
plaintext files but we don't allow '*' in structure names and this would
cause critical warnings.

It's a valid mimetype but not a valid structure name.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/616

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

3 years agomeson: update glib minimum version to 2.56
Stéphane Cerveau [Thu, 15 Oct 2020 16:20:37 +0000 (18:20 +0200)]
meson: update glib minimum version to 2.56

In order to support the symbol g_enum_to_string in various
project using GStreamer ( gst-validate etc.), the glib minimum
version should be 2.56.0.

Remove compat code as glib requirement
is now > 2.56

Version used by Ubuntu 18.04 LTS

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

3 years agovideoconvert: Enhance debug message to be more human readable
Seungha Yang [Sun, 20 Sep 2020 10:47:08 +0000 (19:47 +0900)]
videoconvert: Enhance debug message to be more human readable

Numerical representation of GstVideoFormat is not debugging
friendly

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

3 years agouridecodebin3: Forward upstream events to decodebin3 directly
Seungha Yang [Tue, 13 Oct 2020 08:57:53 +0000 (17:57 +0900)]
uridecodebin3: Forward upstream events to decodebin3 directly

Otherwise default handler will try to forward it to sink element
or srcpad which might not be available at that moment.

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

3 years agotests: appsrc: Fix unstable test case
Seungha Yang [Mon, 14 Sep 2020 11:01:18 +0000 (20:01 +0900)]
tests: appsrc: Fix unstable test case

Wait all buffers to be consumed before sending flush seek event,
so that checking timestamp and segment as expected.

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

3 years agovideoaggregator: Limit accepted caps by template caps
Jan Alexander Steffens (heftig) [Tue, 13 Oct 2020 13:31:41 +0000 (15:31 +0200)]
videoaggregator: Limit accepted caps by template caps

This seems like an obvious mistake, since `modified_caps` was created
but not used.

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

3 years agovideoaggregator: Log the format name instead of index
Jan Alexander Steffens (heftig) [Tue, 13 Oct 2020 13:28:54 +0000 (15:28 +0200)]
videoaggregator: Log the format name instead of index

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

3 years agogstrtpbuffer: fix header extension length validation
Will Miller [Mon, 12 Oct 2020 11:21:17 +0000 (12:21 +0100)]
gstrtpbuffer: fix header extension length validation

We validate the header extensions length of an RTP buffer by comparing
it against the block size. Since we multiply the length in words by 4 to
get the length in bytes, a suitably large length could cause a wrapround
of the uint16, giving a lower length which erroneously passes the check
and allows the buffer to be mapped.

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

3 years agogl: glslstage: Sync new_default_{fragment,vertex} documentation name
Marijn Suijten [Fri, 11 Sep 2020 18:28:55 +0000 (20:28 +0200)]
gl: glslstage: Sync new_default_{fragment,vertex} documentation name

Documentation for the parameter and return value don't show up when
this header mismatches the function it tries to describe.

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

3 years agodecodebin3: only force streams-selected seqnum after a select-streams
François Laignel [Sat, 10 Oct 2020 15:26:42 +0000 (17:26 +0200)]
decodebin3: only force streams-selected seqnum after a select-streams

The initial streams-selected message might not match any select-streams,
in which case it is currently overriden with GST_SEQNUM_INVALID.

Related to:

- https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/601

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

3 years agoexamples/gl/gtk: Add missing dependency on gstgl
Jan Alexander Steffens (heftig) [Fri, 9 Oct 2020 15:15:37 +0000 (17:15 +0200)]
examples/gl/gtk: Add missing dependency on gstgl

Occasionally, a clean build would fail like this:

    In file included from ../subprojects/gst-plugins-base/tests/examples/gl/gtk/gstgtk.c:24:
    ../subprojects/gst-plugins-base/gst-libs/gst/gl/gl.h:25:10: fatal error: gst/gl/gl-enumtypes.h: No such file or directory
       25 | #include <gst/gl/gl-enumtypes.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~

Add the missing dependency so that the headers are generated beforehand.

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

3 years agortsptransport: support single port for client_port and server_port
Mathieu Duponchelle [Fri, 4 Sep 2020 19:09:17 +0000 (21:09 +0200)]
rtsptransport: support single port for client_port and server_port

This is explicitly specified as valid in the RFC, where the
syntax for both parameters is:

";" "client_port" "=" port [ "-" port ]
";" "server_port" "=" port [ "-" port ]

This is useful for applications where RTCP is either not necessary
or not possible.

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

3 years agovideo-info: clarify GST_VIDEO_INTERLACE_MODE_ALTERNATE doc
Guillaume Desmottes [Fri, 9 Oct 2020 10:02:14 +0000 (12:02 +0200)]
video-info: clarify GST_VIDEO_INTERLACE_MODE_ALTERNATE doc

Fields really should alternate in this mode.

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

3 years agovideodecoder: fix output state interlace-mode
Guillaume Desmottes [Mon, 5 Oct 2020 10:07:22 +0000 (12:07 +0200)]
videodecoder: fix output state interlace-mode

When user is passing the actual interlace-mode when calling
gst_video_decoder_set_interlaced_output_state() it should not be
overidden by the input interlace-mode.

Needed to fix #825 as we want to keep interlace-mode=interleaved from
parsers and have the OMX decoder producing interlace-mode=alternate.

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

3 years agovideodecoder: add interlace-mode to debug output when setting output state
Guillaume Desmottes [Mon, 5 Oct 2020 09:38:09 +0000 (11:38 +0200)]
videodecoder: add interlace-mode to debug output when setting output state

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

3 years agotests: add gl structs to abi check
Matthew Waters [Thu, 16 Jul 2020 08:10:45 +0000 (18:10 +1000)]
tests: add gl structs to abi check

Tested on x86, x86_64, armv7l, aarch64.

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

3 years agobuild: use cpu_family for arch checks
Matthew Waters [Fri, 9 Oct 2020 01:25:21 +0000 (12:25 +1100)]
build: use cpu_family for arch checks

e.g. on 32-bit arm, we may have armv6, armv7l, armv7hf, etc which all
generally have the same layouts.  cpu_family() groups all of these into
just 'arm' that the ABI check table is expecting.

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

3 years agomultihandlesink: Don't pass NULL caps to gst_caps_is_equal
Jan Alexander Steffens (heftig) [Thu, 1 Oct 2020 09:22:51 +0000 (11:22 +0200)]
multihandlesink: Don't pass NULL caps to gst_caps_is_equal

Apparently the sinkpad caps can get cleared when shutting down the
pipeline while the sink is working, provoking a critical warning.

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

3 years agotimeoverlay: Add elapsed-running-time mode
Sebastian Dröge [Thu, 8 Oct 2020 14:10:30 +0000 (17:10 +0300)]
timeoverlay: Add elapsed-running-time mode

This takes the first running time and the first after each flush-stop as
an offset for the running time that is rendered.

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

3 years agoaudio: video: Fix in/outbuf confusion of transform_meta
Jan Alexander Steffens (heftig) [Thu, 8 Oct 2020 11:52:33 +0000 (13:52 +0200)]
audio: video: Fix in/outbuf confusion of transform_meta

There are three instances where in- and outbuf have been swapped. This
didn't affect the correctness of the libs *filter code, but the
videoscale implementation swapped the arguments of meta->transform_func.

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

3 years agopango: Add fallback dependency
Xavier Claessens [Thu, 1 Oct 2020 18:45:24 +0000 (14:45 -0400)]
pango: Add fallback dependency

When we'll depend on Meson >=0.55 this can be replaced by [provide]
section in gst-build's pango.wrap file. The dependency variable name can
also be dropped when pango is updated to use override_dependency:
https://gitlab.gnome.org/GNOME/pango/-/merge_requests/250

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

3 years agomeson: Always wrap "prefix" option with join_paths() to make Windows happy
Seungha Yang [Tue, 15 Sep 2020 19:30:40 +0000 (04:30 +0900)]
meson: Always wrap "prefix" option with join_paths() to make Windows happy

Both "\" and "/" separators are allowed on Windows but the problem
is that "\" is not converted to "\\" in this case.
It will result to unknown/unrecognized character escape sequence.

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

3 years agomeson: Add GL summary
Xavier Claessens [Fri, 25 Sep 2020 18:05:09 +0000 (14:05 -0400)]
meson: Add GL summary

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

3 years agocompositor: fix YUY2/UYVY/VYUY blending
Matthew Waters [Mon, 21 Sep 2020 13:50:03 +0000 (23:50 +1000)]
compositor: fix YUY2/UYVY/VYUY blending

Don't overead memory.

Fixup for https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/755

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

3 years agomeson: Add a qt5 feature
Nicolas Dufresne [Tue, 15 Sep 2020 18:15:36 +0000 (14:15 -0400)]
meson: Add a qt5 feature

This allow opting out items of the builds the depends on QT5 library.
Auto-detection of QT5 in cross-build requires host tools to match with the
sysroot, and detection of mis-match is not fully reliable.

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

3 years agomeson: add abi configuration for meson build
sohwan.park [Mon, 14 Sep 2020 08:56:07 +0000 (17:56 +0900)]
meson: add abi configuration for meson build

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

3 years agocompositor: blend with multiple threads
Matthew Waters [Wed, 15 Jul 2020 05:46:56 +0000 (15:46 +1000)]
compositor: blend with multiple threads

Increases the throughput of compositing by using more CPU cycles across
multiple threads.  Simple cases (the output contains one pixel from at
most one input) can have up to a 70% increase in throughput.  Not so
simple cases are limited by the region with the most number of
composite operations.

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

3 years agovideo: Rename video_color_transfer to video_transfer_function
Marijn Suijten [Fri, 11 Sep 2020 18:15:14 +0000 (20:15 +0200)]
video: Rename video_color_transfer to video_transfer_function

Rename remaining `gst_video_color_transfer_{encode,decode}` functions on
the `GstVideoTransferFunction` enumeration to
`gst_video_transfer_function_{encode,decode}` permitting
gobject-introspection to turn these into associated functions and place
them under the respective `<enumeration>` block in gir XML files.

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

3 years agovideoaggregator: ensure peek_next_sample() uses the correct caps
Matthew Waters [Fri, 11 Sep 2020 11:40:26 +0000 (21:40 +1000)]
videoaggregator: ensure peek_next_sample() uses the correct caps

gst_pad_get_current_caps() may be wrong when there is a renegotiation in
progress for the pad and we have not yet received or selected the buffer
with different caps yet.

Fix by storing the caps through in a similar way to the existing code
for buffer/video-info selection machinery.

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

3 years agovideodecoder: Bump log level of marking a sync point
Stian Selnes [Fri, 18 Aug 2017 15:01:02 +0000 (17:01 +0200)]
videodecoder: Bump log level of marking a sync point

Sync points are often important when debugging and deserves DEBUG
level.

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

3 years agovideodecoder: Add API for subclasses to request a new sync point
Sebastian Dröge [Wed, 1 Jul 2020 15:19:09 +0000 (18:19 +0300)]
videodecoder: Add API for subclasses to request a new sync point

This allows subclasses that notice missing reference frames to request a
new sync point to allow seamless decoding again. While doing so the
subclass can also signal whether it wants a) all following input frames
until the sync point to be discarded or b) all output frames until the
sync point to be marked as corrupt.

Sending of force-keyunit events for this can be throttled by the
application via the "min-force-keyunit-interval" property.

This replaces custom behaviour for the same in various decoders, for
example openh264dec.

Based on patches by Haakon Sporsheim <haakon@pexip.com> and
Stian Selnes <stian@pexip.com>.

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

3 years agovideodecoder: Add API for subclasses to signal that they need the stream to start...
Sebastian Dröge [Wed, 1 Jul 2020 15:14:40 +0000 (18:14 +0300)]
videodecoder: Add API for subclasses to signal that they need the stream to start with a sync point

If the first frame(s) at the very beginning or after a flush are not a
sync point then the base class would discard them before passing them to
the subclass.

This also fixes the previously broken distance_from_sync handling: it
was never reset at sync points.

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

3 years agovideodecoder: Add "discard-corrupted-frames" property
Sebastian Dröge [Wed, 1 Jul 2020 15:11:25 +0000 (18:11 +0300)]
videodecoder: Add "discard-corrupted-frames" property

This can be used by applications to configure decoders so that corrupted
frames are directly discarded instead of being forwarded inside the
pipeline. It is a replacement for the "output-corrupt" property of the
ffmpeg decoders.

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

3 years agovideodecoder: Add API for marking output frames as corrupted
Sebastian Dröge [Wed, 1 Jul 2020 15:09:22 +0000 (18:09 +0300)]
videodecoder: Add API for marking output frames as corrupted

This can be used by subclasses to mark output frames as known to be
corrupted, for example if reference frames were missing. ffmpeg's
decoders can signal this.

In addition this flag is propagated downstream if the input frame had it
set.

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

3 years agovideodecoder: Remove unused reorder_depth variable
Sebastian Dröge [Tue, 23 Jun 2020 15:40:07 +0000 (18:40 +0300)]
videodecoder: Remove unused reorder_depth variable

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

3 years agortpbasedepayload: Mark GAP events sent because of packet loss as such
Mikhail Fludkov [Wed, 1 Jul 2020 16:18:36 +0000 (19:18 +0300)]
rtpbasedepayload: Mark GAP events sent because of packet loss as such

This allows downstream to distinguish packet loss from normal GAP events
that are sent simply because of gaps in the timeline.

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

3 years agomeson: Actually build gstgl without implicit include dirs
Nirbheek Chauhan [Tue, 8 Sep 2020 10:11:55 +0000 (15:41 +0530)]
meson: Actually build gstgl without implicit include dirs

Fixes a typo from https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/800

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

3 years agoglmixer: Fix unit test to actually work reliably
Sebastian Dröge [Thu, 10 Sep 2020 11:19:04 +0000 (14:19 +0300)]
glmixer: Fix unit test to actually work reliably

Don't run the harness in live mode, or otherwise it would output frames
already in the very beginning before a buffer was provided to it due to
timeout.

Also send EOS/a second buffer before pulling a buffer as videoaggregator
has one frame of latency.

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

3 years agogl: add support for GBR and GBRA
Haihao Xiang [Thu, 13 Aug 2020 04:49:19 +0000 (12:49 +0800)]
gl: add support for GBR and GBRA

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

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

3 years agovideoaggregator: Don't require any pads to be configured for negotiating source pad...
Sebastian Dröge [Thu, 20 Aug 2020 06:06:04 +0000 (09:06 +0300)]
videoaggregator: Don't require any pads to be configured for negotiating source pad caps

This is not actually required (anymore?). Source pad caps can be
negotiated at any time regardless of any configured (or existing) sink
pads and videoaggregator comes up with some fixated caps based on the
downstream caps.

Subclasses can override this behaviour as needed by overriding
update_src_caps().

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

3 years agogst-libs: gl: Fix documentation typo and clarify gl_memory_texsubimage
Marijn Suijten [Thu, 3 Sep 2020 19:19:29 +0000 (21:19 +0200)]
gst-libs: gl: Fix documentation typo and clarify gl_memory_texsubimage

`gst_gl_memory_read_pixels` reads pixels from `GLMemory` into the
pointer, effectively writing to it. This is opposite from
`gst_gl_memory_texsubimage` which reads texture data from `read_pointer`
into `GLMemory`.

Both cases are clarified by changing `read_pointer` to `write_pointer`,
and explaining what `gst_gl_memory_texsubimage` does in addition to
referring back to `gst_gl_memory_read_pixels`.

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

3 years agoaudioaggregator: Reset offset if the output rate is renegotiated
Sebastian Dröge [Thu, 20 Aug 2020 13:31:38 +0000 (16:31 +0300)]
audioaggregator: Reset offset if the output rate is renegotiated

On next aggregation the new offset will be calculated based on the
segment position.

Without this a rate change would cause a jump forwards or backwards in
the output timeline.

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

3 years agovideo-anc: Implement transform functions for AFD/Bar metas
Sebastian Dröge [Tue, 18 Aug 2020 07:42:09 +0000 (10:42 +0300)]
video-anc: Implement transform functions for AFD/Bar metas

If the transformation is just a copy, copy over the metadata. For AFD
also copy over the metadata if the aspect ratio stays the same in
scaling transformations. In all other cases fail the transformation.

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

3 years agoappsrc: Wake up the create() function on caps changes
Sebastian Dröge [Mon, 24 Aug 2020 16:37:15 +0000 (19:37 +0300)]
appsrc: Wake up the create() function on caps changes

This allows the new caps to be sent downstream as soon as possible
instead of having to wait for the next buffer/buffer list.

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

3 years agoencodebin: Be less restrictive on muxer caps when preset name is specified
Thibault Saunier [Tue, 8 Sep 2020 23:45:53 +0000 (20:45 -0300)]
encodebin: Be less restrictive on muxer caps when preset name is specified

This way the user can simply define its caps by only providing the
structure name which is what we do in the encoding profile
deserialization function for example.

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

3 years agoencodebin: Add vp8 and vp9 smart encoding support
Thibault Saunier [Thu, 30 Jul 2020 22:49:52 +0000 (18:49 -0400)]
encodebin: Add vp8 and vp9 smart encoding support

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

3 years agoencodebin: Fix refcount mishandling
Thibault Saunier [Thu, 30 Jul 2020 22:49:18 +0000 (18:49 -0400)]
encodebin: Fix refcount mishandling

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

3 years agortpbasepayload: do not forget delayed segment when forwarding gaps
Mathieu Duponchelle [Fri, 21 Aug 2020 01:06:04 +0000 (03:06 +0200)]
rtpbasepayload: do not forget delayed segment when forwarding gaps

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

3 years agovideo-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY and YUY2
Sebastian Dröge [Tue, 4 Aug 2020 09:53:18 +0000 (12:53 +0300)]
video-converter: Add fast paths from v210 to I420/YV12, Y42B, UYVY and YUY2

These then don't require going through the generic code path via AYUV64
first but can be converted directly.

This speeds up processing of
  videotestsrc ! v210 ! videoconvert ! other_format ! fakesink
by a factor of 1.55 for I420/YV12 and 1.40 for the other destination
formats and reduces memory pressure considerably.

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

3 years agoci: include template from gst-ci master branch again
Tim-Philipp Müller [Tue, 8 Sep 2020 16:30:31 +0000 (17:30 +0100)]
ci: include template from gst-ci master branch again

3 years agoBack to development
Tim-Philipp Müller [Tue, 8 Sep 2020 15:58:29 +0000 (16:58 +0100)]
Back to development

3 years agoRelease 1.18.0
Tim-Philipp Müller [Mon, 7 Sep 2020 23:03:33 +0000 (00:03 +0100)]
Release 1.18.0

3 years agomeson: dist pot file in tarball
Tim-Philipp Müller [Mon, 7 Sep 2020 21:36:54 +0000 (22:36 +0100)]
meson: dist pot file in tarball

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

3 years agovideo: Rename gst_video_color_transfer_*() to gst_video_transfer_function_*() in...
Sebastian Dröge [Mon, 7 Sep 2020 09:10:16 +0000 (12:10 +0300)]
video: Rename gst_video_color_transfer_*() to gst_video_transfer_function_*() in new API

The type is called GstVideoTransferFunction so the function names should
match, otherwise gobject-introspection is keeping the functions as
global functions instead of methods on the type.

The same mistake was also made in lots of other APIs over the years, but
here we can at least fix it for 1.18 still.

Thanks to Marijn Suijten for noticing.

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

3 years agomeson: Fix gstreamer-gl-prototypes pkgconfig file on Windows
Nirbheek Chauhan [Wed, 2 Sep 2020 16:23:51 +0000 (21:53 +0530)]
meson: Fix gstreamer-gl-prototypes pkgconfig file on Windows

When we're using wgl, we have to link to `-lopengl32`, not `-lGL`.

Fixes building of anything that uses this pc file, such as the nvcodec
plugin.

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

3 years agoaudio/video: Copy more metas by default in the codec base classes
Sebastian Dröge [Fri, 28 Aug 2020 09:56:38 +0000 (12:56 +0300)]
audio/video: Copy more metas by default in the codec base classes

For audio we copy metas that have no tags at all, or that only have the
"audio" and/or "audio-channels" tag. Audio codecs don't change the
audio aspect of the stream and in almost all cases don't change the
number of channels. They might however change the sample rate (e.g.
Opus). Subclasses that change the number of channels will have to
override ::transform_meta() accordingly.

For video we copy metas that have no tags at all, or that only have the
"video" and/or "video-size" and/or "video-orientation" tag. Video codecs
don't change the "video" aspect of the stream and in almost all cases
don't change the resolution or orientation. Subclasses that rescale or
change the orientation will have to override ::transform_meta()
accordingly.

See https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/576#note_610581

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

3 years agovideoscale: make local quark vars static
Tim-Philipp Müller [Fri, 28 Aug 2020 11:30:43 +0000 (12:30 +0100)]
videoscale: make local quark vars static

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

3 years agogl/build: build with implicit_include_directories : false
Matthew Waters [Wed, 26 Aug 2020 09:15:19 +0000 (19:15 +1000)]
gl/build: build with implicit_include_directories : false

Fixes case-insensitive file systems confusing gst-libs/gst/gl/egl/egl.h
with EGL/egl.h when the source directory gst-libs/gst/gl is automatically
added to the compiler's search path.

Due to https://github.com/mesonbuild/meson/issues/7582 we also need to
perform manual enumtype generation.

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

3 years agocompositor: fix off-by-1 error in blending ARGB
Jan Schmidt [Wed, 19 Aug 2020 19:44:46 +0000 (05:44 +1000)]
compositor: fix off-by-1 error in blending ARGB

Use a more naive blend formulation that avoids off-by-one errors
at the 0x00 and 0xff alpha endpoints.

    Fixes #810

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

3 years agovideorate/videoscale/audioresample: Ensure that the caps returned from fixate_caps...
Sebastian Dröge [Tue, 25 Aug 2020 09:56:21 +0000 (12:56 +0300)]
videorate/videoscale/audioresample: Ensure that the caps returned from fixate_caps() are actually fixated

If there is some other field than the ones we care about left and not
fixated yet then basetransform will just error out. So instead just pass
the result through gst_caps_fixate() in the very end.

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

3 years agoencoding-profile: minor fix in documentation
Marcin Kolny [Tue, 16 Apr 2019 11:08:30 +0000 (12:08 +0100)]
encoding-profile: minor fix in documentation

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

3 years agoRelease 1.17.90
Tim-Philipp Müller [Thu, 20 Aug 2020 15:10:18 +0000 (16:10 +0100)]
Release 1.17.90

3 years agovideoscale: Don't call NULL GstMeta transform function
Sebastian Dröge [Tue, 18 Aug 2020 07:26:48 +0000 (10:26 +0300)]
videoscale: Don't call NULL GstMeta transform function

It's optional and if it does not exist then no transformation is
possible.

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

3 years agotags: update to latest iso-code and support more languages
Mathieu Duponchelle [Tue, 11 Aug 2020 20:54:50 +0000 (22:54 +0200)]
tags: update to latest iso-code and support more languages

Some languages have an ISO 639-2 representation but no 639-1
representation, for example where "eng" has a two-letter
equivalent in "en", "enm" doesn't have one.

Discarding those languages from our static table caused functions
such as gst_tag_get_language_code_iso_639_2T() or
gst_tag_get_language_code_iso_639_2B() to return NULL for
valid language codes such as "enm", potentially causing users
of these API such as mpegtsmux to discard language code tags
as invalid.

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

3 years agopbutils: Add latest H.264 level values
Nicolas Dufresne [Tue, 11 Aug 2020 21:15:50 +0000 (17:15 -0400)]
pbutils: Add latest H.264 level values

The spec now list 6, 6.1 and 6.2.

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

3 years agoappsrc: Post a bus error if a segment can't be applied
Jan Schmidt [Mon, 10 Aug 2020 17:45:32 +0000 (03:45 +1000)]
appsrc: Post a bus error if a segment can't be applied

When applying segments from the input samples, post a bus
error and fail loudly if the segment fails to configure, instead of
just posting debug output.

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

3 years agobuild/gl: add top-level include files for sub-libraries
Matthew Waters [Tue, 11 Aug 2020 06:53:51 +0000 (16:53 +1000)]
build/gl: add top-level include files for sub-libraries

Makes gir happy

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/809
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/784>

3 years agoAdd required dependencies of cocoa GL example for linking.
Josh Matthews [Mon, 10 Aug 2020 16:18:31 +0000 (16:18 +0000)]
Add required dependencies of cocoa GL example for linking.

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

3 years agopkg-config: Fix dependency typo in uninstalled gstreamer-gl-* pc files
Sebastian Dröge [Mon, 10 Aug 2020 06:59:09 +0000 (09:59 +0300)]
pkg-config: Fix dependency typo in uninstalled gstreamer-gl-* pc files

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

3 years agoaudioaggregator: Add support for new sample selection API
Sebastian Dröge [Fri, 7 Aug 2020 07:18:34 +0000 (10:18 +0300)]
audioaggregator: Add support for new sample selection API

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

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

3 years agovideoaggregator: Update for additional info parameter to the "samples-selected" signal
Sebastian Dröge [Fri, 7 Aug 2020 06:34:37 +0000 (09:34 +0300)]
videoaggregator: Update for additional info parameter to the "samples-selected" signal

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/590

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

3 years agoFix incorrect pkgconfig description.
Josh Matthews [Thu, 6 Aug 2020 14:22:27 +0000 (14:22 +0000)]
Fix incorrect pkgconfig description.

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

3 years agogl: move each gl platform specific API to its own gir
Guillaume Desmottes [Thu, 23 Jul 2020 09:48:55 +0000 (19:48 +1000)]
gl: move each gl platform specific API to its own gir

With contributions from:
Thibault Saunier <tsaunier@igalia.com>
Matthew Waters <matthew@centricular.com>

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

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

3 years agogl: egl: add missing gir annotations
Guillaume Desmottes [Wed, 13 May 2020 08:08:25 +0000 (10:08 +0200)]
gl: egl: add missing gir annotations

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