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
Tim-Philipp Müller [Mon, 7 Sep 2020 19:22:38 +0000 (20:22 +0100)]
meson: dist pot file in tarballs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/618>
Sebastian Dröge [Fri, 21 Aug 2020 08:06:57 +0000 (11:06 +0300)]
aggregator: Document that samples_selected() must only be called from the aggregate() function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/607>
Sebastian Dröge [Thu, 20 Aug 2020 07:54:12 +0000 (10:54 +0300)]
aggregator: Don't automatically adjust segment if subclass provided one
On the first buffer the base class would update the segment position
based on the start-time-selection. If the subclass provides its own
segment this will caused unexpected behaviour and override segment
information that was explicitly set by the subclass.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/600>
Tim-Philipp Müller [Thu, 20 Aug 2020 15:08:25 +0000 (16:08 +0100)]
Release 1.17.90
Mathieu Duponchelle [Mon, 10 Aug 2020 20:42:54 +0000 (22:42 +0200)]
aggregator: fix documentation for samples-selected and buffer-consumed
GI expects the instance parameter to be documented, omitting it
leads to a msismatched output in the gir.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/592>
Sebastian Dröge [Fri, 7 Aug 2020 06:30:55 +0000 (09:30 +0300)]
aggregator: Add optional GstStructure info parameter to "samples-selected" signal
Subclasses can use this to provide more information, for example
audioaggregator could provide the offset into the output buffer where
the next data is going to be filled.
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/805
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/590>
Mathieu Duponchelle [Wed, 5 Aug 2020 14:54:44 +0000 (16:54 +0200)]
aggregator: add segment, pts, dts and duration to samples-selected
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/588>
Xavier Claessens [Tue, 4 Aug 2020 11:10:03 +0000 (07:10 -0400)]
Meson: Override gst-tester-1.0 program to find it in other modules
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/586>
Jordan Petridis [Mon, 3 Aug 2020 13:26:58 +0000 (16:26 +0300)]
fix clang 10 warnings
the typesystem checks in g_atomic_pointer_compare_and_exchange
seem to trigger some false positives with clang 10
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/584>
Mathieu Duponchelle [Tue, 4 Aug 2020 09:13:51 +0000 (11:13 +0200)]
aggregator: fix iteration direction in skip_buffers
Subclasses use the pad segment to determine whether a buffer
should be skipped, we thus don't want to check if a buffer
needs to be skipped before processing the segment it's part
of.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/585>
Nirbheek Chauhan [Thu, 30 Jul 2020 14:01:55 +0000 (19:31 +0530)]
gsturi: Add new API for storing unmodified userinfo / fragment
New API: gst_uri_from_string_escaped()
Identical to gst_uri_from_string() except that the userinfo and
fragment components of the URI will not be unescaped while parsing.
This is needed for correctly parsing usernames or passwords with `:`
in them such as reported at:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/831
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/583>
Nirbheek Chauhan [Fri, 31 Jul 2020 20:27:06 +0000 (01:57 +0530)]
tests: Add more tests for gsturi
Add tests that exercise unescaping of userinfo and fragments.
Also convert to a modular macro-based definition so that we can reuse
the list of tests in the next commit.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/583>
Thibault Saunier [Thu, 30 Jul 2020 23:53:10 +0000 (19:53 -0400)]
inspect: Print preset description when available
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/582>
Mathieu Duponchelle [Tue, 30 Jun 2020 19:10:05 +0000 (21:10 +0200)]
aggregator: expose sample selection API
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/771
for context.
This exposes new API that subclasses must call from their
aggregate() implementation to signal that they have selected
the next samples they will aggregate: gst_aggregator_selected_samples()
GstAggregator will emit a new signal there, `samples-selected`,
handlers can then look up samples per pad with the newly-added
gst_aggregator_peek_next_sample.
In addition, a new FIXME is logged when subclasses haven't actually
called `selected_samples` from their aggregate() implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/549>
Hosang Lee [Tue, 28 Jul 2020 01:59:35 +0000 (10:59 +0900)]
gsturi: unescape '=' in http query
Don't use percent-encoding for '=' in http queries.
'=' in the following kind of http query should be maintained.
example:
?token=exp=123~acl=/QualityLevels(*~hmac=0cb ...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/580>
Camilo Celis Guzman [Fri, 24 Jul 2020 11:31:47 +0000 (13:31 +0200)]
basetransform: handle invalid subclass implementation for fixate_caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/575>
Olivier Crête [Fri, 24 Jul 2020 21:53:00 +0000 (17:53 -0400)]
baseparse: Don't push pointless new segment events
In 1.0, there is no concept of segment update, so don't push new
identical segments.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/578>
Thibault Saunier [Fri, 24 Jul 2020 15:38:28 +0000 (11:38 -0400)]
baseparse: Fix seqnum handling in pull mode
After a seek in pull mode, we should use the seek seqnum for all
following operations, not some random seqnums
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/577>
Tim-Philipp Müller [Sun, 26 Jul 2020 14:30:26 +0000 (15:30 +0100)]
check: suppress g-ir-scanner warnings
Make g-ir-scanner skip all those check macros that are
not useful for or usable from bindings.
gstcheck.h:209: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_message_error'
gstcheck.h:212: Warning: GstCheck: Unknown namespace for symbol 'assert_message_error'
gstcheck.h:251: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_int'
gstcheck.h:267: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_int'
gstcheck.h:280: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_int_hex'
gstcheck.h:299: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_int_hex'
gstcheck.h:310: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_int64'
gstcheck.h:327: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_int64'
gstcheck.h:340: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_int64_hex'
gstcheck.h:358: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_int64_hex'
gstcheck.h:369: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_uint64'
gstcheck.h:386: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_uint64'
gstcheck.h:399: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_uint64_hex'
gstcheck.h:417: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_uint64_hex'
gstcheck.h:428: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_string'
gstcheck.h:444: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_string'
gstcheck.h:455: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_float'
gstcheck.h:474: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_float'
gstcheck.h:487: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_pointer'
gstcheck.h:506: Warning: GstCheck: Unknown namespace for symbol 'assert_equals_pointer'
gstcheck.h:517: Warning: GstCheck: Unknown namespace for symbol 'fail_unless_equals_clocktime'
gstcheck.h:534: Warning: GstCheck: Unknown namespace for symbol 'MAIN_START_THREADS'
gstcheck.h:547: Warning: GstCheck: Unknown namespace for symbol 'MAIN_START_THREAD_FUNCTIONS'
gstcheck.h:555: Warning: GstCheck: Unknown namespace for symbol 'MAIN_START_THREAD_FUNCTION'
gstcheck.h:626: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_CRITICAL'
gstcheck.h:628: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_CRITICAL'
gstcheck.h:640: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_WARNING'
gstcheck.h:652: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_OBJECT_REFCOUNT'
gstcheck.h:661: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_OBJECT_REFCOUNT_BETWEEN'
gstcheck.h:676: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_CAPS_REFCOUNT'
gstcheck.h:679: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_BUFFER_REFCOUNT'
gstcheck.h:682: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_MINI_OBJECT_REFCOUNT'
gstcheck.h:690: Warning: GstCheck: Unknown namespace for symbol 'ASSERT_SET_STATE'
gstcheck.h:729: Warning: GstCheck: Unknown namespace for symbol 'tcase_skip_broken_test'
gstcheck.h:740: Warning: GstCheck: Unknown namespace for symbol 'tcase_skip_broken_loop_test'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/579>
Tim-Philipp Müller [Sun, 26 Jul 2020 13:52:30 +0000 (14:52 +0100)]
utils: silence g-ir-scanner warnings about float conversion macros
663: Warning: Gst: symbol='GFLOAT_TO_LE': Unknown namespace for symbol 'GFLOAT_TO_LE'
664: Warning: Gst: symbol='GFLOAT_TO_BE': Unknown namespace for symbol 'GFLOAT_TO_BE'
665: Warning: Gst: symbol='GDOUBLE_TO_LE': Unknown namespace for symbol 'GDOUBLE_TO_LE'
666: Warning: Gst: symbol='GDOUBLE_TO_BE': Unknown namespace for symbol 'GDOUBLE_TO_BE'
669: Warning: Gst: symbol='GFLOAT_TO_LE': Unknown namespace for symbol 'GFLOAT_TO_LE'
670: Warning: Gst: symbol='GFLOAT_TO_BE': Unknown namespace for symbol 'GFLOAT_TO_BE'
671: Warning: Gst: symbol='GDOUBLE_TO_LE': Unknown namespace for symbol 'GDOUBLE_TO_LE'
672: Warning: Gst: symbol='GDOUBLE_TO_BE': Unknown namespace for symbol 'GDOUBLE_TO_BE'
678: Warning: Gst: symbol='GFLOAT_FROM_LE': Unknown namespace for symbol 'GFLOAT_FROM_LE'
679: Warning: Gst: symbol='GFLOAT_FROM_BE': Unknown namespace for symbol 'GFLOAT_FROM_BE'
680: Warning: Gst: symbol='GDOUBLE_FROM_LE': Unknown namespace for symbol 'GDOUBLE_FROM_LE'
681: Warning: Gst: symbol='GDOUBLE_FROM_BE': Unknown namespace for symbol 'GDOUBLE_FROM_BE'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/579>
Tim-Philipp Müller [Sun, 26 Jul 2020 13:48:52 +0000 (14:48 +0100)]
math-compat.h: silence g-ir-scanner warnings
Easier to just make g-ir-scanner skip this header via #ifndef __GI_SCANNER__
than maintain different sets of headers in the meson.build file.
Warning: Gst: symbol="rint": Unknown namespace for symbol "rint"
Warning: Gst: symbol="rintf": Unknown namespace for symbol "rintf"
Warning: Gst: symbol="isnan": Unknown namespace for symbol "isnan"
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/579>
Tim-Philipp Müller [Sun, 26 Jul 2020 13:42:39 +0000 (14:42 +0100)]
event, query: fix g-ir-scanner warnings
gstevent.h:72: Warning: Gst: symbol='FLAG': Unknown namespace for symbol 'FLAG'
gstquery.h:76: Warning: Gst: symbol='FLAG': Unknown namespace for symbol 'FLAG'
Use _FLAG(xyz) instead of FLAG(xyz) to silence g-ir-scanner
warnings about this internal helper define.
It's also slightly more hygienic.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/579>
Tim-Philipp Müller [Fri, 24 Jul 2020 12:30:39 +0000 (13:30 +0100)]
tracer: declare GstTracer API stable
It's been around for more than 4 years and people have built
lots of stuff on top of it, doesn't really make sense to keep
it marked as unstable. We're unlikely to change it now, and
we can always deprecate it and make a new one if needed.
This stabilises the following API:
- gst_tracer_register()
- gst_tracing_get_active_tracers()
- gst_tracing_register_hook()
- gst_tracer_record_new()
- gst_tracer_record_log()
Might also help a bit with #424
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/576>
Matthew Waters [Thu, 23 Jul 2020 04:51:51 +0000 (14:51 +1000)]
harness: unref sink/src caps after deactivating pads
Otherwise, access to the harness' sink/src caps is racy between any caps
query performed by an element and gst_harness_teardown().
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/794
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/574>
Jan Alexander Steffens (heftig) [Wed, 22 Jul 2020 10:44:02 +0000 (12:44 +0200)]
check: Always mark _ck_assert_failed as noreturn
So that we can use `fail` like `g_assert_not_reached`.
The comment is apparently wrong or outdated, as GCC considers it legal
for noreturn-marked functions to return using longjmp.
See the thread at
https://gitlab.freedesktop.org/gstreamer/gst-plugins-ugly/-/merge_requests/59#note_576422
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/573>
Tim-Philipp Müller [Tue, 14 Jul 2020 11:15:34 +0000 (12:15 +0100)]
buffer: improve seqnum fallback warning message
Print target CPU we're building for.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/565>
Tim-Philipp Müller [Tue, 14 Jul 2020 11:11:57 +0000 (12:11 +0100)]
buffer: fix meta sequence number fallback on rpi
The global seqnum variable wasn't actually increased in
the fallback code path, leading to all buffers getting
a seqnum of 0. Which also made the unit test fail.
This affects platforms/toolchains that don't have
64-bit atomic ops such as when compiling for armv7 rpi.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/565>
Stéphane Cerveau [Thu, 9 Jul 2020 07:46:07 +0000 (09:46 +0200)]
meson: add a plugin summary
This summary displays a list of plugins which
have been enabled.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/560>
Eero Nurkkala [Wed, 22 Jul 2020 07:51:54 +0000 (10:51 +0300)]
gst-inspect: fix memory leak
With meson configure option: -Db_sanitize=address, the following
issue is seen while running the test "tools_gstinspect":
Running suite(s): gst-inspect
=================================================================
==20880==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 51 byte(s) in 9 object(s) allocated from:
#0 0x7ffb4dbb0b40 in __interceptor_malloc (/usr/lib/x86_64-linux-gnu/libasan.so.4+0xdeb40)
#1 0x7ffb4cdf1ab8 in g_malloc (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x51ab8)
SUMMARY: AddressSanitizer: 51 byte(s) leaked in 9 allocation(s).
0%: Checks: 1, Failures: 0, Errors: 1
GOptionEntry man page states that: "Please note that parsed arguments need to be freed separately (see GOptionEntry)."
Thus, free the 'min_version' string that has been allocated but never freed.
Signed-off-by: Eero Nurkkala <eero.nurkkala@offcode.fi>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/572>
Matthew Waters [Mon, 20 Jul 2020 07:08:32 +0000 (17:08 +1000)]
gst/bufferpool: only resize in reset when maxsize is larger
Only resize the buffer if the maxsize is larger then the configued pool
size.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/570>
Matthew Waters [Thu, 16 Jul 2020 13:03:35 +0000 (23:03 +1000)]
build/coretracers: add dep on threads
Fixes the following build error and missing '-pthread' argument when
linking:
subprojects/gstreamer/plugins/tracers/libgstcoretracers.so.p/gstleaks.c.o: In function `gst_leaks_tracer_setup_signals':
/work/build32/../subprojects/gstreamer/plugins/tracers/gstleaks.c:919: undefined reference to `pthread_atfork'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/571>
Thibault Saunier [Tue, 14 Jul 2020 04:03:18 +0000 (00:03 -0400)]
directcontrolbinding: Properly initialize default `last_value`
It was zero and in some condition it means that the control binding
values where ignored (as shown in the test). Setting it to MAXDOUBLE
so that the first time we sync the values from a a timestamp in the
right range the proper value is computed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/564>
Seungha Yang [Thu, 16 Jul 2020 09:55:22 +0000 (18:55 +0900)]
info: Fix possible broken debug output on Windows
Depending on Windows codepage setting, some characters could
be broken when printing on terminal. Fortunatly g_print* family will
take care Windows codepage.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/566>
Olivier Crête [Thu, 16 Jul 2020 20:34:05 +0000 (16:34 -0400)]
pad: More explicitly explain how to post errors on GST_FLOW_ERROR
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/568>
Nicolas Dufresne [Wed, 15 Jul 2020 20:12:02 +0000 (16:12 -0400)]
latency tracer: Fix leaks in the reported latency trace
The stack item was not freed as it was supposed, causing leaks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/269>
Jan Schmidt [Fri, 30 Aug 2019 13:59:42 +0000 (23:59 +1000)]
latency tracer: Fix unsafe and NULL pointer accesses
Use thread-safe accesses to pad peers and parent objects. This
fixes some crashers and all the non-safe access patterns I could
spot. There's still some weirdness when using the latency
tracer on pipeline chains that aren't yet linked, but this
at least stops it segfaulting.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/269>
Edward Hervey [Mon, 13 Jul 2020 06:00:15 +0000 (08:00 +0200)]
Revert "gstinfo: Check threshold for category from macro"
This reverts commit
dcece2a878b88335fd1990dbeeb88bdeacba0f06.
This increased the code size and number of branches for all debug statements.
Fixes #564
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/563>
Mathieu Duponchelle [Fri, 10 Jul 2020 15:11:08 +0000 (17:11 +0200)]
aggregator: expose gst_aggregator_finish_buffer_list API
See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1276
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/562>
Mathieu Duponchelle [Mon, 6 Jul 2020 09:55:38 +0000 (11:55 +0200)]
tests/elements/leaks.c: check get_tracer_by_name return value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/557>
Seungha Yang [Mon, 18 May 2020 10:45:35 +0000 (19:45 +0900)]
basesrc: Deprecate gst_base_src_new_seamless_segment()
It can be replaced by gst_base_src_new_segment()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/490>
Seungha Yang [Sat, 16 May 2020 15:08:56 +0000 (00:08 +0900)]
basesrc: Add new API for handling GstSegment update by subclass
Add API gst_base_src_new_segment() for subclass to be able to
signalling new GstSegment which should be applied to following
buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/490>
Thibault Saunier [Thu, 9 Jul 2020 11:57:01 +0000 (07:57 -0400)]
taglist: Stop inlining gst_tag_list_copy
This way it gets exposed to bindings through GObject Introspection.
Same logic as with
d1b2d3429c66d80b8d38f9afc6a8dfca49f3a71a
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/561>
Seungha Yang [Tue, 7 Jul 2020 20:15:28 +0000 (05:15 +0900)]
check: Use g_thread_yield instead of g_usleep(1)
Since the commit
https://gitlab.gnome.org/GNOME/glib/-/commit/
01c02ac08b682de622930b1278c9c14d0ffe6c49,
g_usleep(1) will be translated to Sleep(1) on Windows which means
sleep in 1 millisecond. But GLib provides g_thread_yield() API
which is exactly what we required here for thread context switching.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/559>
Olivier Crête [Thu, 9 Jan 2020 00:38:45 +0000 (19:38 -0500)]
deviceprovider: Do static probe on start as fallback
For providers that don't support dynamic probing, just fall back to doing
a static one on start() to make the UI developers life easier.
This also means that the monitor doesn't need to call _can_monitor() before
calling start.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/353>
Christoph Reiter [Wed, 2 May 2018 11:05:21 +0000 (13:05 +0200)]
gstelementfactory: Fix missing features in case a feature moves to another filename
In case a plugin filename was renamed with the plugin being in the registry cache
the features were not loaded after the rename:
1) Cache of old/gone filename was loaded, features added
2) New filename was loaded, features where not added because
they were already found in the registry.
3) In the end stale cache entries for files which are no longer there
are removed, including the wanted features.
4) The cache gets updated without the features.
Fix this by also checking at (2) that the found feature is from the loaded plugin
and not from some stale cache entry.
This affected directsoundsink where libgstdirectsoundsink.dll was renamed
to libgstdirectsound.dll, losing the directsoundsink element in the process.
Fixes #290
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/102>
Tim-Philipp Müller [Sat, 4 Jul 2020 15:59:23 +0000 (16:59 +0100)]
meson: set release date from .doap file for releases
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/555>
Tim-Philipp Müller [Sun, 5 Jul 2020 17:17:48 +0000 (18:17 +0100)]
po: update POTFILES
xgettext: error while opening "gst/parse/grammar.y" for reading: No such file or directory
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/586
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/556>
Sebastian Dröge [Fri, 3 Jul 2020 08:45:36 +0000 (11:45 +0300)]
ptp: Add GNU Hurd to the list of supported platforms and fix the Solaris name
https://mesonbuild.com/Reference-tables.html#operating-system-names has
the table of all supported names right now.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/583
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/554>
Sebastian Dröge [Thu, 2 Jul 2020 08:21:27 +0000 (11:21 +0300)]
element: When removing a ghost pad also unset its target
Otherwise the proxy pad of the ghost pad still stays linked to some
element inside the bin, which is not allowed anymore according to the
topology.
In 2.0 this should be fixed more generically from inside GstGhostPad but
currently there is no way to get notified that the ghost pad is
unparented.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/553>
Tim-Philipp Müller [Fri, 3 Jul 2020 01:03:15 +0000 (02:03 +0100)]
Back to development
Tim-Philipp Müller [Thu, 2 Jul 2020 23:22:34 +0000 (00:22 +0100)]
Release 1.17.2
Sebastian Dröge [Wed, 1 Jul 2020 17:20:16 +0000 (20:20 +0300)]
stream: Don't use GST_FIXME_OBJECT() when generating a random stream id if the caller didn't provide one
That would call into gst_info_describe_stream(), which takes the same
mutex a second time and then deadlocks.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/552>
Mathieu Duponchelle [Mon, 11 May 2020 15:44:43 +0000 (17:44 +0200)]
gstutils: fix link in parse_bin_from_description_full doc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/475>
Jan Schmidt [Thu, 25 Jun 2020 14:50:44 +0000 (00:50 +1000)]
gstbin: Fix docs typo
element-added-deep -> deep-element-added in the GstBin doc header
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/547>
Seungha Yang [Wed, 24 Jun 2020 17:14:56 +0000 (02:14 +0900)]
docs: Specify UTF-8 encoding everywhere
Otherwise some non-English character might be broken depending on
OS and/or locale.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/545>
Mathieu Duponchelle [Wed, 24 Jun 2020 23:37:43 +0000 (01:37 +0200)]
hooks: add opt-in cache update hook
CI now checks that plugin caches are up to date, for example
when adding a new property to an element.
This is something pretty easy to forget, and it can be checked
in a pre-commit hook provided the cache generator generates no
unnecessart diff on the developer's machine. This is now the
case for me in core, -base and -good, and eventually all the
repositories should behave appropriately, at least on my
development machine.
The new check in the pre-commit hook is only performed when
the user is in the development environment (it checks
$MESON_BUILD_ROOT to determine that), and when the developer
has opted-in by setting `GST_CACHE_HOOK=enabled`. That is
because the hook will actually rebuild the cache with ninja,
and modify it in the source directory, that's not a behaviour
we want to enable by default.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/546>
Seungha Yang [Wed, 24 Jun 2020 13:51:48 +0000 (22:51 +0900)]
gst-inspect: Use gst_info_strdup_vprintf to print string
g_vprintf() will write a string binary to stdout directly using fwrite().
So, depending on character in the string, fwrite to stdout can
print broken one but printf family might not cause the issue.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/544>
Michael Olbrich [Wed, 24 Jun 2020 05:54:42 +0000 (07:54 +0200)]
bus: clear bus->priv->signal_watch immediately when the source is removed
There is a race-condition that can trigger the assertion in
gst_bus_add_signal_watch_full():
If gst_bus_add_signal_watch_full() is called immediately after
gst_bus_remove_signal_watch() then bus->priv->signal_watch may still be set
because gst_bus_source_dispose() or gst_bus_source_finalize() was not yet
called.
This happens if the corresponding GMainContext has the source queued for
dispatch. In this case, the following dispatch will only unref and delete
the signal_watch because it was already destroyed. Any pending messages
will remain until a new watch is installed.
So bus->priv->signal_watch can be cleared immediately when the watch is
removed. This avoid the race condition.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/543>
Mathieu Duponchelle [Mon, 22 Jun 2020 23:54:15 +0000 (01:54 +0200)]
gst-hotdoc-plugins-scanner: serialize interfaces
Mathieu Duponchelle [Mon, 22 Jun 2020 21:41:06 +0000 (23:41 +0200)]
gst-hotdoc-plugins-scanner: don't instantiate base classes
Mathieu Duponchelle [Sun, 21 Jun 2020 00:00:54 +0000 (02:00 +0200)]
gst-hotdoc-plugins-scanner: serialize parents in hierarchy when needed
Thibault Saunier [Mon, 22 Jun 2020 13:11:07 +0000 (09:11 -0400)]
docs: Document signals and properties only for current type
Thibault Saunier [Sat, 20 Jun 2020 02:52:01 +0000 (22:52 -0400)]
doc: Stop documenting properties from parents
Nirbheek Chauhan [Mon, 22 Jun 2020 23:48:11 +0000 (05:18 +0530)]
registry: Print the pointer when printing features
This is what we do everywhere else too, useful for debugging.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/542>
Nirbheek Chauhan [Mon, 22 Jun 2020 22:13:53 +0000 (03:43 +0530)]
registry: Use a toolchain-specific registry file on Windows
If we load a plugin registry for MinGW plugins when running with MSVC,
we will have to write out the whole cache again, and vice-versa. Just
use separate cache files so that the cache is actually useful.
Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/427
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/542>
Sebastian Dröge [Mon, 22 Jun 2020 09:26:46 +0000 (12:26 +0300)]
ghostpad: Deprecate gst_ghost_pad_construct()
Instead do everything it did as part of GObject::constructed() and
change the function to always return TRUE.
gst_ghost_pad_construct() was meant to be called by subclasses right
after construction of the object to finish construction as it can fail
in theory. In practice it's impossible for it to fail, even more so if
called directly from GObject::constructed(): The only failure condition
is if the newly created proxy pad already has a parent, which is
impossible at this point as nothing else can have a reference to it.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/540>
Thor Andreassen [Tue, 19 May 2020 20:54:20 +0000 (22:54 +0200)]
tools: gst-inspect, add option '--color' with short option '-C'
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/498>
Thibault Saunier [Thu, 18 Jun 2020 17:46:29 +0000 (13:46 -0400)]
info: Add a printf extension for ClockTime/ClockTimeDiff pointers
Using both GST_TIME_FORMAT+GST_TIME_ARGS and friend is cumbersome, this
makes it sensibly more user friendly.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/535>
Tim-Philipp Müller [Fri, 19 Jun 2020 23:27:57 +0000 (00:27 +0100)]
Back to development
Tim-Philipp Müller [Fri, 19 Jun 2020 18:13:36 +0000 (19:13 +0100)]
Release 1.17.1
Thibault Saunier [Fri, 19 Jun 2020 15:19:43 +0000 (11:19 -0400)]
doc: Stop recording if building from source/release in plugin cache
Closes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/537
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/537>
Sebastian Dröge [Fri, 19 Jun 2020 09:01:49 +0000 (12:01 +0300)]
Fix up and add various "Since" markers and other related docs fixes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/536>
Roman Shpuntov [Thu, 18 Jun 2020 08:52:40 +0000 (15:52 +0700)]
systemclock: Fix clock time conversion on Windows/xbox
The returned ratio can be bigger than GST_SECOND, in which case we would
forever return 0 for the system clock time. Even in other cases if it's
close to GST_SECOND it would result in accuracy loss.
Instead of doing the division by GST_CLOCK_TIME_NONE during
initialization once, do it every time the clock time is requested.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/575
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/534>
Edward Hervey [Fri, 12 Jun 2020 13:07:42 +0000 (15:07 +0200)]
gst: Delay creation of threadpools
Since glib 2.64, gthreadpool will start waiting on a GCond immediately upon
creation. This can cause issues if we fork *before* actually using the
threadpool since we will then be signalling that GCond ... from another process
and that will never work.
Instead, delay creationg of thread pools until the very first time we need
them. This introduces a minor (un-noticeable) delay when needing a new thread
but fixes the issues for all users of GSTreamer that will call gst_init, then
fork and actually start pipelines.
See https://gitlab.gnome.org/GNOME/glib/-/issues/2131 for more context.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/531>
Thibault Saunier [Sun, 7 Jun 2020 16:05:07 +0000 (12:05 -0400)]
inputselector: Push event on selected pad only when one is selected
Calling `gst_input_selector_get_active_sinkpad` triggers sinkpad
selection but won't notify about it, leading to breaking code that
relying on it. This new code added as part of
63ccf45395ce734a2044a58193939a3eda50eb0c was thought to be triggered only
when a pad was already selected and not change the behavior otherwise
so this commit makes sure it is actually the case.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/766
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/522>