Théo MAILLART [Fri, 29 Jan 2021 19:36:51 +0000 (20:36 +0100)]
elementfactory: enable construct only property passing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/736>
Olivier Crête [Wed, 31 Mar 2021 22:36:00 +0000 (18:36 -0400)]
tracer: Add new tracer to list loaded elements and other features
This new tracer will list loaded elements and plugins. This should
make it easier to generate minimal builds of GStreamer.
This also traces other features such as typefind functions, device
providers and dynamic types.
The format of the output of gst-stats should match the parameters
expected by the meson based gst-build system.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/782>
Olivier Crête [Fri, 23 Apr 2021 19:34:26 +0000 (15:34 -0400)]
tracers: Add tracepoint when a plugin feature it loaded
This makes it possible to trace which ones are loaded in a specific
program to make nice statistics.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/782>
Edward Hervey [Wed, 18 Aug 2021 08:23:38 +0000 (10:23 +0200)]
pad: Ensure last flow return is set on sink pads in push mode
The last flow return field was never updated on sink pads in push mode. This
fixes it and makes it consistent.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/868>
Nirbheek Chauhan [Fri, 13 Aug 2021 13:51:41 +0000 (19:21 +0530)]
gstbuffer: Use g_memdup2 instead of g_memdup
This was added in !826 which was created after !803 (which changes
g_memdup -> g_memdup2), but merged before it, so it slipped through.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/866>
Tim-Philipp Müller [Tue, 10 Aug 2021 12:35:14 +0000 (13:35 +0100)]
plugin: load plugins with unknown license strings
We shouldn't fail to load plugins just because we don't
recognise the license string. It's not our job to validate
licenses, and the license list is outdated and ambiguous
anyway.
Also add MPL-2.0 to the list, and fix some defunct license
URLs in the code comments.
Get rid of the hard-coded skip index, doesn't really buy us
much versus just skipping with a few strlens, and is harder
to maintain.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/864>
Stéphane Cerveau [Mon, 2 Aug 2021 12:23:58 +0000 (14:23 +0200)]
identity: provide a log to check the buffers
In order to not rely only on app to display the
message from identity, display the message in the logs
too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/863>
Seungha Yang [Sat, 31 Jul 2021 18:36:31 +0000 (03:36 +0900)]
examples: controller-graph: Fix build with MSVC
To use macros in math.h, one needs to define _USE_MATH_DEFINES
before including the math.h file. Use glib's math define instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/862>
Seungha Yang [Tue, 11 May 2021 15:54:43 +0000 (00:54 +0900)]
gst-launch: Enable Windows high-resolution clock
Default timer precision of Windows is dependent on system, but
usually it's known to be about 15ms in worst case.
That's not an enough precision for multimedia application.
Enable high-resolution clock in gst-launch to demonstrate
the usage of Windows high-precision clock for application developers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/817>
Jan Alexander Steffens (heftig) [Fri, 23 Jul 2021 14:20:20 +0000 (16:20 +0200)]
input-selector: Use proper segments when cleaning cached buffers
We need to use the segment associated with the cached buffer, not the
current segment of the pad, otherwise we miscalculate the running time
of cached buffers from before a segment change.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/859>
Stéphane Cerveau [Tue, 20 Jul 2021 07:51:04 +0000 (09:51 +0200)]
gitlab: update bug template
Finetune the bug description.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/854>
Zhao, Gang [Sun, 9 May 2021 03:45:49 +0000 (11:45 +0800)]
gsturi: Set GError if uri is invalid
GError should be set if function call failed and the failed reason is
not a programmer error.
Fixed: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1380
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/816>
Zhao, Gang [Sun, 9 May 2021 03:13:48 +0000 (11:13 +0800)]
gsturi: Don't treat invalid format of uri as critical error
Normally uri is get from user input and invalid user input should not
be treated as critical error. Moved gst_uri_is_valid outside of
g_return_val_if_fail.
NULL uri is checked inside of gst_uri_is_valid and is correctly
treated as critical error, removed unneeded checks of NULL uri outside
of gst_uri_is_valid function.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/816>
Seungha Yang [Tue, 20 Jul 2021 07:52:12 +0000 (16:52 +0900)]
systemclock: Restore default clock mode to monotonic for non-linux system
Before the MR https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/829
Windows and macOS system clock used monotonic clock regardless of
selected clock mode. And because of clock resolution, we should prefer
monotonic over realtime unless realtime clock is selected explicitly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/855>
Seungha Yang [Wed, 7 Jul 2021 11:11:13 +0000 (20:11 +0900)]
basesink: Don't swap rstart/rstop when stepping
Step handling is implemented based on unmodified start/stop
segment running time, and basesink takes rate into account for
stepping. This commit is partially undoing new behavior introduced by
the commit of
39b9cc554c960fec8d41f8394c41390883cadeed when stepping.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/848>
Nirbheek Chauhan [Mon, 19 Jul 2021 14:34:16 +0000 (20:04 +0530)]
gstptpclock: Don't leak the GList
120 bytes in 5 blocks are definitely lost in loss record 7,615 of 9,510
at 0x484486F: malloc (vg_replace_malloc.c:380)
by 0x58A2938: g_malloc (gmem.c:106)
by 0x58BA1F4: g_slice_alloc (gslice.c:1069)
by 0x588F059: g_list_prepend (glist.c:335)
by 0x5B9C5C0: select_best_master_clock (gstptpclock.c:756)
by 0x5B9CA8E: cleanup_cb (gstptpclock.c:1930)
by 0x589AD20: g_timeout_dispatch (gmain.c:4889)
by 0x589A4CE: UnknownInlinedFun (gmain.c:3337)
by 0x589A4CE: g_main_context_dispatch (gmain.c:4055)
by 0x58EE4E7: g_main_context_iterate.constprop.0 (gmain.c:4131)
by 0x5899A92: g_main_loop_run (gmain.c:4329)
by 0x5B9BA4C: ptp_helper_main (gstptpclock.c:1980)
by 0x58C8C31: g_thread_proxy (gthread.c:826)
576 bytes in 24 blocks are definitely lost in loss record 8,782 of 9,510
at 0x484486F: malloc (vg_replace_malloc.c:380)
by 0x58A2938: g_malloc (gmem.c:106)
by 0x58BA1F4: g_slice_alloc (gslice.c:1069)
by 0x588F059: g_list_prepend (glist.c:335)
by 0x5B9C5C0: select_best_master_clock (gstptpclock.c:756)
by 0x5B9EFA0: handle_announce_message (gstptpclock.c:934)
by 0x5B9EFA0: handle_ptp_message (gstptpclock.c:1765)
by 0x5B9EFA0: have_stdin_data_cb (gstptpclock.c:1851)
by 0x589A4CE: UnknownInlinedFun (gmain.c:3337)
by 0x589A4CE: g_main_context_dispatch (gmain.c:4055)
by 0x58EE4E7: g_main_context_iterate.constprop.0 (gmain.c:4131)
by 0x5899A92: g_main_loop_run (gmain.c:4329)
by 0x5B9BA4C: ptp_helper_main (gstptpclock.c:1980)
by 0x58C8C31: g_thread_proxy (gthread.c:826)
by 0x5DA4298: start_thread (pthread_create.c:481)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/852>
Nirbheek Chauhan [Tue, 6 Jul 2021 07:34:04 +0000 (13:04 +0530)]
gstpad: Don't spam INFO when default-chaining a buffer list
This is being logged for each buffer, so it should not use INFO.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/853>
Stéphane Cerveau [Tue, 15 Jun 2021 08:23:33 +0000 (10:23 +0200)]
gitlab: add bug template
To clarify what is expected in an issue description and avoid
issue which is just an usage issue, add a bug template in gitlab.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/836>
Kasper Steensig Jensen [Thu, 8 Jul 2021 09:48:58 +0000 (11:48 +0200)]
Add meson description for tracer_hooks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/849>
Edward Hervey [Thu, 28 May 2020 06:06:59 +0000 (08:06 +0200)]
gstinfo: Improve usage of libdw for backtraces
When getting backtraces, we were always creating a new Dwfl context and then
discarding it. The problem with that is that it resulted in having to re-scan a
lot of information for every single backtrace.
In order to fix that issue, use a global on-demand Dwfl context and use it with
a lock.
Furthermore, we were scanning the mappings of the
process (dwfl_linux_proc_report) for *every single step* in the backtrace, and
that function is horrendously expensive (does sscanf on /proc/PID/maps
...). While there is a possibility that new mappings might be available (new
plugins being loaded for example), we can limit ourselves to just do it once per
backtrace.
These two modifications speed up the elements_leaks unit test (which traces all
pads with full backtraces) by a factor of 6.
Partially fixes #567
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/504>
Jan Schmidt [Thu, 1 Jul 2021 15:59:18 +0000 (01:59 +1000)]
parse: Fix a critical when using the : operator.
Fix "has no handler with id" output criticals when the :
multilink operator is used. These were caused by disconnecting
a signal handler multiple times.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/846>
Sebastian Dröge [Thu, 24 Jun 2021 08:28:28 +0000 (11:28 +0300)]
basesink: Post a latency message whenever we're ready to answer the query
Usually the latency message is only posted whenever latency of an
element changes but that might be too early as the sinks might not be
able to query the latency at that point yet.
Similarly adding a new sink should cause latency reconfiguration once
that new sink is able to report its latency.
This fixes latency configuration in pipelines where webrtcbin is the
only "sink", i.e. it is used in a sendonly session. Before, the latency
would always be configured to 0.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/843>
Sebastian Dröge [Thu, 24 Jun 2021 07:00:28 +0000 (10:00 +0300)]
basesrc: Print segments with GST_SEGMENT_FORMAT and not GST_PTR_FORMAT
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/842>
Víctor Manuel Jáquez Leal [Tue, 22 Jun 2021 11:02:41 +0000 (13:02 +0200)]
Fix GI annotations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/840>
Corentin Damman [Tue, 15 Jun 2021 08:10:16 +0000 (08:10 +0000)]
Update COPYING to LGPL 2.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/835>
Jan Schmidt [Tue, 8 Jun 2021 16:35:00 +0000 (02:35 +1000)]
parse: Don't do delayed property setting for top-level properties.
If a property is supplied to gst-launch-1.0 to set on a property that
implements GstChildProxy, it would always accept any property name
and try to set it later. This means that (for example) decodebin
will accept and not complain about property names that can never exist like:
gst-launch-1.0 videotestsrc ! decodebin NON-EXISTING_PROPERTY=adsfdasf ! fakesink
Instead, only try to do deferred property setting for property names
that contain the :: separator that indicates it's a setting on a child
that might appear later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/832>
François Laignel [Wed, 16 Jun 2021 09:59:20 +0000 (11:59 +0200)]
Check mandatory ClockTime arguments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/837>
Doug Nazar [Fri, 23 Apr 2021 16:12:58 +0000 (12:12 -0400)]
Use g_memdup2() where available and add fallback for older GLib versions
glib 2.68 deprecates g_memdup(). Replace with g_memdup2() and
add fallback if compiling against older versions, since we
want to avoid deprecation warnings.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/803>
Alba Mendez [Mon, 7 Jun 2021 09:29:58 +0000 (09:29 +0000)]
introspection: annotate ownership in more vfuncs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/831>
Alba Mendez [Thu, 3 Jun 2021 23:46:06 +0000 (23:46 +0000)]
introspection: annotate handle_message ownership
(fixup/improvement to !747) Correct the ownership
annotation for `message` in the `handle_message` vfunc,
and remove the equivalent phrase elsewhere (following
rules of !747.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/830>
Guillaume Desmottes [Tue, 25 May 2021 11:26:11 +0000 (13:26 +0200)]
tracers: leaks: log when tracer is exiting
Useful when debugging leaks to make sure that the tracer is properly
finalized (gst_deinit() being actually called, etc).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/828>
Tim-Philipp Müller [Tue, 1 Jun 2021 14:28:13 +0000 (15:28 +0100)]
Back to development
Tim-Philipp Müller [Mon, 31 May 2021 23:07:53 +0000 (00:07 +0100)]
Release 1.19.1
tyler-aicradle [Thu, 27 May 2021 21:01:17 +0000 (16:01 -0500)]
systemclock: fall back to g_get_monotonic_time
This allows us to cover the case where we're on some unknown system that
doesn't have a known native precision monotonic time source. Sadly this
reintroduces some of the complexity removed in previous commits.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/829>
tyler-aicradle [Thu, 27 May 2021 14:44:29 +0000 (09:44 -0500)]
systemclock: reorg real and mono time functions for macOS and win32
This simplifies the pre-processor checks a little to make it easier to
follow the code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/829>
tyler-aicradle [Wed, 26 May 2021 19:55:55 +0000 (14:55 -0500)]
systemclock: Use g_get_real_time on Windows and macOS for realtime clock
These targets previously were unable to produce wall clock times when
using GstSystemClock, this change makes it possible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/829>
tyler-aicradle [Wed, 26 May 2021 17:55:42 +0000 (12:55 -0500)]
systemclock: Reorganize defined checks for parts of GstSystemClock
The gst_system_clock_get_internal_time and
gst_system_clock_get_resolution functions had some nested defined checks
making this code somewhat harder to reason about and much harder to
change. The logical meaning of the checks has changed but the actual
code coming out of the pre-processor should not have changed
significantly. The main logical change was flattening the checks for
existence of posix timing functionality, from what I can tell these
functions aren't available on Windows where they were trying to be
included. I have checked the Linux and macOS output and they are
functionally unchanged.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/829>
Tim-Philipp Müller [Mon, 24 May 2021 17:27:08 +0000 (18:27 +0100)]
buffer: rename new gst_buffer_new_copy() to gst_buffer_new_memdup()
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/826
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827>
Tim-Philipp Müller [Sat, 22 May 2021 18:32:55 +0000 (19:32 +0100)]
buffer: add gst_buffer_new_copy() convenience function
More convenient and discoverable variant of the fairly widely-used
gst_buffer_new_wrapped(g_memdup(data,size),size).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/826>
Tim-Philipp Müller [Sun, 16 May 2021 01:10:55 +0000 (02:10 +0100)]
docs: random: clean up outdated documents
Most of these are only of historical interest, and for that it's
fine if they're maintained in the git history. They're confusing
for anyone stumbling across them expecting documentation relating
to current versions of GStreamer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/824>
Mathieu Duponchelle [Tue, 11 May 2021 19:16:01 +0000 (21:16 +0200)]
concat: adjust running time offsets on events
When concat adjusts the base of the segments it forwards
downstream, it needs to also adjust the running time offsets,
as GstPad does when an offset is set by the application on a pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/819>
Nicolas Dufresne [Wed, 5 May 2021 19:45:40 +0000 (15:45 -0400)]
doc: base: Fix reference to virtual function
The hotdoc syntax is #ClassName::function, but the code was using
without anything before.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/808>
Doug Nazar [Thu, 6 May 2021 17:03:15 +0000 (13:03 -0400)]
gstcheck: Ensure unused threadpool threads are stopped
Ensures that all unused threads are exited before the atexit()
handlers run.
This prevents a race with any thread that used the OpenSSL library
between it's thread cleanup routine and it's atexit() cleanup routine
which can cause a SIGSEGV.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/812>
Mathieu Duponchelle [Tue, 11 May 2021 17:02:28 +0000 (19:02 +0200)]
concat: fix locking in SEGMENT event handler
concat->current_start_offset needs the lock taken for safe access,
as it can be accessed from outside of the streaming thread, eg
in release_pad.
An early break is also added for an error case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/818>
Doug Nazar [Fri, 7 May 2021 03:02:35 +0000 (23:02 -0400)]
sparsefile: Fix sparsefile on Win32
When switching between read/write a fseek() or fflush() is required.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/814>
Doug Nazar [Fri, 7 May 2021 03:00:57 +0000 (23:00 -0400)]
downloadbuffer: close file before trying to remove
On Windows, the file handles must be closed before you can delete a file.
Also, it would cause an error if you try to close an already closed handle.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/814>
Doug Nazar [Fri, 7 May 2021 03:00:07 +0000 (23:00 -0400)]
downloadbuffer: return flow error on read error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/814>
Nikolay Sivov [Thu, 6 May 2021 19:20:57 +0000 (22:20 +0300)]
gstutils: Fix typo in the comment.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/813>
Jan Alexander Steffens (heftig) [Thu, 6 May 2021 10:54:46 +0000 (12:54 +0200)]
multiqueue: Ensure peer pad exists when iterating internal links
The pads can be NULL when we're racing with pad removal, e.g. when the
pads get removed between `gst_pad_iterate_internal_links` acquiring the
parent element and `gst_multi_queue_iterate_internal_links` locking the
multiqueue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/810>
Chris White [Fri, 2 Apr 2021 23:48:26 +0000 (19:48 -0400)]
gst_child_proxy_get_property: accept G_VALUE_INIT
gst_child_proxy_get_property() can now take a value initialized to
G_VALUE_INIT. This parallels the corresponding change in
g_object_get_property(), GLib 2.60+.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/724#note_738531
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/809>
François Laignel [Thu, 22 Apr 2021 15:53:44 +0000 (17:53 +0200)]
Introduce gst_element_request_pad_simple
The name `gst_element_get_request_pad()` is confusing to people
learning GStreamer. `gst_element_request_pad_simple()` aims at
providing the exact same functionality, while making it more
explicit it is a simplified `gst_element_request_pad()`.
`gst_element_request_pad_simple()` is consistent with other
functions such as `gst_element_seek_simple`.
This commit deprecates `gst_element_get_request_pad()` so that a
compilation warning is emitted when used and incite developers
to use the more explicit `gst_element_request_pad_simple()`.
See also https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/743#note_886586
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/802>
Doug Nazar [Wed, 21 Apr 2021 03:54:52 +0000 (23:54 -0400)]
harness: Fix object used to log caps warning.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/801>
Miguel Paris [Fri, 16 Apr 2021 09:14:31 +0000 (11:14 +0200)]
pad: clear probes holding mutex
Protect clearing probes against concurrent modification which might happen
due to dispose does NOT guarantee that the object is not used anymore, as
it could be referenced again and so being continued used.
So, as in the rest of places where probes hook list is used, on dispose
it should be accessed holding the mutex "GST_OBJECT_LOCK (pad);" as
GHookList is not thread-safe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/798>
Edward Hervey [Fri, 16 Apr 2021 09:36:33 +0000 (11:36 +0200)]
queue2: Refuse all serialized queries when posting buffering messages
When posting buffering messages there are no safe places or timing to avoid
deadlocks.
Previously the code was trying to be "smart" by only forwarding serialized
queries if the queue was empty ... but that could happen when queue2 hadn't yet
posted a 100% buffering message. Meaning the pipeline might be paused and
pushing a serialized query downstream might never complete.
Therefore let's completely disable forwarding of serialized queries when
`queue2` is used as a buffering element (meaning `ALLOCATION` and `DRAIN`
queries).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/796>
Doug Nazar [Sun, 11 Apr 2021 12:23:27 +0000 (08:23 -0400)]
tests: Remove invalid buffer test in test_get_allowed_caps.
Passing a non-GObject pointer causes SIGSEGV on certain architectures.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/790>
Doug Nazar [Sun, 11 Apr 2021 14:24:01 +0000 (10:24 -0400)]
leaks: Fix SIGSEGV detecting object type.
G_IS_OBJECT & GST_IS_OBJECT work by following pointers which is unsafe
on certain architectures. GstMiniObject detection however does a lookup
to see if it's a valid type derived from G_TYPE_BOXED.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/791>
Chris White [Sat, 10 Apr 2021 14:46:28 +0000 (10:46 -0400)]
allocator: add gst_allocation_params_new()
This permits creating GstAllocationParams instances on the heap, which
is useful for language bindings that can handle GBoxed types.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/683
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/788>
Doug Nazar [Wed, 7 Apr 2021 08:46:23 +0000 (04:46 -0400)]
clocksync: Fix providing system clock by default
clocksync defaults to sync=true so should advertise it by default.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/786>
Jose Quaresma [Sat, 10 Oct 2020 19:09:03 +0000 (19:09 +0000)]
gstpluginloader: when env var is set do not fall through to system plugin scanner
If we set a custom GST_PLUGIN_SCANNER env var, then we probably want to use that and only that.
Falling through to the one installed on the system is problamatic in cross-compilation
environemnts, regardless of whether one pointed to by the env var succeeded or failed.
taken from:
http://cgit.openembedded.org/openembedded-core/commit/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-gst-gstpluginloader.c-when-env-var-is-set-do-not-fal.patch?id=
0db7ba34ca41b107042306d13a6f0162885c123b
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/669>
Jan Alexander Steffens (heftig) [Fri, 19 Mar 2021 12:46:13 +0000 (13:46 +0100)]
gst-inspect: Allow overriding DEFAULT_LESS_OPTS with GST_LESS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/777>
Sebastian Dröge [Tue, 6 Apr 2021 17:56:55 +0000 (20:56 +0300)]
aggregator: Release pads' peeked buffer when removing the pad or finalizing it
The peeked buffer was always reset after calling ::aggregate() but under
no other circumstances. If a pad was removed after peeking and before
::aggregate() returned then the peeked buffer would be leaked.
This can easily happen if pads are removed from the aggregator from a
pad probe downstream of the source pad but still in the source pad's
streaming thread.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/784>
Chris White [Wed, 31 Mar 2021 00:24:07 +0000 (20:24 -0400)]
caps: Add gst_caps_features_new_single()
For use with a single feature now that gst_caps_features_new() is
G_GNUC_NULL_TERMINATED.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774#note_855357
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774>
Chris White [Sat, 27 Mar 2021 21:10:06 +0000 (17:10 -0400)]
typefind: add gst_type_find_suggest_empty_simple()
For cases where you only need a media type and no other fields.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774#note_848664
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774>
Chris White [Thu, 18 Mar 2021 23:06:20 +0000 (19:06 -0400)]
gst: Add missing G_GNUC_NULL_TERMINATED markers
Functions that require NULL as their last vararg are marked so the
compiler can warn on missing NULL.
Also, document the NULL terminator for gst_make_element_message_details()
and gst_tracer_record_new().
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/669
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774>
Pieter Willem Jordaan [Wed, 31 Mar 2021 19:13:45 +0000 (21:13 +0200)]
systemclock: Fix deadlock on clock_nanosleep
Always use the monotonic clock's diff and end time for clock_nanosleep to have predictable behaviour even with other clock types.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/779>
Jason Carrete [Fri, 26 Mar 2021 21:00:54 +0000 (21:00 +0000)]
Update gst-launch-1.0.1
Fixed a small typo in the gst-launch-1.0 man page
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/780>
Sebastian Dröge [Fri, 19 Mar 2021 08:33:13 +0000 (10:33 +0200)]
bin: Don't special-case G_SIGNAL_RUN_CLEANUP stage in latency signal accumulator
This signal don't run the class handler in the CLEANUP stage.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/776>
Aaron Boxer [Sun, 11 Aug 2019 23:13:57 +0000 (19:13 -0400)]
gst: enforce gst_deinit one call per process
unit tests do not need to call deinit as it is already called in exit handler
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/236>
Aaron Boxer [Sun, 11 Aug 2019 18:20:42 +0000 (14:20 -0400)]
gst: disable indent for parse_goption_arg
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/236>
Stéphane Cerveau [Wed, 17 Mar 2021 15:39:30 +0000 (16:39 +0100)]
device provider: add custom register macro
This macro allows to register a device provider with
a custom function which gives more flexibility when
registering it (see v4l2 register).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/773>
Matthew Waters [Thu, 18 Mar 2021 03:46:15 +0000 (14:46 +1100)]
gst: don't use volatile to mean atomic
volatile is not sufficient to provide atomic guarantees and real atomics
should be used instead. GCC 11 has started warning about using volatile
with atomic operations.
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719
Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/775>
Seungha Yang [Wed, 18 Nov 2020 13:32:30 +0000 (22:32 +0900)]
clocksync: Add a new property "sync-to-first" for automatic ts-offset setup
Add a new property so that clocksync can setup "ts-offset" value
based on the first buffer and pipeline's running time when the
first arrived. Newly update "ts-offset" in this case would be
a value that allows outputting the first buffer without clock waiting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/702>
Olivier Crête [Tue, 16 Mar 2021 23:02:06 +0000 (19:02 -0400)]
aggregator: Release the SRC lock while querying latency
This is required because the query could be intercepted and the
application could send any other requests to the element from this
thread.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/771>
Mathieu Duponchelle [Wed, 17 Mar 2021 13:06:51 +0000 (14:06 +0100)]
value: fix parsing of explicit value casts
Since
acdb4ce03d525a18f6c351a040b8446c7bbd98bd , parsing of the
value for a property can use the pspec to determine what type
a value should be casted to.
However, this broke the case where the value is explicitly casted
to a type (eg <(float) 0.0>). In that situation, we want to respect
the casting decision, and only use the pspec to perform "implicit"
casts.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/881
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/772>
Guillaume Desmottes [Thu, 11 Mar 2021 14:41:16 +0000 (15:41 +0100)]
clock: define AUTO_CLEANUP_FREE_FUNC for GstClockID
GstClockID is secretly a gpointer so we can't use g_autoptr(),
instead user can do:
g_auto (GstClockID) clock_id = 0;
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/769>
Stéphane Cerveau [Mon, 8 Mar 2021 09:27:15 +0000 (10:27 +0100)]
element: remove useless ret test
The ret test is unrelevant and confusing.
We dont want the code to fail and the register
to succeed by example.
In the case of a conditional element_init,
the element should be defined with
GST_ELEMENT_REGISTER_DEFINE_CUSTOM instead
of GST_ELEMENT_REGISTER_DEFINE_WITH_CODE.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/768>
Stéphane Cerveau [Fri, 26 Feb 2021 09:47:38 +0000 (10:47 +0100)]
bash-completion: various bash fixes
-d tests the folder which is existing but with .in file, so I prefered
the -f to test if the gst file was available which is not the case, so
it fallbacks on the pkg-config
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/766>
Stéphane Cerveau [Fri, 26 Feb 2021 09:01:56 +0000 (10:01 +0100)]
meson: add uninstalled var for bash-completion
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/766>
Guillaume Desmottes [Wed, 24 Feb 2021 12:03:47 +0000 (13:03 +0100)]
miniobject: add GST_TYPE_MINI_OBJECT
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/764>
Mathieu Duponchelle [Wed, 17 Feb 2021 17:35:33 +0000 (18:35 +0100)]
docs: standardize debugutils documentation
* add a SECTION comment
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/760>
Mathieu Duponchelle [Tue, 16 Feb 2021 15:18:08 +0000 (16:18 +0100)]
docs: standardize GstControlSource, GstDateTime documentation
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/759>
Mathieu Duponchelle [Thu, 21 Jan 2021 01:04:25 +0000 (02:04 +0100)]
Revert "baseparse: always use incoming DTS"
This reverts commit
fc5cd9591a3fe09458342cfedfff88d57bc330c7.
Mathieu Duponchelle [Mon, 15 Feb 2021 14:06:46 +0000 (15:06 +0100)]
docs: standardize GstContext, GstControlBinding documentation
* Document virtual methods in standalone comments, in order to properly
annotate them
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Mark GstControlBinding ABI field as private
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/758>
Mathieu Duponchelle [Fri, 12 Feb 2021 16:50:21 +0000 (17:50 +0100)]
docs: standardize GstClock documentation
* Don't mention explicitly that API is MT safe, this implies that
other API is not. GStreamer API is assumed to be MT safe, thread
safety should only be explicitly mentioned when API is *not* MT safe
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Document virtual methods in standalone comments, so that parameters
can be documented. This is not critical here, as parameters do not
need annotations / specific documentation, but serves as an up to
date example
* Document enumeration members in standalone comments, so that their
Since tag is accounted for by gobject-introspection
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/756>
Stéphane Cerveau [Mon, 15 Feb 2021 08:54:51 +0000 (09:54 +0100)]
features: remove extra G_BEGIN_DECLS/G_END_DECLS
_GST_ELEMENT_REGISTER_DEFINE_BEGIN
_GST_ELEMENT_REGISTER_DEFINE_END was introducing
an extra extern "C" in case of c++ build.
Add missing ";" in GST_ELEMENT_REGISTER_DECLARE
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/757>
Mathieu Duponchelle [Thu, 11 Feb 2021 15:04:01 +0000 (16:04 +0100)]
docs: standardize GstCapsFeatures, GstChildProxy documentation
* Don't mention explicitly that API is MT safe, this implies that
other API is not. GStreamer API is assumed to be MT safe, thread
safety should only be explicitly mentioned when API is *not* MT safe
* Document virtual methods in standalone comments, in order to properly
annotate them
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/755>
Mathieu Duponchelle [Wed, 10 Feb 2021 13:19:18 +0000 (14:19 +0100)]
docs: standardize GstCaps documentation
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Reword the warnings for caps nestability in light of the 1.20
improvements
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/754>
Jan Schmidt [Tue, 9 Feb 2021 17:14:48 +0000 (04:14 +1100)]
tests: Add disjoint pad probe removal test.
Add a test that removing a blocking probe on events when there
is a different blocking probe on buffers releases the data flow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/749>
Jan Schmidt [Fri, 5 Feb 2021 16:58:54 +0000 (03:58 +1100)]
pad: Improve the documentation for GstPadProbeReturn.
Explain that GST_PAD_PROBE_PASS will pass data even if there is
another pad probe that says to block, and that GST_PAD_PROBE_REMOVE
passes data and potentially unblocks the pad.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/749>
Jan Schmidt [Fri, 5 Feb 2021 16:41:23 +0000 (03:41 +1100)]
pad: Fix for multiple blocking probes interaction.
Change the way the marshalled flag in the internal ProbeMarshall state
is handled when iterating over pad probes so that it only counts
probes that still exist and would be called when retrying.
This improves the way that removing a blocking probe works when
there are multiple blocking probes for different conditions (data vs
events for example).
As a side-effect, probes aren't put into the the called_probes array
unless they actually match the current probe type and would be called,
potentially reducing the number of hooks that get stored in the
called_probes array, and the cost of the looping check on retries.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/658
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/749>
Mathieu Duponchelle [Tue, 9 Feb 2021 14:30:50 +0000 (15:30 +0100)]
docs: standardize GstBus documentation
* Don't mention explicitly that API is MT safe, this implies that
other API is not. GStreamer API is assumed to be MT safe, thread
safety should only be explicitly mentioned when API is *not* MT safe
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Document virtual methods and the class structure
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/753>
Mathieu Duponchelle [Mon, 8 Feb 2021 14:17:05 +0000 (15:17 +0100)]
docs: standardize GstBufferPool documentation
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Document virtual methods in standalone comments, so that parameters
can be documented. This is functionally useful here, as parameters
require annotations, and should make the class more usable by
bindings.
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/752>
Mathieu Duponchelle [Mon, 8 Feb 2021 13:31:09 +0000 (14:31 +0100)]
docs: standardize GstBufferList documentation
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/752>
Mathieu Duponchelle [Mon, 8 Feb 2021 12:53:51 +0000 (13:53 +0100)]
docs: fix GST_BUFFER_COPY_DEEP comment title
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/752>
Mathieu Duponchelle [Fri, 5 Feb 2021 13:55:37 +0000 (14:55 +0100)]
docs: standardize GstBuffer documentation
* Don't mention explicitly that API is MT safe, this implies that
other API is not. GStreamer API is assumed to be MT safe, thread
safety should only be explicitly mentioned when API is *not* MT safe
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Document enumeration members in standalone comments, so that their
Since tag is accounted for by gobject-introspection
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/748>
Mathieu Duponchelle [Thu, 4 Feb 2021 15:15:39 +0000 (16:15 +0100)]
docs: standardize GstBin documentation
* Don't mention explicitly that API is MT safe, this implies that
other API is not. GStreamer API is assumed to be MT safe, thread
safety should only be explicitly mentioned when API is *not* MT safe
* Don't repeat what annotations are stating with respect to ownership
transfer, nullability
* Document virtual methods in standalone comments, so that parameters
can be documented. This is not critical here, as parameters do not
need annotations / specific documentation, but serves as an up to
date example
* Document enumeration members in standalone comments, so that their
Since tag is accounted for by gobject-introspection
* Misc cleanup / typo fixes / addition of links
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/747>
Mathieu Duponchelle [Thu, 4 Feb 2021 14:18:04 +0000 (15:18 +0100)]
docs: reformat and cleanup GstBin SECTION comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/747>
Mathieu Duponchelle [Tue, 2 Feb 2021 15:41:28 +0000 (16:41 +0100)]
docs: clean up GstAllocator documentation
In particular, there is no need to explicitly mention free
functions / ownership transfers, this should be obvious from
the annotations.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/745>
Mathieu Duponchelle [Tue, 2 Feb 2021 15:34:03 +0000 (16:34 +0100)]
docs: sort GstAllocator doc so that GstAllocator appears first
The default ordering is alphabetical, causing GstAllocationParams
to appear first in the page if left auto-sorted
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/745>
Mathieu Duponchelle [Tue, 2 Feb 2021 15:19:46 +0000 (16:19 +0100)]
docs: cleanup gst.c documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/745>