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

4 years agodocs: Update plugins cache
Thibault Saunier [Mon, 8 Jun 2020 14:40:15 +0000 (10:40 -0400)]
docs: Update plugins cache

4 years agovideo: sort formats by quality
Guillaume Desmottes [Thu, 4 Jun 2020 14:40:44 +0000 (16:40 +0200)]
video: sort formats by quality

Will ensure that we pick the "best" format when negotiating caps.

Fix #649

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

4 years agoaudio: sort formats by quality
Guillaume Desmottes [Thu, 4 Jun 2020 14:40:44 +0000 (16:40 +0200)]
audio: sort formats by quality

Will ensure that we pick the "best" format when negotiating caps.

Fix #649

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

4 years agotests: enforce I420 format
Guillaume Desmottes [Fri, 5 Jun 2020 13:26:58 +0000 (15:26 +0200)]
tests: enforce I420 format

Tests are assuming video is I420 but are not actually enforcing it.

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

4 years agouridecodebin3: Let decodebin do its stream selection if no one answers
Thibault Saunier [Fri, 22 May 2020 04:35:03 +0000 (00:35 -0400)]
uridecodebin3: Let decodebin do its stream selection if no one answers

If no one answers our `select-stream` signal, uridecodebin3 should
behave the same way as `decodebin3` and let decodebin do its own stream
selection.

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

4 years agodecodebin3: Avoid overriding explicit user selection
Thibault Saunier [Fri, 22 May 2020 04:32:15 +0000 (00:32 -0400)]
decodebin3: Avoid overriding explicit user selection

In case the user set a list of streams to select or answer explicitly
to all 'select-stream' event, we should respect his choice and not
try to add a stream per type.

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

4 years agotests: Avoid hang with decodebin test
Edward Hervey [Mon, 8 Jun 2020 06:11:00 +0000 (08:11 +0200)]
tests: Avoid hang with decodebin test

When adding elements dynamically to a pipeline one should never guess what the
curren/target state is, and instead use `gst_element_sync_state_with_parent()`.

Fixes racy hang when running within valgrind

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

4 years agoplaybin: Fix wrong AV element pair selection when rank is very large value
Seungha Yang [Sat, 6 Jun 2020 11:22:28 +0000 (20:22 +0900)]
playbin: Fix wrong AV element pair selection when rank is very large value

If user set very high rank to an element (e.g., integer max),
integer overflow can happen while multiplication operation

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

4 years agoplugins: uddate gst_type_mark_as_plugin_api() calls
Mathieu Duponchelle [Fri, 5 Jun 2020 22:41:17 +0000 (00:41 +0200)]
plugins: uddate gst_type_mark_as_plugin_api() calls

4 years agovideoencoder: Add test for min-force-key-unit-interval property
Sebastian Dröge [Thu, 4 Jun 2020 13:25:12 +0000 (16:25 +0300)]
videoencoder: Add test for min-force-key-unit-interval property

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

4 years agovideoencoder: Also don't request a new key-unit if we already got one after the reque...
Sebastian Dröge [Thu, 4 Jun 2020 12:19:18 +0000 (15:19 +0300)]
videoencoder: Also don't request a new key-unit if we already got one after the requested running time

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

4 years agovideoencoder: Don't request another keyunit if another one is pending or we requested...
Sebastian Dröge [Thu, 4 Jun 2020 12:10:12 +0000 (15:10 +0300)]
videoencoder: Don't request another keyunit if another one is pending or we requested one for a future time already

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

4 years agovideoencoder: Add min-force-key-unit-interval property
Sebastian Dröge [Wed, 3 Jun 2020 18:46:38 +0000 (21:46 +0300)]
videoencoder: Add min-force-key-unit-interval property

This allows configuring the minimum interval between subsequent
force-key-unit requests and prevents a big bitrate increase if a lot of
key-units are requested.

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

4 years agovideoencoder: Add test for correct force-keyunit event handling
Sebastian Dröge [Wed, 3 Jun 2020 17:49:12 +0000 (20:49 +0300)]
videoencoder: Add test for correct force-keyunit event handling

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

4 years agovideoencoder: Fix force-keyunit handling in test
Sebastian Dröge [Wed, 3 Jun 2020 17:26:33 +0000 (20:26 +0300)]
videoencoder: Fix force-keyunit handling in test

This now behaves according to the videoencoder API instead of some other
signalling.

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

4 years agovideoencoder: When pushing headers as part of a keyframe mark the first header as...
Sebastian Dröge [Wed, 3 Jun 2020 19:38:07 +0000 (22:38 +0300)]
videoencoder: When pushing headers as part of a keyframe mark the first header as keyframe

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

4 years agovideoencoder: Handle all matching force-keyunit events at once
Sebastian Dröge [Wed, 3 Jun 2020 17:17:06 +0000 (20:17 +0300)]
videoencoder: Handle all matching force-keyunit events at once

Previously we only handled one event at a time, which could lead to the
following two suboptimal situations:
- frame 0 at 20ms, frame 1 at 40ms and two force-keyunit events at 10ms
  and 15ms. We would create a new keyframe for both of the frames.
- 100 force-keyunit events with running-time NONE would cause all
  following 100 frames to be made into a keyframe.

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

4 years agovideoencoder: Sort force-keyunit-events by their running time
Sebastian Dröge [Wed, 3 Jun 2020 16:59:03 +0000 (19:59 +0300)]
videoencoder: Sort force-keyunit-events by their running time

That way we can more easily work with the whole list without iterating
over all of the elements.

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

4 years agouridecodebin: Dont link random pads
Edward Hervey [Wed, 3 Jun 2020 09:29:09 +0000 (11:29 +0200)]
uridecodebin: Dont link random pads

When linking source pads to decodebin, make sure we use the *specified* new
source pad and not some random one.

This avoids ending up with source pads being unlinked.

Main cause of random timeouts with rtsp change_state_intensive validate tests

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

4 years agovideo-hdr: fix memset warning
Stéphane Cerveau [Thu, 4 Jun 2020 08:41:13 +0000 (10:41 +0200)]
video-hdr: fix memset warning

Fix warning on fedora arm64 target

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

4 years agovideo: Fix NV12_64Z32 number of component
Nicolas Dufresne [Thu, 4 Jun 2020 15:22:00 +0000 (11:22 -0400)]
video: Fix NV12_64Z32 number of component

This format has 3 components, just like NV12.

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

4 years agodoc: Add a minimal GstVideoMultiviewFlagsSet documentation
Thibault Saunier [Thu, 4 Jun 2020 00:50:05 +0000 (20:50 -0400)]
doc: Add a minimal GstVideoMultiviewFlagsSet documentation

4 years agodoc: Require hotdoc >= 0.11.0
Thibault Saunier [Wed, 3 Jun 2020 22:38:38 +0000 (18:38 -0400)]
doc: Require hotdoc >= 0.11.0

4 years agodocs: Update gst_plugins_cache.json
Sebastian Dröge [Wed, 27 May 2020 13:00:48 +0000 (16:00 +0300)]
docs: Update gst_plugins_cache.json

4 years agoplugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types
Mathieu Duponchelle [Fri, 29 May 2020 00:43:59 +0000 (02:43 +0200)]
plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types

4 years agovideoencoder: Simplify header buffer metadata updating
Sebastian Dröge [Wed, 3 Jun 2020 12:06:08 +0000 (15:06 +0300)]
videoencoder: Simplify header buffer metadata updating

Instead of doing a shallow copy of the list just to call make_writable()
on each buffer, do that inline in the same loop and modify the list
contents.

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

4 years agovideo: Use GQueue instead of plain GList in a few places
Sebastian Dröge [Wed, 3 Jun 2020 11:37:00 +0000 (14:37 +0300)]
video: Use GQueue instead of plain GList in a few places

Also not optimal but at least simplifies the code a bit and doesn't
require g_list_length() and g_list_append() in a few places.

For 2.0 there are some more candidates to change but unfortunately
they're currently part of the API.

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

4 years agovideo-format: RGB16/15 are not 16 bit per component but only 5.333 and 5
Sebastian Dröge [Tue, 2 Jun 2020 13:56:44 +0000 (16:56 +0300)]
video-format: RGB16/15 are not 16 bit per component but only 5.333 and 5

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

4 years agoaudio: add gst_audio_make_raw_caps()
Guillaume Desmottes [Wed, 27 May 2020 13:41:43 +0000 (15:41 +0200)]
audio: add gst_audio_make_raw_caps()

More binding friendly version of GST_AUDIO_CAPS_MAKE().

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

4 years agoaudio-format: remove empty space prefix from GST_AUDIO_FORMATS_ALL
Guillaume Desmottes [Mon, 1 Jun 2020 13:24:32 +0000 (15:24 +0200)]
audio-format: remove empty space prefix from GST_AUDIO_FORMATS_ALL

This space prevent deserialization using gst_value_deserialize().

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

4 years agoaudio-format: add gst_audio_formats_raw()
Guillaume Desmottes [Wed, 27 May 2020 13:05:37 +0000 (15:05 +0200)]
audio-format: add gst_audio_formats_raw()

The existing GST_AUDIO_FORMATS_ALL macro is not binding friendly.

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

4 years agovideo: add gst_video_make_raw_caps()
Guillaume Desmottes [Wed, 27 May 2020 13:41:43 +0000 (15:41 +0200)]
video: add gst_video_make_raw_caps()

More binding friendly version of GST_VIDEO_CAPS_MAKE().

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

4 years agovideo-format: add gst_video_formats_raw()
Guillaume Desmottes [Wed, 27 May 2020 13:05:37 +0000 (15:05 +0200)]
video-format: add gst_video_formats_raw()

The existing GST_VIDEO_FORMATS_ALL macro is not binding friendly.

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

4 years agoglcontext/eagl: handle sending one message during shutdown
Matthew Waters [Fri, 29 May 2020 09:08:51 +0000 (19:08 +1000)]
glcontext/eagl: 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

This is the equivalent commit for iOS as:
7f59cefafb1cd733cf527fb935b2cd32418fcbe2
https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/618

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

4 years agogl/eagl: don't access UIkit objects on the main thread
Matthew Waters [Fri, 29 May 2020 05:44:55 +0000 (15:44 +1000)]
gl/eagl: don't access UIkit objects on the main thread

This means we cannot access [view layer] or view.bounds from the OpenGL
thread.  This also means that we need to call the main thread when
setting the window handle.  However, we cannot perform that
synchronously as that may deadlock with the application performing the
set_window_handle() call.

We need to defer the actual update and run it asynchronously and wait
for the window handle update internally at each point it is needed.

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

4 years agogl/ios: fix typo GS_GL -> GST_GL
Matthew Waters [Fri, 29 May 2020 04:12:38 +0000 (14:12 +1000)]
gl/ios: fix typo GS_GL -> GST_GL

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

4 years agovideorate: Update QoS events taking into account our rate
Thibault Saunier [Fri, 29 May 2020 20:21:11 +0000 (16:21 -0400)]
videorate: Update QoS events taking into account our rate

Otherwise there is a mismatch between the QoS values and what upstream
would expect, leading to too much buffer dropping in video decoders in
case rate < 1.0 or not enough buffer dropping in case rate > 1.0

Adding validate tests with and without decoders.

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

4 years agovideorate: Fix changing `rate` property during playback
Thibault Saunier [Sun, 31 May 2020 04:27:14 +0000 (00:27 -0400)]
videorate: Fix changing `rate` property during playback

We need to take into account the base_ts to compute next_ts and it needs
to be updated on rate change.

This introduces `pending_rate` so that change rate is properly handled
in the streaming thread in a safe way.

Added tests

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

4 years agotests:validate: Run all test using a simple fakesink
Thibault Saunier [Thu, 28 May 2020 17:42:22 +0000 (13:42 -0400)]
tests:validate: Run all test using a simple fakesink

`fakevideosink` is in -bad and thus not available here.

Update the expectation files as video metas are not negotiated anymore.

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

4 years agolibs: gl: silence gir compiler
Víctor Manuel Jáquez Leal [Fri, 29 May 2020 09:39:57 +0000 (11:39 +0200)]
libs: gl: silence gir compiler

There were a couple complains of the gir compiler on these gstgl
files.

* Added namespace to public macros, even if they are helpers.
* Removed a misused private tag

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

4 years agovideoscale: reorder code to avoid indent missmatches
Michael Gruner [Thu, 23 Jan 2020 18:38:44 +0000 (12:38 -0600)]
videoscale: reorder code to avoid indent missmatches

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

4 years agovideoscale: transform size sensitive metas
Michael Gruner [Thu, 23 Jan 2020 17:02:52 +0000 (11:02 -0600)]
videoscale: transform size sensitive metas

Currently, videoscale just drops all metas that have other tags
besides video. However videoscale wont change the colorspace or
the orientation of the video so metas tagged as such may be
copied safely. Additionaly, given that videoscale will change
the frame size, we invoke the meta transform implementation
to give it the opportunity to scale accordingly.

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

4 years agotests: audiosink: Test class extension struct
Seungha Yang [Wed, 22 Jan 2020 13:30:11 +0000 (22:30 +0900)]
tests: audiosink: Test class extension struct

Test a vfunc which belongs to GstAudioSinkExtension struct.

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

4 years agoaudiosink: Keep baseclass extensible
Seungha Yang [Tue, 21 Jan 2020 15:14:14 +0000 (00:14 +0900)]
audiosink: Keep baseclass extensible

Add a structure for future extension.

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

4 years agodecodebin: only emit 'drained' signal when top chain is drained
uno20001 [Wed, 27 May 2020 13:11:17 +0000 (15:11 +0200)]
decodebin: only emit 'drained' signal when top chain is drained

Without this, decodebin emits 'drained' multiple times which then
causes (uri)playbin to emit 'about-to-finish' multiple times for
for file types.

Fixes #751

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

4 years agoaudioresample: Add new test that checks for downstream renegotiation
Sebastian Dröge [Wed, 27 May 2020 16:59:56 +0000 (19:59 +0300)]
audioresample: Add new test that checks for downstream renegotiation

This test always consumes 48kHz and outputs different sample rates based
on downstream renegotiation. Previously this would produce completely
wrong timestamps and not output all samples.

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

4 years agoaudioresample: Fix up test_live_switch
Sebastian Dröge [Wed, 27 May 2020 16:08:45 +0000 (19:08 +0300)]
audioresample: Fix up test_live_switch

Actually check that we get back all samples, which we didn't before
because no draining was happening. Also remove commented out 0.10 code
and related comments.

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

4 years agoaudioresample: Drain resampler on discontinuities
Sebastian Dröge [Tue, 26 May 2020 19:51:06 +0000 (22:51 +0300)]
audioresample: Drain resampler on discontinuities

Otherwise we would lose the last few samples when resetting the
resampler.

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

4 years agoaudioresample: Drain resampler and reset timestamp tracking on stream-start event too
Sebastian Dröge [Tue, 26 May 2020 19:49:44 +0000 (22:49 +0300)]
audioresample: Drain resampler and reset timestamp tracking on stream-start event too

And also reset timestamp tracking on EOS events as more data might come
afterwards with a new stream-start event. This keeps the code the same.

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

4 years agoaudioresample: Drain the resampler and reset timestamp tracking on caps changes
Sebastian Dröge [Tue, 26 May 2020 19:45:41 +0000 (22:45 +0300)]
audioresample: Drain the resampler and reset timestamp tracking on caps changes

Especially when changing the sample rate our timestamp tracking will be
completely off, but even otherwise we would usually lose the last few
samples if we don't drain here as the resampler gets reset if anything
but the sample rate changes.

This is usually not a problem as the first buffer after a caps event
usually has the discont flag set, but can cause problems if
 - the caps event is followed by a segment event, which then causes
   draining according to the new sample rate
 - the caps were changed because of rengotiation due to a reconfigure
   event and there is not discontinuity from upstream

In both cases we would output buffers with completely wrong timestamps.

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

4 years agovideo-anc: init type before g_once_init_enter
Stéphane Cerveau [Fri, 8 May 2020 09:19:24 +0000 (11:19 +0200)]
video-anc: init type before g_once_init_enter

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

4 years agovideo-hdr: fix typo
Stéphane Cerveau [Fri, 8 May 2020 09:03:52 +0000 (11:03 +0200)]
video-hdr: fix typo

fix typo in video_hdr_ascii_string_to_unsigned
method name.

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

4 years agoglimagesink: Correct signals gtkdoc
Niels De Graef [Tue, 26 May 2020 16:51:03 +0000 (18:51 +0200)]
glimagesink: Correct signals gtkdoc

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

4 years agovideorate: Fix buffer selection logic in reverse playback
Thibault Saunier [Mon, 25 May 2020 20:59:53 +0000 (16:59 -0400)]
videorate: Fix buffer selection logic in reverse playback

Stop comparing all timestamps from buffers that are before the segment
with the segment.stop and compare with the actual end times.

Comparing to segment.stop for all the buffers that where before
the segment.stop was incorrect and leading to consuming wrong buffers
and not respecting segment.stop, this is now properly tested.

Expectations for `reverse.10_to_1fps.validatetest` have been fixed to
take that into account and comparing the checksums of the sinkpad and
srcpad expectations makes pretty clear how wrong that was.

(we can see in the expectations that videotestsrc outputs an extra
buffer with pts == segment.stop and this one is now properly dropped
by videorate as bec7f4ad5ed4bb1abfb92db946e654338766562b aimed at
doing)

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

4 years agovideorate: Factor out a method for the`max-duplication-time` property
Thibault Saunier [Mon, 25 May 2020 20:29:15 +0000 (16:29 -0400)]
videorate: Factor out a method for the`max-duplication-time` property

Sensibly simplifying gst_video_rate_transform_ip

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

4 years agovideorate: Use CLOCK_TIME_IS_VALID instead of checking CLOCK_TIME_NONE
Thibault Saunier [Mon, 25 May 2020 18:48:04 +0000 (14:48 -0400)]
videorate: Use CLOCK_TIME_IS_VALID instead of checking CLOCK_TIME_NONE

Making it more consistency with the rest of the code.

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

4 years agovideorate: Factor out a method to reset mode
Thibault Saunier [Mon, 25 May 2020 18:33:54 +0000 (14:33 -0400)]
videorate: Factor out a method to reset mode

Working on simplifying gst_video_rate_transform_ip

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

4 years agovideorate: Do not push an extra buffer on EOS when we are done pushing already
Thibault Saunier [Mon, 25 May 2020 16:31:32 +0000 (12:31 -0400)]
videorate: Do not push an extra buffer on EOS when we are done pushing already

There is no reason that when we have already pushed all the buffers in
a segment we push a new one on EOS

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

4 years agoaudiotestsrc: Fix the way we compute EOS in reverse playback
Thibault Saunier [Sat, 23 May 2020 03:24:55 +0000 (23:24 -0400)]
audiotestsrc: Fix the way we compute EOS in reverse playback

In reverse playback we were not taking into account the current buffer
samples to check if we had reached EOS which was leading to a buffer
with PTS = CLOCK_TIME_NONE containing too many frames followed by a
useless buffer with pts=0 duration=0, and a g_critical issue in
gst_object_sync_values.

Also add a validate based test case.
Without that patch this is how the expectation fails:

``` diff
--- log-asink-sink-expected       2020-05-22 23:22:42.654384579 -0400
+++ log-asink-sink-actual  2020-05-22 23:29:35.671586380 -0400
@@ -27,5 +27,6 @@
 buffer: pts=0:00:00.058820861, due=0:00:00.023219955, flags=discont
 buffer: pts=0:00:00.035600907, due=0:00:00.023219954, flags=discont
 buffer: pts=0:00:00.012380952, due=0:00:00.023219955, flags=discont
-buffer: pts=0:00:00.000000000, due=0:00:00.012380952, flags=discont
+buffer: due=0:00:00.012380953, flags=discont
+buffer: pts=0:00:00.000000000, flags=discont
 event eos: (no structure)
 ```

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

4 years agogl: egl: fix gtk-doc doc start code
Guillaume Desmottes [Wed, 13 May 2020 13:28:33 +0000 (15:28 +0200)]
gl: egl: fix gtk-doc doc start code

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