Chris White [Thu, 24 Dec 2020 19:06:29 +0000 (14:06 -0500)]
structure: add tests of deserializing strings with escapes
Shows the issue described in
<https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303#note_272629>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
Henry Wilkes [Mon, 28 Oct 2019 18:06:14 +0000 (18:06 +0000)]
gstvalue: preserve parse behaviour with warning
Preserve the previous behaviour where:
name, val="5";
passed to gst_structure_from_string would have resulted in an int value,
rather than a string, despite the quote marks.
This will be changed to being interpreted as a string in the future, but
for the time being we will issue a warning about this to give users time
to fix their code to no longer rely on this bug.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
Henry Wilkes [Wed, 23 Oct 2019 11:48:32 +0000 (12:48 +0100)]
gstvalue: make gst_string_unwrap less strict
Allow a string in gst_string_unwrap to include unescaped characters that
are not in GST_STRING_IS_ASCII. This extra leniency allows
gst_structure_from_string to, e.g., receive
name, val=(string)"string with space";
Note that many gst tests, and potentially users, exploited this behaviour
by giving
name, val="string with space";
i.e. without the (string) type specifier. This was allowed before
because, without a type specifier, the string was passed to
_priv_gst_value_parse_string with unescape set to TRUE, *rather* than
being sent to gst_string_unwrap. This caused a difference in behaviour
between strings that are or are not preceded by (string). E.g.
name, val=(string)"string with space";
would fail, whilst
name, val="string with space";
would not. And
name, val=(string)"\316\261";
would produce a val="α", whereas
name, val=(string)"\316\261";
would produce a val="316261" (a bug).
The current behaviour is to treat both of these cases the same, which is
desirable. But in order to not break potentially common usage of this
discrepancy (it was in our own tests), the best option is to make string
parsing less strict in general.
New behaviour would be for
name, val=(string)"string with space";
to pass and give val="string with space", and
name, val="\316\261";
would produce a val="α".
Also changed deserializing string test to expect successes where
previously a failure was expected.
In a similar way, this also effected the deserializing of GstStructure,
GstCaps, GstTagList and GstCapsFeatures. So, now
name, val=(structure)"sub-name, sub-val=(string)\"a: \\316\\261\";";
will also pass and give sub-val="a: α". Note that the quote marks
and backslash still need to be escaped for the sub-structure, but other
characters need not be.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
Henry Wilkes [Fri, 18 Oct 2019 22:11:44 +0000 (23:11 +0100)]
value: add serialize-deserialize tests
Added tests to ensure that the gst_value_deserialize reverses
gst_value_serialize.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
Henry Wilkes [Fri, 18 Oct 2019 12:00:33 +0000 (13:00 +0100)]
structure: don't unescape values before deserializing
No longer call _priv_gst_value_parse_string with unescape set to TRUE
before passing a value to gst_value_deserialize in
_priv_gst_value_parse_value. This latter function is called by
gst_structure_from_string and gst_caps_from_string.
When gst_structure_to_string and gst_caps_to_string are called, no
escaping is performed after calling gst_value_serialize. Therefore, by
unescaping the value string, we were introducing an additional operation
that was not performed by the original *_to_string functions. In
particular, this has meant that the derialization functions for many
non-basic types are incomplete reverses of the corresponding
serialization function (i.e., if you pipe the output of the
serialization function into the deserialization function it could fail)
because they have to compensate for this additional escaping operation,
when really this should be the domain of the deserialization functions
instead.
Correspondingly changed a few deserialization functions.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/452
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/303>
Seungha Yang [Thu, 14 Jan 2021 16:16:34 +0000 (01:16 +0900)]
task: Use SetThreadDescription Win32 API for setting thread name
Since Windows 10 1607, we can make use of SetThreadDescription() API
for setting thread name. Unlike previously used exception based
method, this API will preserve configured thread name on dump file.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/735>
Jan Alexander Steffens (heftig) [Thu, 14 Jan 2021 14:50:05 +0000 (15:50 +0100)]
tests: systemclock: Stop all stress threads before joining them
This reduces the chance of the main thread getting starved while trying
to shut down the test, potentially causing a timeout.
Even on an idle 96-processor system this reduces the duration of the
systemclock tests from ~8s to ~3s.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/734>
Marijn Suijten [Thu, 14 Jan 2021 09:18:51 +0000 (10:18 +0100)]
gstmemory: Mark memory_map @info as `caller-allocates`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/730>
Marijn Suijten [Thu, 14 Jan 2021 09:20:41 +0000 (10:20 +0100)]
gstbuffer: Mark buffer_map* @info as `caller-allocates`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/730>
Marijn Suijten [Thu, 7 Jan 2021 08:53:41 +0000 (09:53 +0100)]
gst,base: Take GstAllocationParams parameter by const ptr
This parameter is only informational and should not be modified. Enforce
this at compile-time and to get the right signature in G-IR.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/730>
Seungha Yang [Tue, 12 Jan 2021 18:01:57 +0000 (03:01 +0900)]
uri: Remove leftover documentation
Follow-up from https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/728
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/732>
Seungha Yang [Fri, 8 Jan 2021 11:23:23 +0000 (20:23 +0900)]
gst: Add non-inline methods for bindings to able to use core APIs
Provide non-inline version of refcounting APIs so that it can be
consumed by bindings
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer-sharp/-/issues/46
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/728>
Philippe Normand [Thu, 7 Jan 2021 11:04:48 +0000 (11:04 +0000)]
concat: Fix active-pad property doc typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/727>
Dmitry Samoylov [Wed, 23 Dec 2020 17:40:33 +0000 (00:40 +0700)]
gst: Fix doc comments
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/725>
Michael Tretter [Fri, 23 Oct 2020 15:44:10 +0000 (17:44 +0200)]
pipeline: clarify that applications should handle bus messages
The pipeline posts messages on the bus even if an application does not
handle the messages. This is expected behavior but may leak messages if
the messages are not handled.
Clarify the documentation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/680>
Fredrik Pålsson [Sat, 12 Dec 2020 22:28:46 +0000 (22:28 +0000)]
gstbus: change log level of repeated messages from INFO to DEBUG
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/722>
Jakub Adam [Fri, 11 Dec 2020 15:01:27 +0000 (16:01 +0100)]
harness: don't use GST_DEBUG_OBJECT with GstHarness
GstHarness is not a GObject. Fixes assert on recently added check in
gst_debug_log_valist() if GST_ENABLE_EXTRA_CHECKS is enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/720>
Thibault Saunier [Thu, 10 Dec 2020 18:48:32 +0000 (15:48 -0300)]
bus: Ensure that only one GSource can be attached to the bus
Until now we were enforcing that only 1 signal GSource was attached
the bus but we could attach as many GSource with `gst_bus_create_watch`
as we wanted... but in the end only 1 GSource will ever be dispatched for
a given `GstMessage` leading to totally broken behavior.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/718>
Thibault Saunier [Thu, 10 Dec 2020 18:05:31 +0000 (15:05 -0300)]
bus: Do not override source->prepare
Since GLib 2.36 we do not need it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/718>
Nicolas Dufresne [Thu, 10 Dec 2020 19:08:53 +0000 (14:08 -0500)]
gir: Fix parser warning due to empty line
The GIR parser does not want any empty line after the function or macro
name line.
Fixes the following warning:
[309/4246] Generating Gst-1.0.gir with a custom command
../subprojects/gstreamer/gst/gstelement.h:57: Warning: Gst: "@element" parameter unexpected at this location:
* @element: The element name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gstelement.h:84: Warning: Gst: "@e" parameter unexpected at this location:
* @e: The element name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gstelement.h:106: Warning: Gst: "@e" parameter unexpected at this location:
* @e: The element name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gstdeviceprovider.h:32: Warning: Gst: "@d_p" parameter unexpected at this location:
* @d_p: The device provider name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gstdynamictypefactory.h:28: Warning: Gst: "@t_n" parameter unexpected at this location:
* @t_n: The dynamic type name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gsttypefind.h:34: Warning: Gst: "@type_find" parameter unexpected at this location:
* @type_find: The type find name in lower case, with words separated by '_'.
^
../subprojects/gstreamer/gst/gsttypefind.h:61: Warning: Gst: "@t_f" parameter unexpected at this location:
* @t_f: The type find name in lower case, with words separated by '_'.
^
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/719>
Thibault Saunier [Thu, 10 Dec 2020 12:57:37 +0000 (09:57 -0300)]
structure: Handle trailing comas in serialized structs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/717>
Stéphane Cerveau [Tue, 6 Oct 2020 12:26:30 +0000 (14:26 +0200)]
coreelements: allow per features registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661>
Stéphane Cerveau [Tue, 1 Dec 2020 11:46:19 +0000 (12:46 +0100)]
dynamic type: add convenience macros to register
This macros will help to register a dynamic type
apart from a given plugin such as in a static build
of gstreamer where libgstreamer-full is generated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661>
Stéphane Cerveau [Mon, 30 Nov 2020 10:51:59 +0000 (11:51 +0100)]
type find: add convenience macros to register
This macros will help to register a device provider
apart from a given plugin such as in a static build
of gstreamer where libgstreamer-full is generated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661>
Stéphane Cerveau [Fri, 27 Nov 2020 16:33:33 +0000 (17:33 +0100)]
device provider: add convenience macros to register
This macros will help to register a device provider
apart from a given plugin such as in a static build
of gstreamer where libgstreamer-full is generated.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661>
Julian Bouzas [Mon, 31 Aug 2020 18:05:49 +0000 (14:05 -0400)]
element: add convenience macros to register
Define separate macros to define an element
apart from the plugin itself.
These macros will help to register
elements a part from a plugin.
By example in the case of a gstreamer static build
producing the libgstreamer-full library.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661>
Stéphane Cerveau [Tue, 1 Dec 2020 16:17:30 +0000 (17:17 +0100)]
gst-inspect: add an option to sort plugins
with the option --sort, the output is sort by default
with alphabetical order with plugins and features.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/709>
Sebastian Dröge [Mon, 7 Dec 2020 10:23:15 +0000 (12:23 +0200)]
datetime: Update tests for returning NULL instead of g_return_val_if_fail() in error cases
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/706>
Sebastian Dröge [Wed, 25 Nov 2020 12:02:23 +0000 (14:02 +0200)]
datetime: Make use of new g_time_zone_new_identifier() that properly handles errors
g_time_zone_new() returns UTC if it fails to parse the timezone
identifier, which is rather suboptimal and causes wrong datetimes to be
created silently.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/706>
Sebastian Dröge [Wed, 25 Nov 2020 12:00:45 +0000 (14:00 +0200)]
datetime: Clean up all constructors to fail gracefully if invalid dates/times are provided
And also don't crash dereferencing a NULL pointer if the GDateTime
functions return NULL.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/632
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/706>
Sebastian Dröge [Wed, 25 Nov 2020 11:36:19 +0000 (13:36 +0200)]
datetime: Change getters to return specific invalid values if the value is not set
This is more bindings friendly than requiring a special function to be
called beforehand or getting an assertion instead, and should also
simplify some usage.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/706>
Sebastian Dröge [Wed, 25 Nov 2020 11:35:57 +0000 (13:35 +0200)]
datetime: Improve documentation a bit to explain when NULL is returned
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/706>
Thibault Saunier [Wed, 15 Jul 2020 02:36:36 +0000 (22:36 -0400)]
gst: Add new structure/caps/_to_string using the brackets for nesting
This adds `gst_structure_serialize` and `gst_caps_serialize` which use
the newly introduced bracket delimiters for nested structures.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/532>
Thibault Saunier [Wed, 17 Jun 2020 13:31:18 +0000 (09:31 -0400)]
value: Cleanup on range parsing failures
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/532>
Thibault Saunier [Tue, 16 Jun 2020 04:07:51 +0000 (00:07 -0400)]
structure: Add support for brackets as nested structures/caps specifiers
This introduces a more human friendly syntax to specify nested
structures It does so by using 2 different markers for opening and
closing them instead of abusing quotes which lead to requiring an insane
amount of escaping to match nesting levels.
The brackets (`[` and `]`) have been chosen as they avoid complex
constructions with curly brackets (or lower/higher than signs) where you
could have structures embedded inside arrays (which also use curly
brackets), ie. `s, array=(structure){{struct}}` should be parsed as an
array of structures, but the cast seems to imply something different. We
do not have this issue with brackets as they are currently used for
ranges, which can only be casted to numeric types.
This commit does not make use of that new syntax for serialization as
that would break backward compatibility, so it is basically a 'sugar'
syntax for humans. A notice has been explicitly made in the
documentation to let the user know about it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/532>
Marijn Suijten [Thu, 3 Dec 2020 18:22:43 +0000 (19:22 +0100)]
check: gst_test_clock_process_next_clock_id returns nullable
It is possible there are no more pending clocks in the chain, in which
case this function returns null.
See also tests like test_single_shot_async_future that validate NULL
returns.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/714>
Jose Quaresma [Tue, 1 Dec 2020 19:17:05 +0000 (19:17 +0000)]
meson: gtk_doc is not supported anymore
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/710>
Sebastian Dröge [Wed, 2 Dec 2020 07:22:35 +0000 (09:22 +0200)]
streams: gst_stream_type_get_name() is not nullable
It takes an enum and only the defined values are valid to pass in here
as it's not extensible from the outside.
Add a g_return_val_if_reached() for the unreachable case and return
"invalid".
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/711>
Sebastian Dröge [Wed, 2 Dec 2020 07:35:26 +0000 (09:35 +0200)]
info: Warn if logging with a non-GObject object if GST_ENABLE_EXTRA_CHECKS is enabled
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/712>
Tim-Philipp Müller [Fri, 20 Nov 2020 14:55:17 +0000 (14:55 +0000)]
taskpool: fix docs warnings
gsttaskpool.c:507: Warning: Gst: gst_shared_task_pool_get_max_threads: unknown parameter 'max_threads' in documentation comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/703>
Jonathan Matthew [Tue, 10 Nov 2020 11:39:13 +0000 (21:39 +1000)]
typefind: copy seqnum to new segment event
Fixes: #635
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/700>
Edward Hervey [Fri, 30 Oct 2020 15:58:52 +0000 (16:58 +0100)]
systemclock: Use clock_nanosleep for higher accuracy
The various wait implementation have a latency ranging from 50 to 500+
microseconds. While this is not a major issue when dealing with a low number of
waits per second (for ex: video), it does introduce a non-negligeable jitter for
synchronization of higher packet rate systems.
The `clock_nanosleep` syscall does offer a lower-latency waiting system but is
unfortunately blocking, so we don't want to use it in all scenarios nor for too
long.
This patch makes GstSystemClock use clock_nanosleep (if available) as such:
* Any wait below 500us uses it
* Any wait below 2ms will first use the regular waiting system and then
clock_nanosleep
# modified: gst/gstsystemclock.c
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/688>
Mathieu Duponchelle [Tue, 3 Nov 2020 01:43:26 +0000 (02:43 +0100)]
taskpool: expose new "shared" task pool implementation
While the default implementation will spawn a thread per new
pushed task, this new implementation instead spawns a maximum
number of threads, then queues new tasks on existing threads.
The thread that the new task will be queued on is picked in
a pretty naive fashion, by simply popping the first thread
from a queue and pushing it back to the tail, but this is
an implementation detail and can always be sophisticated
in the future if the need arises.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/692>
Mathieu Duponchelle [Tue, 3 Nov 2020 01:41:31 +0000 (02:41 +0100)]
taskpool: expose dispose_handle() API
This is useful when the subclass does return a non-NULL pointer
in push(), and the user doesn't want to call join()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/692>
Mathieu Duponchelle [Tue, 3 Nov 2020 01:39:37 +0000 (02:39 +0100)]
taskpool: improve join() documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/692>
Mathieu Duponchelle [Tue, 3 Nov 2020 01:33:32 +0000 (02:33 +0100)]
taskpool: modify transfer annotations for push() and join()
While the default implementation passes NULL around as the
task handle, other implementations can only provide a safe
API by having that handle map to a refcounted opaque type.
While what's passed around is a gpointer, a valid transfer
type annotation has informative value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/692>
Sebastian Dröge [Sat, 17 Oct 2020 09:34:20 +0000 (12:34 +0300)]
Add some missing nullable annotations
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/678>
Nirbheek Chauhan [Wed, 4 Nov 2020 13:07:32 +0000 (18:37 +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/gstreamer/-/merge_requests/698>
Bing Song [Mon, 2 Nov 2020 09:43:42 +0000 (17:43 +0800)]
identity/clocksync: Also provide system clock if sync=false
identity should provide when sync=true. Don't provide when sync=false.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/630
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/690>
Jonathan Matthew [Tue, 3 Nov 2020 12:39:54 +0000 (22:39 +1000)]
queue2: Fix modes in scheduling query handling
Create a new query to send upstream and copy the flags across from it,
rather than reusing the same query, as this allows us to prevent use
of pull mode when we don't have a download file.
Fixes: #629
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/693>
Khem Raj [Wed, 4 Nov 2020 06:58:26 +0000 (22:58 -0800)]
gst_private.h: increse padding in struct _GstClockEntryImpl
When compiling for 32bit architectures with 64bit time_t e.g. riscv32,
the static assert that the GstClockEntryImpl smaller or
equal to the struct _GstClockEntryImpl triggered.
(they were 12bytes off).
To fix this, the padding is increased by 8 bytes (on 32bit).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/694>
Chris White [Sat, 31 Oct 2020 19:10:23 +0000 (15:10 -0400)]
gstinfo: colorize PIDs in log messages
The PIDs on log lines were supposed to be colorized before, but the
escape sequence was incorrect. With this change, the code uses the
correct sequence to colorize those PIDs. E.g., instead of `\033[334m`
(incorrect), use `\033[34m` (correct).
This makes the log messages easier to read. It also reduces the chance
that a buggy terminal will choke on the invalid escape sequence.
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/624
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/689>
Jan Schmidt [Fri, 30 Oct 2020 12:46:07 +0000 (23:46 +1100)]
harness: Handle element not being set cleanly.
If a harness is created with gst_harness_new_empty(), there
might not be an internal element to unref on cleanup.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/686>
Jan Schmidt [Thu, 29 Oct 2020 13:45:42 +0000 (00:45 +1100)]
bin: When removing a sink, check if the EOS status changed.
Removing a sink that hasn't posted EOS might change the bin itself
to EOS if it's the last remaining non-EOSed sink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/683>
Mathieu Duponchelle [Mon, 26 Oct 2020 22:17:59 +0000 (23:17 +0100)]
baseparse: always use incoming DTS
When parsing interlaced video streams, ignoring incoming DTS could
cause the parser to end up with PTS < DTS output buffers, for example
when increasing next_dts using the duration of the last pushed
buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/681>
Philippe Normand [Wed, 21 Oct 2020 08:43:43 +0000 (09:43 +0100)]
devicemonitor: Stop only the already started providers
If a device provider fails to start (for instance the pulseaudio provider unable
to connect to the PulseAudio daemon) then the monitor should not keep track of
it in its `started` providers list. Otherwise a false positive critical warning
would be raised.
This patch also switches the started_count type from bool to int, for
consistency. This is a counter, after all.
API: gst_device_provider_is_started
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/679>
Seungha Yang [Wed, 21 Oct 2020 08:24:01 +0000 (17:24 +0900)]
filesrc: Use *Ex Win32 method for UWP
non-*Ex methods are not allowed for UWP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/610>
Sebastian Dröge [Wed, 2 Sep 2020 14:01:42 +0000 (17:01 +0300)]
filesrc: Don't use fstat() on Windows but use specific Windows APIs
fstat() fails on Windows in various situations if the file metadata has
invalid values, and we only care about getting attributes and the file
size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/610>
Sebastian Dröge [Wed, 2 Sep 2020 14:01:35 +0000 (17:01 +0300)]
filesrc: Remove unused #define on Windows
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/610>
Xavier Claessens [Fri, 16 Oct 2020 14:22:04 +0000 (10:22 -0400)]
pkgconfig: Fix missing libcheck dependencies in gstreamer-check-1.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/676>
Nicolas Dufresne [Fri, 16 Oct 2020 14:39:08 +0000 (10:39 -0400)]
aggregator: Include min-upstream-latency in buffering time
While we can fixe the upstream latency using the min-upstream-latency, we
are now forced to use queues (hence more thread) in order to store the pending
data whenever we have an upstream source that has lower latency.
This fixes the issue by allowing to buffer the fixed upstream latency. This is
particularly handy on single core systems were having too many threads can
cause serious performance issues.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/677>
Olivier Crête [Fri, 8 Sep 2017 23:59:27 +0000 (19:59 -0400)]
identity: Add a stats property
This is inspired by the stats on rtpjitterbuffer, it's useful
to be able to get some simple stats out of the pipeline without having
to write yet another pad probe.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/615>
Stéphane Cerveau [Wed, 3 Jul 2019 07:29:26 +0000 (09:29 +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/gstreamer/-/merge_requests/199>
Mathieu Duponchelle [Mon, 12 Oct 2020 23:19:47 +0000 (01:19 +0200)]
gstvalue: don't write to const char *
Our various deserializing functions require NULL terminators
to not over consume substrings (eg fields of an array). Instead
of writing a NULL terminator to the passed-in string, which may
result in segfaults, make a copy of the substring we're interested
in.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/446
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/672>
Xavier Claessens [Sat, 27 Oct 2018 17:01:02 +0000 (13:01 -0400)]
Meson: Use pkg-config generator
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4>
Seungha Yang [Fri, 9 Oct 2020 15:53:42 +0000 (00:53 +0900)]
meson: Disallow DbgHelp for UWP build
Most symbols in DbgHelp.h are not allowed for UWP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/665>
Tim-Philipp Müller [Fri, 14 Aug 2020 15:38:26 +0000 (16:38 +0100)]
Remove unused valgrind detection
Having this just to log a debug message in case we're
running inside valgrind doesn't seem very useful, and
the code that used to use this no longer exists it seems.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/595>
Seungha Yang [Tue, 6 Oct 2020 18:49:33 +0000 (03:49 +0900)]
info: Fix build on Windows ARM64 device
gstinfo.c(3086): error C2094: label 'done' was undefined
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/662>
Matthew Waters [Fri, 9 Oct 2020 01:13:15 +0000 (12:13 +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/gstreamer/-/merge_requests/664>
Jan Alexander Steffens (heftig) [Thu, 8 Oct 2020 11:37:41 +0000 (13:37 +0200)]
basetransform: Fix in/outbuf confusion of _default_transform_meta
The default implementation doesn't actually use its buffer parameters,
but this error might have been the cause of some actual confusion in
the plugins code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/663>
Xavier Claessens [Sat, 5 Sep 2020 00:47:18 +0000 (20:47 -0400)]
gst_init: Call gst_init_static_plugins() when available
When doing a static build, gstreamer-full-1.0 defines that symbol to
register static plugins. Cerbero's Android build will be updated to
implement that symbol too.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/641>
Mathieu Duponchelle [Thu, 17 Sep 2020 18:44:43 +0000 (20:44 +0200)]
gstvalue: expose gst_value_deserialize_with_pspec()
Typing hints can only be passed to gst_value_deserialize()
through the type of the passed-in value. This means deserialization
can only target the desired type for the top-level elements,
making it for example impossible to deserialize an array of
flags to the expected type.
This commit exposes a new function, gst_value_deserialize_full(),
that takes an optional pspec as the extra parameter, and updates
the deserialization code to pass around that pspec, or the
element_spec when recursively parsing the elements of a list-type
value.
This allows for example passing arrays of flags through the
command line or gst_util_set_object_arg, eg:
foo="<bar,bar+baz>"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/629>
Seungha Yang [Tue, 15 Sep 2020 12:07:27 +0000 (21:07 +0900)]
info: Load DbgHelp.dll using g_module_open()
... and update meson file so that enable it only using required headers.
"dependency(...)" is unlikely successful for Windows SDK libraries
since it doesn't ship pkg-config file. So it needs to be changed
to "find_library()" to link corresponding .lib file. That would
result to most MSVC build system will link dbghelp.dll. However,
one drawback of the change is that gstreamer-1.0.dll will mandate
dbghelp.dll although it should be optional. So g_module_open() way
can be the most safe way in this case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/626>
Matthew Waters [Wed, 30 Sep 2020 01:56:40 +0000 (11:56 +1000)]
padtemplate: mark documentation caps as may be leaked
The template itself is already marked as such and the caps, the
documentation caps are a logical extension of those two.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/650>
Víctor Manuel Jáquez Leal [Sat, 26 Sep 2020 07:11:40 +0000 (09:11 +0200)]
padtemplate: add missing annotation
Adds missing "transfer full" annotation for caps parameter in
gst_pad_template_set_documentation_caps()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/648>
Víctor Manuel Jáquez Leal [Sat, 26 Sep 2020 07:09:48 +0000 (09:09 +0200)]
memory: fix documentation to display in html
Commit
e9c99c05 added a deprecation message, but this message is not
displayed in the html page since the format was not correct.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/648>
Mathieu Duponchelle [Tue, 1 Sep 2020 21:03:18 +0000 (23:03 +0200)]
meta: expose API to register and create custom meta
Custom meta is backed by a GstStructure, and does not require
that users of the API expose their GstMeta implementation as
public API for other components to make use of it.
In addition, it provides a simpler interface by ignoring the
impl vs. api distinction that the regular API exposes.
This new API is meant to be the meta counterpart to custom events
and messages, and to be more convenient than the lower-level API
when the absolute best performance isn't a requirement.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/609>
Olivier Crête [Tue, 11 Jul 2017 22:54:05 +0000 (18:54 -0400)]
memory: Deprecate GST_MEMORY_FLAG_NO_SHARE
This flag always causes problems as it prevents subbuffering,
instead one should create a custom GstAllocator to pool the GstMemory objects
and not rely on the lifetime of the GstBuffer object they were originally
attached to.
https://bugzilla.gnome.org/show_bug.cgi?id=757254
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/614>
Mathieu Duponchelle [Wed, 16 Sep 2020 00:16:52 +0000 (02:16 +0200)]
gstmeta: intern registered impl string
Subsequent lookups in the hashtable are probably better done
on memory we're confident is allocated to us :)
It was easy to trigger invalid reads by calling gst_meta_register
with dynamically allocated memory, freeing that memory, then
calling gst_meta_get_info()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/628>
Olivier Crête [Mon, 6 Jul 2020 18:55:38 +0000 (14:55 -0400)]
deviceprovider: Returns non-floating devices from gst_device_provider_probe
This should make the API usage more consistent. Also document that the subclasses
should just return the devices as floating.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/558>
Matthew Waters [Fri, 31 Jul 2020 06:02:03 +0000 (16:02 +1000)]
aggregator: don't fail all sink pads when a caps event fails negotiation
If one pad returns not-negotiated from a caps event, then all other sink
pads were returning not-negotiated.
In our case, we can't reliably easily fail at all so just remove that
code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/623>
Matthew Waters [Thu, 30 Jul 2020 15:10:27 +0000 (01:10 +1000)]
baseparse: prefer upstream caps rather than overriding
e.g. h264parse ! video/x-h264,stream-format=avc receives the following:
- caps: video/x-raw,stream-format=byte-stream
- gap event: baseparse tries to choose some default caps but would
override the downstream chosen caps field with upstreams value.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/581>
Sebastian Dröge [Fri, 18 Sep 2020 06:59:03 +0000 (09:59 +0300)]
aggregator: Hold SRC_LOCK while unblocking via SRC_BROADCAST()
Otherwise the clock id we access might not be a valid pointer anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/630>
Seungha Yang [Mon, 14 Sep 2020 21:35:34 +0000 (06:35 +0900)]
tests: leaks: Allow null tracer string if there's no available stack trace
In case that no available stack tracer, leak tracer will set
null string value for `trace` field. I would likely happen
on Windows.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/625>
Seungha Yang [Mon, 14 Sep 2020 19:24:20 +0000 (04:24 +0900)]
tests: element: Don't run too many loop
g_thread_yield() doesn't ensure thread switching actually.
It would result to adding so many pads. Depending on system,
timeout might happen then.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/625>
Seungha Yang [Mon, 14 Sep 2020 15:54:58 +0000 (00:54 +0900)]
tests: seek: Don't use too strict timeout for validation
Expected segment-done message might not be seen within expected
time if system is not powerful enough.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/625>
Seungha Yang [Thu, 10 Sep 2020 17:59:51 +0000 (02:59 +0900)]
valve: Fix MSVC compile warning
gstvalve.c(285) : warning C4715: 'gst_valve_event_needs_dropping':
not all control paths return a value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/624>
Sebastian Dröge [Wed, 1 Jul 2020 16:15:42 +0000 (19:15 +0300)]
event: Add optional flags to the GAP event
This allows to signal the reason for the gap, for example missing data
like packet loss.
Based on a patch by Mikhail Fludkov <misha@pexip.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/551>
Sebastian Dröge [Thu, 10 Sep 2020 11:17:26 +0000 (14:17 +0300)]
harness: Add gst_harness_set_live()
By default each harness returns is_live=TRUE in latency queries. This is
often not desired and can now be overridden.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/599>
Sebastian Dröge [Wed, 19 Aug 2020 18:17:31 +0000 (21:17 +0300)]
aggregator: Reset latency values in start()
Some base classes like videoaggregator try retrieving the latency during
construction, which causes the latency values to be set already until
reconfiguration happens.
By resetting them the same way as in stop() we ensure that we always
start cleanly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/599>
Tom Schoonjans [Tue, 8 Sep 2020 11:45:42 +0000 (12:45 +0100)]
ptp_helper_post_install.sh: deal with none
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/620>
Xℹ Ruoyao [Tue, 8 Sep 2020 17:23:11 +0000 (01:23 +0800)]
skip elements/leak.c if tracer is not available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/621>
Sebastian Dröge [Thu, 20 Aug 2020 08:09:11 +0000 (11:09 +0300)]
aggregator: Wake up source pad in PAUSED<->PLAYING transitions
When going to PLAYING we will now have a clock and can stop waiting on
the condition variable and instead start waiting on the clock if
necessary for the current configuration.
In the other direction when going to PAUSED the clock might have
disappeared and we might need to wait on the condition variable again
instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/601>
Sebastian Dröge [Mon, 24 Aug 2020 08:59:51 +0000 (11:59 +0300)]
input-selector: Wake up blocking pads when releasing them
Otherwise deactivating them will cause a deadlock as they're blocking
inside the streaming thread.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/601
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/606>
Sebastian Dröge [Fri, 14 Aug 2020 08:40:30 +0000 (11:40 +0300)]
valve: Add modes to forward sticky events when dropping and to convert buffers into gap events
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/587
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/84
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/594>
Mathieu Duponchelle [Mon, 31 Aug 2020 22:26:31 +0000 (00:26 +0200)]
aggregator: make peek() has() pop() drop() buffer API threadsafe
Enforce that the last buffer that was peeked (or had its existence
checked) on a pad is the one that gets popped / dropped, resetting
at the end of each aggregation cycle.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/603
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/608>
Sebastian Dröge [Tue, 8 Sep 2020 10:40:25 +0000 (13:40 +0300)]
ptp: Also handle gnu/kfreebsd
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/619>
Tim-Philipp Müller [Tue, 8 Sep 2020 16:30:27 +0000 (17:30 +0100)]
ci: include template from gst-ci master branch again
Tim-Philipp Müller [Tue, 8 Sep 2020 15:58:20 +0000 (16:58 +0100)]
Back to development
Tim-Philipp Müller [Mon, 7 Sep 2020 23:01:33 +0000 (00:01 +0100)]
Release 1.18.0