Sign in
Sign up
Explore
Enterprise
Education
Search
Help
Terms of use
About Us
Explore
Enterprise
Education
Blog
Sign in
Sign up
Fetch the repository succeeded.
Donate
Please sign in before you donate.
Cancel
Sign in
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
Unwatch
Watching
Releases Only
Ignoring
1
Star
0
Fork
0
LEARN
/
gstreamer
Code
Issues
0
Pull Requests
0
Wiki
Insights
DevOps
Gitee Go
Baidu Efficiency Cloud
Tencent CloudBase
Tencent Cloud Serverless
Jenkins for Gitee
Service
Gitee Pages
JavaDoc
PHPDoc
Quality analysis
CodeSafe
Gitee Scan
Don’t show this again
Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
Already have an account?
Sign in
master
Manage
Manage
Branches (40)
Tags (263)
master
1.16
1.18
1.14
1.12
1.10
1.8
1.6
1.4
1.2
1.0
0.10
0.11
BRANCH-RELEASE-0_10_19
BRANCH-GSTREAMER-0_8
BRANCH-COMPANY
BRANCH-THREADED
BRANCH-RELEASE-0_7_5
BRANCH-GSTREAMER-0_6
BRANCH-RELEASE-0_7_4
CAPS
BRANCH-RELEASE-0_7_2
TYPEFIND
BRANCH-ERROR
BRANCH-RELEASE-0_5_2
BRANCH-RELEASE-0_5_1
BRANCH-RELEASE-0_5_0
BRANCH-RELEASE-0_4_2
BRANCH-RELEASE-0_4_1
BRANCH-RELEASE-0_4_0
BRANCH-RELEASE-0_3_4
BRANCH-EVENTS2
BRANCH-RELEASE-0_3_3
BRANCH-BUILD1
BRANCH-EVENTS1
BRANCH-GOBJECT1
BRANCH-INCSCHED1
BRANCH-PLUGINVER1
BRANCH-CAPSNEGO1
BRANCH-AUTOPLUG2
1.18.0
1.17.90
1.17.2
1.17.1
1.16.2
1.16.1
1.14.5
1.16.0
1.15.90
1.15.2
1.15.1
1.14.4
1.14.3
1.14.2
1.14.1
1.12.5
1.14.0
1.13.91
1.13.90
1.13.1
1.12.4
1.12.3
1.12.2
1.12.1
1.10.5
1.12.0
1.11.91
1.11.90
1.11.2
1.10.4
1.10.3
1.11.1
1.10.2
1.10.1
1.11.0
1.10.0
1.9.90
1.9.2
1.8.3
1.9.1
1.8.2
1.8.1
1.6.4
1.8.0
1.7.91
1.7.90
1.7.2
1.6.3
1.7.1
1.6.2
1.6.1
1.6.0
1.5.91
1.5.90
1.5.2
1.5.1
1.4.5
1.4.4
1.4.3
1.4.2
1.4.1
1.4.0
1.3.91
1.3.90
1.3.3
1.3.2
1.3.1
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.90
1.0.10
1.1.4
1.0.9
1.1.3
1.0.8
1.1.2
1.1.1
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
RELEASE-0.11.99
RELEASE-0.11.94
RELEASE-0.11.93
RELEASE-0.11.92
RELEASE-0.11.91
RELEASE-0.11.90
RELEASE-0.11.3
RELEASE-0.10.36
RELEASE-0.11.2
RELEASE-0.11.1
RELEASE-0.11.0
RELEASE-0.10.35
RELEASE-0.10.34
RELEASE-0.10.33
RELEASE-0.10.32
RELEASE-0.10.31
RELEASE-0.10.30
RELEASE-0.10.29
RELEASE-0.10.28
RELEASE-0.10.27
RELEASE-0.10.26
RELEASE-0.10.25
RELEASE-0.10.24
RELEASE-0.10.23
GIT_CONVERSION
RELEASE-0_10_22
RELEASE-0_10_21
RELEASE-0_10_20
RELEASE-0_10_19
RELEASE-0_10_18
RELEASE-0_10_17
RELEASE-0_10_16
RELEASE-0_10_15
RELEASE-0_10_14
RELEASE-0_10_13
RELEASE-0_10_12
RELEASE-0_10_11
RELEASE-0_10_10
RELEASE-0_10_9
RELEASE-0_10_8
RELEASE-0_10_7
RELEASE-0_10_6
RELEASE-0_10_5
RELEASE-0_10_4
RELEASE-0_8_12
RELEASE-0_10_3
RELEASE-0_10_2
RELEASE-0_10_1
RELEASE-0_10_0
RELEASE-0_9_7
RELEASE-0_9_6
RELEASE-0_9_5
RELEASE-0_9_4
RELEASE-0_9_3
RELEASE-0_9_2
RELEASE-0_8_11
RELEASE-0_8_10
BRANCH-GSTREAMER-0_8-ROOT
CHANGELOG_START
BRANCH-GSTREAMER-0_6-ROOT
RELEASE-0_8_9
RELEASE-0_8_8
RELEASE-0_8_7
RELEASE-0_8_6
RELEASE-0_8_4
RELEASE-0_8_3
RELEASE-0_8_2
RELEASE-0_8_1
RELEASE-0_8_0
BEFORE_INDENT
RELEASE-0_7_6
RELEASE-0_7_5
BRANCH-RELEASE-0_7_5-ROOT
RELEASE-0_6_5
RELEASE-0_7_4
BRANCH-RELEASE-0_7_4-ROOT
CAPS-END
MOVE-TO-FDO
RELEASE-0_7_3
CAPS-MERGE-3
CAPS-MERGE-2
CAPS-MERGE-1
RELEASE-0_7_2
BRANCH-RELEASE-0_7_2-ROOT
CAPS-ROOT
TYPEFIND-ROOT
RELEASE-0_7_1
RELEASE-0_6_4
BRANCH-ERROR-ROOT
RELEASE-0_6_3
RELEASE-0_6_2
RELEASE-0_6_1-PROVENTOBETRUE
OSLOSUMMIT1-200303051
RELEASE-0_6_0-HOTTESTPICK
RELEASE-0_5_2-PANICROOM
BRANCH-RELEASE-0_5_2-ROOT
RELEASE-0_5_1-STARFLEET
BRANCH-RELEASE-0_5_1-ROOT
RELEASE-0_5_0-PRIVATEDANCER
BRANCH-RELEASE-0_5_0-ROOT
RELEASE-0_4_2-TOESWIDEOPEN
BRANCH-RELEASE-0_4_2-ROOT
RELEASE-0_4_1-GEPPINESSISAWARMGUN
BRANCH-RELEASE-0_4_1-ROOT
RELEASE-0_4_0-DESPERATELYSEEKINGSEXINESS
BRANCH-RELEASE-0_4_0-ROOT
RELEASE-0_3_4-30SECONDFRENCHMAN
BRANCH-RELEASE-0_3_4-ROOT
BRANCH-RELEASE-0_3_3-ROOT
BRANCH-EVENTS2-ROOT
RELEASE-0_3_3-GUADECBYFOOT
start
RELEASE-0_3_2-DOBDAY
DEBIAN-0_3_1-1
RELEASE-0_3_1-BELGIANBEER
BRANCH-BUILD1-20011216
BRANCH-BUILD1-20011216-DEEPFREEZE
BRANCH-BUILD1-20011216-FREEZE
RELEASE-0_3_0-EVENTFUL
BRANCH-BUILD1-200112101
BRANCH-BUILD1-200112101-FREEZE
BRANCH-BUILD1-200112101-ROOT
BRANCH-BUILD1-200112061
BRANCH-BUILD1-200112061-FREEZE
BRANCH-BUILD1-200112061-ROOT
BRANCH-BUILD1-ROOT
BRANCH-EVENTS1-200110161
EVENTS1-200110161-ROOT
BRANCH-EVENTS1-200110161-ROOT
EVENTS1-200110161-FREEZE
BRANCH-EVENTS1-200110161-FREEZE
BRANCH-EVENTS1-ROOT
RELEASE-0_2_1-SEDIMASTER
RELEASE-0_2_1-UNKN
GOBJECT1-200106241
GOBJECT1-200106241-ROOT
BRANCH-GOBJECT1-200106241
BRANCH-GOBJECT1-200106241-FREEZE
BRANCH-GOBJECT1-200106241-ROOT
GOBJECT1-200106241-FREEZE
BRANCH-GOBJECT1-ROOT
RELEASE-0_2_0-CRITICALMASS
INCSCHED1-200105251
BRANCH-INCSCHED1-200105251
INCSCHED1-200105251-ROOT
BRANCH-INCSCHED1-200105251-ROOT
INCSCHED1-200105251-FREEZE
BRANCH-INCSCHED1-200105251-FREEZE
BRANCH-INCSCHED1-200105231-FREEZE
BRANCH-INCSCHED1-200105231-ROOT
BRANCH-INCSCHED1-200104251
BRANCH-INCSCHED1-200104251-FREEZE
BRANCH-INCSCHED1-200104251-ROOT
PLUGINVER1-20010422
BRANCH-PLUGINVER1-20010422
PLUGINVER1-20010422-ROOT
BRANCH-PLUGINVER1-20010422-ROOT
PLUGINVER1-20010422-FREEZE
BRANCH-PLUGINVER1-20010422-FREEZE
BRANCH-PLUGINVER1-ROOT
BRANCH-INCSCHED1-200104161
BRANCH-INCSCHED1-200104161-FREEZE
BRANCH-INCSCHED1-200104161-ROOT
HEAD-20010312-PRE_CAPSNEGO1
HEAD-20010306-PRE_AUTOPLUG2
BRANCH-AUTOPLUG2-20010306
BRANCH-AUTOPLUG2-20010306-FREEZE
BRANCH-AUTOPLUG2-20010301
BRANCH-AUTOPLUG2-20010227-FREEZE
RELEASE-0_1_1-DUCTTAPE
BRANCH-CAPSNEGO1-20010308-FREEZE
BRANCH-CAPSNEGO1-ROOT
BRANCH-AUTOPLUG2-ROOT
BRANCH-INCSCHED1-ROOT
RELEASE-0_1_0-SLIPSTREAM
Clone or download
HTTPS
SSH
SVN
SVN+SSH
Copy
Download ZIP
Login prompt
This operation requires login to the code cloud account. Please log in before operating.
Go to login
No account. Register
gstreamer
/
ChangeLog
Branches 40
Tags 263
ChangeLog
4.55 MB
=== release 1.18.0 === 2020-09-08 00:01:33 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * README: * RELEASE: * gstreamer.doap: * meson.build: Release 1.18.0 2020-09-07 20:22:38 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * scripts/dist-translations.py: * scripts/meson.build: meson: dist pot file in tarballs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/618> 2020-08-21 11:06:57 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Document that samples_selected() must only be called from the aggregate() function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/607> 2020-08-20 10:54:12 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: 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> === release 1.17.90 === 2020-08-20 16:08:25 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gstreamer.doap: * meson.build: Release 1.17.90 2020-08-10 22:42:54 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: 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> 2020-08-07 09:30:55 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: 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> 2020-08-05 16:54:44 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add segment, pts, dts and duration to samples-selected Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/588> 2020-08-04 07:10:03 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tests/validate/meson.build: Meson: Override gst-tester-1.0 program to find it in other modules Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/586> 2020-08-03 16:26:58 +0300 Jordan Petridis <jordan@centricular.com> * gst/gstcaps.c: * gst/gstdeviceproviderfactory.c: * gst/gstelementfactory.c: * gst/gstminiobject.c: * gst/gstobject.c: * gst/gststructure.c: 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> 2020-08-04 11:13:51 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: 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> 2020-07-30 19:31:55 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gsturi.c: * gst/gsturi.h: * tests/check/gst/gsturi.c: 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> 2020-08-01 01:57:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/gst/gsturi.c: 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> 2020-07-30 19:53:10 -0400 Thibault Saunier <tsaunier@igalia.com> * tools/gst-inspect.c: inspect: Print preset description when available Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/582> 2020-06-30 21:10:05 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: 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> 2020-07-28 10:59:35 +0900 Hosang Lee <hosang10.lee@lge.com> * gst/gsturi.c: * tests/check/gst/gsturi.c: 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> 2020-07-24 13:31:47 +0200 Camilo Celis Guzman <camilo@pexip.com> * libs/gst/base/gstbasetransform.c: * tests/check/libs/test_transform.c: * tests/check/libs/transform1.c: basetransform: handle invalid subclass implementation for fixate_caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/575> 2020-07-24 17:53:00 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbaseparse.c: 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> 2020-07-24 11:38:28 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbaseparse.c: 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> 2020-07-26 15:30:26 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstcheck.h: 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> 2020-07-26 14:52:30 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.h: 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> 2020-07-26 14:48:52 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/math-compat.h: 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> 2020-07-26 14:42:39 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstevent.h: * gst/gstquery.h: 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> 2020-07-24 13:30:39 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gsttracer.c: * gst/gsttracer.h: * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * gst/gsttracerutils.c: * gst/meson.build: * plugins/tracers/meson.build: * tests/check/meson.build: 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> 2020-07-23 14:51:51 +1000 Matthew Waters <matthew@centricular.com> * libs/gst/check/gstharness.c: 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> 2020-07-22 12:44:02 +0200 Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> * libs/gst/check/libcheck/check.c: * libs/gst/check/libcheck/check.h.in: 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> 2020-07-14 12:15:34 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: buffer: improve seqnum fallback warning message Print target CPU we're building for. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/565> 2020-07-14 12:11:57 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: 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> 2020-07-09 09:46:07 +0200 Stéphane Cerveau <scerveau@collabora.com> * meson.build: 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> 2020-07-22 10:51:54 +0300 Eero Nurkkala <eero.nurkkala@offcode.fi> * tools/gst-inspect.c: 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> 2020-07-20 17:08:32 +1000 Matthew Waters <matthew@centricular.com> * gst/gstbufferpool.c: 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> 2020-07-16 23:03:35 +1000 Matthew Waters <matthew@centricular.com> * plugins/tracers/meson.build: 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> 2020-07-14 00:03:18 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/controller/gstdirectcontrolbinding.c: * tests/check/libs/controller.c: 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> 2020-07-16 18:55:22 +0900 Seungha Yang <seungha@centricular.com> * gst/gstinfo.c: 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> 2020-07-16 16:34:05 -0400 Olivier Crête <olivier.crete@collabora.com> * gst/gstpad.h: pad: More explicitly explain how to post errors on GST_FLOW_ERROR Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/568> 2020-07-15 16:12:02 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: 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> 2019-08-30 23:59:42 +1000 Jan Schmidt <jan@centricular.com> * plugins/tracers/gstlatency.c: 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> 2020-07-13 08:00:15 +0200 Edward Hervey <edward@centricular.com> * gst/gstinfo.h: 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> 2020-07-10 17:11:08 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: 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> 2020-07-06 11:55:38 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/elements/leaks.c: tests/elements/leaks.c: check get_tracer_by_name return value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/557> 2020-05-18 19:45:35 +0900 Seungha Yang <seungha@centricular.com> * libs/gst/base/gstbasesrc.c: 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> 2020-05-17 00:08:56 +0900 Seungha Yang <seungha@centricular.com> * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasesrc.h: 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> 2020-07-09 07:57:01 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gsttaglist.c: * gst/gsttaglist.h: 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> 2020-07-08 05:15:28 +0900 Seungha Yang <seungha@centricular.com> * libs/gst/check/gstcheck.h: 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> 2020-01-08 19:38:45 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * tests/check/gst/gstdevice.c: 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> 2018-05-02 13:05:21 +0200 Christoph Reiter <reiter.christoph@gmail.com> * gst/gstelementfactory.c: 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> 2020-07-04 16:59:23 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * scripts/extract-release-date-from-doap-file.py: meson: set release date from .doap file for releases Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/555> 2020-07-05 18:17:48 +0100 Tim-Philipp Müller <tim@centricular.com> * po/POTFILES: 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> 2020-07-03 11:45:36 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/helpers/meson.build: 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> 2020-07-02 11:21:27 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: 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> 2020-07-03 02:03:15 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development === release 1.17.2 === 2020-07-03 00:22:34 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gstreamer.doap: * meson.build: Release 1.17.2 2020-07-01 20:20:16 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gststreams.c: 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> 2020-05-11 17:44:43 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstutils.c: gstutils: fix link in parse_bin_from_description_full doc Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/475> 2020-06-26 00:50:44 +1000 Jan Schmidt <jan@centricular.com> * gst/gstbin.h: 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> 2020-06-25 02:14:56 +0900 Seungha Yang <seungha@centricular.com> * docs/gst-plugins-doc-cache-generator.py: 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> 2020-06-25 01:37:43 +0200 Mathieu Duponchelle <mathieu@centricular.com> * hooks/pre-commit.hook: 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> 2020-06-24 22:51:48 +0900 Seungha Yang <seungha@centricular.com> * tools/gst-inspect.c: 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> 2020-06-24 07:54:42 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * gst/gstbus.c: * tests/check/gst/gstbus.c: 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> 2020-06-23 01:54:15 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: gst-hotdoc-plugins-scanner: serialize interfaces 2020-06-22 23:41:06 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: gst-hotdoc-plugins-scanner: don't instantiate base classes 2020-06-21 02:00:54 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: gst-hotdoc-plugins-scanner: serialize parents in hierarchy when needed 2020-06-22 09:11:07 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/meson.build: docs: Document signals and properties only for current type 2020-06-19 22:52:01 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: doc: Stop documenting properties from parents 2020-06-23 05:18:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstregistrychunks.c: 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> 2020-06-23 03:43:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstregistry.c: 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> 2020-06-22 12:26:46 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstghostpad.c: * gst/gstghostpad.h: 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> 2020-05-19 22:54:20 +0200 Thor Andreassen <ta@toggle.be> * tools/gst-inspect-1.0.1: * tools/gst-inspect.c: tools: gst-inspect, add option '--color' with short option '-C' Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/498> 2020-06-18 13:46:29 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstinfo.c: * gst/gstinfo.h: 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> 2020-06-20 00:27:57 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: Back to development === release 1.17.1 === 2020-06-19 19:13:36 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * gstreamer.doap: * meson.build: Release 1.17.1 2020-06-19 11:19:43 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-plugins-doc-cache-generator.py: * docs/plugins/gst_plugins_cache.json: 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> 2020-06-19 12:01:49 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.c: * gst/gstdynamictypefactory.c: * gst/gstdynamictypefactory.h: * gst/gstelement.c: * gst/gstparamspecs.h: * gst/gstparse.c: * gst/gststructure.c: * gst/gsttracerfactory.c: * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * gst/gsttracerutils.c: * libs/gst/base/gstadapter.c: * libs/gst/base/gstaggregator.h: * libs/gst/base/gstbaseparse.c: Fix up and add various "Since" markers and other related docs fixes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/536> 2020-06-18 15:52:40 +0700 Roman Shpuntov <roman.shpuntov@gmail.com> * gst/gstsystemclock.c: 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> 2020-06-12 15:07:42 +0200 Edward Hervey <edward@centricular.com> * gst/gstelement.c: * gst/gsttask.c: 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> 2020-06-07 12:05:07 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstinputselector.c: 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> 2020-05-27 15:35:41 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst/gstdatetime.c: check: Fix datetime unit test for builds without assert If built with assertions disabled, we need to ensure the variable is properly reset before testing Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/530> 2020-06-11 10:56:10 +0900 sohwan.park <sohwan.park@lge.com> * tests/check/gst/gstmessage.c: message: Add unit test for GST_MESSAGE_RATE_CHANGE Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/528> 2020-06-11 10:54:54 +0900 sohwan.park <sohwan.park@lge.com> * tests/check/gst/gstevent.c: event: Add unit test for INSTANT_RATE_CHANGE and INSTANT_RATE_SYNC_TIME Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/528> 2020-06-11 10:53:59 +0900 sohwan.park <sohwan.park@lge.com> * tests/check/gst/gstsegment.c: segment: Add unit test for GST_SEEK_FLAG_INSTANT_RATE_CHANGE Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/528> 2020-06-09 15:06:52 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: docs: Update plugins cache 2020-06-09 15:05:54 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Fix the way we mark properties mutability When nothing is specified, we should default to NULL, not PLAYING 2020-06-10 11:23:42 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fix StartTimeSelection enum type registration Make it thread-safe and use the actual C identifiers for the "name" field, as otherwise gobject-introspection will fall apart. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/527> 2020-06-08 10:51:57 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: docs: Update plugins cache 2016-09-01 17:33:13 +1000 Matthew Waters <matthew@centricular.com> * plugins/tracers/gstleaks.c: tracers/leaks: fix reentrancy issues with the custom signal handlers The signal handlers were performing mutex operations in the signal handlers which is bad idea that may lead to deadlocks. 1. Implement a separate signal thread to handle the signals. 2. Use the glib provided signal GSource to avoid performing operations in the signal handler. Fix #186 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/487> 2020-06-08 22:47:56 +0200 Havard Graff <havard.graff@gmail.com> * gst/gst_private.h: gst_private.h: increse padding in struct _GstClockEntryImpl When compiling for 32bit ios arm, 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 12 bytes (on 32bit). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/525> 2020-06-08 16:04:51 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstparamspecs.h: paramspecs: add 'Since: 1.18' markers for new param spec flags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/524> 2020-06-07 20:56:49 +0900 Seungha Yang <seungha@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: doc: Add GstObject specific GParamFlags Document "controllable", "mutable-{ready, paused, playing}" and "conditonally-available" GParamFlags Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/283> 2019-09-11 13:51:04 +0900 Seungha Yang <seungha.yang@navercorp.com> * gst/gstparamspecs.h: * tools/gst-inspect.c: paramspecs: Add a GParamSpecFlag to indicate the property might not always exists Add new flag for users to notice that the property is not guaranteed to exist depending on environment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/283> 2020-06-07 18:42:21 +0200 Edward Hervey <edward@centricular.com> * tests/check/elements/leaks.c: check: Avoid race with leaks test The problem is that the taskpool might not have completely drained by the time we check for leaks. Instead, ensure all tasks have stopped before testing for valid results. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/523> 2020-06-04 17:50:01 +0200 Camilo Celis Guzman <camilo@pexip.com> * plugins/elements/gstqueue.c: queue: protect against lost wakeups for iterm_del condition Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/513> 2020-06-06 10:19:57 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Prevent potential NULL pointer dereference when serializing plugin object types CID 1464007 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/516> 2020-06-06 08:24:01 +0200 Edward Hervey <edward@centricular.com> * gst/gstpadtemplate.c: padtemplate: Directly unreference the documentation caps The public-facing API has a (valid) protection against NULL caps. We can just directly remove it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/515> 2020-06-06 01:10:09 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstutils.c: utils: fix markdown link to #GstPluginAPIFlags 2020-06-05 23:28:38 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: * gst/gstpadtemplate.c: * gst/gstpadtemplate.h: padtemplate: expose getters and setters "documentation caps" This can be used in elements where the caps of pad templates are dynamically generated and dependent on the environment. An example is x265enc. 2020-06-05 21:10:29 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: * gst/gstquark.c: * gst/gstquark.h: * gst/gstutils.c: * gst/gstutils.h: * plugins/elements/gstcapsfilter.c: * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstoutputselector.c: * plugins/elements/gstqueue.c: * plugins/elements/gsttee.c: * tests/check/gst/gstutils.c: utils: expose GstPluginAPIFlags These can be passed to gst_type_mark_as_plugin_api, to inform plugin cache generation. For now a single flag is specified, "IGNORE_ENUM_MEMBERS", it can be used for dynamically generated enums to avoid documenting environment-specific enumeration members. An example is GstX265EncTune. 2020-06-01 16:18:50 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstclocksync.c: * plugins/elements/gstidentity.c: * tests/check/gst/gstbin.c: identity, clocksync: implement provide_clock Since those are using the clock for sync, they need to also provide a clock for good measure. The reason is that even if downstream elements provide a clock, we don't want to have that clock selected because it might not be running yet. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/509> 2020-06-02 22:39:41 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gststructure.c: structure: Quickly document serialization format Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/510> 2020-06-03 09:17:32 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gststructure.c: structure: Reflow the SECTION comment Removing trailing whitespaces and avoiding to exceed 80chars Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/510> 2020-05-27 03:41:37 +1000 Jan Schmidt <jan@centricular.com> * plugins/elements/gstqueue2.c: queue2: Defer downstream bitrate query to the streaming thread. When we want to perform a downstream bitrate query, just set the reconfigure flag on the srcpad and get the streaming thread to do it. That avoids emitting a downstream query when receiving the upstream RECONFIGURE event - which can lead to deadlocks if downstream is sending the event from within a lock - e.g. input-selector. If querying the downstream bitrate changes the cached value, then make sure to update our buffering state and potentially post a BUFFERING message to the application. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/566 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/501> 2020-06-03 08:09:04 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstinputselector.c: inputselector: Avoid deadlock when requesting pads The deadlock was the following: * One thread requests a new pad, the internal lock is kept while adding the pad * Another thread (or the same one) requests the internal links of a pad (could be that pad)... which also requires that lock. That internal lock is not required when adding the pad to the element (which is the last action when requesting a new pad). The fact it will be actually used will be *after* the request pad function is released. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/512> 2020-06-04 03:24:50 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstparamspecs.h: * gst/gstvalue.h: doc: document fundamental types 2020-06-03 18:33:51 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: doc: Require hotdoc >= 0.11.0 2020-06-02 22:25:24 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Don't include GObject and GstPipeline signals They're already documented from elsewhere. 2020-06-02 12:25:00 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Export GstAggregatorStartTimeSelection in the header and document it It is used by one of the aggregator properties and was private in the source file before. 2020-05-25 16:21:12 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Update gst_plugins_cache.json 2020-05-28 21:51:22 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstcapsfilter.c: * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstoutputselector.c: * plugins/elements/gstqueue.c: * plugins/elements/gsttee.c: plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types 2020-05-28 23:40:09 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Store all non-element types in a separate other-types array And also make sure to not duplicate them. 2020-05-28 22:59:09 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Use gst_type_is_plugin_api() for deciding whether a type should be included in the docs 2020-05-28 20:56:14 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstquark.c: * gst/gstquark.h: * gst/gstutils.c: * gst/gstutils.h: utils: Add helper function for marking types as plugin API This can be used to mark additional types exposed by plugins (i.e. enums, flags and GObjects) via properties, signals or pad templates as plugin API. They can then be picked up by the documentation for the plugin. Not all types exposed by plugins are documented automatically because they might come from an external library and should be documented from there instead. 2020-05-26 13:06:20 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Don't try to print pad templates of non-GstElement types 2020-05-21 17:33:36 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/meson.build: docs: Print object/flag/enum type information in a more structured way and in more places Custom types are printed now for signal parameters/return value and properties, and more consistently. Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/-/issues/59 2020-06-04 11:21:45 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Avoid races when posting buffering messages When posting a buffering message succesfully: * Remember the *actual* percentage value that was posted * Make sure we only reset the percent_changed variable if the value we just posted is indeed different from the current value Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/511> 2020-05-28 14:56:26 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/validate/meson.build: tests:validate: Whitelist validate plugins This is required so we can use validateflow for example Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/506> 2020-05-28 12:39:08 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/validate/gst-tester.c: tester: Fix exit code on bailout/skipping Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/506> 2020-05-27 20:22:49 +1000 Matthew Waters <matthew@centricular.com> * gst/gstpromise.c: promise: update documentation and annotations for NULL replies The implementation and tests already handle NULL replies. Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1300 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/502> 2020-05-27 12:26:01 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/leaks.c: tests: leak tracer: disable stack traces for faster test execution This test takes 39 seconds on my machine even though it just runs a couple of fakesrc num-buffers=2 ! fakesink pipelines. Most of the cpu seems to be spent in libz, related to stack trace management. Use stack-traces-flags=none instead of stack-traces-flags=full until a better solution can be found. Might warrant more investigation in any case.. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/503> 2020-05-20 17:32:48 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstqueue2.c: * tests/check/elements/queue2.c: queue2: don't post unnecessary buffering message, refine locking This is a follow up to review comments in !297 + The posting of the buffering message in READY_TO_PAUSED isn't needed, removing it made the test fail, but the correct fix was simply to link elements together + Move code to relock the queue and set last_posted_buffering_percent and percent_changed inside the buffering_post_lock in create_write(). This makes locking consistent with post_buffering() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/297> 2019-10-04 16:57:29 +0200 Carlos Rafael Giani <crg7475@mailbox.org> * plugins/elements/gstqueue2.c: * tests/check/elements/queue2.c: queue2: Fix missing/dropped buffering messages at startup This fixes a bug that occurs when an attempt is made to post a buffering message before the queue2 was assigned a bus. One common situation where this happens is when the use-buffering property is set to TRUE before the queue2 was added to a bin. If the result of gst_element_post_message() is not checked, and the aforementioned situation occurs, then last_posted_buffering_percent and percent_changed will still be updated, as if posting the message succeeded. Later attempts to post again will not do anything because the code then assumes that a message with the same percentage was previously posted successfully and posting again is redundant. Updating these variables only if posting succeed and explicitely posting a buffering message in the READY->PAUSED state change ensure that a buffering message is posted as early as possible. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/297> 2020-05-25 14:56:10 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Only try initializing entries if they were not initialized before And add assertions accordingly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/500> 2020-05-25 12:51:19 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Clarify comment that described a previous version of the code Nowadays we are only waking up the head entry waiting if either the head entry is unscheduled (which is handled some lines above already), or when the head entry specifically is woken up because a new entry became the new head entry. We're not waking up *all* entries anymore whenever any entry in the last was unscheduled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/500> 2020-05-22 19:28:54 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Get rid of atomic access to clock entry status and use the mutex instead We already have a mutex in each clock entry anyway and need to make use of that mutex in most cases when the status changes. Removal of the atomic operations and usage of the mutex instead simplifies the code considerably. The only downside is that unscheduling a clock entry might block for the time it needs for the waiting thread to go from checking the status of the entry to actually waiting, which is not a lot of code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/500> 2020-05-22 18:12:55 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Don't start waiting for a clock id if it was signalled before Otherwise it can happen that unscheduling a clock id never takes place and instead it is waiting until the normal timeout. This can happen if the wait thread checks the status and sets it to busy, then the unschedule thread sets it to unscheduled and signals the condition variable, and then the waiting thread starts waiting. As condition variables don't have a state (unlike Windows event objects), we have to remember ourselves in a new boolean flag protected by the entry mutex whether it is currently signalled, and reset this after waiting. Previously this was not a problem because a file descriptor was written to for waking up, and the token was left on the file descriptor until the read from it for waiting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/500> 2020-02-15 22:20:18 +0530 dhilshad <mohddhilshadm@gmail.com> * plugins/elements/gstsparsefile.c: sparsefile: fix possible crash when seeking In gst_sparse_file_clear function we were closing a file and reopening it using closed file descriptor. Fix: Removed closing and reopening of file. Fixes #512 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/372> 2017-11-04 13:28:03 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Fix comparison of int/int64 ranges ranges are only equal if: * Their bounds are equal * And their step value are equal *IF* they contain more than one value https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/253 2020-05-12 02:05:25 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstfdsink.c: fdsink: do not supress legitimate errors when unlocking Instead, only wait_preroll when writev_* returns FLUSHING Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/476> 2020-05-12 00:57:36 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsink.h: fdsink: remove unused struct member `bytes_written` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/476> 2020-05-12 00:54:56 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstfilesink.c: filesink: port over unlock code from fdsink See also: 5216322d39448ed61c86bb1b3dd9c8c5e6feccf3 The previous code was causing "random" flushing returns in scenarios with intensive state changes such as within a buffering pipeline. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/476> 2020-05-19 22:24:39 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Add boolean field for readability of properties Some properties are write-only. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/496> 2020-05-19 10:34:01 +0200 Thor Andreassen <ta@toggle.be> * tools/gst-inspect-1.0.1: tools: option '-u' occurs twice in gst-inspect-1.0.1 I have removed the erroneous one according to the source file. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/492> 2020-05-19 14:16:49 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/validate/gst-tester.c: tester: Stop using g_file_new_build_filename It was introduced in GLib 2.56 only Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/560 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/495> 2020-05-04 17:05:07 -0400 Thibault Saunier <tsaunier@igalia.com> * tests/meson.build: * tests/validate/gst-tester.c: * tests/validate/meson.build: * tests/validate/simplest.validatetest: * tests/validate/simplest/flow-expectations/log-sink-sink-expected: tests: Add a gst-tester utility gst-tester is a tool to launch `.validatetest` files with TAP[0] compatible output and supporting missing `gst-validate` application which means that it can be cleanly integrated with meson test harness. It allows us to use `gst-validate` to write integration tests in any GStreamer repository keeping them as close as possible to the code. It can simplify a lot test writing and reading and not having to go into another repository to implement or run tests makes it more convenient to use. This also implements a stupid simple test to show how that works [0] https://testanything.org/ Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/461> 2020-05-19 09:30:50 +0000 Stéphane Cerveau <scerveau@collabora.com> * docs/random/moving-plugins: docs: update moving-plugins to use gitlab and meson Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/493> 2020-05-18 10:46:04 +0200 Edward Hervey <edward@centricular.com> * gst/gstbin.c: gstbin: Remove mentions of duration caching This was effectively disabled in 1.0 with the intent of maybe re-enabling it. The problem is that caching duration at a bin level doesn't make much sense since there might be queueing/buffering taking place internally and therefore the duration reported might have no correlation to what is actually being outputted. Remove commented code and fixmes, and update documentation Fixes #4 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/489> 2020-05-15 11:48:07 +0000 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstinputselector.c: input-selector: Ensure events are forwarded only once per pad The code was prepared to do it but was missing to fill the pushed_pads list. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/485> 2020-05-14 17:13:05 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstinputselector.c: inputselector: Ensure that events are pushed first on active pad Making it less random and fixing a race in a GES test where we have as pipeline: ``` videotestsrc ! output-selector name=s ! input-selector name=i s. ! timecodestamper ! i. ``` which we seek, leading to the seek reaching the video testsrc without going through the timecodestamper and generating a buffer even before timecodestamper gets the seek which means that its internal state is wrong compared to the datastream it gets and attaches wrong timecode metas. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/485> 2020-05-15 10:38:30 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: docs: Add list of interfaces implemented by elements to the docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/486> 2020-05-13 17:35:01 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/helpers/gst_gdb.py: gdb: Print event seqnums, object pointers and structures Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/482> 2020-05-13 17:34:12 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/helpers/gst_gdb.py: gdb: Add support for queries and buffers Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/482> 2020-05-13 17:07:43 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstinputselector.c: * plugins/elements/gstinputselector.h: inputselector: Never reset active pad set from the user This was leading to interesting races in a GES test. Related to: https://gitlab.freedesktop.org/gstreamer/gst-editing-services/-/issues/108 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/481> 2020-05-14 12:13:07 +0200 Edward Hervey <edward@centricular.com> * libs/gst/base/gstbasetransform.c: basetransform: Minor refactoring Move checks related to peerfilter in one place. No impact except for logic. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/484> 2020-05-14 11:32:39 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Minor list intersection optimization When matching against the 2nd list, increment the starting position of the inner list iteration. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/484> 2020-05-07 21:06:18 +0800 Xu Guangxin <guangxin.xu@intel.com> * gst/gstbufferpool.c: bufferpool: unblock acquire thread when we discard buffer else the acquire thread will wait infinitely. The deadlock showed in prevous unit test commit. This will fix it Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/470> 2020-05-11 18:21:48 +0800 Xu Guangxin <guangxin.xu@intel.com> * tests/check/gst/gstbufferpool.c: tests: bufferpool: add dead lock test for buffer discard you will see a deadlock after you apply this patch, and run following commandline: GST_STATE_IGNORE_ELEMENTS=1 tests/check/gst_gstbufferpool Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/470> 2020-05-11 22:27:14 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstoutputselector.c: * plugins/elements/gstoutputselector.h: output-selector: Drop duplicated seek events When we get a seek event on several source pads, we should drop the duplicated ones as any element that has several srcpads (like demuxers). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/478> 2020-05-12 05:58:38 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/meson.build: meson: Pass native: false to add_languages() This is needed for cross-compiling without a build machine compiler available. The option was added in 0.54, but we only need this in Cerbero and it doesn't affect older versions so it should be ok. Will just cause a spurious warning. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/477> 2020-05-12 16:42:42 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/helpers/gst_gdb.py: gdb: Fix iterating GstStructure fields This broke with 1b568fa01fa16885c3a7368551034c206493a41a where we inlined the array Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/479> 2020-05-10 11:37:45 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/gst_plugins_cache.json: docs: Update gst_plugins_cache.json Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/474> 2020-05-10 11:35:53 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-plugins-doc-cache-generator.py: docs: Output JSON files with UTF-8 encoding Otherwise non-ASCII characters are encoded as \uXXXX. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/474> 2020-05-08 17:21:20 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Fix segment (de)serialization By using the proper quarks (stored in the indirection table) and not the *enums* of those entry in the quark table. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/473> 2020-05-08 08:03:54 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst/gsturi.c: check: uri: Check return value CID #1455381 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/472> 2020-05-08 08:02:12 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst/gstvalue.c: check: gstvalue: Check return value As is done everywhere else CID #1455540 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/472> 2020-05-08 07:43:02 +0200 Edward Hervey <edward@centricular.com> * tests/check/libs/gsttestclock.c: check: testclock: Check return values As done everywhere else. CID #1455383 CID #1455524 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/472> 2020-05-08 07:03:49 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst/gstpromise.c: check: gst_promise_reply() takes ownership Copy the structure temporarily to check it further down. CID #1455392 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/472> 2020-05-08 06:49:45 +0200 Edward Hervey <edward@centricular.com> * tests/check/gst/gstprintf.c: check: Don't leak test string Turns out the length returned by `__gst_vasprintf()` doesn't include the final `\0`. CID #1455430 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/472> 2020-05-07 23:00:13 +0200 Matej Knopp <matej.knopp@gmail.com> * gst/gsttaglist.c: * tests/check/gst/gsttag.c: taglist: Fix crash when comparing two lists of the same length but with different items Fixes #549 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/469> 2020-05-07 03:28:59 +1000 Jan Schmidt <jan@centricular.com> * tests/check/elements/selector.c: tests/input selector: Fix a shutdown crash Hold a ref to the pad we're planning on sending EOS too, so that it doesn't disappear if things shut down before the thread gets to actually send the EOS event. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/467> 2020-04-28 22:21:13 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: Handle seeking with single_segment=True Identity was ignoring seek and flush events even when using a single segment. In the end it means that we couldn't compute buffers running-time and stream time after seeks. This commits adds support for flushing seeks only as I have no idea what to do for non flushing ones. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/450> 2020-04-28 13:28:32 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstclocksync.c: * plugins/elements/gstidentity.c: identity,clocksync: Fix timestamping inside single segment in reverse playback In reverse playback, buffers are played back from buffer.stop (buffer.pts + buffer.duration) to buffer.pts running times which mean that we need to use the buffer end running time as a buffer timestsamp, not the buffer pts when using a single segment in reverse playback. This is now being tested in `validate.test.identity.reverse_single_segment` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/450> 2020-04-23 16:24:15 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbasesink.c: basesink: Fix clock synchronization running time in reverse playback In reverse playback, buffers have to be displayed at buffer.stop running time, otherwise a same set of buffer can't be displayed in the exact opposite order to forward playback. For example, seeking a video stream at 1fps with start=0, stop=5s, rate=1.0 will display the following buffers: b0.pts = 0s, b0.duration = 1s - at running time = 0s b1.pts = 1s, b1.duration = 1s - at running time = 1s b2.pts = 2s, b2.duration = 1s - at running time = 2s b3.pts = 3s, b3.duration = 1s - at running time = 3s b4.pts = 4s, b4.duration = 1s - at running time = 4s <wait at EOS for 1second> Now, playing that reverse with start=0, stop=5s, rate=1.0 has to display the following buffers: b0.pts = 4s, b0.duration = 1s - at running time = 0s b1.pts = 3s, b1.duration = 1s - at running time = 1s b2.pts = 2s, b2.duration = 1s - at running time = 2s b3.pts = 1s, b3.duration = 1s - at running time = 3s b4.pts = 0s, b4.duration = 1s - at running time = 4s <wait at EOS for 1second> With the previous code, it reproduced the following: b0.pts = 4s, b0.duration = 1s - at running time = 1s b1.pts = 3s, b1.duration = 1s - at running time = 2s b2.pts = 2s, b2.duration = 1s - at running time = 3s b3.pts = 1s, b3.duration = 1s - at running time = 4s b4.pts = 0s, b4.duration = 1s - at running time = 5s <NO WAIT AT EOS AND POST EOS RIGHT AWAY> This is being tested with the `validate.launch_pipeline.sink.reverse_playback_clock_waits.*` set of tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/450> 2020-04-23 16:10:24 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbasesrc.c: basesrc: Fix the way position is computed in reverse playback In reverse playback, buffers are played back from buffer.stop (buffer.pts + buffer.duration) to buffer.pts, which means that the position after the buffer is consumed is buffer.pts, not buffer.pts - buffer.duration. Without that change, and when `automatic_eos` feature is on, we were dropping the last buffers as marking the stream EOS one buffer too soon. This is now being tested extensively by GstValidate in the `validate.test.clock_sync.*` set of tests. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/450> 2020-05-02 12:01:49 +0100 Tim-Philipp Müller <tim@centricular.com> * pkgconfig/gstreamer-uninstalled.pc.in: * pkgconfig/gstreamer.pc.in: pkgconfig: add pluginscannerdir variable So we can get this in a unified way from installed and uninstalled GStreamer when using pkg-config to set up test environments in other modules. See https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/582 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/456> 2020-05-06 11:59:15 +0200 Edward Hervey <edward@centricular.com> * gst/gsttaglist.c: taglist: Make equality check more uniform Previously this was iterating over taglists with ... string names. Instead use the same technique as `gst_structure_is_equal()` with the additional double check. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/466> 2020-05-06 10:07:30 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstregistrybinary.c: registrybinary: Also call fclose() if fflush()/fsync() failed Otherwise we would be leaking the file in error cases. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/465> 2020-05-06 09:59:47 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstregistrybinary.c: registrybinary: Don't call fclose() more than once We must not retry fclose() on EINTR as POSIX states: After the call to fclose(), any use of stream results in undefined behavior. We ensure above with fflush() and fsync() that everything is written out so chances of running into EINTR are very low. Nonetheless assume that the file can't be safely renamed, we'll just try again on the next opportunity. CID #1462697 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/465> 2020-05-06 08:04:28 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Use explicit limit checking When we know we'll only be checking the real limits, use a clearer/simpler macro. CID #1037148 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/464> 2020-04-15 17:49:37 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstsegment.h: segment: Enhance the GstSegment structure documentation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/435> 2020-05-05 13:20:10 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/plugins/gst_plugins_cache.json: doc: Add signal flags information in the plugin cache Updating the plugin cache file Same behavior as g-ir as the signal flags don't have a GType associated. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/463> 2020-05-03 18:50:26 +0200 Richard Kreckel <kreckel@ginac.de> * gst/gstregistrybinary.c: registrybinary: Use a FILE* in BinaryRegistryCache... ...instead of a file descriptor so buffered I/O is used when writing the binary cache. This boosts performance at startup, particularly on network filesystems where writes may be quite slow. Fixes gstreamer#545. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/458> 2020-04-23 14:57:59 +0200 Edward Hervey <edward@centricular.com> * gst/gstquark.c: * gst/gstquark.h: * gst/gstvalue.c: gstvalue: Use quark-based structure usage for segment (de)serialization Instead of string-based one. Smaller and faster code Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-04-17 17:14:36 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: value: Handle runtime checks as such The various `g_strdup_printf()` returns values are runtime checks which could be disabled if one wants and therefore should be handled as such with g_return_val_if_fail() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-05-01 15:15:46 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Remove useless checks The calling function already checks that the values exists and it's a valid list Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-05-01 14:50:52 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Use previous assumption The types were already checked for equality just before, not need to check for that again Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-05-01 14:48:37 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Use comparision functions directly We know the types of values, just use the comparision function directly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-05-01 14:45:28 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: * gst/gstvalue.h: gstvalue: Minor optimization for checks For value types that aren't subclassable, just check the type directly. For flags, compare against the fundamental type directly instead of going through the more expensive recursive check of `G_TYPE_CHECK_VALUE_TYPE()` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-23 17:03:51 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Optimize list subset some more Avoid going through the double subtract function when comparing anything to a list. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-23 17:01:20 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Optimize gst_value_compare_list The compare function only needs to be retrieved once and used directly Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-21 13:05:33 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Avoid temporary allocation The problem is that: * g_value_init will end up allocating an internal list/array * g_value_copy *clears* the existing value by calling the free func and then the copy function (creating it again) To avoid that alloc/free/alloc cycle, directly call the appropriate function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-23 08:20:58 +0100 Edward Hervey <edward@centricular.com> * gst/gstcaps.c: gstcaps: Move assignment outside loop s1 and f1 stay the same within the inner loop Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-23 08:10:53 +0100 Edward Hervey <edward@centricular.com> * gst/gststructure.c: gststructure: inline gst_structure_is_subset() Having direct access to the iteration allows tighter code and also being able to stop earlier. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-03-23 08:06:26 +0100 Edward Hervey <edward@centricular.com> * gst/gststructure.c: gststructure: Inline gst_structure_intersect() Having direct access to the iteration allows tighter code and also being able to stop earlier. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/453> 2020-05-05 10:47:07 +0200 Edward Hervey <edward@centricular.com> * gst/gst_private.h: * gst/gstregistry.c: * gst/gstregistrychunks.c: gstregistry: Directly get list of plugin features Previously this was: * iterating and referencing all plugin features in a GList * *then* filtering out the ones we want * Was doing that filtering by name (i.e. `strcmp`) instead of direct pointer comparision Instead, just create a private direct function to get the list of plugin features Uses 4 times less instructions ... Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/462> 2020-05-04 16:51:19 +0000 Rubén Gonzalez <rgonzalez@fluendo.com> * gst/gstplugin.c: plugin: Fix typo with GStremaer version: ``` has incompatible version (plugin: 1.15, gst: 1,12) ``` Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/460> 2020-05-01 15:03:55 +0200 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: No longer store same-type intersection functions in table The intersection function table is a legacy of 2005, when one could register random intersection functions. This is no longer the case. The only place where that table was used was: * `gst_value_can_intersect()`, where it was already only used for identical GType * `gst_value_intersect()`, where the table iteration was insanely expensive Instead this patch: * Only stored intersection functions for *different* types (of which there are only 4) * Make gst_value_intersect directly call the same-type intersection functions and only use the table if ever it doesn't match. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/454> 2020-05-01 17:27:07 +0200 Edward Hervey <bilboed@bilboed.com> * gst/gstpad.c: gstpad: Simplify task name creation This was going through a few locks and doing temporarily allocations for every single task creation.. just to get a name. We don't need to take locks since: * The parent exists (we have a reference to it) * The pad exists (the task belongs to it) * Changing names of pad/elements when activating is a big no-no Instead use the existing direct GST_DEBUG_PAD_NAME macro Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/455> 2020-05-01 17:30:20 +0200 Edward Hervey <bilboed@bilboed.com> * gst/gstevent.c: * gst/gstevent.h: * gst/gstpad.c: gstevent: Add function for checking event name by GQuark Avoids doing string<=>quark conversions in the sticky event handling path. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/455> 2020-04-17 17:12:10 +0200 Edward Hervey <edward@centricular.com> * gst/gstcaps.c: caps: Unify common checks for intersections Regardless of the intersect method chosen, migrate the same checks up into the calling function. Same result, just less code. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/455> 2020-04-15 09:09:22 +0200 Edward Hervey <edward@centricular.com> * gst/gstregistry.c: gstregistry: Remove unneeded call _priv_gst_preload_plugins is only filled if option parsing is active. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/455> 2020-05-01 10:19:08 +0200 Edward Hervey <bilboed@bilboed.com> * libs/gst/base/gstbasesrc.c: basesrc: Don't get flow name if not needed Put it in the debug call so it's only called when/if needed Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/455> 2020-04-22 10:26:45 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstclocksync.c: * plugins/elements/gstclocksync.h: * tests/check/elements/clocksync.c: clocksync: Remove handoff signals They're not really useful on this element and were just a leftover from identity. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/540 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/443> 2020-05-03 16:11:39 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Mark segment parameter as const in gst_aggregator_update_segment() Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/457> 2020-02-24 11:24:16 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-stats.c: tools: gst-stats: parse thread-id in windows debug logs properly They don't seem to have the "0x" prefix. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/376> 2020-05-01 10:07:09 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.h: * libs/gst/check/gsttestclock.c: Add missing colons to Since markers in the docs Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/452> 2020-04-28 00:33:22 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: fix link-like syntax in doc 2020-04-24 12:47:52 +1000 Matthew Waters <matthew@centricular.com> * libs/gst/check/gstharness.c: harness: also forward context queries between harnesses Fixes multiple OpenGL contexts being created with a setup like: h = gst_harness_new ("glcolorconvert"); gst_harness_add_src (h, "gltestsrc", FALSE); Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/448> 2020-04-22 12:58:35 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbaseparse.c: baseparse: Always clear drain flag before pulling In pull mode, each pull is unique. A following pull can be well inside the range even if the previous one wasn't. Fix this my moving the drain flag right before the pull. This avoids passing a bad drain flag to parsers, which may endup truncate buffers causing data corruption. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1275 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/446> 2020-04-23 15:46:48 +1000 Matthew Waters <matthew@centricular.com> * pkgconfig/gstreamer-check-uninstalled.pc.in: * pkgconfig/gstreamer-check.pc.in: * pkgconfig/meson.build: build: libcheck may require linking against rt In static linking scenarios, this is required to avoid this error building tests: /work/prefix/lib/libgstcheck-1.0.a(check_run.c.o): In function `tcase_run_tfun_fork': /work/gstreamer/_builddir/../../../src/gstreamer/libs/gst/check/libcheck/check_run.c:476: undefined reference to `timer_create' /work/gstreamer/_builddir/../../../src/gstreamer/libs/gst/check/libcheck/check_run.c:483: undefined reference to `timer_settime' /work/gstreamer/_builddir/../../../src/gstreamer/libs/gst/check/libcheck/check_run.c:493: undefined reference to `timer_delete' /work/prefix/lib/libgstcheck-1.0.a(check.c.o): In function `check_get_clockid': /work/gstreamer/_builddir/../../../src/gstreamer/libs/gst/check/libcheck/check.c:628: undefined reference to `timer_create' /work/gstreamer/_builddir/../../../src/gstreamer/libs/gst/check/libcheck/check.c:629: undefined reference to `timer_delete' Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/447> 2020-04-22 18:59:54 +0200 Juan Navarro <juan.navarro@gmx.es> * gst/gstcaps.c: gstcaps: fix out of bounds checks These two checks could end up allowing out of bounds array access, when the index equals the array size. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/445> 2020-04-21 19:33:08 +1000 Matthew Waters <matthew@centricular.com> * gst/gstvalue.c: Revert "gstvalue: Avoid expensive fallback on intersection" This reverts commit cd751c2de39969ab6187eab12e4e8a85e0467cf7. Reverts https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/406 Fixes glviewconvert negotiation in e.g.: gltestsrc ! glviewconvert output-mode-override=side-by-side ! glstereosplit name=s s.left ! queue ! fakesink s.right ! queue ! glimagesink Problem here is that intersecting flagsets in gst_value_intersect will always find a value comparison function but may fail a direct type comparison due to flagsets supporting derived types. When flagset derived types are intersected, an intersection will therefore always fail. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/441> 2020-04-22 20:19:23 +0900 Seungha Yang <seungha@centricular.com> * gst/gstsystemclock.c: systemclock: Fix clock waiting on Windows Add missing parentheses in macro for the divide operation Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/444> 2020-04-21 18:14:00 +0100 Charlie Turner <cturner@igalia.com> * gst/gstdebugutils.c: debugutils: Skip multiqueue stats in dot dump If this is not done, tools like xdot fail with "unexpected char b'\\'". This is a regression caused by commit 74938f07c2a9b3411716fa7595178942c80e20f4 (multiqueue: Add stats property). The deserialized value coming out of g_object_get_property looks like this, $24 = (gchar *) 0x7f560c0046a0 "application/x-gst-multi-queue-stats, queues=(structure)< \\\"queue_0\\\\,\\\\ buffers\\\\=\\\\(uint\\\\)39\\\\,\\\\ bytes\\\\=\\\\(uint\\\\)8 120251\\\\,\\\\ time\\\\=\\\\(guint64\\\\)1460000000\\\\;\\\", \\\"queue_1\\\\,\\\\ buffers\\\\=\\\\(uint\\\\)186\\\\,\\\\ bytes\\\\=\\\\(uint\\\\)838020\\\\,\\\\ time\\\\=\ \\\(guint64\\\\)1984000002\\\\;\\\" >;" That is immediately looking wrong. I don't know enough about GNOME serialization details to say with confidence what happened here. It gets worse after this is sent through g_strescape and then written to the dot file. Interestingly, dot -Tpng is fine to ignore them it seems. Since the stats are by definition verbose, I decided the best choice to omit them from the dot file, since such details are not of interest there. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/442> 2020-04-20 16:21:10 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst-hotdoc-plugins-scanner.c: * gst/gstbin.c: * gst/gstchildproxy.c: * gst/gstiterator.c: * gst/gstpad.c: * gst/gstpreset.c: * gst/gstregistrychunks.c: * gst/gstsystemclock.c: * gst/parse/grammar.y.in: * libs/gst/base/gstcollectpads.c: * tests/benchmarks/complexity.c: * tests/benchmarks/mass-elements.c: * tests/check/elements/tee.c: * tests/check/gst/gstelement.c: * tests/check/gst/gstelementfactory.c: * tests/check/gst/gstobject.c: * tests/check/gst/gstparamspecs.c: * tests/check/gst/gstsystemclock.c: * tests/check/gst/gsttagsetter.c: * tests/check/gst/gsttocsetter.c: * tests/check/gst/gsttracerrecord.c: * tests/check/pipelines/parse-launch.c: * tests/examples/helloworld/helloworld.c: * tests/examples/netclock/netclock-client.c: * tests/examples/streamiddemux/streamiddemux-stream.c: Use gst_object_unref() / gst_object_clear() instead of the GObject ones To allow the refcounting tracer to work better. In childproxy/iterator these might be plain GObjects but gst_object_unref() also works on them. In other places where it is never GstObject, g_object_unref() is kept. 2020-04-17 11:44:40 +0530 dhilshad <mohddhilshadm@gmail.com> * plugins/elements/gstdownloadbuffer.c: downloadbuffer:fix pushing buffer before stream start event downloadbuffer source pad pushes the first buffer before pushing Stream Start and Segment event, when working in Push mode. Fix:Pushing Stream Start and Segment after coming out of wait for data, and before pushing the buffer to next element. Fixes #534 2020-04-17 07:44:55 +0200 Edward Hervey <edward@centricular.com> * gst/gstregistrychunks.c: gstregistrychunks: Directly set name on features 2020-04-17 07:44:26 +0200 Edward Hervey <edward@centricular.com> * gst/gstobject.c: gstobject: Don't double-notify when setting names If the name is set via the gobject setters, the notificatio will already be emitted. 2020-04-16 11:40:49 +0200 Jan Tojnar <jtojnar@gmail.com> * meson.build: build: Install bash-completion relative to datadir Since bash-completion 2.9, it was no longer possible to override the completionsdir through prefix. [1] In 2.10, the overridability was re-estabilished but this time through datadir variable. [2] This should not really matter except for developers installing the project into a custom prefix or distros using per-package prefixes like NixOS. [1]: https://github.com/scop/bash-completion/commit/81ba2c7e7dfbaefbafa1e8615727c9612e5fb314 [2]: https://github.com/scop/bash-completion/pull/344 2020-04-15 20:27:36 +1000 Matthew Waters <matthew@centricular.com> * gst/gstsystemclock.c: systemclock: introduce a minimum wait time There is not point waiting if the time to wait is less than this platform specific value. The worst case here is GCond usage on windows where the granularity is 1ms. 2020-04-15 17:54:21 +1000 Matthew Waters <matthew@centricular.com> * gst/gst_private.h: * gst/gstclock.c: * gst/gstsystemclock.c: * meson.build: gst/systemclock: wait on each entry individually Problem: multiple aggregator elements (audiomixer, compositor) in a live pipeline use a lot of CPU waiting each other up. This is because of the previously unused clock entry unscheduling during regular operation. Clock entry unscheduling has the potential to wake up every clock entry waiting using the system clock which may be a large number. Solution: Implement waiting per entry and only wakeup the unscheduled entry. While this may be possible using GCond, theoretically GCond only gives us microsecond accuracy and uses relative waits in a number of places. We can unfortunately do better poking at the platform specifics ourselves by using futexes on linux and pthread on other unix. Windows may have a possible implementation using Waitable timers but that is not implemented here and instead falls back to the GCond implementation. GCond waits on Windows is still as accurate as the previous GstPoll-based implementation. 2020-04-14 15:08:47 +1000 Matthew Waters <matthew@centricular.com> * gst/gstsystemclock.c: systemclock: log the object name with all debug logs Simplifies correlating logs with clock instances 2020-04-14 14:48:20 +1000 Matthew Waters <matthew@centricular.com> * gst/gstsystemclock.c: systemclock: move to GCond waiting 2020-04-12 20:33:43 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Fix segfault comparing empty GValueArrays Adding a test 2020-04-08 22:22:48 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstpipeline.c: pipeline: fix base_time selection when flush seeking live When a live pipeline goes to PLAYING, its change_state method is called twice for PAUSED_TO_PLAYING: the first time is from GstElement, when NO_PREROLL is returned, the second is from GstBin, after all async_done messages have been collected. base_time selection is done only the first time, through comparisons with start_time. On the other hand, when this live pipeline gets flush seeked, even though start_time is reset by the sink upon reception of flush_stop(reset_time=TRUE), PAUSED_TO_PLAYING only occurs once, from GstBin, after all async_done messages have been collected. This causes the base_time to be off by <latency>. This commit addresses this by mimicing the behaviour of GstElement on NO_PREROLL, and calling the change_state method manually when the following conditions are met: * The pipeline is live * The target state is PLAYING 2020-04-09 16:38:23 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * plugins/elements/gstmultiqueue.c: multiqueue: Add current-level-{buffers, bytes, time} pad properties To get the current buffers/bytes/time levels of the corresponding internal queue 2020-04-09 13:12:22 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * plugins/elements/gstmultiqueue.c: multiqueue: Add stats property The returned "stats" structure contains, for now, one array called "queues" with one GstStructure per internal queue, containing said queue's current level of bytes, buffers, and time. 2020-04-08 12:09:10 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: * meson_options.txt: Meson: Change extra-checks to feature option and make it yielding 2020-04-08 17:53:17 +1000 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: * tests/check/libs/baseparse.c: baseparse: Don't return more data than asked for in pull_range() Even when pulling a new 64KB buffer from upstream, don't return more data than was asked for in the pull_range() method and then return less later, as that confused subclasses like h264parse. Add a unit test that when a subclass asks for more data, it always receives a larger buffer on the next iteration, never less. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/530 2020-04-06 18:14:12 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstqueue2.c: downloadbuffer, multiqueue, queue2: Fix watermark docs It is not explicitly specified anywhere in the docs that 0% buffering is at low-watermark and 100% buffering is at high-watermark. It was specified only in the sources. 2020-04-02 13:45:48 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Add a guard against getrange functions not filling a caller-provided buffer It's a programming error to not do so and would cause all kinds of problems in the caller that assumed its own buffer to have been filled. 2020-01-31 11:32:10 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gsttask.c: * gst/gsttask.h: * tests/check/gst/gsttask.c: task: Introduce gst_task_resume() API This new API allow resuming a task if it was paused, while leaving it to stopped stated if it was stopped or not started yet. This new API can be useful for callback driver workflow, where you basically want to pause and resume the task when buffers are notified while avoiding the race with a gst_task_stop() coming from another thread. 2020-04-01 15:41:49 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tools/gst-launch.c: gst-launch: go back down to GST_STATE_NULL in one step. Going through each state on the way back down to GST_STATE_NULL can cause deadlocks, for example: gst-launch-1.0 audiotestsrc ! valve drop=true ! autoaudiosink ctrl + C Hangs forever when going to PAUSED, because the "final" state is ASYNC, and the sink blocks waiting for a preroll buffer. Going straight to NULL addresses this issue, and also helps making teardown faster when piping sparse streams to a sync sink. 2020-04-01 02:36:40 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: * tests/check/libs/baseparse.c: baseparse: Fix upstream read caching When running in pull mode (for e.g. mp3 reading), baseparse currently reads 64KB from upstream, then mp3parse consumes typically around 417/418 bytes of it. Then on the next loop, it will read a full fresh 64KB again, which is a big waste. Fix the read loop to use the available cache buffer first before going for more data, until the cache drops to < 1KB. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/518 2020-04-01 02:46:52 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Fix typo 2020-03-31 19:05:30 +0900 Seungha Yang <seungha@centricular.com> * plugins/elements/gstelements_private.c: filesink: Fix for updating the index of memory to write in the next iteration current_buf_mem_idx stands for the index of memory of the corresponding buffer which is scheduled to be written in the next iteration. If all memory objects were scheduled to be written in the current iteration, reset the index to zero so that starting from the first memory object of the next buffer. 2020-03-28 16:20:51 +0900 Seungha Yang <seungha@centricular.com> * plugins/elements/gstelements_private.c: filesink: Fix crash caused by zero-size memory allocation If size of vector is greater than one, we are allocating zero-size memory and trying invalid memcpy operation 2019-11-22 23:55:56 +1100 Jan Schmidt <jan@centricular.com> * gst/gstsegment.c: gstsegment: Refuse instant-rate seeks in gst_segment_do_seek() Elements that pass a seek with INSTANT_RATE flag to gst_segment_do_seek() haven't been updated and we should refuse the seek. 2019-11-22 23:53:59 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbasesrc.c: basesrc: Check the return value of gst_segment_do_seek() Don't assume that a given seek succeeds - check the return result. 2020-03-20 19:28:37 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesink.h: filesink: Add a new full buffer mode to filesink Previously the default and full modes were the same. Now the default mode is like before: it accumulates all buffers in a buffer list until the threshold is reached and then writes them all out, potentially in multiple writes. The new full mode works by always copying memory to a single memory area and writing everything out with a single write once the threshold is reached. 2020-03-20 18:48:52 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstelements_private.c: * plugins/elements/gstelements_private.h: filesink/fdsink: Write 1 iovec directly without copying if there's no writev() support 2020-03-20 18:43:30 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstelements_private.c: * plugins/elements/gstelements_private.h: * plugins/elements/gstfdsink.c: * plugins/elements/gstfilesink.c: fdsink/filesink: Refactor writev() code to prevent stack overflows If buffer lists with too many buffers would be written before, a stack overflow would happen because of memory linear with the number of GstMemory would be allocated on the stack. This could happen for example when filesink is configured with a very big buffer size. Instead now move the buffer and buffer list writing into the helper functions and at most write IOV_MAX memories at once. Anything bigger than that wouldn't be passed to writev() anyway and written differently in the previous code, so this also potentially speeds up writing for these cases. For example the following pipeline would crash with a stackoverflow: gst-launch-1.0 audiotestsrc ! filesink buffer-size=1073741824 location=/dev/null 2020-03-25 20:23:17 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstflowcombiner.c: * tests/check/libs/flowcombiner.c: flowcombiner: passthrough the flow return if there are no pads What may happen is that during the course of processing a buffer, all of the pads in a flow combiner may disappear. In this case, we would return NOT_LINKED. Instead return whatever the input flow return was. 2018-04-10 18:09:18 +0200 Jose Antonio Santos Cadenas <santoscadenas@gmail.com> * gst/gstinfo.h: gstinfo: Check threshold for category from macro This way we can avoid to process parameters if log is not going to be printed. 2020-03-24 15:00:03 +1100 Matthew Waters <matthew@centricular.com> * docs/gst/running.md: docs/running: be consistent with ordering of full-stops inside `` Everywhere else places the period outside. 2020-03-23 12:28:12 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gststructure.c: gststructure: Fix gst_structure_take ownership handling The old code would leave a dangling pointer in oldstr_ptr if two threads attempted to take the same structure into the same location at the same time: 1. First "oldstr == newstr" check (before the loop) fails. 2. Compare-and-exchange fails, due to a second thread completing the same gst_structure_take. 3. Second "oldstr == newstr" check (in the loop) succeeds, loop breaks. 4. "oldstr" check succeeds, old structure gets freed. 5. oldstr_ptr now contains a dangling pointer. This shouldn't happen in code that handles ownership sanely, so check that we don't try to do this and complain loudly. Also simplify the function by using a do-while loop, like gst_mini_object_take. https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/413 2020-03-23 12:36:01 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gst_private.h: gstdeviceproviderfactory: Remove volatile from provider storage Avoids a few compiler warnings: ../subprojects/gstreamer/gst/gstdeviceproviderfactory.c: In function ‘gst_device_provider_factory_finalize’: ../subprojects/gstreamer/gst/gstdeviceproviderfactory.c:96:12: warning: assignment discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-qualifiers] 96 | provider = g_atomic_pointer_get (&factory->provider); | ^ ../subprojects/gstreamer/gst/gstdeviceproviderfactory.c: In function ‘gst_device_provider_factory_get’: ../subprojects/gstreamer/gst/gstdeviceproviderfactory.c:276:19: warning: assignment discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-qualifiers] 276 | device_provider = g_atomic_pointer_get (&newfactory->provider); | ^ ../subprojects/gstreamer/gst/gstdeviceproviderfactory.c:309:21: warning: assignment discards ‘volatile’ qualifier from pointer target type [-Wdiscarded-qualifiers] 309 | device_provider = g_atomic_pointer_get (&newfactory->provider); | https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/414 2020-03-22 09:47:35 +0100 Ondřej Hruška <ondra@ondrovo.com> * gst/gstdatetime.c: * tests/check/gst/gstdatetime.c: gstdatetime: Add missing NULL check to gst_date_time_new_local_time Also add a unit test for this. Fixes #524 2020-03-20 09:11:02 +0100 Edward Hervey <edward@centricular.com> * gst/gstregistrychunks.c: * meson.build: registrychunks: Use strnlen if available When this `_strnlen` internal method was added, strnlen (in glibc) was not available yet (appeared in 2.10 it was released that same year). If available, use the much more optimized strnlen 2020-03-20 16:32:07 +0200 Sebastian Dröge <sebastian@centricular.com> * meson.build: filesink: Check for sys/uio.h so we can actually use writev() 2020-03-19 11:20:14 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Avoid expensive fallback on intersection The type checks at the end of `gst_value_intersect` to call the flagset intersection are relatively expensive. If we already know that: * There was a compare function but it didn't return GST_VALUE_EQUAL * AND none of the registered intersect functions failed Then we know they can't intersect and can return early. Trims ~20% of the instruction calls 2020-03-18 09:43:27 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.c: gstvalue: Optimize some list<=>list functions For subtracting a list from another, the previous implementation would do a double subtraction of one from another (which would create temporary arrays/values which would then be discarded). Instead iterate and do the comparision directly. For intersecting a list with another, we can directly iterate both at once and therefore avoid doing a *full* check of all values of the list against all other values of the list. 2020-03-18 09:39:35 +0100 Edward Hervey <edward@centricular.com> * gst/gststructure.c: * gst/gstvalue.c: * gst/gstvalue.h: gstvalue: Inline GstValueList/GstValueArray This tries to inline as much as possible array/list and its contents in order to avoid double allocation/freeing. This also improves the locality of data. The internal value is still API/ABI compatible with the *public* GArray structure. This allows READ-ONLY backwards compatibility with any external users that assume that the content of a list/array value is backed by a GArray. 2020-03-03 15:36:26 +0100 Miguel Paris <mparisdiaz@gmail.com> * gst/gstbufferlist.c: * tests/check/gst/gstbufferlist.c: bufferlist: foreach: always remove as parent if buffer is changed In case the buffer is not writable, the parent (the BufferList) is not removed before calling func. So if it is changed, the parent (the BufferList) of the previous buffer should be removed after calling func. 2020-03-18 11:10:13 +0100 Edward Hervey <edward@centricular.com> * gst/gstbufferlist.c: bufferlist: Add check for overflow 2020-03-10 18:14:57 +0100 Edward Hervey <edward@centricular.com> * gst/gststructure.c: gststructure: Optimize pre-allocation of structures For all the structure creation using valist/varargs we calculate the number of fields we will need to store. This ensures all callers will end up with a single allocation. 2020-03-10 18:13:09 +0100 Edward Hervey <edward@centricular.com> * gst/gststructure.c: gststructure: Inline array and contents Instead of having 3 allocations: * One for GstStructure * One for GArray * One for the array *within* GArray We try to limit this to a single allocation, inlining everything. This reduces the number of micro-allocations and improves locality of data access. 2020-03-13 16:41:52 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Handle NULL caps for comparisons Having a NULL caps in a GValue is legal and we should handle it properly for comparisons. 2020-03-13 12:14:08 +0100 Stéphane Cerveau <scerveau@collabora.com> * plugins/elements/gstidentity.c: identity: Fix a minor leak using meta_str 2020-03-11 15:19:45 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Refactor parsing lists to allow trailing comas Before that commit `{test, }` wouldn't be accepted as an array because of the trailing coma, the commit fixes that. At the same time, the code has been refactored to avoid special casing the first element of the list, making `{,}` or `<,>` valid lists. 2020-02-10 18:29:41 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * gst/gstclock.h: clock: remove documentation link on GTimeVal Looks like it's been removed from glib.devhelp2 on Fedora 31. Fix #508 2020-03-11 22:39:35 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstbasetransform.c: basetransform: allow not passthrough if generate_output is implemented This allows an element to not require implementing transform or transform_ip. 2020-03-09 21:32:28 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstclocksync.c: clocksync: Use g_cond_signal() instead of g_cond_broadcast() There can only be a single waiter: on the streaming thread. 2020-03-09 21:31:48 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstidentity.c: identity: Use g_cond_signal() instead of g_cond_broadcast() There can only be a single waiter: on the streaming thread. 2020-03-09 20:27:58 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstidentity.c: identity: Unblock condition variable on FLUSH_START ... and immediately return FLUSHING from the streaming thread instead of waiting potentially forever. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/516 2020-03-09 15:17:08 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Don't start the system clock at 0 on Windows We kept the start time around and subtracted it everywhere for "easy of debugging", but we don't do anything like this anywhere else and it only complicates the code unnecessarily. 2020-03-09 15:16:00 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Don't divide by zero on Windows if high performance timers are not available 2020-03-07 11:09:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstcaps.c: * tests/check/gst/gstcaps.c: caps: Don't assert in fixate() on EMPTY/ANY caps and document EMPTY/ANY behaviour on more functions fixate() will return empty caps if it gets empty caps passed and assert early if any caps are provided as there's no meaningful way of fixating any caps. truncate() and simplify() will return the input caps in case of any/empty caps as before, but slightly optimized and as documented behaviour. Also add tests for this and a few other operations behaviour on empty/any caps. 2020-03-04 22:13:12 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: gstaggregator: fix the prototype of sink_event_pre_queue This is not an API breakage, as implementors are already expected to return a GstFlowReturn 2020-03-03 18:49:36 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch.c: gst-launch: Follow up to missing s/g_print/gst_print/g Required to avoid broken log string on Windows but missed in the commit of 493a3261a9757b5ade7aec289eb07221966f9eed 2020-02-29 19:00:44 +0900 Seungha Yang <seungha.yang@navercorp.com> * tests/check/gst/gstinfo.c: tests: info: Fix thread-id pattern matching on Windows The format modifier for thread-id prints hex value without "0x" prefix on Windows. 2020-01-26 00:56:44 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/gstrusage.c: * plugins/tracers/gstrusage.h: tracers: rusage: use thread-local storage for per-thread stats .. instead of looking things up by thread id from a GHashTable, which also happens to have no locking around insertion/lookup. 2020-01-26 00:32:18 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/gstrusage.c: tracers: rusage: fix minor string leak in constructor 2019-11-02 11:49:25 +0100 Johan Bjäreholt <johan@bjareho.lt> * tools/gst-stats.c: gst-stats: Fix missing NULL checks gst-inspect-1.0 segfaults on tracing logs where it fails to find element stats. So on the pipelines where we get the following WARNING during execution will afterwards crash with a segfault as the g_ptr_array has a index for it but it is just a NULL pointer. WARN default gst-stats.c:444:do_message_stats: no element stats found for ix=X An example of an pipeline which can reproducibly create a trace log where this occurs would be this GST_DEBUG="GST_TRACER:7" GST_TRACERS="stats;rusage;latency" gst-launch-1.0 videotestsrc num-buffers=120 ! autovideosink &> trace.log gst-stats-1.0 trace.log 2020-02-24 15:24:44 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesink.c: basesink: Improve clarity of latency query maths debug message Add the equation to the debug message to make it easier for non-GStreamer experts to understand why their pipeline has latency. 2020-02-26 17:20:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/misc/netclock-replay.c: tests: Maintain compatibility with GLib 2.48 That's the minimum version of GLib we require right now. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/514 2020-02-25 04:47:35 +1100 Jan Schmidt <jan@centricular.com> * docs/plugins/gst_plugins_cache.json: * plugins/elements/gstclocksync.c: * plugins/elements/gstclocksync.h: * plugins/elements/gstelements.c: * plugins/elements/meson.build: * tests/check/elements/clocksync.c: * tests/check/meson.build: clocksync: Add new clocksync element The clocksync element is a generic element that can be placed in a pipeline to synchronise passing buffers to the clock at that point. This is similar to 'identity sync=true', but because it isn't GstBaseTransform-based, it can process GstBufferLists without breaking them into separate GstBuffers 2020-02-26 22:29:43 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-inspect.c: gst-inspect: Add define guard for g_log_writer_supports_color() g_log_writer_supports_color() was introduced since GLib 2.50.0 which is slightly higher version than our minimum required GLib version. 2020-02-25 19:13:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/misc/netclock-replay.c: * tools/gst-stats.c: Don't use glib format modifiers with sscanf or printf We do not have a way to know the format modifiers to use with string functions provided by the system. `G_GUINT64_FORMAT` and other string modifiers only work for glib string formatting functions. We cannot use them for string functions provided by the stdlib. See: https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description F.ex.: ``` ../tools/gst-stats.c:921:11: error: too many arguments for format [-Werror=format-extra-args] printf ("Number of Buffers passed: %" G_GUINT64_FORMAT "\n", num_buffers); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../tools/gst-stats.c:922:11: error: unknown conversion type character 'l' in format [-Werror=format=] printf ("Number of Events sent: %" G_GUINT64_FORMAT "\n", num_events); ^~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/gtypes.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/galloca.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib.h:30, from ../gst/gst.h:27, from ../tools/tools.h:28, from ../tools/gst-stats.c:30: /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here #define G_GUINT64_FORMAT "llu" ^ ``` and ``` ../tests/misc/netclock-replay.c: In function 'main': ../tests/misc/netclock-replay.c:98:23: error: unknown conversion type character 'l' in format [-Werror=format=] if (sscanf (line, "%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT " %" ^~~ In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib.h:30, from ../tests/misc/../../libs/gst/net/gstntppacket.c:38, from ../tests/misc/netclock-replay.c:31: /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here #define G_GUINT64_FORMAT "llu" ^ ``` This is needed for upgrading glib inside Cerbero which builds with `-Werror` on Windows: https://gitlab.freedesktop.org/gstreamer/cerbero/merge_requests/419 2020-02-19 18:49:07 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstdebugutils.c: debugutils: skip "parent" property for elements when dumping pipeline graph Seems unnecessary to print the parent name for every element in the pipeline graph, it's clear from the graph what the parent element is and it's hard to imagine a case where this is useful info rather than just distracting spam. So far this was only done for pads, but we should just do it for everything. 2019-12-19 11:28:13 +0100 Matus Gajdos <matuszpd@gmail.com> * libs/gst/base/gstbaseparse.c: baseparse: fix memory leak A buffer to be skipped wasn't unref'd in gst_base_parse_chain(). Fixes #406 2020-01-27 14:46:18 -0500 Olivier Crête <olivier.crete@collabora.com> * plugins/tracers/gstleaks.c: leak tracer: Initialize GValue 2020-02-13 17:53:29 -0300 Thibault Saunier <tsaunier@igalia.com> * plugins/tracers/gstleaks.c: leaks: Do not trace refs for object we do not follow When the user sets filters, we should not trace ref counts of object that are not traced. This optimizes the tracer by potentially avoiding generating useless backtraces. 2020-02-10 16:35:06 -0600 Zebediah Figura <z.figura12@gmail.com> * libs/gst/base/gstbaseparse.c: baseparse: Set the private duration before posting a duration-changed message Otherwise an application cannot rely on a subsequent call to e.g. gst_pad_query_duration() succeeding. 2020-02-12 12:32:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Make setting/replacing/clearing the sync handler thread-safe Previously we would use the object lock only for storing the sync handler and its user_data in a local variable, then unlock it and only then call the sync handler. Between unlocking and calling the sync handler it might be unset and the user_data be freed, causing it to be called with a freed pointer. To prevent this add a refcounting wrapper struct around the sync handler, hold the object lock while retrieving it and increasing the reference count and only actually free it once the reference count reaches zero. As a side-effect we can now also allow to actually replace the sync handler. Previously it was only allowed to clear it after initially setting it according to the docs, but the code still allowed to clear it and then set a different one. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/506 2020-02-13 15:38:15 +0900 Seungha Yang <seungha.yang@navercorp.com> * docs/gst/running.md: docs: Fix bold markdown syntax for GST_DEBUG_NO_COLOR Fixing markdown syntax 2020-01-27 11:58:57 +0000 Henry Wilkes <hwilkes@igalia.com> * gst/gstcaps.c: * tests/check/gst/gstcaps.c: caps: keep ANY caps empty internally Keep the ANY caps empty internally when appending and merging caps/structures. Previously, an ANY caps could end up containing internal structures, which could be fetched by the user, and gave the caps a non-zero length. Also, made sure that `gst_caps_set_features_simple` frees the features if caps is empty. 2020-01-21 19:02:48 +0000 Henry Wilkes <hwilkes@igalia.com> * gst/gstcaps.c: * tests/check/gst/gstcaps.c: caps: fix is_strictly_equal Fixed gst_caps_is_strictly_equal() to take into account whether either of the caps are ANY caps. Previously, two ANY caps could be considered not strictly equal if one of them still contained some remnant *internal* structure (this can happen if an ANY caps has emerged from an append or merge operation). Also, an ANY caps with no remnant internal structures was considered strictly equal to an EMPTY caps. Similarly, a non-ANY caps was considered strictly equal to an ANY caps if its remnant internal structures happened to match. Also changed gst_caps_is_fixed to take into account that an ANY caps should not be considered fixed even if it contains a single remnant internal fixed structure. This affects gst_caps_is_equal(), which uses a separate method if both caps are fixed. Previously, this meant that a non-ANY fixed caps was considered equal to an ANY caps if it contained a single matching remnant internal structure. Added some tests for these two equality methods, which covers the above examples, as well as asserts existing behaviour. Fixes #496 2020-02-10 12:58:47 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasetransform.c: * libs/gst/base/gstbasetransform.h: basetransform: Make gst_base_transform_reconfigure() public This has the same function as the negotiate() functions in various other base classes and is required to be able to completely re-implement submit_input_buffer() in subclasses. 2020-01-07 17:12:54 -0300 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbaseparse.c: baseparse: Don't set meaningless buffer dts from segment->start When we do not have any information about DTSs we shouldn't try to make them up, moreover after seeking `segment->start` has nothing to do with the next buffer timing (and is probably after the actual buffer timestamp) and since, since https://gitlab.freedesktop.org/gstreamer/gstreamer/commit/fa8312472f08d468677d188d5cf1ad52c5b5b0a0 we do: ``` if (buffer->dts > buffer->dts) buffer->pts = buffer->dts ``` we end up setting `buffer->pts = segment->start` which is plain broken and leads to downstream decoder accept the first buffer as it will be inside the segment (its pts==segment->start) which basically means accurate seeking behaves mostly the same way as keyframe seeks. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/492 2019-12-27 12:36:10 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/gstsystemclock.c: * meson.build: systemclock: No need to check for CLOCK_TAI in the meson POSIX defines CLOCK_MONOTONIC to always be a macro, so I think it's safe to assume that CLOCK_TAI will also be. 2019-12-13 11:07:40 -0800 Ederson de Souza <ederson.desouza@intel.com> * gst/gstsystemclock.c: * gst/gstsystemclock.h: * meson.build: GstSystemClock: Add GST_CLOCK_TYPE_TAI GST_CLOCK_TYPE_TAI is GStreamer abstraction for CLOCK_TAI. Main motivation for this patch is support for transmission offloading features - when network packets are timestamped with the time they are deemed to be actually transmitted. Linux API for that requires that time to be in CLOCK_TAI coordinate. With GST_CLOCK_TYPE_TAI, applications can use CLOCK_TAI directly on their pipelines, avoiding the need to cross timestamp packet times. By leveraging system's CLOCK_TAI, applications also don't need to keep track of leap seconds - less burden for them. Just keep system's CLOCK_TAI accurate and use it. 2020-01-24 23:56:32 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Don't consider having a group-id or being STREAM_START if we have not a single STREAM_START message This would cause us to set GST_GROUP_ID_INVALID as group-id in the aggregated STREAM_START message if there are no sinks at all or none of them have a STREAM_START message, which is simply wrong. If we have not a single STREAM_START message then the bin should not be considered STREAM_START. 2020-01-24 17:52:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: * gst/gstmessage.c: event/message: Don't allow setting invalid group ids They are optional on STREAM_START messages/events but if available should have at least a valid value. For STREAM_GROUP_DONE events don't allow creating it with an invalid group id as this does not make any sense. 2020-01-23 19:27:14 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Initialize source pad segment position to -1 when resetting This allows start-time selection in gst_aggregator_pad_chain_internal() to actually work as that code assumes it to be -1 for actually overriding the value. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/500 2020-01-09 20:07:06 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gstbin.c: bin: Fix deep-element-removed log message child and bin were switched. https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/354 2019-09-03 17:14:49 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstmessage.h: docs: Document the new 'redirect-location' error message detail field 2014-12-30 11:48:26 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/parse/grammar.y.in: * gst/parse/parse.l: * tests/check/pipelines/parse-launch.c: * tools/gst-launch-1.0.1: parse: add support for presets Add new parse syntax: @preset="<preset-name>" to load presets. Fixes #86 2019-12-26 15:08:09 +0100 Mathieu Duponchelle <mathieu@centricular.com> * tools/gst-launch.c: gst-launch: handle ERROR messages in the sync handler Errors causing the pipeline to fail going from NULL to PAUSED were not displayed, and the pipeline was not dumped either in those cases. In addition, dumping the pipeline from the sync handler means the dump matches exactly the state of the pipeline at the moment the error was posted. 2019-12-22 21:13:00 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-inspect.c: gst-inspect: Increase array size for printing rank name Now the rank value can be MAX_INT (2147483647) 2019-08-15 20:56:40 +0900 Seungha Yang <seungha.yang@navercorp.com> * docs/gst/running.md: * gst/gst.c: * gst/gst_private.h: * gst/gstpluginfeature.c: pluginfeature: Allow updating initial rank of plugin feature Introducing "GST_PLUGIN_FEATURE_RANK" environment variable in order for users to adjust rank of plugin(s) via environment. A "feature" and "rank" key-value pair should be separable by ":", and each key-value pair is recognized per "," delimiters. The rank can be a numerical value or one of pre-defined rank values such as "NONE", "MARGINAL", "SECONDARY", and "PRIMARY" in case-insensitive manner. In addition to pre-defined { NONE, MARGINAL, SECONDARY, PRIMARY }, "MAX" can be passed to key value used to ensure having a higher rank than other plugin features. Example) - GST_PLUGIN_FEATURE_RANK=qtdemux:256,h264parse:NONE Set rank of qtdemux plugin to 256 (primary) and 0 (none) for h264parse. 2019-08-30 00:23:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstinfo.c: * gst/gstinfo.h: * tests/check/gst/gstinfo.c: gstinfo: Add new API for getting debug log lines If you're using a custom log handler, you had to reverse-engineer the debug log format and create your own format function. Now, you can call `gst_debug_log_get_line()` and it will return a string (without ANSI escape color codes) representation instead. This is useful in situations when you need to log the ordinary gst_debug log to a resource that can't be opened as a `FILE` handle. Also includes a test. 2019-12-20 14:01:02 +0100 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/gst/gstsystemclock.c: tests: remove system-dependent tests We now have GstTestClock-based tests that validate the same logic, without inducing spurious timing failures / overly relying on sleeps. Fixes: #346 Fixes: #347 Fixes: #348 Co-authored by: Thibault Saunier <tsaunier@igalia.com> 2019-12-20 10:53:21 -0300 Thibault Saunier <tsaunier@igalia.com> * tests/check/libs/gsttestclock.c: tests-clock: Fix race in test_late_crank There was a case where we started waiting on the clock before setting the clock time, leading to the wait succeeding instead of being late: gsttestclock.c:1073:F:testclock:test_late_crank:0: '1 * GST_SECOND' (1000000000) is not equal to 'context.jitter' (-4000000000) Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/426 Co-authored by: Mathieu Duponchelle <mathieu@centricular.com> 2019-11-15 15:49:32 +0100 Niels De Graef <niels.degraef@barco.com> * gst/gstbin.c: * gst/gstbin.h: * tests/check/gst/gstbin.c: bin: Add method to find elements by factory name A common use case of a dynamically built pipeline is that you want to (conditionally) find a certain element, e.g. the `rtpbin`s in a `uridecodebin`. If that element has a fixed name inside its parent bin (and only has a single instance) this can be easily done by `gst_bin_get_by_name()`. If there are multiple instances of the element however, you can only use `gst_bin_iterate_all_by_interface()`, but this doesn't work if you don't have the specific `GType` (which is often the case, due to plugins being dynamically loaded). As such, another fallback could be to use the well-known name of the element's factory (in case of our example, this is of course `"rtpbin"`). 2019-12-18 15:57:35 +0100 Stéphane Cerveau <scerveau@collabora.com> * gst/gstevent.c: * libs/gst/net/gstnettimeprovider.c: gstreamer: use of g_value_dup_string Use helper method to get string from GValue. 2019-12-13 18:21:32 +0100 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/pipelines/parse-launch.c: tests: fix pipelines_parse_launch.delayed_link flakiness Fixes #345 There were two causes for the flakiness, one much rarer than the other. The test sets up a source with a sometimes pad added during the transition of a wrapper bin from READY to PAUSED. It runs 4 iterations, the last of which makes it so the negotiation fails. In that case, the intention as correctly presented by the following comment: /* [..] ie, the pipeline should create ok but fail to change state */ However the implementation of run_delayed_test was neither calling get_state on the pipeline (it called it on the wrapper bin), nor checking that the return of get_state was FAILURE (it actually checked that it was not). This led to an obvious race condition, and was fixed by calling get_state on the pipeline, then checking that in this specific case (expect_link == FALSE), the state change has actually failed. The second, rarer race condition is at set_state time. When we don't expect the link to succeed, the return of set_state may either be FAILURE or ASYNC, depending on timing. This was fixed by taking expect_link into account when checking the return value of set_state. Co-authored by: Thibault Saunier <tsaunier@igalia.com> 2019-12-12 11:39:56 +0100 Peter Seiderer <ps.report@gmx.net> * gst/gstpluginloader.c: pluginloader: handle fsync interrupted by signal (EINTR) According to [1] EINTR is a possible errno for fsync(), so handle it as all other EINTR (do/while(errno == EINTR)). Signed-off-by: Peter Seiderer <ps.report@gmx.net> 2019-12-12 11:37:56 +0100 Peter Seiderer <ps.report@gmx.net> * gst/gstregistrybinary.c: registry: handle fsync interrupted by signal (EINTR) According to [1] EINTR is a possible errno for fsync(), so handle it as all other EINTR (do/while(errno == EINTR)). Signed-off-by: Peter Seiderer <ps.report@gmx.net> 2019-12-12 11:07:07 +0100 Peter Seiderer <ps.report@gmx.net> * plugins/elements/gstfilesink.c: filesink: handle fsync interrupted by signal (EINTR) According to [1] EINTR is a possible errno for fsync() and it happens in reality on linux (video writing via splitmuxsink with robust muxing enabled on a cifs mounted network share), so handle it as all other EINTR (do/while(errno == EINTR)). Fixes: GError.message: Error while writing to file "vidoe_001.mp4". GError.domain: 2372 GError.code: 10 from: FileSink debug: gstfilesink.c(849): gst_file_sink_render (): /GstPipeline:Pipeline/GstSplitMuxSink:SplitMuxSink/GstBin:QueueBin/GstFileSink:FileSink: Interrupted system call Signed-off-by: Peter Seiderer <ps.report@gmx.net> 2019-12-10 17:06:02 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/gstsystemclock.c: * libs/gst/base/gstcollectpads.c: * tests/check/elements/tee.c: Remove deprecated GTimeVal GTimeVal won't work past 2038 2019-12-10 13:31:50 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstdevice.c: * gst/gstelementfactory.c: device, elementfactory: relax floating requirement Using g_assert() is a bit too extreme, as it will abort the whole program unless G_DISABLE_ASSERTS is true. Switch to g_critical() 2019-12-10 09:42:37 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/check/gstcheck.c: gstcheck: remove bogus refcount asserts As soon as gstcheck potentially calls out to code it does not control, such as gst_element_request_pad, all assertions about pad refcounts go out the window. 2019-12-06 11:40:44 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: fix logging in new update_segment API 2019-12-05 13:44:33 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add method to update srcpad segment 2019-12-05 09:54:32 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Clean up #ifdefs to compile with debugging enabled in all combinations Thanks to Roland Jon for finding this. 2019-12-04 20:12:02 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstdevice.c: * gst/gstelementfactory.c: device, elementfactory: don't enforce floating status The reference we receive when calling g_object_new should be floating, but we can't force it at our level. Switch from g_object_force_floating() to a simple assertion. See https://gitlab.freedesktop.org/gstreamer/gst-python/issues/27 2019-06-19 13:45:54 +0200 Tulio Beloqui <tulio.beloqui@pexip.com> * libs/gst/check/gsttestclock.c: * libs/gst/check/gsttestclock.h: testclock: added single clock id process function Co-authored-by: Havard Graff <hgr@pexip.com> 2019-10-21 17:56:14 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Use new GSource dispose function Without this it is possible that we have a GSource with reference count 0 stored in the GstBus that is currently in the process of being destroyed. gst_bus_remove_watch() might then access it, increase its reference count to 1 again, call GSource API on it and then unref it, which will then finalize it a second time. The dispose function allows the GSource to be resurrected until it returned so the above would be safe now. This caused some spurious crashes during shutdown in various applications. 2019-12-03 15:40:59 -0500 Xavier Claessens <xavier.claessens@collabora.com> * meson_options.txt: * plugins/meson.build: * plugins/tracers/meson.build: Meson: Add 'coretracers' feature option This was the only plugin still built when using -Dauto_features=disabled, besides coreelements. 2019-12-03 11:23:01 +0000 Håvard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: gstharness: don't push the event to the queue before processing The application might pull and unref it by the time the code gets around to check it for EOS. 2019-11-28 13:09:45 +0200 Vivia Nikolaidou <vivia@ahiru.eu> * libs/gst/base/gstbaseparse.c: baseparse: Don't copy invalid DTS to the PTS We were checking to make sure the buffer's DTS wouldn't be after its PTS. However, the check would also trigger when DTS is NONE, which is e.g. in the case of some broken cameras. Fixes #470 2019-11-27 15:47:32 +0100 Edward Hervey <bilboed@bilboed.com> * plugins/tracers/gstlatency.c: tracers: Don't leak temporary GstStructure CID: 1455462 2018-11-21 16:14:58 +0100 Edward Hervey <edward@centricular.com> * gst/gstbuffer.c: GstBuffer: size-related optimization Avoid calling generic function when it's possible to directly return/get sizes 2018-11-21 16:13:48 +0100 Edward Hervey <edward@centricular.com> * gst/gstbuffer.c: GstBuffer: Inline fast-path for merged memory 2019-11-27 09:41:36 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstparse.c: docs: mention gst_parse_bin_from_description() in gst_parse_launch() docs 2019-11-22 16:04:20 +0100 Linus Svensson <linussn@axis.com> * gst/gstdatetime.c: * gst/gstdatetime.h: * tests/check/gst/gstdatetime.c: datetime: Add constructor for timestamps in microseconds 2019-10-11 17:33:42 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * libs/gst/base/gstbaseparse.c: baseparse: Make sure PTS >= DTS If, for example, we are accumulating rounding errors from the buffer duration when calculating the PTS/DTS, it can happen that the buffer thinks it should be presented before it's decoded. In that case we just clamp the DTS. 2019-11-18 00:15:31 +0000 Stéphane Cerveau <scerveau@collabora.com> * gst/gstbuffer.h: gstbuffer: update documentation remove unclear documentation about GST_BUFFER_FLAG_MARKER 2019-11-12 11:24:45 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch-1.0.1: * tools/gst-launch.c: gst-launch: Disable printing current position by default when stdout is not a tty ... and add new option to force-enable printing position even if stdout is not a tty. 2019-11-03 12:55:13 +0100 Havard Graff <havard.graff@gmail.com> * gst/gststructure.c: * gst/gststructure.h: structure: add gst_structure_take (╯°□°)╯︵ ┻━┻ 2019-08-20 13:57:09 +0200 Tulio Beloqui <tulio.beloqui@pexip.com> * libs/gst/check/gstharness.c: * tests/check/libs/gstharness.c: harness: fixed race condition on forward pad while forwarding sticky events to sink harness Co-authored-by: Camilo Celis <camilo@pexip.com> Co-authored-by: Havard Graff <hgr@pexip.com> 2019-11-12 19:15:34 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: hotdoc: Add missing json escaping Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/50 2019-11-12 15:19:28 +0900 Wonchul Lee <w.lee@lge.com> * gst/gstevent.h: event: Fix gir warning It fixes below gir warnings. ../subprojects/gstreamer/gst/gstevent.c:2246: Warning: Gst: gst_event_new_instant_rate_sync_time: unknown parameter 'rate_multiplier' in documentation comment, should be 'rate' ../subprojects/gstreamer/gst/gstevent.c:2296: Warning: Gst: gst_event_parse_instant_rate_sync_time: unknown parameter 'rate_multiplier' in documentation comment, should be 'rate' 2019-08-26 12:48:28 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/parse/grammar.y.in: * gst/parse/meson.build: gst/parse: define pure-parser depending on bison version After release bison 2.5 the declaration %pure-parser was deprecated in favor of %define api.pure Nonetheless, until bison 3.4, the declaration was treated as backward compatibility, but now bison shows a warning: warning: deprecated directive, use ‘%define api.pure’ The patch's approach is to handle both directives according with the used bison's version, by string replacement at source configuration stage. 2019-02-21 13:29:31 +0100 Nayana Topolsky <nayana.topolsky@streamunlimited.com> * gst/gstpad.c: pad: clear sticky event tag upon stream-start When playing gapless there were situations when some sticky events like tags were stuck at some pad and then revived much later. Therefore it is better to clear them upon stream-start. Fixes #360 2019-05-30 22:29:23 +0900 Seungha Yang <seungha.yang@navercorp.com> * gst/gsttaglist.h: taglist: Fix broken empty set character in code Previous one was not a valid ASCII empty set character. 'tig' and 'git log -p' couldn't represent it as expected. 2019-05-30 20:53:34 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch-1.0.1: * tools/gst-launch.c: gst-launch: Add support printing current position of pipeline By default, gst-launch will print the current position of pipeline (with duration if available). To disable it, use "--no-position" option. 2019-05-29 20:22:54 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch.c: gst-launch: Port to the direct use of GMainLoop ... instead of custom event loop. This can make it easy to use GMainLoop related APIs in code. 2019-05-29 20:24:06 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch.c: gst-launch: Remove meaningless global variable 2019-02-07 23:59:51 +1100 Jan Schmidt <jan@centricular.com> * gst/gstpipeline.c: pipeline: Instant rate change handling Implement aggregation of INSTANT_RATE_REQUEST messages and sending of INSTANT_RATE_SYNC_TIME events. 2018-05-15 18:42:25 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Add support for instant-rate-change events Post instant-rate-request message when receiving an instant-rate-change event, and handle the incoming instant-rate-sync-time events from the pipeline. 2018-05-14 23:14:24 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: * gst/gstevent.h: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gstquark.c: * gst/gstquark.h: event/message: Add new instant-rate-sync-time event and instant-rate-request message 2018-05-09 15:28:13 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: * gst/gstevent.h: * gst/gstquark.c: * gst/gstquark.h: * gst/gstsegment.h: event: Add new GST_EVENT_INSTANT_RATE_CHANGE and GST_SEEK_FLAGS_INSTANT_RATE_CHANGE A seek with that flag set must be non-flushing, not change the playback direction and start/stop position. A seek handler will then send the new GST_EVENT_INSTANT_RATE_CHANGE event downstream for downstream elements to immediately apply the new playback rate before the new in-band segment event arrives. 2019-11-02 15:06:28 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/gstelementfactory.c: * gst/gstelementfactory.h: elementfactory: add GST_ELEMENT_FACTORY_TYPE_HARDWARE This new symbol matches with the elements within "Hardware" class. 2019-10-31 11:06:48 +0100 Niels De Graef <niels.degraef@barco.com> * plugins/elements/gstqueue2.c: queue2: Use g_object_notify_by_pspec `g_object_notify()` actually takes a global lock to look up the `GParamSpec` that corresponds to the given property name. It's not a huge performance hit, but it's easily avoidable by using the `_by_pspec()` variant. 2019-10-25 01:41:27 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttee.c: tee: First deactivate the pad and then remove it when releasing pads This reverts a96002bb28c21b30fb9338a4620ad20504c70aa5, which is not necessary anymore. If we release the pad after removing it then none of the deactivation code will actually be called because the pad has no parent anymore, and we require a parent on the pad for deactivation to happen. This can then, among other things, cause a streaming thread to be still stuck in a pad probe because the pad was never flushed, and waiting there forever because now the pad will actually never be flushed anymore. 2019-10-25 01:39:50 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttee.c: tee: Check for the removed pad flag also in the slow pushing path If a pad is currently being released we don't want to forward the FLUSHING flow return but instead consider it as NOT_LINKED. FLUSHING would also cause upstream to be FLUSHING. This part was missed in a3c4a3201a705eb1934ceeea34d1ca42d4571c07 and resulted in a different (and wrong) workaround in a96002bb28c21b30fb9338a4620ad20504c70aa5. 2019-10-25 01:39:05 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttee.c: tee: Lock mutex before reading the removed flag of the pads Otherwise we're not guaranteed to read the very latest value that another thread might've written in there when the pad was released, and could instead work with an old value. 2019-09-30 11:34:51 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Drop need-context messages without source instead of crashing 2019-10-17 12:13:35 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: build gir even when cross-compiling if introspection was enabled explicitly This can be made to work in certain circumstances when cross-compiling, so default to not building g-i stuff when cross-compiling, but allow it if introspection was enabled explicitly via -Dintrospection=enabled. Fixes #454 and #381. 2019-06-09 01:34:04 +0100 Tim-Philipp Müller <tim@centricular.com> * .gitignore: * .gitmodules: * Makefile.am: * README: * TODO: * autogen.sh: * common: * configure.ac: * data/Makefile.am: * data/bash-completion/helpers/.gitignore: * docs/.gitignore: * docs/plugins/.gitignore: * docs/random/.gitignore: * docs/random/autotools: * docs/random/omega/testing/.gitignore: * gst/.gitignore: * gst/Makefile.am: * gst/parse/.gitignore: * gst/parse/Makefile.am: * gst/printf/Makefile.am: * libs/Makefile.am: * libs/gst/Makefile.am: * libs/gst/base/.gitignore: * libs/gst/base/Makefile.am: * libs/gst/check/.gitignore: * libs/gst/check/Makefile.am: * libs/gst/check/libcheck/Makefile.am: * libs/gst/controller/.gitignore: * libs/gst/controller/Makefile.am: * libs/gst/helpers/.gitignore: * libs/gst/helpers/Makefile.am: * libs/gst/net/.gitignore: * libs/gst/net/Makefile.am: * m4/.gitignore: * m4/Makefile.am: * m4/check-checks.m4: * pkgconfig/.gitignore: * pkgconfig/Makefile.am: * plugins/Makefile.am: * plugins/elements/.gitignore: * plugins/elements/Makefile.am: * plugins/tracers/.gitignore: * plugins/tracers/Makefile.am: * po/.gitignore: * po/Makevars: * po/POTFILES: * po/README: * po/remove-potcdate.sin: * scripts/create-uninstalled-setup.sh: * scripts/five-bugs-a-day.pl: * scripts/git-update.sh: * scripts/gst-uninstalled: * stamp.h.in: * tests/.gitignore: * tests/Makefile.am: * tests/benchmarks/.gitignore: * tests/benchmarks/Makefile.am: * tests/check/.gitignore: * tests/check/Makefile.am: * tests/check/elements/.gitignore: * tests/check/generic/.gitignore: * tests/check/gst/.gitignore: * tests/check/libs/.gitignore: * tests/check/pipelines/.gitignore: * tests/examples/Makefile.am: * tests/examples/adapter/.gitignore: * tests/examples/adapter/Makefile.am: * tests/examples/controller/.gitignore: * tests/examples/controller/Makefile.am: * tests/examples/helloworld/.gitignore: * tests/examples/helloworld/Makefile.am: * tests/examples/memory/.gitignore: * tests/examples/memory/Makefile.am: * tests/examples/netclock/.gitignore: * tests/examples/netclock/Makefile.am: * tests/examples/ptp/.gitignore: * tests/examples/ptp/Makefile.am: * tests/examples/stepping/.gitignore: * tests/examples/stepping/Makefile.am: * tests/examples/streamiddemux/Makefile.am: * tests/examples/streams/.gitignore: * tests/examples/streams/Makefile.am: * tests/misc/Makefile.am: * tools/.gitignore: * tools/Makefile.am: Remove autotools build system 2019-10-10 15:53:16 +0200 Edward Hervey <edward@centricular.com> * gst/gstbus.c: * tests/check/gst/gstdatetime.c: * tests/check/gst/gstevent.c: core: Avoid usage of deprecated API GTimeval and related functions are now deprecated in glib. Replacement APIs have been present since 2.26 2019-09-23 11:19:07 -0400 Xavier Claessens <xavier.claessens@collabora.com> * libs/gst/check/gstcheck.c: Check buffer size before checking buffer data If the expected size is bigger than the actual buffer size, it would memcmp random memory which could lead to crashes instead of proper error reporting. 2019-09-24 10:09:08 -0400 Xavier Claessens <xavier.claessens@collabora.com> * plugins/elements/gstdataurisrc.c: * tests/check/elements/dataurisrc.c: dataurisrc: Do not include trailing `\0` into buffer 2019-09-24 10:06:51 -0400 Xavier Claessens <xavier.claessens@collabora.com> * libs/gst/check/gstharness.c: * libs/gst/check/gstharness.h: harness: Add gst_harness_pull_until_eos() 2019-10-06 11:12:11 -0400 Aaron Boxer <aaron.boxer@collabora.com> * NEWS: * docs/README: * docs/random/TODO-pre-0.9: * docs/random/ensonic/dynlink.txt: * docs/random/ensonic/interfaces.txt: * docs/random/eos: * docs/random/interfaces: * docs/random/phonon-gst: * docs/random/rtp: * docs/random/status-0.11-14-jun-2011.txt: * docs/random/types3: * docs/random/wtay/autoplug2: * docs/random/wtay/eos-19012001: * docs/random/wtay/eos2: * docs/random/wtay/eos4: * docs/random/wtay/negotiation3: * docs/random/wtay/network-transp: * docs/random/wtay/pipelineinfo: * docs/random/wtay/porting-list-0.11.txt: * docs/random/wtay/scheduling_ideas: * gst/gstcontrolbinding.c: * gst/gstdatetime.c: * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * libs/gst/base/gstbitwriter.c: * libs/gst/base/gstindex.c: * libs/gst/check/gstcheck.c: * libs/gst/check/libcheck/check_pack.c: * libs/gst/helpers/gst_gdb.py: * plugins/elements/gstmultiqueue.c: * tests/check/elements/queue.c: * tests/check/gst/gstcontroller.c: * tests/check/gst/gstghostpad.c: * tests/check/libs/collectpads.c: * tests/check/pipelines/parse-launch.c: documentation: fix a number of typos 2019-10-04 20:01:46 +0300 Jordan Petridis <jpetridis@gnome.org> * libs/gst/controller/gstdirectcontrolbinding.c: gstdirectcontrolbinding: Fix integer comparison i is declared as gint but then compared against `n_values` guint in the for loop below. 2019-09-30 11:49:35 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.c: * gst/gstcaps.c: gst: Don't pass miniobjects to GST_DEBUG_OBJECT() and similar macros The argument must be at least a GObject according to the GstLogFunction definition, and while the default C log function handles miniobjects just fine this is crashing bindings and user-supplied log functions that (rightfully) don't expect anything but GObjects. 2019-09-07 04:36:18 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: gstvalue: use value_nick for serialization not value_name . This was causing incorrect launch lines to be displayed by gst-device-monitor, and the deserialization code below works with nicks. 2019-09-10 00:28:45 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstdeviceprovider.c: deviceprovider: set the bus to non-flushing before calling klass->start Not posting DEVICE_ADDED messages while a device provider is being started makes things awkward for applications, as they have to call get_devices() after starting the monitor. This requires redundant code on the application side, and as far as I understand also could cause race conditions, when a device gets added between the calls to gst_device_monitor_start() and gst_device_monitor_get_devices(), causing the application to "see" the same device twice. 2019-09-12 10:09:18 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstelementfactory.c: element: Enforce that elements created by gst_element_factory_create/make() are floating Bindings might have a hard time making sure that the reference is indeed still floating after returning here. See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/444 2019-09-12 10:08:39 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstdevice.c: device: Enforce that elements created by gst_device_create_element() are floating Bindings might have a hard time making sure that the reference is indeed still floating after returning here. See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/444 2019-09-12 10:03:08 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstdevice.c: device: gst_device_create_element() is `transfer floating`, not `transfer full` Fixing the annotation fixes leaking of the created element in all bindings using GObject-Introspection. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/444 2019-09-10 12:31:40 +0200 Sebastiano Barrera <sebastiano.barrera@gmail.com> * libs/gst/base/gstbasesink.h: * libs/gst/base/gstbasesrc.h: base: GstBaseSrc/GstBaseSink::get_caps: add (nullable) to `filter` The virtual method named `get_caps` in both `GstBaseSrc` and `GstBaseSink` has a `filter` parameter which can be `NULL` (the default implementation in GstBaseSrc already considers the case). Before this commit, there was no gtk-doc annotation representing this fact, which caused the corresponding entry in the GIR file to also miss this fact. This caused bugs in other places, such inducing the Vala compiler to introduce a wrongly assert on `(filter != NULL)` in every implementation of the `get_caps` method implemented in Vala. 2019-08-26 07:34:30 +0200 Niels De Graef <nielsdegraef@gmail.com> * gst/gstbin.c: * gst/gstbus.c: * gst/gstchildproxy.c: * gst/gstclock.c: * gst/gstdeviceprovider.c: * gst/gstelement.c: * gst/gstobject.c: * gst/gstpad.c: * gst/gstpadtemplate.c: * gst/gstregistry.c: * gst/gststreamcollection.c: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstdataqueue.c: * libs/gst/base/gstindex.c: * libs/gst/controller/gsttimedvaluecontrolsource.c: * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstidentity.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstqueue.c: * plugins/elements/gsttypefindelement.c: Don't pass default GLib marshallers for signals By passing NULL to `g_signal_new` instead of a marshaller, GLib will actually internally optimize the signal (if the marshaller is available in GLib itself) by also setting the valist marshaller. This makes the signal emission a bit more performant than the regular marshalling, which still needs to box into `GValue` and call libffi in case of a generic marshaller. Note that for custom marshallers, one would use `g_signal_set_va_marshaller()` with the valist marshaller instead. 2019-09-07 12:32:40 +0100 Jim Mason <jmason@ibinx.com> * plugins/elements/gstelements_private.c: consolidated IOV_MAX/UIO_MAXIOV handling per GLib + legacy behaviour for osx/ios 2019-09-06 19:23:01 +0100 Jim Mason <jmason@ibinx.com> * plugins/elements/gstelements_private.c: gst_writev: respect IOV_MAX for the writev iovec array #439 2019-09-04 16:59:58 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * gst/gstpad.c: * gst/gstpad.h: pad: Added gst_pad_get_single_internal_link gst_pad_iterate_internal_links is usually used to find a single internal link that a pad has, e.g. to find the corresponding pad of a multiqueue. Added a helper function that will return either a single internal link, if there's no other, or NULL. 2019-09-03 10:38:13 +0200 David Svensson Fors <davidsf@axis.com> * gst/gstminiobject.c: miniobject: free qdata array when the last qdata is removed In cases with many long-lived buffers that have qdata only very briefly, the memory overhead of keeping an array of 16 GstQData structs for each buffer can be significant. We free the array when the last qdata is removed, like it was done in 1.14. Fixes #436 2019-09-03 13:44:24 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstbin.c: bin: Fix minor race when adding to a bin This patch simply add a null check around a case where a child may have been unparented concurrently to the deep_add_remove operation. This was found by accident in the form of an "IS_GST_OBJECT" assertion, but had no other known side effect in that test. 2019-08-30 12:04:40 +1000 Matthew Waters <matthew@centricular.com> * libs/gst/check/libcheck/meson.build: libcheck: fix macos werror build ../libs/gst/check/libcheck/check.c:617:15: error: result of comparison of constant 4294967295 with expression of type 'clockid_t' is always false [-Werror,-Wtautological-constant-out-of-range-compare] if (clockid == -1) { ~~~~~~~ ^ ~~ 2019-08-28 15:19:54 +1000 Matthew Waters <matthew@centricular.com> * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsrc.c: * plugins/elements/gstfilesrc.c: file/fdsrc: use struct stat64 on android to match stat64() Fixes android werror failures: ../plugins/elements/gstfdsrc.c:244:25: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types] if (fstat (src->fd, &stat_results) < 0) ^~~~~~~~~~~~~ /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); ^ ../plugins/elements/gstfdsrc.c:560:23: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types] if (fstat (src->fd, &stat_results) < 0) ^~~~~~~~~~~~~ /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); ^ if (fstat (fd, &stat_results) < 0) ^~~~~~~~~~~~~ /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); ^ if (fstat (src->fd, &stat_results) < 0) ^~~~~~~~~~~~~ ../../../../../android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); ^ ../plugins/elements/gstfilesrc.c:477:23: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types] if (fstat (src->fd, &stat_results) < 0) ^~~~~~~~~~~~~ ../../../../../android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21); ^ 2019-08-26 22:36:25 +1000 Matthew Waters <matthew@centricular.com> * libs/gst/check/libcheck/meson.build: check: fix werror build with clang Silence -Wformat-nonliteral warnings from the internal copy of libcheck ../subprojects/gstreamer/libs/gst/check/libcheck/check.c:379:29: warning: format string is not a string literal [-Wformat-nonliteral] vsnprintf (buf, BUFSIZ, msg, ap); ^~~ ../subprojects/gstreamer/libs/gst/check/libcheck/check_error.c:48:21: warning: format string is not a string literal [-Wformat-nonliteral] vfprintf (stderr, fmt, args); ^~~ ../subprojects/gstreamer/libs/gst/check/libcheck/check_str.c:92:29: warning: format string is not a string literal [-Wformat-nonliteral] n = vsnprintf (p, size, fmt, ap); ^~~ 2019-08-25 19:37:30 +0200 Niels De Graef <nielsdegraef@gmail.com> * gst/gstobject.c: object: Use g_object_notify_by_pspec() `g_object_notify()` actually takes a global lock to look up the `GParamSpec` that corresponds to the given property name. It's not a huge performance hit, but it's easily avoidable by using the `_by_pspec()` variant. 2019-08-20 01:02:48 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-launch.c: gst-launch: Use gst_print* instead of g_print* to fix broken stdout on Windows Concurrent Windows' colored debug message and g_print will print string hard to read. Instead, use gst_print* which serialize debug output and the APIs call. 2019-08-20 00:59:15 +0900 Seungha Yang <seungha.yang@navercorp.com> * gst/gstinfo.c: info: Take lock around all prinf on Windows On Windows, concurrent colored gstreamr debug output and usual stdout/stderr string will cause broken output on terminal. Since it's OS specific behavior, that's hard to completely avoid it but we can protect it at least among our printing interfaces side. 2019-08-23 18:17:41 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstpromise.c: * gst/gsttaglist.h: docstrings: port ulinks to markdown links 2019-08-20 17:18:31 +0200 Johan Sternerup <johast@axis.com> * gst/gstutils.c: utils: Avoid memory merge in gst_util_dump_buffer() For buffers with multiple memory chunks, gst_buffer_map() has the side effect of merging the memory chunks into one contiguous chunk. Since gst_util_dump_mem() used gst_buffer_map() the internals of the buffer could actually change as a result of printing it. For the case of a buffer containing several memory chunks, gst_memory_map() is now used to obtain the memory address and each memory chunk is dumped separately preceded by a header line. The behaviour for a buffer containing a single memory chunk is left unchanged. 2019-08-19 18:19:50 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Always handle serialized events/queries directly before waiting Otherwise it can happen that we start waiting for another pad, while one pad already has events that can be handled and potentially also a buffer that can be handled. That buffer would then however not be accessible by the subclass from GstAggregator::get_next_time() as there would be the events in front of it, which doesn't allow the subclass then to calculate the next time based on already available buffers. As a side-effect this also allows removing the duplicated event handling code in the aggregate function as we'll always report pads as not ready when there is a serialized event or query at the top of at least one pad's queue. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/428 2019-08-15 12:56:06 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/meson.build: meson: fix warning about configure_file() install kwarg The install kwarg on configure_file() was only added in Meson 0.50 but we're targetting older versions as well, which caused a warning. The install kwarg is not needed here as we specify install_dir, so we can just drop it. Fixes #379 2019-08-14 14:25:48 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add sink_event_pre_queue() and sink_query_pre_queue() vfuncs These allow subclasses catching serialized events/queries before they're queued up. 2019-08-14 10:05:53 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add GstAggregator::negotiate() For consistency with other base classes and for allowing to completely override the negotiation behaviour. 2019-08-14 09:51:55 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Actually handle NEED_DATA return from update_src_caps() The documentation says that this allows the subclass to signal that it needs more data before it can decide on caps, so let's actually implement it that way. 2019-08-13 19:57:08 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Assert if the sink/src pad type that is to be used is not a GstAggregatorPad or subclass thereof 2019-08-13 19:55:59 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Ensure that the source pad is created as a GstAggregatorPad if no type is given in the pad template Otherwise we would create a GstPad and that causes invalid memory accesses later. 2019-08-06 10:09:22 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * plugins/tracers/gstlatency.c: latency: fix custom event leaks If the element before the sink needs $n buffers to produce one output buffer, we were reffing $n events and unreffing only one. Prevent this by using g_object_set_qdata_full() to handle the event unreffing so we're sure no ref will be lost. 2019-08-12 11:53:33 +0300 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gstelement.c: * gst/gstelement.h: element: Added gst_element_get_current_clock_time and gst_element_get_current_running_time Helper functions for getting the element clock's time, and the clock time minus base time, respectively. 2019-08-08 13:49:07 +0300 Sebastian Dröge <sebastian@centricular.com> * configure.ac: * gst/gstregistry.c: * meson.build: registry: Use plugin directory from the build system for relocateable Windows builds Instead of guessing something based on preprocessor defines and magic. 2019-04-30 17:24:50 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstdevicemonitor.c: device-monitor: list hidden providers before listing devices The way it was implemented could make the list updated after the list of device was filled with supposdely hidden devices 2019-08-06 15:28:58 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/elements/gstfunnel.c: funnel: fix documentation funnel no longer sends its own segment since: bbb26f875692a6cd84050c545ba85a7d2129cf5d Update the documentation to reflect that 2019-08-06 00:05:22 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstmessage.h: message: fix up enum value for GST_MESSAGE_DEVICE_CHANGED This was added in 1.16 and accidentally duplicated the value of the existing GST_MESSAGE_REDIRECT. As the only known user of this message is GStreamer core itself, and it is quite an obscure message, it seems best to just fix up the enum value even if that technically breaks API. Fixes #418 2019-08-06 03:16:35 +0000 Keri Henare <keri.freedesktop@henare.co.nz> * configure.ac: Removes unnecessary "Sissy" pejorative from configure.ac warning message. 2019-07-30 21:40:47 -0400 Doug Nazar <nazard@nazar.ca> * gst/gstinfo.c: info: Fix deadlock in gst_ring_buffer_logger_log gst_ring_buffer_logger_log calls several functions while formatting the message which may in turn log a message while we already hold the mutex. Do all formatting first before acquiring the mutex to avoid this and reduce the time we hold the mutex. 2019-08-02 13:07:58 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * plugins/tracers/gstlatency.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: tracers: set MAY_BE_LEAKED on tracer records The records are static and so appear as false positives when using those tracers with the leaks tracer as well. The leaks tracer was already setting this flag on its record so let's set it on the other ones as well. 2019-07-22 15:06:20 +0000 Alicia Boya García <ntrrgc@gmail.com> * plugins/elements/gstdownloadbuffer.c: downloadbuffer: Check for flush after seek In gst_download_buffer_wait_for_data(), when a seek is made with perform_seek_to_offset() the `qlock` is released temporarily. Therefore, the flushing condition can be set during this period and should be checked. This was not being checked before, causing occasional deadlocks when GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK() was called. GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK() assumes that the caller has already checked that we're not flushing before, since this is done when acquiring the lock; so if we release it temporarily somewhere, we need to check for flush again. Without that check, the function would keep waiting for the condition variable to be notified before checking for flushing condition again, and that may very well never happen. This was reproduced when during pad deactivation when running WebKit in gdb. 2019-07-19 21:57:09 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gstidentity.c: identity: Non-live upstream have no max latency sync=TRUE implementation changes the latency query of a non-live upstream into live, though it wrongly set the upstream max latency to 0. As non-live sources won't loose data if we wait longer, this should have been reported as have no max latency limite (-1). 2019-07-19 17:28:25 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: drop duplicated SEEK events This is similar to what demuxers do, and necessary when multiple sinks get seeked downstream of the aggregator: if we forward duplicated seeks upstream, elements such as demuxers may drop the flushing seeks, but return TRUE, aggregator then waits forever for the flushing events. Fixes #276 2019-07-19 11:09:22 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasesrc.c: basesrc: fix g-i warnings 2019-07-14 22:41:56 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gst.c: * gst/gstinfo.c: info: Free some more memory on gst_deinit() 2019-07-14 21:36:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstinfo.c: * gst/gstinfo.h: * tests/check/gst/gstinfo.c: info: Deprecate gst_debug_category_free() And change it to do nothing at all. As debug categories don't use reference counting and they can be retrieved from anywhere at any time by name, it is fundamentally unsafe to free them at any point in time except for right before the end of the process. No code apart from a unit test seems to be currently using the function, so deprecate it and also change it to do nothing at all. 2019-07-11 17:53:53 +0100 Philippe Normand <philn@igalia.com> * plugins/elements/gstidentity.c: identity: Fix the ts-offset property getter Previous code was a copy/paste from the property setter function. 2019-07-08 19:09:03 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Make parsing of explicit sink pad names more robust When passing "sink_%d" twice to aggregator before it would create two pads called "sink_0", because it failed to parse "%d" as integer and used 0 instead then. Instead validate that parsing was actually successful and also don't even try to parse if the requested pad name contains a '%'. 2019-07-08 13:16:08 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.com> * tools/gst-stats.c: gst-stats: fix leaks String returned from g_match_info_fetch() needs to be freed. 2019-07-08 11:20:26 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.com> * tools/gst-stats.c: gst-stats: sort latency by first activity before displaying We use to display the latency of each element in random order which is not very convenient when comparing latency between different runs. Sort them by "first activity" (the first latency reported for each element) so it's consistent betwen runs. This is the same logic when sorting and displaying element stats. 2019-07-07 20:42:56 +1000 Jan Schmidt <jan@centricular.com> * gst/gsttracerutils.c: gsttracerutils: Fix build with disabled tracer hooks. Add a stub gst_tracing_get_active_tracers() call when building with tracer hooks disabled. 2019-07-02 17:14:50 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * plugins/elements/gstmultiqueue.c: multiqueue: Fix possible NULL pointer dereferencing In the hotdoc inspector for example, pads are instantiated with g_object_new, other code paths to get/set properties already make that check. And update doc cache 2019-07-01 23:54:19 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstinfo.c: gstinfo: Fix typo in debug log message 2019-07-01 20:20:13 +0530 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/gstleaks.c: leakstracer: Improve notes in the the get-live-objects API docs It may not be obvious to the user how this action signal is meant to be called, so document it. 2019-07-01 15:05:58 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/elements/leaks.c: tests: Add test for new activity-tracking leaktracer API 2019-06-21 18:17:13 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leakstracer: Add API for tracking and checkpointing objects This feature was previously available only through the SIGUSR2 signal, which meant it wasn't available on platforms that don't have UNIX signals, such as Windows and with applications that already use SIGUSR1 for something else. Now we have action-signals for doing the same. These action signals can also be used for fetching the checkpoint information programmatically instead of printing to the debug log. 2019-07-01 15:05:08 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/elements/leaks.c: * tests/check/gstreamer.supp: * tests/check/meson.build: tests: Add test for new live-objects leaktracer API Needs a valgrind suppression for: ==11119== Warning: invalid file descriptor -1 in syscall close() ==11119== Warning: invalid file descriptor -1 in syscall close() ==11119== Syscall param write(buf) points to uninitialised byte(s) ==11119== at 0x4C4AFAD: syscall (in /usr/lib64/libc-2.29.so) ==11119== by 0x4E70DF9: write_validate (Ginit.c:112) ==11119== by 0x4E70DF9: UnknownInlinedFun (Ginit.c:148) ==11119== by 0x4E70DF9: mincore_validate (Ginit.c:131) ==11119== by 0x4E70CC3: UnknownInlinedFun (Ginit.c:208) ==11119== by 0x4E70CC3: access_mem (Ginit.c:242) ==11119== by 0x4E75536: UnknownInlinedFun (libunwind_i.h:168) ==11119== by 0x4E75536: apply_reg_state (Gparser.c:863) ==11119== by 0x4E75A71: _ULx86_64_dwarf_step (Gparser.c:952) ==11119== by 0x4E71BD3: _ULx86_64_step (Gstep.c:71) ==11119== by 0x48BAF47: generate_unwind_trace (gstinfo.c:2726) ==11119== by 0x48BC92E: gst_debug_get_stack_trace (gstinfo.c:2908) ==11119== by 0x49B2BB2: handle_object_created.part.0 (gstleaks.c:384) ==11119== by 0x488134E: gst_object_constructed (gstobject.c:141) ==11119== by 0x49EC61B: g_object_new_internal (gobject.c:1845) ==11119== by 0x49EE347: g_object_new_valist (gobject.c:2128) ==11119== by 0x49EE69C: g_object_new (gobject.c:1648) ==11119== by 0x48CA59D: gst_pad_new_from_template (gstpad.c:867) ==11119== by 0x68C209E: gst_base_src_init (gstbasesrc.c:454) ==11119== by 0x4A0A0C3: g_type_create_instance (gtype.c:1858) ==11119== by 0x49EC42C: g_object_new_internal (gobject.c:1805) ==11119== by 0x49EDB14: g_object_new_with_properties (gobject.c:1973) ==11119== by 0x49EE6C0: g_object_new (gobject.c:1645) ==11119== by 0x48AF91A: gst_element_factory_create (gstelementfactory.c:372) ==11119== Address 0x1ffeffe000 is on thread 1's stack ==11119== in frame #6, created by generate_unwind_trace (gstinfo.c:2695) Fixed in libunwind commit: https://github.com/libunwind/libunwind/commit/b256722d49a63719c69c0416eba9163a4d069584 Needs a separate suppression for Debian because the callstack is different there. 2019-06-28 18:19:31 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leakstracer: Add API for logging leaks in the debug log This is the equivalent of sending SIGUSR1 to the application, and is useful on platforms where UNIX signals are not available, such as Windows. 2019-06-28 18:19:31 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leakstracer: Add API for fetching leaked objects This allows programs to inspect the leaked objects directly, log them, and so on. Unlike the existing mechanism to use SIGUSR1, this also works on platforms that do not support UNIX signals, such as Windows and with applications that already use SIGUSR1 for something else. 2019-06-19 04:22:42 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gsttracer.h: * gst/gsttracerutils.c: gsttracer: Add new API to fetch the list of active tracers This will be useful in the next commit where we add action-signals on the leaks tracer to get information about leaks and to manipulate checkpoints as a replacement for the SIGUSR1 and SIGUSR2 signals for doing the same. 2019-06-19 03:47:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstlatency.c: * plugins/tracers/gstleaks.c: * plugins/tracers/gstlog.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: tracers: Allow setting a name for all tracer objects This will be useful in combination with the next commit when we add API to get a list of active tracers so that consumers of the API can easily distinguish tracer objects. 2019-06-29 09:22:05 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstbufferpool.c: * tests/check/gst/gstbufferpool.c: bufferpool: Fix the buffer size reset code The offset in gst_buffer_resize() is additive. So to move back the offset to zero, we need to pass the opposite of the current offset. This was raised through the related unit test failingon 32bit as on 64bit the alignment padding was enough to hide the issue. The test was modified to also fail on 64bit. This patch will remove spurious assertions like: assertion 'bufmax >= bufoffs + offset + size' failed Fixes #316 2019-06-24 21:14:51 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: leakstracer: Get rid of GSlice usage It's not faster than malloc, and is slower in most cases. Glib is also getting rid of it entirely: https://gitlab.gnome.org/GNOME/glib/merge_requests/940 2019-06-21 11:26:38 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: leakstracer: Remove unused and redundant record fields All leak records are obviously scoped to the process, and nothing in the GstTracerRecord code uses these fields anyway. 2019-06-21 10:43:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gsttracerrecord.c: tracerrecord: Be stricter while parsing record templates It's not really possible for us to recover when someone uses the gst_tracer_record_new() API incorrectly. Also, document a piece of somewhat-obscure code. 2019-06-19 03:42:46 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * plugins/tracers/gstleaks.c: leakstracer: Improve documentation for the element Also print a useful g_warning() message when leaks are detected. 2019-07-01 14:55:20 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/gstcheck.h: gstcheck: Document strcmp used in string cmp macros strcmp() does not allow the arguments to be NULL, but g_strcmp0() does, so document that we use g_strcmp0() so that people don't need to worry about that. 2019-06-21 10:41:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstsystemclock.c: gstsystemclock: Mark the clock as MAY_BE_LEAKED It is freed in gst_deinit(), but otherwise it is leaked. 2019-06-19 03:39:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstinfo.c: * meson.build: gstinfo: Rework stack trace detection a bit Ensure that the code paths for HAVE_UNWIND and HAVE_DBGHELP are never taken at the same time, even if the build file code changes. Prefer DbgHelp over libunwind on Windows in case both are somehow available because DbgHelp is only available when building with the MSVC toolchain, and libunwind won't give us debug symbols from objects built with the MSVC toolchain. Also, print slightly more useful messages for the level of stack trace support enabled, and document what each if conditional does. 2019-06-19 03:19:16 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstinfo.c: * gst/gstinfo.h: * plugins/tracers/gstleaks.c: gstinfo: Add an explicit enum for GST_STACK_TRACE_SHOW_NONE The code implicitly uses this value when the stack trace is not FULL. Mostly useful for documenting the behaviour when each flag is passed and for translating to/from strings. 2019-06-24 14:35:16 +0200 Carlos Rafael Giani <crg7475@mailbox.org> * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasesrc.h: * tests/check/libs/basesrc.c: basesrc: Add public gst_base_src_negotiate () function This is useful for when format changes occur mid-stream. 2019-06-27 15:51:47 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstmultiqueue.c: multiqueue: Hold weak references to pads/multiqueue in SingleQueue Without holding a ref we have no guarantees that the SingleQueue doesn't have dangling pointers on those objects during its destruction. 2019-05-06 19:19:47 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstplugin.c: gstplugin: Don't stat plugins when building for UWP When using GStreamer with Universal Windows Platform apps, dynamic plugins can only be loaded by filename (without a path) using gst_plugin_load_file() which will call into g_module_open(). On Windows, GModule calls LoadLibrary() on the filename, but with UWP we need to use LoadPackagedLibrary() which is basically the same as LoadLibrary(), except it looks only for DLLs (by name) that have been packaged as assets with the app. These assets are not files and cannot be accessed using normal file APIs such as open() or stat(). The upstream glib merge request for adding LoadPackagedLibrary support is: https://gitlab.gnome.org/GNOME/glib/merge_requests/951 NOTE: Whitespcae removal is to make gst-indent happy 2019-05-16 04:57:16 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstconfig.h.in: gstconfig.h.in: Windows ARM64 does not allow unaligned access 2019-06-19 17:39:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/check/gsttestclock.c: * tests/check/libs/gsttestclock.c: testclock: Allow calling crank with a past entry At the moment, we can only use crank if the pending entry is in the future. This patch leaves the clock time to the same point if the pending entry was in the past. This still execute a single entry. This will be needed for the jitterbuffer, since as soon as we stop waking up the jitterbuffer when the timer is reschedule later, we may endup with such case in the unit tests. Related to #608 2019-06-22 23:46:35 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstmultiqueue.c: multiqueue: Stop using the gst_pad_element_private API There was a race where we could still get the pad event function called when its private member were already unset, leading to a segfault in the event handler: ``` 0 gst_multi_queue_src_event (pad=<optimized out>, parent=<optimized out>, event=0x7f3ff0007600) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2534 2534 ret = gst_pad_push_event (sq->sinkpad, event); [Current thread is 1 (Thread 0x7f406c0258c0 (LWP 21925))] (gdb) bt 0 0x00007f4062ec1399 in gst_multi_queue_src_event (pad=<optimized out>, parent=<optimized out>, event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gstreamer/plugins/elements/gstmultiqueue.c:2534 1 0x00007f406b40f46d in gst_validate_pad_monitor_src_event_check (handler=0x7f4062ec1360 <gst_multi_queue_src_event>, event=0x7f3ff0007600 [GstEvent], parent=0x7f3fcc01f090 [GstMultiQueue|multiqueue167], pad_monitor=0x7f3fe809e7c0 [GstValidatePadMonitor|validatepadmonitor2213]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2101 2 0x00007f406b40f46d in gst_validate_pad_monitor_src_event_func (pad=<optimized out>, parent=0x7f3fcc01f090 [GstMultiQueue|multiqueue167], event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2374 3 0x00007f406b904387 in gst_pad_send_event_unchecked (pad=pad@entry=0x7f3fdc027650 [GstPad|src_0], event=event@entry=0x7f3ff0007600 [GstEvent], type=<optimized out>, type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5772 4 0x00007f406b90481b in gst_pad_push_event_unchecked (pad=pad@entry=0x7f4058182fc0 [GstPad|sink], event=event@entry=0x7f3ff0007600 [GstEvent], type=type@entry=GST_PAD_PROBE_TYPE_EVENT_UPSTREAM) at ../subprojects/gstreamer/gst/gstpad.c:5417 5 0x00007f406b90f016 in gst_pad_push_event (pad=0x7f4058182fc0 [GstPad|sink], event=event@entry=0x7f3ff0007600 [GstEvent]) at ../subprojects/gstreamer/gst/gstpad.c:5554 6 0x00007f406a1c99ba in gst_video_decoder_src_event_default (decoder=0x7f3fe81c6060 [GstTheoraDec|theoradec46], event=<optimized out>) at ../subprojects/gst-plugins-base/gst-libs/gst/video/gstvideodecoder.c:1532 7 0x00007f406b40f46d in gst_validate_pad_monitor_src_event_check (handler=0x7f406a1ca270 <gst_video_decoder_src_event>, event=0x7f3ff0007600 [GstEvent], parent=0x7f3fe81c6060 [GstTheoraDec|theoradec46], pad_monitor=0x7f4028163aa0 [GstValidatePadMonitor|validatepadmonitor2216]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2101 8 0x00007f406b40f46d in gst_validate_pad_monitor_src_event_func (pad=<optimized out>, parent=0x7f3fe81c6060 [GstTheoraDec|theoradec46], event=0x7f3ff0007600 [GstEvent]) at ../subprojects/gst-devtools/validate/gst/validate/gst-validate-pad-monitor.c:2374 ``` This make the GstSingleQueue a MiniObject, mainly so it is properly refcounted. This also make use of the GstMultiQueuePad class for srcpads which is totally valid as srcpads and sinkpads share the same SingleQueue object. 2019-06-21 15:38:15 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstdevicemonitor.c: devicemonitor: add debug category 2019-06-20 14:04:55 +0200 Michael Bunk <bunk@iat.uni-leipzig.de> * gst/gstmemory.c: * gst/gstmemory.h: * gst/gstutils.c: * libs/gst/base/gstbasetransform.c: * libs/gst/base/gstbasetransform.h: Fixing various typos 2019-06-20 16:42:01 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * plugins/tracers/gstlatency.c: latency: display event pointer in logs This is quite useful for debugging when tracer is reporting the wrong latency because of an element breaking the events/buffers ordering. 2019-06-20 13:49:14 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * plugins/elements/gstelements_private.c: gstelements_private: sync gst_buffer_get_flags_string() with new flags 2019-06-19 23:29:24 -0400 Thibault Saunier <tsaunier@igalia.com> * plugins/elements/gstmultiqueue.c: multiqueue: never unref queries we do not own The `query` argument of gst_pad_query is "transfer none". Query objects are "borrowed" by the pad query handlers and those should never unref them. This was leading to double freed queries in a very racy way with nested GESTimelines. 2019-06-17 09:50:32 +0200 Havard Graff <havard.graff@gmail.com> * gst/gstmeta.c: gstmeta: Optimize get_tags() by using private quark table 2019-06-13 10:32:32 +0200 Havard Graff <havard.graff@gmail.com> * gst/gstpad.c: pad: increase debug-level to warning for fatal outcomes 2019-06-13 15:21:03 +0000 Håvard Graff <havard.graff@gmail.com> * plugins/elements/gstqueue.c: queue: don't report 0 max-latency for leaky queue if max was already 0. 2019-05-22 10:09:47 +0200 Havard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: harness: move creating of buffer and event queues to harness itself By only having it on sinkpad-creation, it is racy to write a test with a sometimes-pad (like a demuxer) that you want to pull from, having the pull wait until the pad arrives and the buffer can be produced. 2018-10-03 13:56:22 +0200 Stian Selnes <stian@pexip.com> * libs/gst/check/gstharness.c: harness: Fix race when forwarding event while tearing down harness 2018-05-28 10:57:13 +0200 Stian Selnes <stian@pexip.com> * libs/gst/check/gstharness.c: harness: Make sure pad functions are not called after teardown For the query function there's a risk that the function may be called after the harness has been teared down. Since the function accesses a pointer to the harness via the pad's data, the harness must protect itself against this. Event and chain function is also handled for constistency, although they don't have the same problem since the gstpad.c checks whether the pad is flushing before calling these. 2019-06-11 22:09:33 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: don't try to take STREAM_LOCK on sink pad flush This was a misguided effort to try and guarantee the buffers of the sink pads would not change during aggregate, when an upstream branch is seeked independently, however this is simply incorrect as downstream has not necessarily been flushed, or the aggregate function might be waiting to receive buffers on other pads. 2019-06-11 15:20:18 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: send flush_stop ourselves if needed In !159 , we switched to sending flush_start ourselves from the do_seek implementation. If no flushing seek successfully made its way upstream, we need to send flush_stop ourselves as well. 2019-06-10 17:23:29 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: don't hold stream lock when flushing Releasing a GRecMutex from a different thread is undefined behaviour. There should be no reason to hold the stream lock from the moment aggregator receives a flush_start until it receives the last flush_stop: the source pad task is stopped, and can only be restarted once the last flush_stop has arrived. I can only speculate as to the reason why this was done, as it was that way since the original commit. My best guess is that aggregator originally didn't marshall events and queries to the aggregate thread, and this somehow helped work around this. 2019-05-22 21:37:43 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * tests/check/libs/aggregator.c: aggregator: refactor flushing logic Instead of tracking "pending_flush_*" on the pads and the aggregator, we now simply track the last seqnum for flush start and flush stop events on the pads, and use it to determine whether we should enter or exit our flushing state. See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/977 2019-06-05 18:40:12 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/gstreamer.supp: valgrind: revert generic suppression of ld-related errors the replacement suppression casts way too large a net, ignoring all leaks in the main thread 2019-06-05 20:58:45 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/gstreamer.supp: valgrind: ignore dlopen leaks when parsing launch lines 2019-06-05 20:58:45 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/gstreamer.supp: valgrind: suppress intentional debug list item leak 2019-06-04 17:56:30 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstconcat.c: concat: Improve debug output a bit 2019-06-04 17:55:30 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstconcat.c: concat: Reset last_stop on FLUSH_STOP too Otherwise when seeking backwards we would keep the last_stop at the last position we saw until playback passed the seek position again, and if switching to the next pad happens in the meantime we would set the wrong offset in the outgoing segment. 2019-06-04 08:50:59 +0200 Niels De Graef <niels.degraef@barco.com> * gst/gstallocator.h: * gst/gstatomicqueue.h: * gst/gstbin.h: * gst/gstbuffer.h: * gst/gstbufferlist.h: * gst/gstbus.h: * gst/gstcaps.h: * gst/gstcapsfeatures.h: * gst/gstclock.h: * gst/gstcontext.h: * gst/gstcontrolbinding.h: * gst/gstcontrolsource.h: * gst/gstdatetime.h: * gst/gstdevice.h: * gst/gstdevicemonitor.h: * gst/gstdeviceprovider.h: * gst/gstdeviceproviderfactory.h: * gst/gstelement.h: * gst/gstelementfactory.h: * gst/gstevent.h: * gst/gstghostpad.h: * gst/gstiterator.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstobject.h: * gst/gstpad.h: * gst/gstpadtemplate.h: * gst/gstparse.h: * gst/gstpipeline.h: * gst/gstplugin.h: * gst/gstpluginfeature.h: * gst/gstpromise.h: * gst/gstquery.h: * gst/gstregistry.h: * gst/gstsample.h: * gst/gstsegment.h: * gst/gststreamcollection.h: * gst/gststreams.h: * gst/gststructure.h: * gst/gstsystemclock.h: * gst/gsttaglist.h: * gst/gsttask.h: * gst/gsttaskpool.h: * gst/gsttoc.h: * gst/gsttracer.h: * gst/gsttracerfactory.h: * gst/gsttracerrecord.h: * gst/gsttypefindfactory.h: * gst/gsturi.h: * libs/gst/base/gstadapter.h: * libs/gst/base/gstaggregator.h: * libs/gst/base/gstbaseparse.h: * libs/gst/base/gstbasesink.h: * libs/gst/base/gstbasesrc.h: * libs/gst/base/gstbasetransform.h: * libs/gst/base/gstcollectpads.h: * libs/gst/base/gstdataqueue.h: * libs/gst/base/gstflowcombiner.h: * libs/gst/base/gstpushsrc.h: * libs/gst/check/gsttestclock.h: * libs/gst/controller/gstargbcontrolbinding.h: * libs/gst/controller/gstdirectcontrolbinding.h: * libs/gst/controller/gstinterpolationcontrolsource.h: * libs/gst/controller/gstlfocontrolsource.h: * libs/gst/controller/gstproxycontrolbinding.h: * libs/gst/controller/gsttimedvaluecontrolsource.h: * libs/gst/controller/gsttriggercontrolsource.h: * libs/gst/net/gstnetclientclock.h: * libs/gst/net/gstnettimepacket.h: * libs/gst/net/gstnettimeprovider.h: * libs/gst/net/gstptpclock.h: Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally Since we started depending on GLib 2.44, we can be sure this macro is defined (it will be a no-op on compilers that don't support it). For plugins we should just start using `G_DECLARE_FINAL_TYPE` which means we no longer need the macro there, but for most types in core we don't want to break ABI, which means it's better to just keep it like it is (and use the `#ifdef` instead). 2019-05-31 22:56:09 +0200 Niels De Graef <niels.degraef@barco.com> * configure.ac: * meson.build: * tests/check/elements/dataurisrc.c: meson: Bump minimal GLib version to 2.44 This means we can use some newer features and get rid of some boilerplate code using the `G_DECLARE_*` macros. As discussed on IRC, 2.44 is old enough by now to start depending on it. 2019-06-01 02:37:26 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/meson.build: docs: unprefix subproject paths 2019-05-30 23:23:35 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/meson.build: * docs/plugins/blank.md: * docs/plugins/gst_plugins_cache.json: * plugins/tracers/gstlatency.c: * plugins/tracers/gstleaks.c: * plugins/tracers/gstlog.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: docs: Add tracers support 2019-05-31 01:56:08 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstelement.h: gstelement: fix links to the gsterror page 2019-05-31 01:45:41 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gsttaglist.h: gsttaglist: do not link to symbols from gst-plugins-base in doc 2019-05-29 21:33:42 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: * gst/gstbus.c: * gst/gstconfig.h.in: * gst/gstdebugutils.c: * gst/gsterror.c: * gst/gstplugin.c: * gst/gsttaglist.h: * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfdsrc.c: doc: remove xml from comments 2019-05-22 18:56:34 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/plugins/gst_plugins_cache.json: docs: Document pad types And update the plugins doc cache 2019-05-22 09:47:41 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstaggregator.c: aggregator: Minor documentation fix 2015-07-29 11:48:33 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: fix flow-return boolean return type mismatch Not that it matters, since we don't check the return value anyway. Unclear why the aggregator pad flush function should have a return value at all really, and perhaps it should be called reset anyway. Spotted by dv on irc. 2019-05-12 07:45:31 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: add gst_element_pad() function Another helper to navigate a pipeline. It makes it possible to easily access the pads of an element: (gdb) print $gst_element_pad(basesink, "sink") $1 = 0x7fffe80770f0 [GstPad|sink] 2019-05-11 21:08:50 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: print more data for segment events This add the different timestamps for segment events: (gdb) gst-print pad SrcPad(src, push) { events: [...] segment: time rate: 1.1 start: 0:03:08.449753330 time: 0:03:08.449753330 position: 0:03:08.449753330 duration: 0:12:14.166687500 [...] } 2019-05-11 21:02:37 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: add 'gst-pipeline-tree' command It shows a simple tree of all elements in pipeline. As with gst-dot, the toplevel bin is found from any element of the pipeline: (gdb) gst-pipeline-tree bsink playbin inputselector1 inputselector0 uridecodebin0 queue2-0 decodebin0 avdec_aac0 aacparse0 vaapidecodebin0 vaapipostproc0 capsfilter1 vaapi-queue vaapidecode0 capsfilter0 h264parse0 multiqueue0 matroskademux0 typefind typefindelement0 source playsink abin aconv resample conv identity aqueue pulsesink0 vbin vconv scale conv identity vqueue vaapisink0 vdbin deinterlace vdconv audiotee streamsynchronizer0 2019-05-11 20:59:04 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: add gst_pipeline() and gst_bin_get() functions This simplifies navigating in a GStreamer pipeline, e.g. (gdb) print $gst_bin_get($gst_pipeline(pad), "matroskademux0") $1 = 0x7fffe81b4050 [GstMatroskaDemux|matroskademux0] 2019-05-11 20:55:36 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: handle ghost and proxy pads while looking for the top-level element The parent object for pads is not always a GstElement. Handle GstProxyPad parents as well. 2019-05-11 20:53:54 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: refactor finding top-level pipeline No functional changes. Just refactoring to make it possible to reuse this later. 2019-05-11 20:53:05 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: gst-print add more pad and element information For elements, this adds all child elements, the state and base/start time: (gdb) gst-print pipeline 0x5555556ebd20 "pipeline0" GstPipeline(pipeline0) { children: fakesink0 queue0 videotestsrc0 state: PLAYING base_time: +2:54:36.892581150 start_time: 0:00:00.000000000 } For pads, this adds the peer pads and the current task state and the offset (if not zero): (gdb) gst-print pad SrcGhostPad(src, push) { events: [...] peer: vaapisink0:sink inner peer: scale:src } (gdb) gst-print pad SrcPad(src, push) { events: [...] peer: queue0:sink task: STARTED offset: 30000000 [+0:00:00.030000000] } 2019-05-11 20:39:00 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: refactor time formating Make it reuseable independent of the GstClockTimePrinter. 2019-05-22 10:44:50 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/dataurisrc.c: dataurisrc: Add test that checks various URIs against their expected output 2019-05-21 17:22:04 +0200 Benjamin Otte <otte@redhat.com> * plugins/elements/gstdataurisrc.c: dataurisrc: Fix crash when semicolon is aprt of data This URI is valid: data:,;base64 (It encodes the literal string ";base64") But would lead to a crash because the code assumed the semicolon would be placed before the colon. 2019-05-21 17:15:52 +0200 Benjamin Otte <otte@redhat.com> * plugins/elements/gstdataurisrc.c: dataurisrc: Allow case-insensitive scheme Quoting RFC 2396: For resiliency, programs interpreting URI should treat upper case letters as equivalent to lower case in scheme names (e.g., allow "HTTP" as well as "http"). 2019-05-16 16:17:35 +1000 Matthew Waters <matthew@centricular.com> * docs/plugins/gst_plugins_cache.json: * plugins/tracers/meson.build: docs: add coretracers to the list of plugins 2019-05-16 09:11:00 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: docs: Stop building the doc cache by default Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36 2019-05-15 22:46:45 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/plugins/gst_plugins_cache.json: docs: Update diplayed plugins filename something stable 2019-05-15 21:15:35 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: hotdoc: Let the the registry inspect in forks So that the whole process doesn't segfault if something bad happens while inspecting 2019-05-15 09:23:06 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-plugins-doc-cache-generator.py: * docs/meson.build: docs: Use the MESON_BUILD_ROOT env variable in the plugins cache generator 2019-05-14 15:27:05 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/gst-plugins-doc-cache-generator.py: docs: Do not pass the json through stdout Unicode encoding breaks on windows when doing so 2019-05-14 13:44:43 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstregistry.c: registry: Avoid discovering plugins in hotdoc private directories 2019-05-14 13:44:24 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/meson.build: docs: Do not inspect internal files 2019-05-14 20:27:47 +0900 Seungha Yang <seungha.yang@navercorp.com> * docs/gst-plugins-doc-cache-generator.py: docs: Always follow Unix style newline The 'open()' follows default behavior of OS (CRLF in case of Windows). So it results in a bunch of git diff on Windows. 2019-05-16 15:15:27 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Remove leading space from Since maker of gst_base_sink_get_stats() gobject-introspection does not like this. 2019-05-16 15:13:23 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Fix syntax for gtk-doc comment of the new stats property 2019-05-13 16:42:04 +0200 Edward Hervey <bilboed@bilboed.com> * gst/gstpad.c: * tests/check/gst/gstpad.c: gstpad: Probes that return HANDLED can reset the data info field Before GST_PAD_PROBE_HANDLED was introduced, we had to handle the case where some probes would reset the probe info data field to NULL. This would be considered an invalid use-case. But with GST_PAD_PROBE_HANDLED it is totally fine to reset that, since the probe has "handled" it. 2019-05-06 22:17:50 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstelements_private.c: * plugins/elements/gstelements_private.h: * plugins/elements/gstfdsink.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesink.h: filesink: Implement workaround for some (network) filesystems that spuriously return EACCES on write This seems to happen when another client is accessing the file at the same time, and retrying after a short amount of time solves it. Sometimes partial data is written at that point already but we have no idea how much it is, or if what was written is correct (it sometimes isn't) so we always first seek back to the current position and repeat the whole failed write. It happens at least on Linux and macOS on SMB/CIFS and NFS file systems. Between write attempts that failed with EACCES we wait 10ms, and after enough consecutive tries that failed with EACCES we simply time out. In theory a valid EACCES for files to which we simply have no access should've happened already during the call to open(), except for NFS (see open(2)). This can be enabled with the new max-transient-error-timeout property, and a new o-sync boolean property was added to open the file in O_SYNC mode as without that it's not guaranteed that we get EACCES for the actual writev() call that failed but might only get it at a later time. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/305 2019-05-14 15:44:07 -0400 Aaron Boxer <aaron.boxer@collabora.com> * pkgconfig/gstreamer.pc.in: gstreamer.pc.in: exec_prefix must be defined before libexecdir 2019-05-13 22:47:38 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: docs: Update plugins cache 2019-05-13 22:47:05 -0400 Thibault Saunier <tsaunier@igalia.com> * docs/gst-plugins-doc-cache-generator.py: docs: Fix cache invalidation status The dictionnary is updated in place so we were checking the same twice 2018-11-11 20:11:47 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/gst-plugins-doc-cache-generator.py: * docs/meson.build: docs: Use the new GstPluginsPath.json to have the right plugin path When inspecting plugins to generate the json cache file. Otherwise when we are not in the uninstalled env and using `gst-build` plugins with dependency might fail/throw warning, etc.. 2018-10-28 12:05:41 +0000 Thibault Saunier <tsaunier@igalia.com> * pkgconfig/gstreamer.pc.in: * pkgconfig/meson.build: pkgconfig: Add information about libexecdir https://bugzilla.gnome.org/show_bug.cgi?id=797349 2018-09-13 16:14:22 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/README: doc: Update the README 2018-08-19 19:41:41 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/plugins/gst_plugins_cache.json: * gst/gstbuffer.c: * gst/gstbuffer.h: * gst/gstbufferlist.h: * gst/gstcaps.h: * gst/gstcontrolbinding.h: * gst/gstelement.h: * gst/gsterror.c: * gst/gsterror.h: * gst/gstevent.h: * gst/gstinfo.c: * gst/gstinfo.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstminiobject.c: * gst/gstpad.c: * gst/gstpadtemplate.h: * gst/gstpromise.c: * gst/gstprotection.h: * gst/gstquery.h: * gst/gstsample.h: * gst/gststructure.c: * gst/gsttaglist.h: * gst/gsttypefind.h: * gst/gsturi.c: * gst/gsturi.h: * gst/gstvalue.h: * gst/meson.build: * libs/gst/base/gstadapter.c: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasesrc.h: * libs/gst/base/gstcollectpads.c: * libs/gst/controller/gstproxycontrolbinding.c: * libs/gst/net/gstnetclientclock.c: doc: Fix hotdoc warnings * Making sure that `static inline` function are in the GIR (by first defining them, and make sure to mark as skiped) * Do not try to link to unexisting symbols * Also generate GIR information about gst_tracers 2018-10-22 03:14:11 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/gst-hotdoc-plugins-scanner.c: * docs/gst-plugins-doc-cache-generator.py: * docs/gst/building.md: * docs/gst/gi-index.md: * docs/gst/index.md: * docs/gst/overview.md: * docs/gst/running.md: * docs/gst/sitemap.txt: * docs/images/gdp-header.png: * docs/images/gdp-header.svg: * docs/images/gst-universe.svg: * docs/index.md: * docs/libs/base/index.md: * docs/libs/base/sitemap.txt: * docs/libs/check/index.md: * docs/libs/check/sitemap.txt: * docs/libs/controller/index.md: * docs/libs/controller/sitemap.txt: * docs/libs/index.md: * docs/libs/net/index.md: * docs/libs/net/sitemap.txt: * docs/meson.build: * docs/plugins/Makefile.am: * docs/plugins/gst_plugins_cache.json: * docs/plugins/gstreamer-plugins-docs.sgml: * docs/plugins/gstreamer-plugins-sections.txt: * docs/plugins/gstreamer-plugins.args: * docs/plugins/gstreamer-plugins.hierarchy: * docs/plugins/gstreamer-plugins.interfaces: * docs/plugins/gstreamer-plugins.prerequisites: * docs/plugins/gstreamer-plugins.signals: * docs/plugins/gstreamer-plugins.types: * docs/plugins/index.md: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * docs/plugins/sitemap.txt: * docs/version.in: * gst/gstelement.c: * gst/gsterror.c: * gst/gstmessage.c: * gst/gstpoll.c: * gst/meson.build: * libs/gst/base/gstbitreader.c: * libs/gst/base/gstbytereader.c: * libs/gst/base/gstbytewriter.c: * libs/gst/base/meson.build: * libs/gst/check/meson.build: * meson.build: * meson_options.txt: * plugins/elements/gstcapsfilter.c: * plugins/elements/gstelements.c: * plugins/elements/meson.build: * plugins/meson.build: * tools/tools.h: Port to hotdoc 2018-09-14 09:24:26 -0300 Thibault Saunier <tsaunier@igalia.com> * Makefile.am: * configure.ac: * docs/Makefile.am: * docs/gst/.gitignore: * docs/gst/Makefile.am: * docs/gst/building.xml: * docs/gst/gst-universe.dot: * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-overrides.txt: * docs/gst/gstreamer-sections.txt: * docs/gst/gstreamer.types.in: * docs/gst/meson.build: * docs/gst/running.xml: * docs/libs/.gitignore: * docs/libs/Makefile.am: * docs/libs/gdp-header.png: * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-overrides.txt: * docs/libs/gstreamer-libs-sections.txt: * docs/libs/gstreamer-libs.types: * docs/libs/meson.build: * docs/list-ulink.xsl: * docs/meson.build: * docs/version.entities.in: * meson.build: doc: Remove gtk-doc support 2018-08-11 10:12:27 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gstobject.c: * gst/gstparamspecs.h: gst: Add a GParamSpecFlag to force gst-inspect to use pspec default value Instead of the object value, this should be used every time a random value will be returned by g_object_get This is also useful to make the values returned by inspecting element stable accross runs. 2018-10-22 11:44:04 +0200 Thibault Saunier <tsaunier@igalia.com> * gst/gstcapsfeatures.c: * gst/gstelement.h: * libs/gst/controller/gsttimedvaluecontrolsource.c: doc: Add some missing docstrings 2018-10-22 11:32:45 +0200 Thibault Saunier <tsaunier@igalia.com> * gst/gstdynamictypefactory.c: * gst/gstelement.c: * gst/gstelementfactory.h: * gst/gsttracer.h: * gst/gsttracerrecord.h: * gst/gstutils.c: * libs/gst/check/gstcheck.c: * libs/gst/check/gstcheck.h: * plugins/elements/gstqueue.c: doc: Fix and add some missing docstrings 2018-10-22 11:32:40 +0200 Thibault Saunier <tsaunier@igalia.com> * gst/gststructure.c: structure: Mark _from_string as constructor 2019-05-13 14:42:28 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: meson: Pass -DGST_STATIC_COMPILATION for static builds This is only needed on Windows when building with MSVC, but it is safe to pass it everywhere. Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/398 2019-05-13 13:24:42 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: meson: Link to objects instea of static helper library Otherwise the objects from that static helper library are not included in the gstreamer-1.0 static library. This was supposed to be fixed in Meson, but the pull request hasn't been merged yet: https://github.com/mesonbuild/meson/pull/3939 Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/398 2019-05-11 18:21:19 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/meson.build: meson: set correct install path for gdb helper The original version of the patch used glib-2.0 but that was later changed to gstreamer-1.0 for autotools. The meson file was forgotten. Fix the path to match the one used in libgstreamer-gdb.py.in. 2019-05-10 14:51:15 +0200 Niels De Graef <niels.degraef@barco.com> * gst/gsturi.h: uri: Add gst_clear_uri() Basically, you can use this instead of using `gst_uri_unref()` (which needs to be preceded by a NULL-check). See https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/275 and https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/3 2019-05-09 08:59:59 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * libs/gst/base/gstbasesink.c: gstbasesink: Fix gir annotation 2019-01-26 10:40:19 -0500 Aaron Boxer <aaron.boxer@collabora.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesink.h: gstbasesink: add stats getter method fixes #355 2019-05-08 12:11:50 +0200 Niels De Graef <niels.degraef@barco.com> * gst/gstpromise.h: gst: Add support for g_autoptr(GstPromise) 2019-05-01 15:46:56 +0200 Niklas Hambüchen <mail@nh2.me> * gst/parse/get_flex_version.py: Make get_flex_version.py script executable Like all other scripts in the same dir. It has a hashbang, so it should be executable. 2019-04-25 10:41:54 +0530 Guillaume Desmottes <guillaume.desmottes@collabora.com> * tools/gst-stats.c: gst-stats: format latency as GST_TIME Latency is easier to read when formatted as time rather than displayed as a flat number in ns. Especially when displaying GST_CLOCK_TIME_NONE which is now formated as 99:99:99.999999999 instead of 18446744073709551615. 2019-04-24 18:22:06 +0200 Andoni Morales Alastruey <ylatuya@gmail.com> * tools/gst-inspect.c: gst-inspect: fix unused-const-variable error in windows ../tools/gst-inspect.c:44:20: error: 'DEFAULT_PAGER' defined but not used [-Werror=unused-const-variable=] 2018-11-12 19:59:41 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstsegment.c: * gst/gstsegment.h: gstsegment: Add GST_SEEK_FLAG_TRICKMODE_FORWARD_PREDICTED This is generally useful, and mandated by the ONVIF streaming spec, section 6.5.3 <https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf> 2019-04-20 22:26:52 +0200 Rasmus Thomsen <oss@cogitri.dev> * libs/gst/helpers/meson.build: meson: check for libcap via pkg-config It's possible that setcap is installed, but the libcap headers/libs aren't (e.g. during cross compilation, when you have the program installed for the host, but need the headers of the target). Also removes the need to manually check for the libcap headers. 2019-04-23 18:00:59 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbitwriter.h: bitwriter: Fix inclusion of header in C++ code ../subprojects/gstreamer/libs/gst/base/gstbitwriter.h: In function 'gboolean _gst_bit_writer_check_remaining(GstBitWriter*, guint32)': ../subprojects/gstreamer/libs/gst/base/gstbitwriter.h:161:31: error: invalid conversion from 'gpointer' {aka 'void*'} to 'guint8*' {aka 'unsigned char*'} [-fpermissive] bitwriter->data = g_realloc (bitwriter->data, (new_bit_size >> 3)); ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2019-04-23 17:33:34 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/base.h: base: Include gstbitwriter.h in the single-include header 2019-04-23 15:08:18 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstallocator.h: * gst/gstbin.h: * gst/gstbuffer.c: * gst/gstbuffer.h: * gst/gstbufferpool.h: * gst/gstclock.h: * gst/gstelement.h: * gst/gstelementfactory.h: * gst/gsterror.h: * gst/gstevent.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstminiobject.h: * gst/gstobject.h: * gst/gstpad.h: * gst/gstparse.h: * gst/gstplugin.h: * gst/gstsegment.h: * gst/gststructure.c: * gst/gstsystemclock.h: gst: Fix various Since markers 2019-04-23 15:07:08 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.h: * libs/gst/base/gstbasetransform.h: * libs/gst/base/gstcollectpads.h: * libs/gst/controller/gstinterpolationcontrolsource.h: libs: Fix various Since markers 2019-04-23 14:54:03 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: Mark all public structs as Since: 1.14 2019-04-23 14:39:48 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstcaps.c: caps: Add Since: 1.16 marker to gst_caps_copy() 2019-04-23 12:31:07 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbitwriter.h: bitwriter: Mark the whole type as Since: 1.16 2018-11-13 13:41:53 +0100 Robert Rosengren <robertr@axis.com> * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-sections.txt: * libs/gst/net/Makefile.am: * libs/gst/net/gstnetclientclock.c: * libs/gst/net/gstnettimeprovider.c: * libs/gst/net/gstnetutils.c: * libs/gst/net/gstnetutils.h: * libs/gst/net/meson.build: * libs/gst/net/net.h: netutils: make gst_net_utils_set_socket_dscp external Internal gst_net_utils_set_socket_dscp renamed and turned into external function. Similar functionality exists in e.g. multidupsink, which could instead use this one. 2018-11-13 13:39:43 +0100 Robert Rosengren <robertr@axis.com> * libs/gst/net/gstnetutils.c: netutils: Add IPv6 support to QoS DSCP Added IPv6 support as already implemented in multiudpsink (gst-plugins-good). 2019-04-19 12:31:22 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/libs/gstreamer-libs-docs.sgml: docs: add index for new symbols in 1.16 2019-04-19 10:20:02 +0100 Tim-Philipp Müller <tim@centricular.com> * README: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * meson.build: Back to development === release 1.16.0 === 2019-04-19 00:15:21 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * README: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.16.0 2019-04-19 00:15:21 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2019-04-19 00:15:19 +0100 Tim-Philipp Müller <tim@centricular.com> * po/zh_CN.po: Update translations 2019-04-18 10:13:51 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Downgrade EOS warning In the case of pushfilesrc, this is the expected behaviour, so let's downgrade the warning to a debug message to avoid confusing users. 2019-04-17 20:46:58 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tests/check/libs/basesrc.c: tests: basesrc: unref gst_bus_timed_pop_filtered return 2019-04-16 13:29:00 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: * gst/gst_private.h: * gst/gstinfo.c: gstinfo: clean up function pointer names hashtable And add strduped function pointer names to the global quark table, so that they don't get reported as lost by valgrind. This allows us to use GST_DEBUG when running tests under valgrind. 2019-04-16 23:50:15 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: fix doc chunk for new buffer-consumed signal Fixes 'Warning: GstBase: incorrect number of parameters in comment block, parameter annotations will be ignored.' from g-ir-scanner. 2019-04-12 09:23:52 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Don't compare element name as element Id is already unique 2019-04-12 08:38:03 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Remove redundant if conditions 2019-04-12 08:34:49 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Make GST_DEBUG logs consistent 2019-04-12 08:28:22 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Fix bug when dropping sub-latency probe event Fixes #373 2019-04-12 16:37:18 +0200 Philipp Zabel <p.zabel@pengutronix.de> * gst/gstevent.c: event: fix seek event creation Creating seek events segfaults on 32-bit ARM since commit 2fa15d53717c ('event: add new seek parameter, "trickmode-interval"'), which missed casting the trickmode-interval initializer in the variable argument list to guint64. 2019-04-11 15:32:51 -0400 Xavier Claessens <xavier.claessens@collabora.com> * tools/gst-inspect.c: gst-inspect: Do not print warning if 'less' is missing === release 1.15.90 === 2019-04-11 00:19:11 +0100 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.15.90 2019-04-11 00:19:11 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2019-04-10 09:17:01 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Fix typo bug 2019-04-10 09:13:53 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Fix bug when storing latency probe event The pad name sotred in the latency event has no longer the name of the element, so we have to get the element Id, element name and pad name values from the data structure and compare all 3 values. 2019-04-10 10:18:54 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstcontrolbinding.c: controlbinding: Check if the weak pointer was cleared before explicitly removing it Otherwise we'll get an assertion if the object behind the weak pointer was already destroyed in the meantime as we would pass NULL as first argument to g_object_remove_weak_pointer(). 2019-04-09 08:05:09 -0400 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: * tools/gst-stats.c: tracer: latency: Show element id, element name and pad name 2019-03-25 15:36:08 +0100 Julian Bouzas <julian.bouzas@collabora.com> * tools/gst-stats.c: gst-stats: Add element latency support This will output latency information when parsing a log file with gst-stats that has latency trace information. It will show the min, max and mean latency for the pipeline and all its elements. It will also show the reported latency for each element of the pipeline. Output example: Latency Statistics: pulsesrc0_src|fakesink0_sink: mean=190000043 min=190000043 max=190000043 Element Latency Statistics: flacparse0_src: mean=45561281 min=654988 max=90467575 flacenc0_src: mean=89938883 min=81913512 max=97964254 flacdec0_src: mean=45804881 min=228962 max=91380801 Element Reported Latency: pulsesrc0: min=10000000 max=200000000 ts=0:00:00.262846528 flacenc0: min=104489795 max=104489795 ts=0:00:00.262898616 flacparse0: min=0 max=0 ts=0:00:00.262927962 2019-03-21 10:37:34 +0100 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: * plugins/tracers/gstlatency.h: tracer: latency: Show per-element reported latency 2019-03-20 12:20:48 +0100 Julian Bouzas <julian.bouzas@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Show element's source pad name instead of element's name The full pad name gives more information than the element's name, which is very useful when elements have multiple source pads. 2019-03-18 21:55:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: latency: Dot not override already stored events First, the event would be leaved, but also when an element takes several buffers before producing one, we want the reported latency to be the aggregation, so the distance from the oldest buffer. 2018-10-31 16:50:48 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: * plugins/tracers/gstlatency.h: tracer: latency: Add parameter to select latency type This sets back the default to trace only pipeline latency, and add flags to enabled element tracing. It is now possible to only trace element latency, only trace pipeline latency, trace both or none. 2018-07-06 17:08:24 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: tracer: latency: Add per element latency tracer This adds per element latency tracing. 2018-07-04 14:18:42 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: tracer: Don't pass pads inside GstEvent This removes the passing of pad inside of a GstEvent. While this is not a bug, it may affect the live time of the pad, hense change the pipeline behaviour. 2018-11-13 21:19:22 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstbasesrc.c: * tests/check/libs/basesrc.c: basesrc: do not send EOS when automatic_eos is FALSE 2019-04-01 12:22:49 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add buffer-consumed pad signal The signal will be emitted when a buffer was consumed on a pad, if the newly-added "emit-signals" property has been set to TRUE. Handlers connected to the signal will receive a valid reference on the consumed buffer, allowing for example the retrieval of metas in order to forward them once an output buffer is pushed out. 2019-04-05 11:43:53 +0200 Antonio Ospite <antonio.ospite@collabora.com> * tools/gst-inspect.c: gst-inspect: fix printing the first field of a GstStructure When printing a GstStructure property (e.g. the "stats" property in rtpsession) the first field is printed on the same line of the type description, and this is both inconsistent compared to how Enum values are printed and confusing as the reader might miss the first field. To fix this, add a newline before printing GstStructure fields in properties. NOTE: this does not change the existing inconsistent behavior of an extra newline *after* a GstStructure property, but the latter is not as annoying and it would take more effort to fix because GstStructure fields are printed in CAPS descriptions too. 2019-04-01 18:34:07 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstevent.c: * gst/gstevent.h: * gst/gstquark.c: * gst/gstquark.h: * tests/check/gst/gstevent.c: event: add new seek parameter, "trickmode-interval" When performing a key unit trickmode seek, it may be useful to specify a minimum interval between the output frames, either in very high rate cases, or as a protection against streams that may contain an overly large amount of key frames. One use case is ONVIF Section 6.5.3: <https://www.onvif.org/specs/stream/ONVIF-Streaming-Spec.pdf> 2019-03-22 17:46:03 +0100 Antonio Ospite <antonio.ospite@collabora.com> * tests/check/gstreamer.supp: tests: add the valgrind suppression file from the "common" module Other gstreamer repositories have their own valgrind suppression file directly in the repository. Add a suppression file to the core gstreamer repository too, this makes it easier to use it with gst-build which does not check out the common module. This is also a little step towards the removal of the common submodule. NOTE: the added file is the latest version from the "common" repository but it has been renamed from gst.supp to gstreamer.supp for symmetry with the suppression files in the other repositories. 2019-03-23 18:31:42 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: g-i: pass --quiet to g-ir-scanner This suppresses the annoying 'g-ir-scanner: link: cc ..' output that we get even if everything works just fine. We still get g-ir-scanner warnings and compiler warnings if we pass this option. 2019-03-23 18:17:43 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstcheck.c: check: suppress some g-i warnings gstcheck.c:142: Warning: GstCheck: gst_check_add_log_filter: return value: Invalid non-constant return of bare structure or union; register as boxed type or (skip) gstcheck.h:178: Warning: GstCheck: gst_check_run_suite: argument suite: Unresolved type: 'Suite*' 2019-03-23 17:53:54 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: g-i: silence 'nested extern' compiler warnings when building scanner binary We need a nested extern in our init section for the scanner binary so we can call gst_init to make sure GStreamer types are initialised (they are not all lazy init via get_type functions, but some are in exported variables). There doesn't seem to be any other mechanism to achieve this, so just remove that warning, it's not important at all. 2019-03-23 17:53:07 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbitwriter.c: bitwriter: mark as 'skip' for gobject-introspection Silences g-ir-scanner warnings. We do the same for ByteWriter. 2019-03-21 18:55:16 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: don't leak gap buffer when out of segment 2019-03-21 18:47:04 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: take the pad lock around queue gap event removal As is done for every other queue interaction 2019-03-20 17:43:02 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: don't reset the disable-passthrough property value Resetting as a result of _reset() on PAUSED->READY is unexpected. 2019-03-14 11:59:43 +0100 Stephane Cerveau <scerveau@fluendo.com> * gst/gstelement.c: gst_element_get_factory: update documentation Inform about a potential NULL result. 2019-03-13 18:46:14 +0100 Stephane Cerveau <scerveau@fluendo.com> * gst/gstelementfactory.c: gst_element_factory_get_metadata: protect from null factory 2019-03-12 21:19:23 +0000 Damian Vicino <sdavtaker@gmail.com> * README: Update README 2019-03-12 20:12:37 +0000 Damian Vicino <sdavtaker@gmail.com> * README: Update README to have correct name of the license file documented (COPYING). There is no LICENSE file in the root directory, and COPYING file content is a license file. 2019-03-10 15:35:39 +0900 Seungha Yang <seungha.yang@navercorp.com> * tests/check/meson.build: tests: fdsrc: Exclude unit test on Windows Since elements_fdsrc.test_num_buffers uses blocking pipe on Windows, the test will never be finished. But emulating non-blocking fd without win32 APIs on Windows is a little tricky. 2019-03-08 16:19:29 +0100 Santiago Carot-Nemesio <scarot@twilio.com> * gst/gsttaskpool.c: gsttaskpool: Do not block tasks while cleaning up the taskpool There is a deadlock if any thread from the pool tries to push a new task while other thread is waiting for the pool of threads to finish. With this patch the thread will get an error when it tries to add a new task while the taskpool is being cleaned up. 2019-03-06 19:46:46 +0100 Marco Trevisan (Treviño) <mail@3v1n0.net> * gst/gsturi.c: gsturi: Fix annotation on get_path to return a nullable Use proper syntax or the (nullable): part will be part of the description 2019-03-06 19:34:12 +0100 Marco Trevisan (Treviño) <mail@3v1n0.net> * gst/gstmessage.c: gstmessage: Fix annotations on details Details argument should be nullable, but the docstring uses a wrong syntax. 2019-03-06 09:04:54 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstbuffer.c: tests: fix leak in buffer test_wrapped_bytes test 2019-03-01 11:59:14 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstbuffer.c: * tests/check/gst/gstmeta.c: gstbuffer: store meta in add order The previous implementation of add was implemented as a prepend, switch to append as that seems like the expected order. 2019-03-04 09:01:07 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * meson.build: Back to development 2019-02-28 16:48:57 +0100 Santiago Carot-Nemesio <sancane@gmail.com> * gst/gsttaskpool.c: taskpool: Set error in case something goes wrong in the default handlers === release 1.15.2 === 2019-02-26 11:38:00 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.15.2 2019-02-26 13:23:47 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/parse/Makefile.am: meson: dist get_flex_version.py 2019-02-26 11:38:00 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2019-02-26 11:37:57 +0000 Tim-Philipp Müller <tim@centricular.com> * po/af.po: * po/ast.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update translations 2019-02-25 13:49:43 +0100 Philipp Zabel <p.zabel@pengutronix.de> * gst/gstplugin.c: plugin: add 0BSD as valid license Add the zero-clause BSD license, which is an alteration of the ISC license, to the list of valid licenses. 2019-02-25 13:48:38 +0100 Philipp Zabel <p.zabel@pengutronix.de> * gst/gstplugin.c: plugin: fix link to 3-clause BSD license The current link points to the 2-clause BSD license, explicitly link to the 3-clause version of the license. 2019-02-20 17:51:40 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstmacros.h: gstmacros.h: Fix restrict definition on MSVC Turns out it's exposed as `__restrict`, not as `restrict`. https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/95#note_120782 2019-02-20 01:25:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstmacros.h: gstmacros.h: Fix check for 'restrict' keyword MSVC also defines it as a keyword. Fixes build errors in projects that include MSVC's xkeycheck.h which ensures that keywords aren't overriden with a define. 2019-02-18 09:58:19 +0900 Seungha Yang <seungha.yang@navercorp.com> * gst/gstbuffer.c: buffer: Don't miss return value on Windows build ... and use InterlockedExchangeAdd64 for the 64bit value. InterlockedExchangeAdd is 32bit version. 2019-02-15 13:23:37 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Make removing of signal/bus watches thread-safe Between getting the GSource with the mutex and destroying it, something else might've destroyed it already and we would have a dangling pointer. Keep an additional reference just in case. 2019-02-15 13:20:27 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Don't allow removing signal watches with gst_bus_remove_watch() Signal watches are reference counted and gst_bus_remove_watch() would immediately remove it, breaking the reference counting. Only gst_bus_remove_signal_watch() should be used for removing signal watches. 2019-02-11 15:21:21 +1300 Lawrence Troup <lawrence.troup@teknique.com> * gst/gstpad.c: * gst/gstpad.h: pad: Document that pad unlink function is called with pad lock held Fixes #353 2016-12-02 17:56:59 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gst_private.h: * gst/gstbuffer.c: * gst/gstmeta.c: * gst/gstmeta.h: * tests/check/gst/gstmeta.c: buffer: store sequence number for metas For metas where order might be significant if multiple metas are attached to the same buffer, so store a sequence number with the meta when adding it to the buffer. This allows users of the meta to make sure metas are processed in the right order. We need a 64-bit integer for the sequence number here in the API, a 32-bit one might overflow too easily with high packet/buffer rates. We could do it rtp-seqnum style of course, but that's a bit of a pain. We could also make it so that gst_buffer_add_meta() just keeps metas in order or rely on the order we add the metas in, but that seems too fragile overall, when buffers (incl. metas) get merged or split. Also add a compare function for easier sorting. We store the seqnum in the MetaItem struct here and not in the GstMeta struct since there's no padding in the GstMeta struct. We could add a private struct to GstMeta before the start of GstMeta, but that's what MetaItem effectively is implementation- wise. We can still change this later if we want, since it's all private. Fixes #262 2019-02-09 11:35:59 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdeviceprovider.c: deviceprovider: It's (transfer none) not (transfer-none) 2019-01-30 10:41:58 -0300 Thibault Saunier <tsaunier@igalia.com> * docs/gst/gstreamer-sections.txt: * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * gst/gstdeviceprovider.h: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gstquark.c: * gst/gstquark.h: device-provider: Allow notifying application of device changes Thi introduces new APIs to post a `DEVICE_CHANGED` message on the bus so the application is notifies when a device is modified. For example, if the "defaultness" of a device was changed or any property that can be changed at any time. Atomically changing the device object notifying that way allow us to abtract away the internal threads. New APIS: - gst_message_new_device_changed - gst_message_parse_device_changed - gst_device_provider_device_changed 2019-02-08 16:42:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/parse/get_flex_version.py: * gst/parse/meson.build: meson: Extract flex version using a regex inside a script Different builds of Flex on different platforms output different strings in --version. For example: macOS: flex 2.5.35 Apple(flex-31) Windows: win_flex.exe 2.6.4 C:\Program Files (x86)\GnuWin32\bin\flex.EXE version 2.5.4 We need to look for a string that looks like a version, which means a regex till https://github.com/mesonbuild/meson/issues/1609 is fixed. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/356 2019-02-05 18:18:48 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/gstharness.c: * tests/check/gst/gstmeta.c: * tools/gst-inspect.c: misc: Fix various compiler warnings on MinGW gstharness.c: Use G_GSIZE_FORMAT instead of hard-coding %zu error: unknown conversion type character 'z' in format [-Werror=format] gst-inspect.c: GPid is void* on non-UNIX, and we only use it on UNIX error: initialization makes pointer from integer without a cast [-Werror] gstmeta.c: Use and then discard value error: value computed is not used [-Werror=unused-value] With this, gstreamer builds with -Werror on MinGW 2019-01-29 16:26:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdatetime.c: datetime: new() and new_local_time() constructors are not nullable 2019-01-29 15:50:06 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Constructors are all not nullable They can't possibly return NULL except in case of assertions. 2019-01-29 15:49:50 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.c: padtemplate: Constructors are all nullable as they check the template name 2019-01-29 12:01:59 +0100 Edward Hervey <edward@centricular.com> * tests/check/libs/baseparse.c: test: Set PTS on proper variable This would previously set the PTS on a random address causing various memory corruption 2019-01-25 02:36:18 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstinfo.c: * meson.build: * meson_options.txt: gstinfo: add Windows stacktraces support This uses the DbgHelp library if available 2019-01-25 13:46:59 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstpad.c: pad: Remove unneeded 64bit upcast in debug trace The hook->hook_id is a gulong for which there are no portability issues when tracing in printf format with %lu. So use %lu and remove the upcast to 64 bit. This makes the code more consistent with everything else tracing that hook_id and other gulong id. 2019-01-24 13:52:46 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tools/gst-inspect.c: gst-inspect: Re-add DEFAULT_LESS_OPTS with initial value Commit 56b4fbef5e6760adc927d0e1c7c8d6a0db9b785c refactored the pipe code to use GLib utility, but the patch was hading some other changed. LESS env was now hardcoded in the middle instead of from a define and was changed from FXR to -RX. The "-" is not even valid for LESS env, and with the lost of F, we would still use a pager when the content fits the terminal. 2019-01-23 13:51:08 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gsttaglist.c: taglist: Remove (scope call) annotation from gst_tag_register() This was added in 7fdb15d6a2 but it is wrong. (scope call) is for closures that only have to stay valid for the scope of the call, but the tag merge function has to stay valid for the whole lifetime of the application instead. There's no appropriate scope annotation for that so we have to skip these functions for now. 2019-01-23 12:15:13 +0900 Seungha Yang <seungha.yang@navercorp.com> * tests/check/gst/gstinfo.c: tests: info: Fix spurious validation Should be equality check, not assignment. Additionally, use fail_unless_equals_* macro for better readability and debugging easier, if possible. 2019-01-23 21:15:09 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/parse/meson.build: meson: improve flex version parsing the output of flex --version can contain more than one space 2019-01-22 14:05:43 +0900 Seungha Yang <seungha.yang@navercorp.com> * meson.build: meson: Correct minimum required GLib version It's updated to 2.40.0 since the commit 3e8ef4cf5a41e26836f0a5a8cb3ddaa5e55f1524 2019-01-17 11:22:27 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-inspect.c: gst-inspect: Don't setup pager too early Setup it only if we have something to print out about inspected results. Otherwise, gst_tools_print_version() output will be redirected to pager and also exit immediately without waiting child process. 2019-01-08 21:23:44 +0900 Seungha Yang <seungha.yang@navercorp.com> * tools/gst-inspect.c: gst-inspect: Port to Glib's spawn API Although we support pager just for *nix until now, this can make more portable to Windows. Fixes #342 === release 1.15.1 === 2019-01-17 01:38:59 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.15.1 2019-01-17 01:38:59 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/gstreamer-plugins.args: * docs/plugins/gstreamer-plugins.hierarchy: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2019-01-17 01:38:49 +0000 Tim-Philipp Müller <tim@centricular.com> * po/af.po: * po/ast.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update translations 2019-01-17 01:30:25 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tools/gst-inspect.c: gst-inspect: Fix ANSI escape sequence usage on Windows Either disable it when it's not supported, or setup the console to interpret them correctly when it's supported. Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/351 2019-01-15 18:05:31 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Fix printf format when printing hook id It's a gulong so we have to cast it to a guint64 when using it with G_GUINT64_FORMAT. Spotted by Vincent Penvern. 2019-01-14 16:22:16 +0800 Daniel Drake <drake@endlessm.com> * gst/gstdeviceprovider.c: deviceprovider: fix counting number of times started GstDeviceProvider has a started_count private variable counter, and the gst_device_provider_start() documentation emphasizes the importance of balancing the start and stop calls. However, when starting a provider that is already started, the current code will never increment the counter more than once. So you start it twice, but it will have start_count 1, which is the maximum value it will ever see. Then when you stop it twice, on the 2nd stop, after decrementing the counter in gst_device_provider_stop(): else if (provider->priv->started_count < 1) { g_critical ("Trying to stop a GstDeviceProvider %s which is already stopped", GST_OBJECT_NAME (provider)); and the program is killed. Fix this by incrementing the counter when starting a device provider that was already started. 2019-01-11 12:32:49 +0200 Jordan Petridis <jordan@centricular.com> * tests/check/gst/gstdatetime.c: tests: gstdatetime: move gst_date_time_new* and time() calls closer While extremelly rare, time and gst_date_time_new_* will have diff values and potentially trigger an assertion. Thus move the calls as closely together as possible to mitigate this. 2019-01-10 12:05:34 +0000 Sebastian Dröge <slomo@coaxion.net> * gst/gstbin.c: Revert "bin: Hold the state lock while removing elements from a bin" This reverts commit 7f70d7a9450b321585fbfd1eb977548d4264b2a6 2019-01-09 14:01:02 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * tests/check/gst/gststructure.c: tests: Add more int range fixation tests 2019-01-09 13:38:44 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gststructure.c: structure: Support stepped ranges when fixating The step restriction was completely ignored until now. 2019-01-09 13:37:30 +0100 Jan Alexander Steffens (heftig) <jsteffens@make.tv> * gst/gststructure.c: structure: Use GLib's CLAMP macro for fixating ranges Just a bit of refactoring. 2019-01-07 14:08:25 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: element: Add note about racyness to gst_element_set_locked_state() This is racy if the state lock of the parent bin is not taken. The parent bin might've just checked the flag in another thread and as the next step proceed to change the child element's state. 2019-01-07 14:08:00 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Hold the state lock while removing elements from a bin We need to take the state lock here to ensure that we're not currently just before setting the state of this child element. Otherwise it can happen that we removed the element here and e.g. set it to NULL state, and shortly afterwards have another thread set it to a higher state again as part of a state change for the whole bin. When adding an element to the bin this is not needed as we require callers to always ensure after adding to the bin that the new element is set to the correct state. 2019-01-05 18:55:12 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: fix typo in docs 2019-01-02 23:35:11 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpipeline.c: pipeline: Call gst_task_cleanup_all() before checking reference counts after shutdown We have to ensure that all background threads from thread pools are shut down, or otherwise they might not have had a chance yet to drop their last reference to the pipeline and then the assertion for a reference count of 1 on the pipeline fails. 2019-01-02 18:41:24 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpipeline.c: pipeline: Use the test clock in all unit tests And check for exact times as we can now do that thanks to the test clock being deterministic. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/313 2018-09-26 17:09:50 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: implement 'gst-dot' and 'gst-print' commands This adds two custom gdb commands: 'gst-dot' creates dot files that a very close to what GST_DEBUG_BIN_TO_DOT_FILE() produces. Object properties and buffer content (e.g. codec-data in caps) are not available. 'gst-print' produces high-level information about GStreamer objects. This is currently limited to pads for GstElements and events for the pads. The output can look like this: (gdb) gst-print pad.object.parent GstMatroskaDemux (matroskademux0) { SinkPad (sink, pull) { } SrcPad (video_0, push) { events: stream-start: stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/001:1274058367 caps: video/x-theora width: 1920 height: 800 pixel-aspect-ratio: 1/1 framerate: 24/1 streamheader: < 0x5555557c7d30 [GstBuffer], 0x5555557c7e40 [GstBuffer], 0x7fffe00141d0 [GstBuffer] > segment: time rate: 1 tag: global container-format: Matroska } SrcPad (audio_0, push) { events: stream-start: stream-id: 0463ccb080d00b8689bf569a435c4ff84f9ff753545318ae2328ea0763fd0bec/002:1551204875 caps: audio/mpeg mpegversion: 4 framed: true stream-format: raw codec_data: 0x7fffe0014500 [GstBuffer] level: 2 base-profile: lc profile: lc channels: 2 rate: 44100 segment: time rate: 1 tag: global container-format: Matroska tag: stream audio-codec: MPEG-4 AAC audio language-code: en } } 2018-12-29 16:20:54 +0100 Michael Olbrich <m.olbrich@pengutronix.de> * libs/gst/helpers/gst_gdb.py: gdb: make the code PEP-8 compliant 2018-12-31 14:55:55 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gststream.h: tests: remove unused gststream.h file Looks like an earlier version of the .c file. 2018-12-19 16:55:57 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tools/gst-inspect.c: gst-inspect: Disable colors when piped This follows what git and systemd tools would do. 2018-12-19 16:06:40 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tools/gst-inspect.c: gst-inspect: Fix pager color with less Fixes #341 2018-12-19 00:34:40 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasesrc.c: basesrc: ensure submitted buffer list is writable Fixes flaky appsrc unit test where depending on scheduling the submitted list might not be writable if submitted via an action signal from the application thread. Fixes gst-plugins-base#522 2018-12-14 15:55:27 +0000 Jonny Lamb <jonnylamb@jonnylamb.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: fixes to the eos-after and error-after properties I copied `error-after` to make the `eos-after` property, but it turned out there were some problems with that one, so this patch: adds separate counters (so setting to NULL and reusing the element will still work); clarifies the properties' min values; and reports an error when both are set. 2018-11-28 14:58:32 -0600 Michael Gruner <michael.gruner@ridgerun.com> * scripts/gst-uninstalled: gst-uninstalled: include prefix in the plugins path 2018-12-17 23:29:16 +0900 Seungha Yang <seungha.yang@navercorp.com> * tests/check/gst/gstdatetime.c: tests: datetime: Fix failure on Windows The documentation for WIN32 mktime indicates that for struct tm* before January 1, 1970, that -1 is returned, and since mktime is timezone dependent, the struct tm corresponding to 1:00, Jan. 1, 1970 might be failed. See also https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/mktime-mktime32-mktime64 2018-09-25 09:03:03 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Add details of query in debug log 2018-12-15 11:42:30 +0100 Edward Hervey <edward@centricular.com> * gst/parse/grammar.y: parse: Move variable to block where it's used There was a dead assignment used outside of the bin/pipeline creation which was confusing (and unused). Just move that variable to where it is actually used. (Note that that variable was not needed outside of that block since the refactoring done in 2b33d3318519fd613dd5a4ebbd7c308609904e68 ) 2018-12-15 11:08:09 +0100 Edward Hervey <edward@centricular.com> * tests/examples/streamiddemux/streamiddemux-stream.c: examples: Remove dead assignments Those values are always set after before usage 2018-12-15 11:07:21 +0100 Edward Hervey <edward@centricular.com> * libs/gst/check/gstharness.c: harness: assert on result of gst_pad_push_event() That assertion was accidentally removed in the refactoring done in 60de1f26c78feb0cde6d3f82cf86cf35daa71cc0 2018-12-15 10:53:55 +0100 Edward Hervey <edward@centricular.com> * tools/gst-inspect.c: gst-inspect: Remove dead assignment readable is set just after before usage since 906bbd3817c86e64d1bfa57570469055456addfe 2018-12-14 18:38:21 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpad.c: pad: Let threads in the test take ownership of a strong reference to their pads Otherwise it can easily happen that the pad is destroyed before the thread disappears, as happened sometimes in the test_pad_probe_block_add_remove test where joining of the thread was done *after* the pad was unreffed and destroyed. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/339 2018-12-14 18:37:53 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Print some debug information about pad probe hooks we remove 2018-12-11 16:48:56 +0000 Jonny Lamb <jonnylamb@jonnylamb.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: add eos-after property Using `num-buffers` can be unpredictable as buffer sizes are often arbitrary (filesrc, multifilesrc, etc.). The `error-after` property on `identity` is better but obviously reports an error afterwards. This adds `eos-after` which does exactly the same thing but reports EOS instead. 2018-12-11 10:48:46 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.com> * docs/gst/gstreamer-sections.txt: * gst/gstcaps.c: * gst/gstcaps.h: * tests/check/gst/gstcaps.c: gstcaps: add gst_caps_set_features_simple() Convenient helper setting a caps feature on all the structures of a caps. 2018-12-06 20:22:21 +0000 Roman Sivriver <roman@rsiv.net> * libs/gst/helpers/Makefile.am: gst: fixed the install command for gdb python macros on macos - `install -D` is not supported by BSD install 2018-12-01 10:32:07 -0500 Dardo D Kleiner <dardokleiner@gmail.com> * tests/check/gst/gstmeta.c: buffer: Add more exhaustive test for gst_buffer_foreach_meta() meta removal Existing test for iterating/removing buffer meta data was insufficient to detect linked list corruption when removing multiple items, and could also suffer from such corruption in attempting to count remaining items. Modified the one test and added several others to exercise multiple scenarios. Validates fix for issue #332. 2018-12-01 10:48:11 -0500 Dardo D Kleiner <dardokleiner@gmail.com> * gst/gstbuffer.c: buffer: Fix memory corruption in gst_buffer_foreach_meta() when removing metas Fix corruption of meta list head when removing metas at the beginning during iteration. Linked list handling in gst_buffer_foreach_meta failed to track the previous entry and update the correct next pointer when removing items from beyond the head of the list, resulting in arbitrary list pointer corruption. Closes #332 2018-12-05 17:24:00 -0300 Thibault Saunier <tsaunier@igalia.com> * common: Automatic update of common submodule From cd1dee0 to 59cb678 2018-11-23 21:22:21 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * meson.build: * meson_options.txt: libdw support is optional This was no longer optional, leading to deadcode. This regression was found trying to fix the unwind variant in cerbero. 2018-11-29 12:54:46 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Fix colors for "URI handling" section They seemed incompatible with other colors. 2018-11-28 18:06:54 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Avoid use of non-bright blue color Simple blue doesn't work on Linux console, which also happens to be a gnome-terminal theme. Use bright-blue instead. 2018-11-26 22:00:28 +0900 KimTaeSoo <myrandy1@gmail.com> * tests/check/libs/baseparse.c: baseparse: Add unit test for short reads Before the previous commit, buffer pulling count and chain function call counts are not equal due to EOS. After the modification, these counts are equal so unit test is passing. https://gitlab.freedesktop.org/gstreamer/gstreamer/merge_requests/33 https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/294 2018-11-15 00:17:09 +0900 KimTaeSoo <myrandy1@gmail.com> * libs/gst/base/gstbaseparse.c: baseparse: Use buffer from short reads instead of pulling again baseparse internally uses a 64kb buffer for pulling data from upstream. If a 64kb pull is failing with a short read, it would previously pull again the requested size. Doing so is not only inefficient but also seems to cause problems with some elements (rawvideoparse) where the second pull would fail with EOS. Short reads are only allowed in GStreamer at EOS. Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/294 2018-11-28 11:00:21 +0000 Philippe Normand <philn@igalia.com> * plugins/elements/gstinputselector.c: input-selector: Let context queries pass through By doing so GL source elements can successfully reuse the GL context and display of downstream elements. This change fixes an issue in playbin when using gltestsrc where the context query made by the source element would fail and the source element would create a second (useless) GLDisplay. 2018-11-28 05:58:53 +0200 Jordan Petridis <jordan@centricular.com> * gst/gstsystemclock.c: * libs/gst/check/libcheck/check.c: * plugins/elements/gstfdsink.c: * tests/benchmarks/capsnego.c: * tests/check/gst/gstpad.c: * tests/check/gst/gsturi.c: Run gst-indent through the files This is required before we enabled an indent test in the CI. https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/33 2018-11-24 14:51:19 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Use only original 16 colors Not only this will make colored output work on old terminals and console as well, terminals can theme the actual colors this way to make it fit with their different themes this way. 2018-11-27 02:59:41 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/check/gstharness.c: Revert "harness: Take ownership of floating references (pads, elements) passed to the harness" This reverts commit 2faf93c009d866d68cf0d063a29bb8c21f192aea. THis broke half our unit tests, oops: https://ci.gstreamer.net/job/GStreamer-master/11203/testReport/ 2018-11-13 14:32:56 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/check/gstharness.c: harness: Take ownership of floating references (pads, elements) passed to the harness Without this bindings get confused about the meaning of references, and we really own these references if they are not already owned by something else. 2018-11-24 12:06:38 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Tell `less` to parse color codes This change was originally part of 2cf16838c54 (gst-inspect: Colored output) but got lost during the recent rebase. 2018-10-27 18:06:20 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect-1.0.1: * tools/gst-inspect.c: gst-inspect: Colored output Let's make the output a bit pretty to read. The colored output can be disabled with `--no-colors` option or by setting `GST_INSPECT_NO_COLORS' env (to any value). The chosen colors are based on the popular Solarized theme, which is targeted for both dark and light backgrounds. Note: * We only support true colors. If the terminal doesn't signal support for that via 'COLORTERM' env, we disable colored output. * We don't add colors to --print-plugin-auto-install-info output, as that's meant for machines, not humans. Not only machines don't care about beauty, the existing ones will likely not expect colors and choke on it and we'll get angry mob at our doors. [1] https://ethanschoonover.com/solarized 2018-11-10 23:35:18 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Remove redundant plugin name from output When printing info about a specific plugin, there is no need to prefix some of the details with plugin's name. It's not only redundant but also inconsistent and makes the task of adding consistent coloring to the output (which we'll do in a follow patch), harder. 2018-11-23 03:31:38 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tools/gst-inspect.c: gst-inspect: Use less -F -X everywhere as the pager This emulates the default behaviour of git help pages, and also fixes a bug on macOS where `less -F` doesn't display anything at all when the output is shorter than one terminal screen. Also moved the DEFAULT_PAGER define to after the includes, because it's an unprefixed define. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/330 2018-11-12 14:00:22 +0200 Jordan Petridis <jordan@centricular.com> * .gitlab-ci.yml: Add Gitlab CI configuration This commit adds a .gitlab-ci.yml file, which uses a feature to fetch the config from a centralized repository. The intent is to have all the gstreamer modules use the same configuration. The configuration is currently hosted at the gst-ci repository under the gitlab/ci_template.yml path. Part of https://gitlab.freedesktop.org/gstreamer/gstreamer-project/issues/29 2018-12-11 20:12:50 +0900 Seungha Yang <seungha.yang@navercorp.com> * tests/check/gst/gstcaps.c: tests: caps: Add more broken caps test case 2018-12-11 20:12:41 +0900 Seungha Yang <seungha.yang@navercorp.com> * gst/gstcaps.c: * gst/gstchildproxy.c: * gst/gststructure.c: * gst/gsttracerrecord.c: gst: Fix string leak when G_VALUE_COLLECT_INIT() was failed Returned string should be freed Fixes #319 2018-11-10 20:41:40 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdebugutils.h: debugutils: Make sure that GST_DEBUG_GRAPH_SHOW_VERBOSE gets the correct value in introspection Currently in Python it would become a signed 64 bit value but should actually be an unsigned 32 bit value with all bits set. This is the same problem as with GST_MESSAGE_TYPE_ANY. See https://bugzilla.gnome.org/show_bug.cgi?id=732633 2018-11-06 10:20:17 +0100 Havard Graff <havard.graff@gmail.com> * configure.ac: * gst/gstconfig.h.in: * gst/meson.build: * libs/gst/check/gstcheck.h: * tests/check/gst/gstcaps.c: * tests/check/gst/gstghostpad.c: * tests/check/gst/gstobject.c: * tests/check/gst/gststructure.c: * tests/check/gst/gsturi.c: * tests/check/gst/gstvalue.c: * tests/check/libs/adapter.c: tests: fix tests when compiling with glib_checks=disabled We won't be able to do ASSERT_CRITICAL, but the main body of the tests are still valid, and given we ship GStreamer with this configuration, it is important to be able to run some tests against it. 2018-10-31 10:29:22 +0100 Havard Graff <havard.graff@gmail.com> * tests/check/gst/gstdatetime.c: test/datetime: fix test for windows In the previous configuration, mktime returned -1 on Windows 10 compiled with MSVC using meson. Fix this by moving the hour one forward. 2018-10-31 10:27:23 +0100 Havard Graff <havard.graff@gmail.com> * tests/check/gst/gsturi.c: tests/uri: fix test after GHashTable changes in GLib 2.59 Maybe the implementation should not be dependent on a "random" hash-table ordering, but at least this shows the problem clearly. 2018-11-09 11:34:19 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Pipe stderr to pager as well If stderr is not redirected by the user, also page that. 2018-11-05 12:24:01 +0100 Niels De Graef <Niels.DeGraef@barco.com> * plugins/elements/gsttypefindelement.c: typefind: cleanup (un)reffing of several objects. By using these functions, we can shave off a few lines, and make the intent of that line more clear. 2018-11-08 14:09:32 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/Makefile.am: Fix distcheck Follow-up to !18 and #320. 2018-09-26 13:33:31 +0200 Michael Olbrich <m.olbrich@pengutronix.de> * configure.ac: * libs/gst/helpers/.gitignore: * libs/gst/helpers/Makefile.am: * libs/gst/helpers/glib_gobject_helper.py: * libs/gst/helpers/gst_gdb.py: * libs/gst/helpers/libgstreamer-gdb.py.in: * libs/gst/helpers/meson.build: gst: add some gdb python macros This adds gdb pretty printer for some GStreamer types. For GstObject pointers the type and name is added, e.g. "0x5555557e4110 [GstDecodeBin|decodebin0]". For GstMiniObject pointers the object type is added, e.g. "0x7fffe001fc50 [GstBuffer]". For GstClockTime and GstClockTimeDiff the time is also printed in human readable form, e.g. "150116219955 [+0:02:30.116219955]". Fixes #320 2018-11-08 10:09:29 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.c: * gst/gstclock.h: clock: Move clock GWeakRef to a private GstClockEntry struct There's no need for it to be in the public struct and we can keep the padding for things to be added in the future. 2018-05-17 21:42:43 +1000 Matthew Waters <matthew@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstpad.c: * gst/gstquark.c: * gst/gstquark.h: * gst/gstquery.c: * gst/gstquery.h: * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: * tests/check/elements/queue2.c: query: add a new bitrate query Allows determining from downstream what the expected bitrate of a stream may be which is useful in queue2 for setting time based limits when upstream does not provide timing information. Implement bitrate query handling in queue2 https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/issues/60 2018-05-17 21:09:36 +1000 Matthew Waters <matthew@centricular.com> * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: queue2: avoid ping-pong between 0% and 100% buffering messages If upstream is pushing buffers larger than our limits, only 1 buffer is ever in the queue at a time. Once that single buffer has left the queue, a 0% buffering message would be posted followed immediately by a 100% buffering message when the next buffer was inserted into the queue a very short time later. As per the recommendations, This would result in the application pausing for a short while causing the appearance of a short stutter. The first step of a solution involves not posting a buffering message if there is still data waiting on the sink pad for insertion into the queue. This successfully drops the 0% messages from being posted however a message is still posted on each transition to 100% when the new buffer arrives resulting in a string of 100% buffering messages. We silence these by storing the last posted buffering percentage and only posting a new message when it is different from or last posted message. 2018-11-06 20:12:27 +0000 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlog.c: tracers: log: Fix post query trace The post tracer hooks have a GstQuery argument which was truncated from the trace. As the post hook is the one that contains the useful data, this bug was hiding the important information from that trace. 2018-11-06 14:21:35 +0100 Havard Graff <havard.graff@gmail.com> * docs/libs/gstreamer-libs-sections.txt: docs: add new GstTestClock API 2018-11-06 11:45:45 +0100 Havard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: * libs/gst/check/gsttestclock.c: * libs/gst/check/gsttestclock.h: harness: improve _wait_for_clock_id_waits performance By moving the functionality down to the testclock, the implementation no longer needs to poll the waits, but rather wait properly for them to be added. The performance-hit here would be that by polling the test-clock regularly, you would create contention on the testclock-lock, making code using the testclock (gst_clock_id_wait) fighting for the lock. 2018-09-20 01:42:48 -0700 Havard Graff <havard@pexip.com> * gst/gstsystemclock.c: systemclock: pre-calculate the ratio for multiplying the perf-count on win Saves a lot of computations. 2018-10-28 12:46:09 +0100 Havard Graff <havard.graff@gmail.com> * gst/gstpad.c: * tests/check/gst/gstpad.c: gstpad: use hook_id instead of hook in called_probes list A pointer to a hook in this list can easily not be unique, given both the slice-allocator reusing memory, and the OS re-using freed blocks in malloc. By doing many repeated add and remove of probes, this becomes very easily reproduced. Instead use hook_id, which *is* unique for a added GHook. 2018-09-27 19:13:35 +1000 Matthew Waters <matthew@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbuffer.h: * tests/check/gst/gstbuffer.c: gst/buffer: add a new function for wrapping GBytes One restriction on the GBytes is that the data cannot be NULL as this is explicitly forbidden by GstMemory. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/318 2018-11-03 00:49:01 +1100 Matthew Waters <matthew@centricular.com> * meson.build: * plugins/elements/meson.build: * plugins/tracers/meson.build: meson: generate pkg-config files for our plugins 2018-11-05 14:07:59 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstminiobject.c: * gst/gstminiobject.h: * gst/gstobject.c: * gst/gstobject.h: * gst/gststructure.c: * gst/gststructure.h: gst_clear_*: Remove volatile from arguments g_clear_pointer is not thread-safe and never was. GLib similarly removed the volatile from g_clear_object in 2aacef39b1. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/327 2018-11-05 14:03:51 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstbuffer.h: * gst/gstbufferlist.h: * gst/gstcaps.h: * gst/gstevent.h: * gst/gstmessage.h: * gst/gstquery.h: * gst/gsttaglist.h: gst_clear_*: Cast to GstMiniObject** when needed 2018-11-05 09:37:29 +0100 Niels De Graef <nielsdegraef@gmail.com> * docs/gst/gstreamer-sections.txt: docs: update gstreamer-sections.txt with new API 2018-11-05 10:33:54 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstquery.h: query: add gst_query_take() This makes its API consistent with the other GstMiniObject subclasses 2018-11-05 08:57:16 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstmessage.h: message: add gst_message_take() This makes its API consistent with the other GstMiniObject subclasses 2018-11-04 19:14:32 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gsttaglist.h: taglist: add gst_tag_list_replace/take() This makes its API consistent with the other GstMiniObject subclasses. 2018-11-04 19:13:39 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstbufferlist.h: bufferlist: add gst_buffer_list_replace/take() This makes its API consistent with the other GstMiniObject subclasses. 2018-11-04 19:04:19 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gststructure.c: * gst/gststructure.h: structure: add gst_clear_structure() Basically, you can use this instead of using gst_structure_free (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:55:42 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gsttaglist.h: taglist: add gst_clear_tag_list() Basically, you can use this instead of using gst_tag_list_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:55:16 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstquery.h: query: add gst_clear_query() Basically, you can use this instead of using gst_query_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:54:44 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstmessage.h: message: add gst_clear_message() Basically, you can use this instead of using gst_message_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:53:51 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstevent.h: event: add gst_clear_event() Basically, you can use this instead of using gst_event_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:53:31 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstcaps.h: caps: add gst_clear_caps() Basically, you can use this instead of using gst_caps_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:52:50 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstbufferlist.h: bufferlist: add gst_clear_buffer_list() Basically, you can use this instead of using gst_buffer_list_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-04 18:51:28 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstbuffer.h: buffer: add gst_clear_buffer() Basically, you can use this instead of using gst_buffer_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-11-03 20:00:57 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstminiobject.c: * gst/gstminiobject.h: miniobject: add gst_clear_mini_object() This is based on g_clear_object(). Basically, you can use this instead of using gst_mini_object_unref (which needs to be preceded by a NULL-check). Also fixes #275 2018-02-08 17:31:15 +0100 Niels De Graef <nielsdegraef@gmail.com> * gst/gstobject.c: * gst/gstobject.h: object: add gst_clear_object() This is based on g_clear_object(). Basically, you can use this instead of using g_object_unref (which needs to be preceded by a NULL-check). Fixes #275 2018-11-05 11:07:14 +0800 Haihao Xiang <haihao.xiang@intel.com> * .gitmodules: * gstreamer.doap: * scripts/create-uninstalled-setup.sh: Clone the code from gitlab This fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/326 2018-11-04 12:45:57 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Always forward RECONFIGURE events upstream Based on a patch by Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/67 2018-11-03 18:44:48 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.c: * gst/gstclock.h: clock: Move clock weak ref into its own ABI struct Otherwise it will be hard to add other things into the padding later without breaking API. 2018-11-03 18:29:17 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstclock.c: clock: Add new functions to the documentation 2018-11-03 18:29:03 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.c: * gst/gstclock.h: clock: Fix deprecation handling of the GstClock clock field 2016-09-08 08:49:54 -0600 Thomas Bluemel <tbluemel@control4.com> * gst/gstclock.c: * gst/gstclock.h: * libs/gst/base/gstbasesink.c: clock: Keep weak reference to underlying clock Fixes potential segmentation fault when using a GstClockID that is referencing an already freed GstClock Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/issues/187 2018-10-30 15:30:38 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Don't page if output fits the screen 2018-10-30 14:52:15 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Flush stdout before closing stdout FD Otherwise, last line can be lost. 2018-10-28 15:19:38 +0000 Sebastian Dröge <sebastian@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/check/Makefile.am: * libs/gst/check/gstharness.c: * libs/gst/check/gstharness.h: harness: Add API for proposing meta APIs from the allocation query https://bugzilla.gnome.org/show_bug.cgi?id=797350 2018-09-20 23:17:52 +1000 Jan Schmidt <jan@centricular.com> * gst/gstsegment.c: * tests/check/gst/gstsegment.c: segment: Allow stop == -1 in gst_segment_to_running_time() and rate < 0 If a segment has stop == -1, then gst_segment_to_running_time() would refuse to calculate a running time for negative rates, but gst_segment_do_seek() allows this scenario and uses a valid duration for calculations. Make the 2 functions consistent by using any configured duration to calculate a running time too in that case. https://bugzilla.gnome.org/show_bug.cgi?id=796559 2018-10-27 13:38:57 +0100 Zeeshan Ali <zeenix@collabora.co.uk> * tools/gst-inspect.c: gst-inspect: Pipe stdout to less if not piped already https://bugzilla.gnome.org/show_bug.cgi?id=797344 2018-10-26 09:21:42 +0100 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Lower debug level of some output related to the URI query It's not a warning if an URI doesn't have an extension, and it's also not mandatory that sources have an URI or even answer the URI query. 2018-10-16 19:35:03 +0300 Jordan Petridis <jordan@centricular.com> * gst/gstclock.h: * gst/gstinfo.h: * gst/gstvalue.h: gst: skip format specifiers from gir generation GST_TIME_FORMAT, GST_TIME_ARGS, GST_STIME_FORMAT, GST_STIME_ARGS GST_PTR_FORMAT, GST_SEGMENT_FORMAT, GST_FOURCC_FORMAT and GST_FOURCC_ARGS are format specifiers. They can't be used outside of C and should be generated in the gir. https://bugzilla.gnome.org/show_bug.cgi?id=797320 2018-10-16 19:35:03 +0300 Jordan Petridis <jordan@centricular.com> * gst/gsterror.h: gst/gsterror.h: skip GST_ERROR_SYSTEM during gir generation GST_ERROR_SYSTEM can't really be used outside of C and should be skipped. https://bugzilla.gnome.org/show_bug.cgi?id=797320 2018-10-22 15:26:25 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Don't clamp running times for position calculation Since we use full signed running times, we no longer need to clamp the buffer time. This avoids having the position of single queues not advancing for buffers that are out of segment and never waking up non-linked streams (resulting in an apparent "deadlock"). 2018-10-22 13:45:52 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Reset result flow when retrying If we ever get a GST_FLOW_EOS from downstream, we might retry pushing new data. But if pushing that data doesn't return a GstFlowReturn (such as pushing events), we would end up returning the previous GstFlowReturn (i.e. EOS). Not properly resetting it would cause cases where queue2 would stop pushing on the first GstEvent stored (even if there is more data contained within). 2018-10-17 16:38:42 -0400 Olivier Crête <olivier.crete@collabora.com> * tests/check/gst/gstpipeline.c: tests: Use GstTestClock for processing-deadline test Use the test clock instead of using a real one to make it easier to run in valgrind. https://bugzilla.gnome.org/show_bug.cgi?id=797291 2018-10-16 10:48:40 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstpipeline.c: tests: pipeline: fix leak 2018-10-15 18:47:16 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstqueuearray.c: queuearray: Only clear dropped item if it is not returned 2018-10-15 15:24:07 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstqueuearray.c: queuearray: Clear items when dropping them and a clear function was defined 2018-10-12 15:34:45 +0100 Philippe Normand <philn@igalia.com> * docs/gst/gstreamer-sections.txt: * gst/gstelementfactory.h: gstelementfactory: Remove MEDIA_HARDWARE FactoryType Using the MEDIA_ classifier prefix was inappropriate. It is sufficient to specify the additional klass name that element can set in their metadata. (follow-up of commit ca4b61c55562a4b74f241fe54cf1e5639a2aea25) https://bugzilla.gnome.org/show_bug.cgi?id=796921 2018-10-05 12:19:46 +0200 Philippe Normand <philn@igalia.com> * docs/gst/gstreamer-sections.txt: * gst/gstelementfactory.h: gstelementfactory: Add MEDIA_HARDWARE klass classifier The Harware factory type classifier allows elements (decoders and encoders, mostly) to advertize they rely on hardware devices to perform encoding or decoding operations. This classifier can be used by applications to filter and select only the elements that use hardware devices, for instance to ensure zero-copy support is enabled for a specific pipeline. https://bugzilla.gnome.org/show_bug.cgi?id=796921 2018-10-10 00:00:14 -0700 Aleix Conchillo Flaqué <aleix@oblong.com> * scripts/gst-uninstalled: gst-uninstalled: add libnice to LD_LIBRARY_PATH https://bugzilla.gnome.org/show_bug.cgi?id=797269 2018-10-11 14:34:40 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/net/gstptpclock.c: ptp clock: Wait for ANNOUNCE before selecting a master Previously, with opportunistic sync we'd track a master clock as soon as we see a SYNC message, and hence sync up faster, but then we'd announce we're synched before seeing the ANNOUNCE, leaving the clock details like grandmaster-clock empty. A better way is to start tracking the clock opportunistically, but not announce we're synched until we've also seen the ANNOUNCE. 2018-10-11 14:33:35 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/net/gstptpclock.c: ptp clock: improve debug Log message arrival times. Fix a typo in one debug string 2018-10-11 14:29:47 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/net/gstptpclock.c: ptp clock: Increase tolerance for late follow-up and delay-resp The follow-up and delay-resp messages carry precise timestamps for the arrival at the clock master, but the local return time is unimportant, so we should be very lenient in accepting them late. Some PTP masters don't prioritise sending those packets, and we reject all the responses and never sync - or take forever to do so. Increase the tolerance to 20x the mean path delay. Also fix a typo in one debug output that would print the absolute time of the delay-resp message, not the offset from the delay-req that it's actually being compared against. 2018-09-18 09:36:45 +1000 Jan Schmidt <jan@centricular.com> * libs/gst/net/gstptpclock.c: ptpclock: Add TRACE level debug output Add some debugging to be able to tell what is happening inside the PTP clock protocol handling. 2018-10-07 19:51:41 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: use new 'python' module instead of deprecated 'python3' one https://github.com/mesonbuild/meson/pull/4169 2018-10-04 00:30:52 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: document new "min-upstream-latency" property is in nanosecs https://bugzilla.gnome.org/show_bug.cgi?id=797213 2018-10-03 18:23:01 +0200 Thibault Saunier <tsaunier@igalia.com> * gst/gstprotection.h: protection: Fix the string to define unspecified system id Setting it to "unspecified-system-id". 2018-10-01 12:11:47 +0200 Yacine Bandou <yacine.bandou@softathome.com> * docs/gst/gstreamer-sections.txt: * gst/gstprotection.h: protection: Add a new definition for unspecified system protection In some cases the system protection ID is not present in the contents or in their metadata. This define is used to set the value of the "system_id" field in GstProtectionEvent, with this value, the application will use an external information to choose which protection system to use. Example: The matroskademux uses this value in the case of encrypted WebM, the application will choose the appropriate protection system based on the information received through EME API. https://bugzilla.gnome.org/show_bug.cgi?id=797231 2018-09-27 17:30:25 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstqueuearray.c: * libs/gst/base/gstqueuearray.h: queuearray: Add set_clear_func and clear functions gst_queue_array_clear will clear the GstQueueArray, gst_queue_array_set_clear_func will set a clear function for each element to be called on _clear and on _free. https://bugzilla.gnome.org/show_bug.cgi?id=797218 2018-09-27 13:20:10 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add gtk-doc blurb for new min-upstream-latency prop 2018-09-27 12:42:30 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add min-upstream-latency property. This is exposed as a solution to the use case of plugging in sources with a higher latency after the aggregator has started playing with an initial set of sources, allowing to avoid resyncing. https://bugzilla.gnome.org/show_bug.cgi?id=797213 2018-09-20 16:28:35 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstelement.c: element: remove inactive pad g_warning in add_pad The documentation incorrectly used to state that the pads were not automatically activated when added, whereas we actually do that when appropriate. Callers of gst_element_add_pad must not hold the object lock, which implies that they cannot perform the same checks as add_pad in a non-racy manner. This updates the documentation, and removes the g_warning that was output before performing automatic activation. https://bugzilla.gnome.org/show_bug.cgi?id=797181 2018-09-19 19:37:38 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/meson.build: meson: use library() for libgstcheck instead of always building a shared lib Otherwise we try to build a shared lib when we build the rest of GStreamer statically, which won't work because we pass -DGST_STATIC_COMPILATION when building statically, which means we won't dllimport public symbols from our libs which means that on Windows the unit tests will fail to link to libgstcheck. https://bugzilla.gnome.org/show_bug.cgi?id=797185 2018-08-26 01:23:23 +0200 Tim-Philipp Müller <tim@centricular.com> * tests/misc/Makefile.am: * tests/misc/meson.build: * tests/misc/netclock-replay.c: tests: netclock-replay: fix build with new api export/import Can't mix/match imports and exports from the same library here, so just include all .c files needed instead and don't link to gstnet at all then. https://bugzilla.gnome.org/show_bug.cgi?id=797185 2018-08-25 23:56:01 +0200 Tim-Philipp Müller <tim@centricular.com> * common: * configure.ac: * gst/gstconfig.h.in: * libs/gst/base/base-prelude.h: * libs/gst/base/gstdataqueue.c: * libs/gst/base/gstflowcombiner.c: * libs/gst/base/gstqueuearray.c: * libs/gst/check/check-prelude.h: * libs/gst/check/gstbufferstraw.c: * libs/gst/check/gstconsistencychecker.c: * libs/gst/controller/controller-prelude.h: * libs/gst/controller/gstargbcontrolbinding.c: * libs/gst/controller/gstdirectcontrolbinding.c: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gsttimedvaluecontrolsource.c: * libs/gst/controller/gsttriggercontrolsource.c: * libs/gst/controller/meson.build: * libs/gst/net/gstnetaddressmeta.c: * libs/gst/net/gstnetcontrolmessagemeta.c: * libs/gst/net/net-prelude.h: * meson.build: libs: figure out right export define in configure Add new GST_API_EXPORT in config.h and use that for GST_*_API decorators instead of GST_EXPORT. The right export define depends on the toolchain and whether we're using -fvisibility=hidden or not, so it's better to set it to the right thing directly than hard-coding a compiler whitelist in the public header. We put the export define into config.h instead of passing it via the command line to the compiler because it might contain spaces and brackets and in the autotools scenario we'd have to pass that through multiple layers of plumbing and Makefile/shell escaping and we're just not going to be *that* lucky. The export define is only used if we're compiling our lib, not by external users of the lib headers, so it's not a problem to put it into config.h Also, this means all .c files of libs need to include config.h to get the export marker defined, so fix up a few that didn't include config.h. This commit depends on a common submodule commit that makes gst-glib-gen.mak add an #include "config.h" to generated enum/marshal .c files for the autotools build. https://bugzilla.gnome.org/show_bug.cgi?id=797185 2018-08-25 23:09:12 +0200 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: * gst/gstconfig.h.in: * gst/meson.build: * gst/parse/Makefile.am: * libs/gst/base/Makefile.am: * libs/gst/base/base-prelude.h: * libs/gst/base/meson.build: * libs/gst/check/Makefile.am: * libs/gst/check/check-prelude.h: * libs/gst/check/meson.build: * libs/gst/controller/Makefile.am: * libs/gst/controller/controller-prelude.h: * libs/gst/controller/meson.build: * libs/gst/net/Makefile.am: * libs/gst/net/meson.build: * libs/gst/net/net-prelude.h: libs: fix 'inconsistent DLL linkage' warnings on Windows For each lib we build export its own API in headers when we're building it, otherwise import the API from the headers. This fixes linker warnings on Windows when building with MSVC. The problem was that we had defined all GST_*_API decorators unconditionally to GST_EXPORT. This was intentional and only supposed to be temporary, but caused linker warnings because we tell the linker that we want to export all symbols even those from externall DLLs, and when the linker notices that they were in external DLLS and not present locally it warns. What we need to do when building each library is: export the library's own symbols and import all other symbols. To this end we define e.g. BUILDING_GST_FOO and then we define the GST_FOO_API decorator either to export or to import symbols depending on whether BUILDING_GST_FOO is set or not. That way external users of each library API automatically get the import. https://bugzilla.gnome.org/show_bug.cgi?id=797185 2018-08-25 22:53:07 +0200 Tim-Philipp Müller <tim@centricular.com> * gst/gstconfig.h.in: gstconfig.h: add GST_API_IMPORT define This is for use by the various GST_*_API decorators and will be what they get defined to when a library API is being used by external users of that library (not the library itself whilst it's being compiled). In most cases it will simply map to a plain 'extern' but on Windows with MSVC it will need to map to __declspec(dllimport). For functions this is not strictly needed, but for exported variables it is. https://bugzilla.gnome.org/show_bug.cgi?id=797185 2018-09-21 22:26:00 +0900 Seungha Yang <seungha.yang@navercorp.com> * meson.build: meson: Specify encoding to UTF-8 when building with MSVC Fix build on some non-US locale Windows systems Error: gstreamer/gst/gstdebugutils.c(194): error C2001 https://bugzilla.gnome.org/show_bug.cgi?id=797186 2018-09-20 16:22:14 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: define autoptr cleanup functions 2018-09-19 15:42:06 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: docs: gst: default to single include also for protection meta API https://bugzilla.gnome.org/show_bug.cgi?id=797165 2018-09-19 15:07:36 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: docs: libs: move all includes to canonical single header includes And fix up bogus libs/ prefix for controller lib includes. https://bugzilla.gnome.org/show_bug.cgi?id=797165 2018-09-18 15:44:24 +0200 Linus Svensson <linussn@axis.com> * docs/libs/gstreamer-libs-sections.txt: docs: Update include directive for gstreamer-base components Change to always include gst/libs/base.h in order to also include base-prelude.h, but also because it's the right thing for people to include anyway. https://bugzilla.gnome.org/show_bug.cgi?id=797165 2018-09-19 11:31:43 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add glib-checks option to disable API guards and such We want this enabled by default, also in releases, but people may want to disable this for performance-critical workloads or on embedded devices. 2018-09-19 11:25:24 +0100 Tim-Philipp Müller <tim@centricular.com> * meson_options.txt: meson: fix missing closing bracket in option descriptions 2018-09-17 22:13:22 +1000 Jan Schmidt <jan@centricular.com> * tests/check/gst/gstsegment.c: tests: Use a different rate in a segment test. Using a rate of 1.1 in the test is causing the test to fail on 32-bit because ceil(1.1 * 10) can round to 12. Instead use a rate 2.0 that can be expressed as floating point number and doesn't trigger the problem. https://bugzilla.gnome.org/show_bug.cgi?id=797154 2018-09-11 21:32:27 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gstfilesink.c: filesink: Fix wrong printf format We add a guint64 and a guint, the result is a guint64. On 64bit architecture, this is the same, but on 32bit architecture, it's not. https://bugzilla.gnome.org/show_bug.cgi?id=797127 2018-09-08 13:05:13 +0100 Philippe Normand <philn@igalia.com> * gst/gstbin.c: bin: Fix use-after-free issue in gst_bin_add() gst_element_post_message() takes ownership of the message so we need to increase its refcount until we no longer require access to its data (context_type). https://bugzilla.gnome.org/show_bug.cgi?id=797099 2018-09-05 16:32:07 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/meson.build: * tests/meson.build: meson: Always use a dependency object for dependencies Fixes a configure error with gst-build: subprojects/gst-plugins-base/meson.build:235:2: ERROR: Fetched variable 'gst_check_dep' in the subproject 'gstreamer' is not a dependency object. 2018-09-03 12:06:35 +0100 Philippe Normand <philn@igalia.com> * gst/gstutils.c: utils: Set default values for position and duration query results https://bugzilla.gnome.org/show_bug.cgi?id=797066 2018-08-30 17:44:07 +0100 Philippe Normand <philn@igalia.com> * libs/gst/base/gstbaseparse.c: baseparse: avg_bitrate calculation critical warning fix The avg_bitrate is an unsigned int, so the gst_util_uin64_scale() function can't be used for it, as it expects signed integers for the fraction parts arguments. https://bugzilla.gnome.org/show_bug.cgi?id=797054 2018-08-31 12:15:16 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstinputselector.c: input-selector: Bring latency handling in sync with GstPad code 2018-08-31 12:12:13 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: Revert "pad: Don't drop LATENCY queries with default implementation" This reverts commit 794944f779f954375fc74a3fffcc2067bba6a3e5. Accumulating non-live latency values generally makes no sense and often gives invalid results with min>max 2018-08-31 12:12:09 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: Revert "pad: Accumulate live/non-live latency values separately" This reverts commit f5783e1cacb09867d81ba089b229faa7dd0edd0c. 2018-08-29 02:03:28 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: * libs/gst/base/meson.build: * libs/gst/check/meson.build: * libs/gst/controller/meson.build: * libs/gst/net/meson.build: * meson.build: meson: Maintain macOS ABI through dylib versioning Requires Meson 0.48, but the feature will be ignored on older versions so it's safe to add it without bumping the requirement. Documentation: https://github.com/mesonbuild/meson/blob/master/docs/markdown/Reference-manual.md#shared_library 2018-08-31 11:47:03 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstinputselector.c: input-selector: Apply GstPad default latency handler fixes here too 2018-08-31 11:41:47 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Accumulate live/non-live latency values separately And only ever use the non-live values if all pads are non-live, otherwise only use the results of all live pads. It's unclear what one would use the values for in the non-live case, but by this we at least pass them through correctly then. This is a follow-up for 794944f779f954375fc74a3fffcc2067bba6a3e5, which causes wrong latency calculations if the first pad is non-live but a later pad is actually live. In that case the live values would be accumulated together with the values of the non-live first pad, generally causing wrong min/max latencies to be calculated. 2018-08-29 19:26:04 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstconcat.c: concat: Improve debug output a bit by printing pad names 2018-08-28 14:22:16 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: filesink: Flush buffers before directly writing out buffers with the SYNC_AFTER flag Otherwise we write out the SYNC_AFTER buffer immediately, and the previously queued up buffers afterwards which then breaks the order of data. Also add various debug output. 2018-08-27 22:32:01 +1000 Jan Schmidt <jan@centricular.com> * tests/check/gst/gstsegment.c: gstsegment: Add check for gst_segment_offset_running_time() Add a check for gst_segment_offset_running_time() that values are taken directly from the segment base if possible. 2018-08-23 22:34:47 +1000 Jan Schmidt <jan@centricular.com> * gst/gstsegment.c: * tests/check/gst/gstsegment.c: gstsegment: Handle positions before the segment properly Fixes for gst_segment_position_from_running_time_full() when converting running_times that precede the segment start (or stop in a negative rate segment) The return value was incorrectly negated in those cases. Add some more unit test checks for those cases, and especially for segments with offsets. 2018-08-26 00:45:45 +0200 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstmeta.c: tests: meta: fix msvc compiler warnings gstmeta.c(167): warning C4090: 'function': different 'const' qualifiers gstmeta.c(172): warning C4090: 'function': different 'const' qualifiers gstmeta.c(211): warning C4090: 'function': different 'const' qualifiers gstmeta.c(216): warning C4090: 'function': different 'const' qualifiers 2018-08-26 00:34:44 +0200 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/check-prelude.h: * libs/gst/check/gsttestclock.h: check: testclock: fix deprecation guards Make our own deprecation marker for libgstcheck, since the function declaration must contain the right API export decorator (GST_CHECK_API) and not the one for GStreamer core. 2018-08-26 00:16:51 +0200 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbitwriter.h: bitwriter: fix compiler warning Don't return a value from a function that doesn't return a value using the returned value from a function that also doesn't return a value. gstbitwriter.h(265): warning C4098: 'gst_bit_writer_align_bytes_unchecked': 'void' function returning a value 2018-08-17 17:24:59 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/filesink.c: filesink: Use SYNC_AFTER flag in seeking test Otherwise it's not guaranteed that buffers are actually on disk after pushing them, and reading the file via g_file_get_contents() might not include them yet. 2018-08-17 17:24:19 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: filesink: Consider the current buffer size when checking the current position 2018-08-17 17:23:52 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: filesink: Reset the current buffer size to NULL and clear the buffer on close and FLUSH_STOP 2018-08-17 02:54:00 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/helpers/meson.build: * meson.build: meson: host_system is 'ios' when building for iOS The cross file sets this value, and we use 'ios' in Cerbero. 2018-08-14 11:28:00 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesink.h: filesink: Implement buffering internally We use writev() so every call ends up going to the kernel but for small buffers we generally would prefer to do as few write calls as possible. https://bugzilla.gnome.org/show_bug.cgi?id=794173 2018-08-14 10:58:26 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesink.h: filesink: Remove buffer, deprecate line-buffer mode and don't use fflush() fflush() has no effect because we use writev() directly, so fsync() should be used instead which is actually flushing the kernel-side buffers. As a next step, a non-line-buffered buffering mode is to be added. https://bugzilla.gnome.org/show_bug.cgi?id=794173 2018-08-14 12:30:19 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fixup for previous commit to prevent infinite loop if no events are pending 2018-08-13 14:50:57 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Return an error directly if negotiation of a sink pad failed And don't give buffers to subclasses in that case. https://bugzilla.gnome.org/show_bug.cgi?id=796951 2018-08-12 22:57:41 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * win32/MANIFEST: * win32/README.txt: * win32/common/libgstbase.def: * win32/common/libgstcontroller.def: * win32/common/libgstnet.def: * win32/common/libgstreamer.def: win32: remove .def file with exports They're no longer needed, symbol exporting is now explicit via GST_*_API export decorators in all cases, that is autotools and meson, incl. MSVC. 2018-08-12 19:04:51 +0100 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * gst/printf/Makefile.am: * libs/gst/check/gstcheck.c: autotools: stop controlling symbol visibility with -export-symbols-regex Instead, use -fvisibility=hidden and explicit exports via GST_EXPORT. This should result in consistent behaviour for the autotools and Meson builds where this is done already, and will allow us to drop the win32 .def files. 2018-08-12 20:07:02 +0100 Tim-Philipp Müller <tim@centricular.com> bitwriter: fix g-i scanner warning gstbitwriter.h:45: Warning: GstBase: "@bit_capacity" parameter unexpected at this location: * @bit_capacity: Capacity of the allocated @data 2018-08-11 18:17:29 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/meson.build: * meson.build: * meson_options.txt: meson: add options to disable gobject cast checks and glib asserts And match what we do for autotools here currently. 2018-08-10 09:22:51 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: define G_DISABLE_DEPRECATED for development versions Like in autotools. 2018-08-10 01:23:35 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/meson.build: * meson_options.txt: * pkgconfig/meson.build: * tests/check/meson.build: meson: add option to disable build of GStreamer unit test library 2018-08-10 00:33:58 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add memory-alignment option 2018-08-10 00:18:55 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add option to disable command-line option parsing 2018-08-10 00:08:43 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/meson.build: * gst/parse/meson.build: * meson_options.txt: * tests/check/meson.build: * tools/meson.build: meson: add option to disable parse-launch pipeline string parser 2018-08-09 23:32:49 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: * tests/meson.build: meson: add options to disable tests, examples, benchmarks and tools And remove duplicate option 'poisoning' and unused 'build_tools' one. 2018-08-03 13:18:12 +0300 Sebastian Dröge <sebastian@centricular.com> * configure.ac: configure: Enable poisoning by default for non-release builds 2018-08-03 13:16:21 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbufferlist.c: * gst/gstcaps.c: * gst/gstcontext.c: * gst/gstdatetime.c: * gst/gstevent.c: * gst/gstmemory.c: * gst/gstmessage.c: * gst/gstpromise.c: * gst/gstquery.c: * gst/gstsample.c: * gst/gsttaglist.c: * gst/gsttoc.c: * gst/gsturi.c: gst: Add poisoning to more types 2018-08-03 10:36:21 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: fix setting of extra checks option It's checked for with #ifdef so setting it to 0 or 1 will always enable it. 2018-08-03 10:35:07 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add option to enable poisoning of deallocated objects 2018-08-02 10:55:40 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Mark gst_type_find_helper_get_range_full() as Since 1.14.3 2018-07-31 19:25:03 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstinputselector.c: inputselector: Forward LATENCY query to all sinkpads Otherwise downstream will consider the pipeline not live if the active pad is live, even though some inactive pads might be live and might require a non-zero latency configuration. https://bugzilla.gnome.org/show_bug.cgi?id=796901 2018-07-31 16:46:25 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Update pad offsets on the current event if the offset changed in pad probes https://bugzilla.gnome.org/show_bug.cgi?id=796898 2018-07-30 18:51:35 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Ensure that the pad is blocked for IDLE probes if they are called from the streaming thread too IDLE probes that are directly called when being added will increase / decrease the "number of IDLE probes running" counter around the call, but when running from the streaming thread this won't happen. This has the effect that when running from a streaming thread it is possible to push serialized events or data out of the pad without problems, but otherwise it would deadlock because serialized data would wait for the IDLE probe to finish first (it is blocking after all!). With this change it will now always consistently deadlock instead of just every once in a while, which should make it obvious why this happens and prevent racy deadlocks in application code. https://bugzilla.gnome.org/show_bug.cgi?id=796895 2018-07-30 18:10:31 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gsttypefindhelper.c: * libs/gst/base/gsttypefindhelper.h: * plugins/elements/gsttypefindelement.c: * win32/common/libgstbase.def: typefind: Add new gst_type_find_helper_get_range_full() that returns flow return And make use of it in the typefind element. It's useful to distinguish between the different errors why typefinding can fail, and especially to not consider GST_FLOW_FLUSHING as an actual error. https://bugzilla.gnome.org/show_bug.cgi?id=796894 2018-07-27 23:22:42 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: annotate GstAggregatorClass::update_src_caps 2018-07-25 07:34:19 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: * meson_options.txt: * tests/examples/controller/meson.build: * tests/examples/streams/meson.build: * tests/meson.build: meson: Add feature options for optional deps Everything should be behind an option now. https://bugzilla.gnome.org/show_bug.cgi?id=795107 2018-07-26 02:31:05 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't leak peer pad of inactive pads when (not) forwarding QoS events to them 2018-07-25 18:51:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * meson.build: meson: Install bash completion helper in prefix A regression was causing the helpers to be installed in /share which would lead to permission denied error or PolicyKit to promtp for permission. See: 054fa3aa2 meson: Use new define_variable: feature instead of run_command() 2018-07-25 16:00:28 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/meson.build: * libs/gst/helpers/meson.build: * meson.build: meson: host_machine.system() is darwin even on iOS Also use host_system everywhere. 2018-07-25 14:25:07 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/helpers/meson.build: * plugins/tracers/meson.build: * tests/benchmarks/meson.build: * tools/meson.build: meson: Don't add static printf library to executables They should only need to link to libgstreamer. 2018-07-25 07:30:52 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Use new define_variable: feature instead of run_command() 2018-07-25 07:29:51 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Small cleanup, unused variable 2018-07-25 07:04:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * docs/gst/meson.build: * docs/libs/meson.build: * meson.build: meson: Use copy: true for configure_file() Fixes a warning. 2018-07-25 01:12:49 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Mark extension in gst_type_find_helper_get_range() as allow-none It always allowed NULL and even said so in the documentation. 2018-07-24 17:28:45 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gsttypefindhelper.c: * libs/gst/base/gsttypefindhelper.h: * plugins/elements/gsttypefindelement.c: * win32/common/libgstbase.def: typefind: Add _with_extension() variants for typefinding data or a buffer And make use of that in the typefind element to also be able to make use of the extension in push mode. It previously only did that in pull mode and this potentially speeds up typefinding and might also prevent false positives. https://bugzilla.gnome.org/show_bug.cgi?id=796865 2018-07-24 09:58:31 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.c: * gst/gstparse.c: * gst/parse/types.h: gst: Simplify some boolean expressions (!x || (x && y)) is the same as (!x || y) https://bugzilla.gnome.org/show_bug.cgi?id=796847 2018-07-23 23:17:54 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: * tests/check/gst/gstpad.c: Revert "pad: Handle changing sticky events in pad probes" This reverts commit 11e0f451eb498e92d05d8208f7217625dc62848b. When pushing a sticky event out of a pad with a pad probe or pad offset, those should not be applied to the event that is actually stored in the event but only in the event sent downstream. The pad probe and pad offsets are conceptually *after* the pad, added by external code and should not affect any internal state of pads/elements. Also storing the modified event has the side-effect that a re-sent event would arrive with any previous modifications done by the same pad probe again inside that pad probe, and it would have to check if its modifications are already applied or not. For sink pads and generally for events arriving in a pad, some further changes are still needed and those are tracked in https://bugzilla.gnome.org/show_bug.cgi?id=765049 In addition, the commit also had a refcounting problem with events, causing already destroyed events to be stored inside pads. 2018-07-20 23:51:44 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstbus.c: bus: add missing (out) annotation to get_poll_fd() 2018-07-18 21:13:57 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbasetransform.c: basetransform: Do not check if NULL is an emtpy caps gst_base_transform_transform_caps can return NULL in various conditions thus we should not treat its result as valid caps. In all other places NULL is properly handled. 2018-07-16 11:51:05 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesink.c: sink: Only add processing latency if upstream is live Only add it if upstream is live, otherwise leave the latency at 0. https://bugzilla.gnome.org/show_bug.cgi?id=640610 2018-07-16 11:50:36 -0400 Olivier Crête <olivier.crete@collabora.com> * tests/check/gst/gstpipeline.c: pipeline tests: Add test for processing latency 2018-07-13 08:53:53 -0400 Thibault Saunier <tsaunier@igalia.com> * tools/gst-inspect.c: gst-inspect: Sort properties names Making it simpler to find properties you are looking for when reading. 2018-07-13 08:52:55 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/base/gstbasesink.c: basesink: Minor GI warning fix. 2018-07-10 08:48:47 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstsample.c: sample: Set buffer/caps/buffer-lists to NULL correctly when replacing them with NULL 2018-06-29 07:16:28 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbufferlist.c: * tests/check/gst/gstbufferlist.c: bufferlist: Prevent gst_buffer_list_foreach() from modifying non-writeable lists Previously gst_buffer_list_foreach() could modify (drop or replace) buffers in non-writable lists, which could cause all kinds of problems if other code also has a reference to the list and assumes that it stays the same. https://bugzilla.gnome.org/show_bug.cgi?id=796692 2018-06-29 07:16:28 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstbuffer.c: buffer: Add test to ensure that memories in a non-writable buffer are not writable https://bugzilla.gnome.org/show_bug.cgi?id=796692 2018-06-28 14:13:39 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstbufferlist.c: bufferlist: Add test to ensure that buffers in an non-writable list are not writable https://bugzilla.gnome.org/show_bug.cgi?id=796692 2018-07-03 20:07:31 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbufferlist.c: * gst/gstminiobject.c: * gst/gstminiobject.h: * gst/gstsample.c: * win32/common/libgstreamer.def: miniobject: Add parent pointers to the miniobject to influence writability Every container of miniobjects now needs to store itself as parent in the child object, and remove itself again at a later time. A miniobject is only writable if there is at most one parent, and that parent is writable itself, and if the reference count of the miniobject is 1. GstBuffer (for memories), GstBufferList (for buffers) and GstSample (for caps, buffer, bufferlist) was updated accordingly. Without this it was possible to have e.g. a bufferlist with refcount 2 in two places, modifying the same buffer with refcount 1 at the same time. https://bugzilla.gnome.org/show_bug.cgi?id=796692 2018-07-08 20:52:08 -0400 Thibault Saunier <tsaunier@igalia.com> * libs/gst/check/gstcheck.h: check: Add a fail_unless_equals_clocktime macro for convenience 2018-07-07 09:15:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * win32/common/libgstbase.def: base: Add processing deadline API to win32 def https://bugzilla.gnome.org/show_bug.cgi?id=640610 2015-05-04 17:30:17 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesink.h: basesink: Add processing deadline The processing deadline is the acceptable amount of time to process the media in a live pipeline before it reaches the sink. This is on top of the algorithmic latency that is normally reported by the latency query. This should make pipelines such as "v4lsrc ! xvimagesink" not claim that all frames are late in the QoS events. Ideally, this should replace max_lateness for most applications. https://bugzilla.gnome.org/show_bug.cgi?id=640610 2018-04-01 16:06:26 +0200 Bastian Köcher <git@kchr.de> * gst/meson.build: * libs/gst/check/meson.build: * libs/gst/controller/meson.build: gstreamer: fix install dir for configure files Nixos installs into a non-standard includedir. https://bugzilla.gnome.org/show_bug.cgi?id=794856 2018-07-04 14:00:35 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gststructure.c: structure: Update doc error in ARRAY/LIST helpers 2018-06-22 15:35:42 +0100 Philippe Normand <philn@igalia.com> * gst/gstprotection.c: protection: Release decryptors list, even if it's empty https://bugzilla.gnome.org/show_bug.cgi?id=796651 2018-06-23 17:01:09 +0200 Tim-Philipp Müller <tim@centricular.com> * gst/gstallocator.c: * gst/gstbin.c: * gst/gstbufferpool.c: * gst/gstbus.c: * gst/gstclock.c: * gst/gstcontrolbinding.c: * gst/gstdevice.c: * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * gst/gstghostpad.c: * gst/gstpad.c: * gst/gstpipeline.c: * gst/gstplugin.c: * gst/gstregistry.c: * gst/gststreamcollection.c: * gst/gststreams.c: * gst/gstsystemclock.c: * gst/gsttask.c: * gst/gsttracer.c: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasetransform.c: * libs/gst/base/gstcollectpads.c: * libs/gst/base/gstdataqueue.c: * libs/gst/check/gsttestclock.c: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gsttriggercontrolsource.c: * libs/gst/net/gstnetclientclock.c: * libs/gst/net/gstnettimeprovider.c: * libs/gst/net/gstptpclock.c: * tests/check/gst/gstdevice.c: Update for g_type_class_add_private() deprecation in recent GLib https://gitlab.gnome.org/GNOME/glib/merge_requests/7 2018-06-18 16:29:18 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstconcat.c: concat: Properly forward the SEGMENT seqnum 2018-06-11 10:22:39 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: event: Unset SNAP flags when creating a new seek event without KEY_UNIT flag The SNAP flags only make sense in combination with the KEY_UNIT flag, and without they expose all kinds of unexpected behaviour in various elements that don't expect this from happening. Also warn if this ever happens. https://bugzilla.gnome.org/show_bug.cgi?id=796558 2018-06-18 09:17:36 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: event: Require writable events for setting the running-time-offset and sequence number Otherwise multiple code paths with the same event could change the values on each other. https://bugzilla.gnome.org/show_bug.cgi?id=796615 2018-03-15 12:43:56 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gststructure.c: * tests/check/gst/gststructure.c: gst_structure_to_string: display actual value of pointers We used to always display "NULL" which was pretty confusing when debugging. https://bugzilla.gnome.org/show_bug.cgi?id=794355 2018-06-13 16:27:24 -0400 Thibault Saunier <tsaunier@igalia.com> * gst/gststreams.c: stream: Add some missing API safe guards 2018-06-08 17:58:43 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstpoll.c: poll: minor docs clarification 'Not implemented' could be misinterpreted to mean that the API doesn't even exist there. 2018-06-08 17:57:01 +0100 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update for new API 2018-04-05 12:40:09 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstpoll.c: * gst/gstpoll.h: poll: add API to watch for POLLPRI Windows doesn't seem to have an equivalent of POLLPRI so disabled those functions on this platform. This API can be used, for example, to wait for video4linux events which are using POLLPRI. https://bugzilla.gnome.org/show_bug.cgi?id=794977 2018-04-05 12:19:39 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstpoll.c: poll: stop treating on POLLPRI as 'read' Current code was considering "can read" as having either POLLIN or POLLPRI being set. This may lead to client being awaken because of POLLPRI, starting a blocking read and getting stuck because there is actually nothing to read. This patch removes POLLPRI handling in read code and I'll add specific API to wait for POLLPRI. https://bugzilla.gnome.org/show_bug.cgi?id=794977 2018-06-05 17:02:18 +0200 Edward Hervey <edward@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Ensure seqnum consistency We need all relevant events of a segment to have consistent seqnum: * GST_EVENT_SEGMENT * GST_EVENT_EOS If we are push-based and create a new segment, use the same seqnum as the upstream event. If we are pull-based, use the seqnum of that newly created segment event everywhere 2018-06-05 17:01:05 +0200 Edward Hervey <edward@centricular.com> * gst/gstmessage.c: message: Only allow setting valid seqnum on messages If we want to make sure we never end up with invalid seqnum on messages let's forbid setting them. 2018-06-05 16:59:50 +0200 Edward Hervey <edward@centricular.com> * gst/gstevent.c: event: Only allow setting valid seqnum on events If we want to make sure we never end up with invalid seqnum on events let's forbid setting them. 2018-06-05 16:58:21 +0200 Edward Hervey <edward@centricular.com> * gst/gstbin.c: bin: Make sure we don't use invalid seqnums on messages There is a possibility that the accumlation functions don't set a seqnum. Make sure we only set/override the seqnum of the new messages if we *have* a valid upstream seqnum to use 2018-06-02 14:02:19 +0200 Dimitrios Katsaros <patcherwork@gmail.com> * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: queue2: use GstQueueArray When using queue2 as a queue it was using GQueue with individually allocated queue items, so two allocs for each item. With GstQueueArray we can avoid those. https://bugzilla.gnome.org/show_bug.cgi?id=796483 2018-06-03 19:37:40 +0200 Mike Wey <mike.wey@gtkd.org> * libs/gst/base/gstdataqueue.c: dataqueue: add some missing introspection annotations https://bugzilla.gnome.org/show_bug.cgi?id=796488 2018-05-30 14:06:06 +0200 Edward Hervey <edward@centricular.com> * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbaseparse.h: baseparse: Documentation improvements * Remove references to old functions and methods * Use proper #ClassName.vmethod() decorator for vmethod 2018-05-22 16:30:58 +0200 Thibault Saunier <tsaunier@igalia.com> * meson.build: * meson_options.txt: meson: Add an option to activate extra checks And activate them by default as with autotools 2018-05-21 23:10:21 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: rename gtkdoc option to gtk_doc 2018-05-21 11:37:00 +0200 Edward Hervey <edward@centricular.com> * gst/gstdatetime.c: datetime: Update/fix documentation 2018-05-21 11:36:42 +0200 Edward Hervey <edward@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstsample.c: * gst/gstsample.h: sample: Update documentation 2018-05-21 11:16:29 +0200 Edward Hervey <edward@centricular.com> * gst/gstpadtemplate.h: gst: Add an example to GST_STATIC_PAD_TEMPLATE macro 2018-05-21 09:14:37 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/gstmeta.c: * gst/gstprotection.c: gst: add some GIR array annotations 2018-05-20 14:07:15 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add 'nls' option to disable translations And enable by default. Was implicitly disabled because ENABLE_NLS was not defined. 2018-05-16 23:25:26 +0100 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstbase.def: win32: update for new aggregator API Fixes make distcheck. 2018-05-05 10:46:09 +0200 Olivier Crête <olivier.crete@collabora.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add get_next_time function for live streams Add a function to do the right thing for live streams. https://bugzilla.gnome.org/show_bug.cgi?id=795486 2018-05-10 00:05:51 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Fix race condition causing the same probe to be called multiple times Probes were remembering a cookie that was used to check if the probe was already called this time before the probes list changed. However the same probes could've been called by another thread in between and thus gotten a new cookie, and would then be called a second time. https://bugzilla.gnome.org/show_bug.cgi?id=795987 2018-05-04 09:29:22 +0200 Edward Hervey <edward@centricular.com> * gst/gstregistrybinary.c: * libs/gst/helpers/gst-ptp-helper.c: gst: Use memcpy() instead of strncpy() where appropriate strncpy() is assumed to be for strings so the compiler assumes that it will need an extra byte for the string-terminaning NULL. For cases where we know it's actually "binary" data, just copy it with memcpy. https://bugzilla.gnome.org/show_bug.cgi?id=795756 2018-05-07 10:47:00 +0900 Seungha Yang <seungha.yang@navercorp.com> * libs/gst/base/gstbitwriter.h: bitwriter: Fix build error Fix implicit-function-declaration warning for meemst and memcpy gstbitwriter.h:166:3: error: implicit declaration of function ‘memset’ memset (bitwriter->data + clear_pos, 0, (new_bit_size >> 3) - clear_pos); ^ https://bugzilla.gnome.org/show_bug.cgi?id=795867 2018-05-07 01:32:14 +1000 Jan Schmidt <jan@centricular.com> * gst/gstevent.h: gstevent: Add some FIXME: 2.0 about removing the timestamp The timestamp field isn't valuable or used well anywhere. We should remove it for GStreamer 2.0 https://bugzilla.gnome.org/show_bug.cgi?id=761462 2014-03-18 16:01:04 +0200 Sreerenj Balachandran <sreerenj.balachandran@intel.com> * tests/check/Makefile.am: * tests/check/libs/.gitignore: * tests/check/libs/bitwriter.c: * tests/check/meson.build: bitwriter: Add unit tests https://bugzilla.gnome.org/show_bug.cgi?id=707543 2013-11-12 15:00:51 +0800 Wind Yuan <feng.yuan@intel.com> * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/Makefile.am: * libs/gst/base/gstbitwriter-docs.h: * libs/gst/base/gstbitwriter.c: * libs/gst/base/gstbitwriter.h: * libs/gst/base/meson.build: * win32/common/libgstbase.def: bitwriter: Add a generic bit writer GstBitWriter provides a bit writer that can write any number of bits into a memory buffer. It provides functions for writing any number of bits into 8, 16, 32 and 64 bit variables. https://bugzilla.gnome.org/show_bug.cgi?id=707543 2018-05-05 19:08:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: * libs/gst/helpers/meson.build: * meson.build: * meson_options.txt: * plugins/meson.build: * plugins/tracers/meson.build: * tests/check/meson.build: * tests/meson.build: meson: Update option names to omit disable_ and with- prefixes Also yield common options to the outer project (gst-build in our case) so that they don't have to be set manually. 2018-05-05 16:16:45 +0200 Tim-Philipp Müller <tim@centricular.com> * gst/gstbufferlist.c: * tests/check/gst/gstbufferlist.c: bufferlist: fix abort due to underflow when creating 0-sized list gst_buffer_list_new_sized(0) will cause an underflow in a calculation which then makes it try to allocate huge amounts of memory, which may lead to aborts. https://bugzilla.gnome.org/show_bug.cgi?id=795758 2018-05-05 12:16:07 +0200 Tim-Philipp Müller <tim@centricular.com> * scripts/create-uninstalled-setup.sh: scripts: create-uninstalled-setup: remove dead wiki link, mention gst-build https://bugzilla.gnome.org/show_bug.cgi?id=795734 2018-05-05 11:32:12 +0200 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: since marker for new API Was also backported. https://bugzilla.gnome.org/show_bug.cgi?id=795332 2018-05-04 14:00:21 +0200 Francisco Velazquez <francisv@ifi.uio.no> * gst/gstdebugutils.h: debugutils: Update configure option in documentation Update documentation on non existent option `gst-enable-gst-debug'. Instead, one has to make sure that the `--disable-gst-debug' option was not used when compiling GStreamer (i.e., `./configure --disable-gst-debug'). https://bugzilla.gnome.org/show_bug.cgi?id=795801 2018-04-27 12:41:58 -0400 luz.paz <luzpaz@users.noreply.github.com> * docs/random/typefind: * docs/random/wtay/capsnego-cases: * docs/random/wtay/events2: * gst/gstelement.c: * libs/gst/base/gstbasesink.c: * tests/check/gst/gstpreset.c: Source code typo fixes https://bugzilla.gnome.org/show_bug.cgi?id=795610 2018-04-27 12:40:31 -0400 luz.paz <luzpaz@users.noreply.github.com> * configure.ac: * docs/libs/gstreamer-libs-docs.sgml: * docs/random/TODO-pre-0.9: * docs/random/autoplug1: * docs/random/autoplug2: * docs/random/bbb/streamselection: * docs/random/caps: * docs/random/caps2: * docs/random/company/clocks: * docs/random/company/gstdata: * docs/random/company/gstparse: * docs/random/company/gvadec.txt: * docs/random/company/tagging: * docs/random/company/time: * docs/random/ds/0.9-planning2: * docs/random/dynpads: * docs/random/ensonic/distributed.txt: * docs/random/ensonic/dparams.txt: * docs/random/ensonic/draft-bufferpools.txt: * docs/random/ensonic/draft-registry-change-hooks.txt: * docs/random/ensonic/dynlink.txt: * docs/random/ensonic/embedded.txt: * docs/random/ensonic/interfaces.txt: * docs/random/ensonic/lazycaps.txt: * docs/random/ensonic/logging.txt: * docs/random/ensonic/media-device-daemon.txt: * docs/random/ensonic/profiling.txt: * docs/random/error: * docs/random/events: * docs/random/gdp: * docs/random/matth/scheduling.txt: * docs/random/negotiation: * docs/random/old/ChangeLog.gstreamer: * docs/random/omega/TODO-0.1.0: * docs/random/omega/caps2: * docs/random/omega/plan-generation: * docs/random/omega/sched-commit1: * docs/random/omega/sched2: * docs/random/phonon-gst: * docs/random/plan-0.11.txt: * docs/random/plugins: * docs/random/porting-to-1.0.txt: * docs/random/queue: * docs/random/rtp: * docs/random/thomasvs/0.10: * docs/random/thomasvs/packaging: * docs/random/types: * docs/random/types2: * docs/random/types3: * docs/random/uraeus/gstreamer_and_midi.txt: * docs/random/wtay/CORBA: * docs/random/wtay/autoplug2: * docs/random/wtay/caps-negociation: * docs/random/wtay/capsnego2: * docs/random/wtay/capsnego2-docs: * docs/random/wtay/clocking: * docs/random/wtay/eos2: * docs/random/wtay/events: * docs/random/wtay/events3: * docs/random/wtay/interactivity: * docs/random/wtay/messages: * docs/random/wtay/namespaces: * docs/random/wtay/negotiation3: * docs/random/wtay/padprobes: * docs/random/wtay/pipelineinfo: * docs/random/wtay/plugin_guidelines: * docs/random/wtay/registry: * docs/random/wtay/scheduling_ideas: * docs/random/wtay/threading: * docs/random/wtay/threads_hilevel: * docs/random/wtay/timecache: * gst/gst.c: * gst/gstbin.c: * gst/gstcapsfeatures.c: * gst/gstdebugutils.c: * gst/gstdebugutils.h: * gst/gstdevice.h: * gst/gstdeviceprovider.c: * gst/gstelement.c: * gst/gstelement.h: * gst/gstevent.c: * gst/gstinfo.h: * gst/gstmemory.c: * gst/gstmessage.h: * gst/gstminiobject.c: * gst/gstobject.c: * gst/gstpad.c: * gst/gstpreset.c: * gst/gstregistrybinary.c: * gst/gstregistrychunks.c: * gst/gstsegment.c: * gst/gststreams.c: * gst/gsttaglist.c: * gst/gsttracerrecord.h: * gst/gsttracerutils.c: * gst/gsttypefindfactory.c: * gst/gsturi.c: * gst/gstutils.c: * gst/gstvalue.c: * gst/parse/grammar.y: * hooks/pre-commit.hook: * libs/gst/base/gstbasetransform.c: * libs/gst/base/gstcollectpads.c: * libs/gst/base/gstcollectpads.h: * libs/gst/base/gstflowcombiner.c: * libs/gst/base/gstindex.c: * libs/gst/check/gstcheck.h: * libs/gst/check/gstharness.c: * libs/gst/check/libcheck/check.h.in: * libs/gst/check/libcheck/check_impl.h: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gsttimedvaluecontrolsource.c: * libs/gst/net/gstptpclock.c: * plugins/elements/gstcapsfilter.c: * plugins/elements/gstconcat.c: * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gsttee.c: * plugins/elements/gsttypefindelement.c: * plugins/tracers/gstlatency.c: * scripts/gst-plot-traces.sh: * tests/check/elements/funnel.c: * tests/check/elements/selector.c: * tests/check/elements/streamiddemux.c: * tests/check/gst/gstbuffer.c: * tests/check/gst/gstmemory.c: * tests/check/gst/gstmessage.c: * tests/check/gst/gstpad.c: * tests/check/libs/aggregator.c: * tests/examples/helloworld/helloworld.c: Fix typos in comments and docs Found via `codespell` https://bugzilla.gnome.org/show_bug.cgi?id=795610 2018-04-25 19:47:11 +0100 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstbase.def: win32: add new symbol 2018-04-25 14:30:04 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Improve doc for gst_aggregator_pad_has_buffer 2018-04-23 11:34:19 -0400 Olivier Crête <olivier.crete@collabora.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add API to check if a pad has a new buffer https://bugzilla.gnome.org/show_bug.cgi?id=795332 2018-04-25 18:28:00 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: buffer: don't over-allocate internal GstMeta items We would allocate space for two GstMeta structs even though there is only one in the end (the one in GstMetaItem and in GstFooMeta overlap). 2018-03-23 12:48:37 -0400 Xavier Claessens <xavier.claessens@collabora.com> * gst/meson.build: * libs/gst/base/meson.build: * libs/gst/controller/meson.build: * libs/gst/net/meson.build: * meson.build: * meson_options.txt: * plugins/elements/meson.build: Meson: Use library() to build both static and shared libs Meson supports building both static and shared libraries in a single library() call. It has the advantage of reusing the same .o objects and thus avoid double compilation. https://bugzilla.gnome.org/show_bug.cgi?id=794627 2018-04-24 14:37:40 -0400 Xavier Claessens <xavier.claessens@collabora.com> * meson.build: Meson: Fix check for linker args https://bugzilla.gnome.org/show_bug.cgi?id=795513 2018-04-22 19:23:50 +0100 Tim-Philipp Müller <tim@centricular.com> * pkgconfig/gstreamer-uninstalled.pc.in: pkgconfig: set pluginsdir to plugins/ sub-directory for uninstalled .pc file So we don't unnecessarily scan directories that have no plugins (or try to open libs). Matches how we limit the search space for plugin modules to gst/ ext/ sys/ subdirs. 2018-04-20 12:30:24 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: fix invalid keyword argument warnings cc.compiles() doesn't have a 'prefix' argument (yet) and the prefix has already been prepended to the source code snippets. https://github.com/mesonbuild/meson/issues/2364 2018-04-18 11:35:20 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstevent.c: Revert "docs: Minor fix in event_new_select_streams" This reverts commit f218917d02760f8f32a35e4e635e23230c47c0c6. 2018-04-17 20:03:09 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstevent.c: docs: Minor fix in event_new_select_streams 2018-04-17 11:24:31 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: multiqueue, inputselector: show pad properties in gst-inspect-1.0 2018-04-17 11:01:09 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstinputselector.c: * plugins/elements/gstoutputselector.c: inputselector, outputselector: add guards for wrong pads being set as active pads Catch users wrongly setting foreign pads or wrong pads as the selector's active pad, which leads to all kinds of other issues. It's a programming error so handle it just like we would if we had direct API. https://bugzilla.gnome.org/show_bug.cgi?id=795309 2018-04-17 14:00:20 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstcaps.c: * gst/gstcaps.h: caps: Add a macro based variant of gst_caps_copy This way we do not hit the performance overhead of having the method not inlined but still can use it from bindings. 2018-04-16 16:30:27 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstpad.c: * tests/check/gst/gstpad.c: pad: Handle changing sticky events in pad probes In the case where the user sets a new padprobeinfo->data in a probe where the data is a sticky event, the new sticky event should be automatically sticked on the probed pad. https://bugzilla.gnome.org/show_bug.cgi?id=795330 2018-04-17 09:33:02 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstinfo.c: debug: Make PADS debug background blue Red on red was... suboptimal! https://bugzilla.gnome.org/show_bug.cgi?id=795330 2018-04-17 17:00:53 +0100 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update defs for new exports 2018-04-16 16:27:57 -0300 Thibault Saunier <tsaunier@igalia.com> * libs/gst/check/gstharness.c: harness: Handle harness->element not being a GstBin It is totally valid but in gst_harness_find_element we were not handling that case. https://bugzilla.gnome.org/show_bug.cgi?id=795308 2018-04-04 17:36:57 -0300 Thibault Saunier <tsaunier@igalia.com> * gst/gstcaps.c: * gst/gstcaps.h: gst: Stop inlining gst_caps_copy This way it gets exposed to bindings through GObject Introspection. 2018-04-16 10:52:46 +0100 Tim-Philipp Müller <tim@centricular.com> * README: * common: Automatic update of common submodule From f0c2dc9 to ed78bee 2018-04-15 00:49:55 +0200 Aurelien Jarno <aurelien@aurel32.net> * gst/gstconfig.h.in: gstconfig.h.in: initial RISC-V support RISC-V supports unaligned accesses, but these might run extremely slowly depending on the implementation. Therefore set GST_HAVE_UNALIGNED_ACCESS to 0 on this architecture. https://bugzilla.gnome.org/show_bug.cgi?id=795271 2018-04-11 17:16:54 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstadapter.c: adapter: port the buffer list from GSList to GstQueueArray Significantly reduces the amount of memory allocation operations. https://bugzilla.gnome.org/show_bug.cgi?id=795167 2018-04-11 15:38:36 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstqueuearray.c: * libs/gst/base/gstqueuearray.h: * tests/check/libs/queuearray.c: * win32/common/libgstbase.def: API: gst_queue_array_peek_nth https://bugzilla.gnome.org/show_bug.cgi?id=795157 2018-04-11 13:44:33 +0200 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstqueuearray.c: gstqueuearray: make find() return a 0-based index And make the drop() functions expect a 0-based index too, this addresses a longstanding FIXME. This will not break backward compatibility, because the drop() functions were previously only meant to be used with the index returned by find(). https://bugzilla.gnome.org/show_bug.cgi?id=795156 2018-04-11 00:49:02 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstsample.c: * gst/gstsample.h: * win32/common/libgstreamer.def: gstsample: new API gst_sample_set_buffer gst_sample_set_caps gst_sample_set_segment gst_sample_set_info gst_sample_is_writable gst_sample_make_writable This commit makes it possible to reuse a sample object and avoid unnecessary memory allocations, for example in appsink. In addition, writability is now required to set the buffer list. https://bugzilla.gnome.org/show_bug.cgi?id=795144 2018-04-13 20:15:46 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net> * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbytereader.c: * libs/gst/base/gstbytewriter.c: * libs/gst/base/gstcollectpads.c: * libs/gst/base/gstcollectpads.h: * libs/gst/base/gsttypefindhelper.c: * libs/gst/base/gsttypefindhelper.h: base: fix some GIR annotations Mostly related to out parameters and their transfer 2018-03-29 18:59:43 +0200 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/gstbuffer.c: * gst/gstutils.c: gst: add some GIR array annotations 2018-04-13 09:58:05 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/gstdebugutils.c: debugutils: Add missing parameters documentation 2018-04-11 19:56:01 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: gstdebug: fix occasional deadlocks on windows when outputting debug logging When outputting debug logs on Windows, some sections are protected with a non-recursive lock. Turns out though that gst_debug_message_get() might indirectly, via our printf format extensions, call code which in turn would try to log something when it can't handle something. If that happens we end up in gst_debug_log_default() again recursively and try to again take the lock that's already taken, thus deadlocking. Format the debug message string outside of the critical section instead to avoid this. https://bugzilla.gnome.org/show_bug.cgi?id=784382 2018-04-09 14:19:19 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gsturi.h: gsturi: include gstconfig.h earlier for GST_API define 2018-03-27 10:25:46 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstinfo.c: * tests/check/gst/gstinfo.c: gstinfo: fix debug levels being applied in the wrong order Remove unneeded reapplication of patterns. Besides being superfluous (gst_debug_reset_threshold already applies patterns) it was also wrong and didn't stop checking patterns after the first match (broken in 67e9d139). Also fix up unit test which checked for the wrong order. https://bugzilla.gnome.org/show_bug.cgi?id=794717 2018-03-27 10:15:46 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstinfo.c: gstinfo: Simplify gst_debug_reset_threshold() implementation Replace the while+goto with a for+break and check walk to determine whether we had a match. Move up the unlock to keep the locked section as small as possible. https://bugzilla.gnome.org/show_bug.cgi?id=794717 2018-03-27 10:14:27 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstinfo.c: gstinfo: Reduce code duplication around level pattern matching Move the match, logging and set_threshold to a new function. The log levels are different, so choose the higher one (LOG). Having two equivalent messages at two different levels seems like a bad idea anyway. https://bugzilla.gnome.org/show_bug.cgi?id=794717 2018-03-27 17:16:05 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gststreamcollection.c: streamcollection: embed GQueue into the private struct 2018-04-02 12:44:15 +0200 Edward Hervey <edward@centricular.com> * docs/libs/Makefile.am: * docs/libs/gstreamer-libs-sections.txt: docs: Update libs documentation * Make sure all libcheck headers are ignored * Add all missing symbols 2018-04-02 12:43:57 +0200 Edward Hervey <edward@centricular.com> * docs/gst/gstreamer-sections.txt: docs: Update gst core doc 2018-04-02 12:42:30 +0200 Edward Hervey <edward@centricular.com> * gst/gstparamspecs.h: * gst/gsttracerutils.h: gst: Documentation fixes * Fix copy-paste error for GstParamSpecArray documentation * Use proper field name for tracer utils documentation 2018-04-02 12:41:48 +0200 Edward Hervey <edward@centricular.com> * libs/gst/base/gstaggregator.h: * libs/gst/check/gstcheck.h: libs: Documentation fixes * Symbols not properly exposed or wrongly named 2018-03-29 12:36:11 +1100 Matthew Waters <matthew@centricular.com> * gst/gstbin.c: bin: fix deep-element-added signal debug log message Adding the bin to the child element doesn't really make sense. 2018-03-22 13:00:21 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: bump meson req for gnome.mkenums_simple() 2018-03-22 12:18:28 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstenumtypes.c.template: * gst/gstenumtypes.h.template: meson: remove no longer needed core enumtypes template files 2017-07-20 18:12:43 +1000 Alessandro Decina <alessandro.d@gmail.com> * Makefile.am: * gst/meson.build: meson: use gnome.mkenums_simple() to generate core enumtypes 2017-07-20 13:03:55 +1000 Alessandro Decina <alessandro.d@gmail.com> * Makefile.am: * libs/gst/controller/controller_mkenum.py: * libs/gst/controller/meson.build: * meson.build: meson: use gnome.mkenums_simple() to generate controller enumtypes 2017-07-19 19:37:02 +1000 Alessandro Decina <alessandro.d@gmail.com> * libs/gst/controller/meson.build: meson: delete unused variable 2018-03-21 20:02:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/gst/gstbufferpool.c: test: Pool now try to reset the size As a side effect, buffers are no longer expected to be discarded on resize. 2016-11-14 15:35:50 +0100 Petr Kulhavy <brain@jikos.cz> * gst/gstbufferpool.c: gstbuffer: reset buffer to its original size if intact Enhance default_reset_buffer() to resize the buffer to its full size if the memory hasn't changed. This allows to reuse the buffer even if the offset has changed or the size has shrunk, rather than freeing the buffer. Change related to: https://bugzilla.gnome.org/show_bug.cgi?id=772841 2018-03-21 10:20:14 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/net.h: net: Include gstnetcontrolmessagemeta.h in net.h 2018-03-21 10:13:44 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstparamspecs.h: paramspecs: Set g-i annotation values for GST_PARAM_* constants 2018-03-21 10:11:30 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelementfactory.h: elementfactory: GST_ELEMENT_FACTORY_TYPE_DECODABLE had DECRYPTOR added, update g-i annotation value 2018-03-20 16:11:01 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstchildproxy.c: * gst/parse/grammar.y: gst: Fix compilation with latest GLib g_object_ref() forwards the type of its argument nowadays. ./grammar.y:409:14: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] gstchildproxy.c:212:7: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types] 2018-03-20 09:02:34 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * meson.build: Back to development === release 1.14.0 === 2018-03-19 20:09:51 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.14.0 2018-03-19 20:09:51 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs === release 1.13.91 === 2018-03-13 19:08:54 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.13.91 2018-03-13 19:08:54 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2018-03-13 11:54:42 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/meson.build: * docs/libs/meson.build: meson: docs: update api decorators to ignore 2018-03-12 23:12:13 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/Makefile.am: docs: fixup for new libs API export decorators 2018-03-12 23:03:26 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/net/Makefile.am: * libs/gst/net/gstnet.h: * libs/gst/net/gstnetaddressmeta.h: * libs/gst/net/gstnetclientclock.h: * libs/gst/net/gstnetcontrolmessagemeta.h: * libs/gst/net/gstnettimepacket.h: * libs/gst/net/gstnettimeprovider.h: * libs/gst/net/gstptpclock.h: * libs/gst/net/meson.build: * libs/gst/net/net-prelude.h: * libs/gst/net/net.h: net: GST_EXPORT -> GST_NET_API We need different export decorators for the different libs. For now no actual change though, just rename before the release, and add prelude headers to define the new decorator to GST_EXPORT. 2018-03-12 23:03:26 +0000 Tim-Philipp Müller <tim@centricular.com> * common: * libs/gst/controller/Makefile.am: * libs/gst/controller/controller-prelude.h: * libs/gst/controller/controller.h: * libs/gst/controller/controller_mkenum.py: * libs/gst/controller/gstargbcontrolbinding.h: * libs/gst/controller/gstdirectcontrolbinding.h: * libs/gst/controller/gstinterpolationcontrolsource.h: * libs/gst/controller/gstlfocontrolsource.h: * libs/gst/controller/gstproxycontrolbinding.h: * libs/gst/controller/gsttimedvaluecontrolsource.h: * libs/gst/controller/gsttriggercontrolsource.h: * libs/gst/controller/meson.build: controller: GST_EXPORT -> GST_CONTROLLER_API We need different export decorators for the different libs. For now no actual change though, just rename before the release, and add prelude headers to define the new decorator to GST_EXPORT. 2018-03-12 23:03:26 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/Makefile.am: * libs/gst/check/check-prelude.h: * libs/gst/check/check.h: * libs/gst/check/gstbufferstraw.h: * libs/gst/check/gstcheck.h: * libs/gst/check/gstconsistencychecker.h: * libs/gst/check/gstharness.h: * libs/gst/check/gsttestclock.h: * libs/gst/check/meson.build: check: GST_EXPORT -> GST_CHECK_API We need different export decorators for the different libs. For now no actual change though, just rename before the release, and add prelude headers to define the new decorator to GST_EXPORT. 2018-03-12 23:03:26 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/Makefile.am: * libs/gst/base/base-prelude.h: * libs/gst/base/base.h: * libs/gst/base/gstadapter.h: * libs/gst/base/gstaggregator.h: * libs/gst/base/gstbaseparse.h: * libs/gst/base/gstbasesink.h: * libs/gst/base/gstbasesrc.h: * libs/gst/base/gstbasetransform.h: * libs/gst/base/gstbitreader.h: * libs/gst/base/gstbytereader.h: * libs/gst/base/gstbytewriter.h: * libs/gst/base/gstcollectpads.h: * libs/gst/base/gstdataqueue.h: * libs/gst/base/gstflowcombiner.h: * libs/gst/base/gstindex.h: * libs/gst/base/gstpushsrc.h: * libs/gst/base/gstqueuearray.h: * libs/gst/base/gsttypefindhelper.h: * libs/gst/base/meson.build: base: GST_EXPORT -> GST_BASE_API We need different export decorators for the different libs. For now no actual change though, just rename before the release, and add prelude headers to define the new decorator to GST_EXPORT. 2018-03-12 23:03:26 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/Makefile.am: * gst/Makefile.am: * gst/gst.h: * gst/gst_private.h: * gst/gstallocator.h: * gst/gstatomicqueue.h: * gst/gstbin.h: * gst/gstbuffer.h: * gst/gstbufferlist.h: * gst/gstbufferpool.h: * gst/gstbus.h: * gst/gstcaps.h: * gst/gstcapsfeatures.h: * gst/gstchildproxy.h: * gst/gstclock.h: * gst/gstconfig.h.in: * gst/gstcontext.h: * gst/gstcontrolbinding.h: * gst/gstcontrolsource.h: * gst/gstdatetime.h: * gst/gstdebugutils.h: * gst/gstdevice.h: * gst/gstdevicemonitor.h: * gst/gstdeviceprovider.h: * gst/gstdeviceproviderfactory.h: * gst/gstdynamictypefactory.h: * gst/gstelement.h: * gst/gstelementfactory.h: * gst/gstenumtypes.h.template: * gst/gsterror.h: * gst/gstevent.h: * gst/gstformat.h: * gst/gstghostpad.h: * gst/gstinfo.h: * gst/gstiterator.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstmeta.h: * gst/gstminiobject.h: * gst/gstobject.h: * gst/gstpad.h: * gst/gstpadtemplate.h: * gst/gstparamspecs.h: * gst/gstparse.h: * gst/gstpipeline.h: * gst/gstplugin.h: * gst/gstpluginfeature.h: * gst/gstpoll.h: * gst/gstpreset.h: * gst/gstpromise.h: * gst/gstprotection.h: * gst/gstquery.h: * gst/gstregistry.h: * gst/gstsample.h: * gst/gstsegment.h: * gst/gststreamcollection.h: * gst/gststreams.h: * gst/gststructure.h: * gst/gstsystemclock.h: * gst/gsttaglist.h: * gst/gsttagsetter.h: * gst/gsttask.h: * gst/gsttaskpool.h: * gst/gsttoc.h: * gst/gsttocsetter.h: * gst/gsttracer.h: * gst/gsttracerfactory.h: * gst/gsttracerrecord.h: * gst/gsttypefind.h: * gst/gsttypefindfactory.h: * gst/gsturi.h: * gst/gstutils.h: * gst/gstvalue.h: gst: GST_EXPORT -> GST_API We need different export decorators for the different libs. For now no actual change though, just rename before the release, and add prelude headers to define the new decorator to GST_EXPORT. 2018-03-08 13:30:30 +1100 Matthew Waters <matthew@centricular.com> * gst/gstpromise.c: promise: be more explicit in docs about who/when to use reply/interrupt/expire https://bugzilla.gnome.org/show_bug.cgi?id=794153 2018-03-07 11:19:25 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Balance unlock/unlock_stop in _src_stop() Otherwise it's possible that we won't be able to start again depending the implementation. We do start/stop in normal use cases whenever GST_QUERY_SCHEDULING happens before we are started. https://bugzilla.gnome.org/show_bug.cgi?id=794149 2018-03-07 11:16:00 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: No need to stop flushing in start_complete The flushing state is handled a bit differently, there is no need to stop flushing in start_complete. This would other result in unlock_stop being called without unlock_start. Unlike what the old comment says, there is no need to take the live lock here, we are still single threaded at this point (app thread or the state change thread). Also, we will wait for playing state in create/getrange, no need to do that twice. https://bugzilla.gnome.org/show_bug.cgi?id=794149 2018-03-05 11:52:24 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdebugutils.c: debugutils: Change dot-file functions documentation to proper gtk-doc This way gobject-introspection also picks it up and handles our annotations. See https://gitlab.gnome.org/GNOME/gobject-introspection/issues/194 2018-03-04 10:53:10 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstqueuearray.c: * libs/gst/base/gstqueuearray.h: * win32/common/libgstbase.def: queuearray: Implement pop_tail_struct() for completeness All other variants of {peek,pop}_{head,tail}_{,struct} were already implemented. https://bugzilla.gnome.org/show_bug.cgi?id=794035 2018-03-04 10:24:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpreset.c: * gst/gsturi.c: gst: Add some more (type filename) annotations === release 1.13.90 === 2018-03-03 21:51:49 +0000 Tim-Philipp Müller <tim@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.13.90 2018-03-03 21:51:49 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2018-02-13 22:20:18 +1100 Matthew Waters <matthew@centricular.com> * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsrc.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesrc.c: * plugins/elements/gstqueue2.c: * plugins/elements/gstsparsefile.c: plugins: Don't force 64-bit file/seek functions variants on android Most functions are automatically chosen from the _FILE_OFFSET_BITS define, the remaining one (fstat) is only available on API >= 21 so check for that 2018-03-01 22:21:17 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * win32/common/libgstbase.def: Add new symbol to docs and .def file Fixes make check 2018-03-01 16:19:09 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstqueuearray.c: * libs/gst/base/gstqueuearray.h: * plugins/elements/gstqueue.c: * tests/check/elements/queue.c: queue: Ignore thresholds if a query is queued The queue gets filled by the tail, so a query will always be the tail object, not the head object. Also add a _peek_tail_struct() method to the GstQueueArray to enable looking at the tail. With unit test to prevent future regression. https://bugzilla.gnome.org/show_bug.cgi?id=762875 2018-03-01 18:38:01 +0100 Mathieu Duponchelle <mathieu@centricular.com> * meson.build: meson: -Wformat-* require -Wformat 2018-03-01 17:20:06 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/printf/meson.build: * libs/gst/check/libcheck/meson.build: * meson.build: meson: enable more warnings Modeled on the autotools build, -W flags are only added if the compiler supports them. https://bugzilla.gnome.org/show_bug.cgi?id=793958 2018-03-01 00:31:11 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: gstaggregator: pads must inherit from #GstAggregatorPad Document this, and take advantage of that fact to use GstAggregator.srcpad.segment instead of GstAggregator.segment https://bugzilla.gnome.org/show_bug.cgi?id=793942 2018-03-01 01:15:34 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: Revert "gstaggregator: pads must inherit from #GstAggregatorPad" This reverts commit 9774b3775d8483e5697f9196a26c1e5831113bd6. Pushed by mistake 2018-03-01 01:12:07 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstghostpad.c: ghostpad: ensure we build a ghost pad .. When we construct from a custom GType 2018-03-01 01:09:48 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstpad.c: pad: fix mixed declarations 2018-03-01 00:31:11 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: gstaggregator: pads must inherit from #GstAggregatorPad Document this, and take advantage of that fact to use GstAggregator.srcpad.segment instead of GstAggregator.segment https://bugzilla.gnome.org/show_bug.cgi?id=793942 2018-02-28 19:53:42 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: allow src GstAggregatorPads See https://bugzilla.gnome.org/show_bug.cgi?id=793917 https://bugzilla.gnome.org/show_bug.cgi?id=793934 2018-02-28 19:51:44 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstghostpad.c: * gst/gstpad.c: * gst/gstpadtemplate.c: pad, ghostpad: use the template gtype if specified Also make sure the GType passed to the with_gtype versions of the template constructors is_a GstPad https://bugzilla.gnome.org/show_bug.cgi?id=793933 2018-02-21 22:25:25 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbaseparse.c: baseparse: Fix integer overflow in bitrate calculation https://bugzilla.gnome.org/show_bug.cgi?id=793284 2018-02-21 22:01:36 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbaseparse.c: baseparse: Avoid overflow in update_interval calculation https://bugzilla.gnome.org/show_bug.cgi?id=793284 2018-02-21 21:43:59 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbaseparse.c: baseparse: Fix check for update_interval update_interval may be -1 https://bugzilla.gnome.org/show_bug.cgi?id=793284 2018-02-19 15:39:46 +0900 Justin Kim <justin.kim@collabora.com> * meson.build: meson: Use .dylib suffix if darwin For Mac OS, GST_EXTRA_MODULE_SUFFIX should be set as '.dylib'. Otherwise, GStreamer fails to load its plugins. https://bugzilla.gnome.org/show_bug.cgi?id=793584 2018-02-01 18:29:27 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstqueuearray.c: * libs/gst/base/gstqueuearray.h: * tests/check/libs/queuearray.c: * win32/common/libgstbase.def: queuearray: add _peek_tail() and _pop_tail() API: gst_queue_array_pop_tail() API: gst_queue_array_peek_tail() These will be needed later for appsrc. 2018-02-13 12:38:33 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/gstbuffer.c: * gst/gstevent.c: * gst/gstmemory.c: * gst/gstmessage.c: * gst/gstquery.c: * gst/gstsegment.c: * gst/gsttaglist.c: * gst/gsturi.c: gst: fix some GIR annotations Mostly related to out parameters and their transfer 2018-01-10 04:08:57 +0100 Alicia Boya García <aboya@igalia.com> * libs/gst/base/gstbasesink.c: * tests/check/libs/basesink.c: gstbasesink: Include segment.offset in the computation of position Position queries with GST_FORMAT_TIME are supposed to return stream time. gst_base_sink_get_position() estimates the current stream time on its own instead of using gst_segment_to_stream_time(), but the algorithm used was not taking segment.offset into account, resulting in invalid values when this field was set to a non-zero value. https://bugzilla.gnome.org/show_bug.cgi?id=792434 2018-02-15 12:58:43 +1100 Matthew Waters <matthew@centricular.com> * plugins/tracers/gstlatency.c: tracers: latency: allow for non parented pads to send latency probes Such a setup is used in rtspsrc for its TCP connection https://bugzilla.gnome.org/show_bug.cgi?id=793478 2018-02-15 19:44:14 +0000 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * meson.build: Back to development === release 1.13.1 === 2018-02-15 16:31:16 +0000 Tim-Philipp Müller <tim@centricular.com> * NEWS: * configure.ac: * docs/plugins/gstreamer-plugins.args: * docs/plugins/gstreamer-plugins.hierarchy: * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: * gstreamer.doap: * meson.build: Release 1.13.1 2018-02-15 13:36:26 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstpipeline.c: tests: pipeline: try to make test_pipeline_reset_start_time more reliable Occasionally this test would fail, especially if the system is under load, because the position query would pick up the last position from the last buffer timestamp which has a lower timestamp than what we're looking for. The sleep is long enough, however. It's unclear to me why exactly this happens but there seems to be some kind of scheduling issue going on as the streaming thread floods the sink with buffers. Let's throttle the fakesrc to 100 buffers per second and make the sink sync to the clock to restore some sanity. It should be totally sufficient to test what we want to test, and seems to make things reliable here. 2018-02-15 12:03:20 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gsturi.c: tests: uri: fix build without -DGST_DISABLE_DEPRECATED Must undefine it before including gst headers, since the test tests deprecated API. 2018-02-15 12:09:31 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstconfig.h.in: gstconfig.h: want deprecation warnings if GST_DISABLE_DEPRECATED is *set* Fix inverted logic. If GST_DISABLE_DEPRECATED is undefined, we don't want warnings about deprecated API, and if it's defined we do want warnings. 2018-02-15 11:28:23 +0000 Tim-Philipp Müller <tim@centricular.com> * po/bg.po: * po/cs.po: * po/da.po: * po/de.po: * po/fr.po: * po/hr.po: * po/hu.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/ru.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: po: update translations 2018-02-14 19:37:35 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: docs: add flow combiner ref/unref to docs So new-in-1.12 index actually has some entries. 2018-02-14 19:13:28 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-docs.sgml: docs: add index for new symbols in 1.14 2018-02-14 19:12:06 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-docs.sgml: docs: add index for new symbols in 1.12 2018-02-08 17:22:14 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: make version numbers ints and fix int/string comparison WARNING: Trying to compare values of different types (str, int). The result of this is undefined and will become a hard error in a future Meson release. 2018-02-03 17:56:04 +0100 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * gst/printf/Makefile.am: autotools: use -fno-strict-aliasing where supported https://bugzilla.gnome.org/show_bug.cgi?id=769183 2018-02-03 17:55:29 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.h: buffer: fix gtk-doc warning regarding _get_n_meta() declaration 2018-02-02 00:24:20 +1100 Matthew Waters <matthew@centricular.com> * gst/gstpromise.c: * gst/gstpromise.h: gstpromise: add since 1.14 markers 2017-10-18 21:24:19 +1100 Matthew Waters <matthew@centricular.com> * scripts/gst-uninstalled: gst-uninstalled: add webrtc to libraries 2018-01-31 14:01:36 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstbuffer.h: gstbuffer.h: move FLAG_LAST documentation back to the bottom 2018-01-31 13:36:15 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstbasetransform.h: basetransform: annotate virtual methods 2018-01-30 16:41:39 +0100 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstbuffer.h: gstbuffer: add GST_BUFFER_FLAG_NON_DROPPABLE This can be used to identify buffers for which a higher percentage of redundancy should be allocated when performing forward error correction, or to prevent still video frames from being dropped by elements due to QoS. https://bugzilla.gnome.org/show_bug.cgi?id=793008 2018-01-30 20:30:47 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: use -fno-strict-aliasing if supported https://bugzilla.gnome.org/show_bug.cgi?id=769183 2017-12-23 16:45:18 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbuffer.h: * win32/common/libgstreamer.def: buffer: add gst_buffer_get_n_meta() convenience function Counts how many metas there are for a certain api type. https://bugzilla.gnome.org/show_bug.cgi?id=791918 2017-10-22 18:05:30 +0530 Arun Raghavan <arun@arunraghavan.net> * gst/gst.c: * gst/gstallocator.c: * gst/gstbin.c: * gst/gstbuffer.c: * gst/gstbus.c: * gst/gstcaps.c: * gst/gstcapsfeatures.c: * gst/gstdatetime.c: * gst/gstdevice.c: * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * gst/gstelement.c: * gst/gstevent.c: * gst/gstinfo.c: * gst/gstmessage.c: * gst/gstmeta.c: * gst/gstminiobject.c: * gst/gstpad.c: * gst/gstpadtemplate.c: * gst/gstparamspecs.c: * gst/gstparse.c: * gst/gstplugin.c: * gst/gstprotection.c: * gst/gstquery.c: * gst/gstsample.c: * gst/gststreamcollection.c: * gst/gststreams.c: * gst/gststructure.c: * gst/gsttaglist.c: * gst/gsttoc.c: * gst/gsturi.c: * gst/gstutils.c: * gst/gstvalue.c: gst: Fix up a bunch of GIR annotations This is mostly on nullable return values, and some other minor ones that I ran across. https://bugzilla.gnome.org/show_bug.cgi?id=789319 2017-05-27 05:19:20 +0530 Arun Raghavan <arun@arunraghavan.net> * gst/gstdevicemonitor.c: devicemonitor: Return NULL instead of FALSE Same effect, meaning is clearer. https://bugzilla.gnome.org/show_bug.cgi?id=789319 2018-01-26 12:42:28 +0100 François Laignel <fengalin@free.fr> * docs/gst/gstreamer-sections.txt: * gst/gstmessage.c: * gst/gstmessage.h: * tests/check/gst/gstmessage.c: * win32/common/libgstreamer.def: message: Add gst_message_writable_structure() Add gst_message_writable_structure() to be able to add extra fields to messages (and be on par with GstEvent). https://bugzilla.gnome.org/show_bug.cgi?id=792928 2018-01-23 22:49:52 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: delegate buffer skipping to the aggregate thread As we do that for serialized events as well, and the subclass will most likely need to access pad->segment to make its decisions, doing that from the sinkpad's streaming threads was racy. 2017-12-28 12:12:45 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: API: GstAggregatorPad.skip_buffer virtual method Allows subclasses to prevent buffers from being queued. https://bugzilla.gnome.org/show_bug.cgi?id=781928 2018-01-23 20:04:02 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstbasesrc.h: basesrc: Annotate some of the virtual methods 2018-01-23 08:56:34 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: * win32/common/libgstbase.def: aggregator: rename _get_buffer() -> _peek_buffer() and _steal -> _pop https://bugzilla.gnome.org/show_bug.cgi?id=791204 2018-01-20 15:30:53 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstchildproxy.c: childproxy: gracefully handle methods being NULL Do this for all method invoke functions for consistency. https://bugzilla.gnome.org/show_bug.cgi?id=750154 2018-01-18 18:11:59 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: fix .def file for new API Fixes check + distcheck 2017-08-01 10:43:32 +0200 Michele Dionisio <michele.dionisio@gmail.com> * libs/gst/net/gstptpclock.c: ptp: fix build failure with #undef USE_MEASUREMENT_FILTERING "Label ‘out’ used but not defined", since it's also used by the USE_MEDIAN_PRE_FILTERING branch. https://bugzilla.gnome.org/show_bug.cgi?id=785631 2018-01-18 19:16:12 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.h: padtemplate: And add missing GST_EXPORT to gst_pad_template_new_with_gtype() 2018-01-18 19:15:09 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.c: padtemplate: Add missing Since: 1.14 marker to gst_pad_template_new_with_gtype() 2018-01-18 19:08:10 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.c: * gst/gstpadtemplate.h: padtemplate: Add gst_pad_template_new_with_gtype() For being able to create a pad template with GType without having a static pad template. 2018-01-18 19:07:49 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpadtemplate.c: padtemplate: Add Since: 1.14 marker to gst_pad_template_new_from_static_pad_template_with_gtype() 2018-01-16 10:17:58 +0100 Edward Hervey <edward@centricular.com> * gst/gstpad.c: gstpad: Avoid stream-dead-lock on deactivation The following case can happen when two thread try to activate and deactivate a pad at the same time: T1: starts to deactivate, calls pre_activate(), sets in_activation to TRUE and carries on T2: starts to activate, calls pre_activate(), in_activation is TRUE so it waits on the GCond T1: calls post_activate(), tries to acquire the streaming lock .. but can't because T2 is currently holding it With this patch, the deadlock will no longer happen but does not solve the problem that: T2: will resume activation of the pad, set the pad mode to the target one (PUSH or PULL) and eventually the streaming lock gets released. T1: is able to finish calling post_activate() ... but ... the pad wasn't deactivated (T2 was the last one to "activate" the pad. https://bugzilla.gnome.org/show_bug.cgi?id=792341 2018-01-15 18:13:45 +0100 Edward Hervey <edward@centricular.com> * gst/gstpad.c: gstpad: Release pending g_cond_wait() when stopping/pausing task Otherwise we would deadlock waiting forever for the streaming lock to be released https://bugzilla.gnome.org/show_bug.cgi?id=792341 2018-01-13 11:08:00 +0800 Jun Xie <jun.xie@samsung.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: fix confusing debug log message In case of a short buffer, the debug log is quite confusing. Distinguish the two types of failure cases to make it clearer. https://bugzilla.gnome.org/show_bug.cgi?id=792486 2018-01-12 18:47:17 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstobject.c: docs: explicit refer to GObject docs for floating refs https://bugzilla.gnome.org/show_bug.cgi?id=788477 2018-01-11 19:52:41 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/fakesink.c: tests: fakesink: make notify stress test work better on Windows Set up all ten pipelines and preroll them first, and only set them to playing to run wild after they're all set up. If we set them to PLAYING directly and let those threads run wild, then it might take ages (many seconds) for the other pipelines to even get up and running, especially on machines with only one or two cores, and operating systems that suck at scheduling. Now the fakesink test takes 19 secs instead of 71 secs on a single-cpu windows machine. 2018-01-11 19:32:08 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/filesrc.c: tests: filesrc: more Windows fixes Fix typo in newly-added windows uri test. 2018-01-11 18:44:50 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.c: utils: use g_get_monotonic_time() as fallback in gst_utils_get_timestamp() This is a better fit given that the function docs say this should (only) be used for interval measurements, but also this seems to give much better granularity on Windows systems, where before this change there would often be 10-20 lines of debug log with the same timestamp up front. 2018-01-11 18:39:50 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstsystemclock.c: tests: systemclock: scale stress test threads according to number of cpus Scale the number of threads used in the stress tests according to the number of cores/cpus. We want some contention, but we also don't want too much contention, as some operating systems are better at handling 100 threads running wild on a single core than others. 2018-01-11 17:10:45 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstplugin.c: plugin: plugin_load() must return a ref even if it was loaded already Fix refcounting issue when plugin was loaded already. gst_plugin_load() is supposed to return a ref, so it must always return a ref. This also fixes the gstplugin unit test on windows where fork is not available and where test_load_coreelements() would unref a plugin ref it didn't get and then mess up the internal registry plugin list state for the next test, in case where the test registry does not exist yet. 2018-01-11 14:56:42 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/filesrc.c: tests: filesrc: fix for windows Location paths have backslashes on windows when converted from URI. 2018-01-11 12:27:18 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstcheck.c: libs: check: print stacktrace on unexpected criticals 2018-01-11 12:02:47 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/Makefile.am: * tests/check/gst/gstabi.c: * tests/check/gst/struct_x86_64w.h: tests: abi: fix abi test on 64-bit Windows Add header with structure sizes for 64-bit windows as well. They're almost the same as on Linux, but it looks like things like padding unions get aligned slightly differently so there are a handful of differences: sizeof(GstGhostPad) is 528, expected 536 sizeof(GstPad) is 512, expected 520 sizeof(GstPadProbeInfo) is 64, expected 72 sizeof(GstProxyPad) is 520, expected 528 2018-01-11 11:38:53 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstinfo.c: tests: info: fix post init cat reg test on windows and with CK_FORK=no The test checks that categories not covered by the pattern in the GST_DEBUG string have debug level GST_LEVEL_DEFAULT set, but previous tests mess with the default threshold, which made this test fail on Windows or when run with CK_FORK=no. Fix this by resetting everything at the beginning, and then also do a sanity check afterwards. 2018-01-11 11:36:53 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: info: reset default threshold to LEVEL_DEFAULT not 0 in set_threshold_from_string(). 2017-11-08 20:05:03 +0100 Håvard Graff <havard.graff@gmail.com> * libs/gst/check/libcheck/check.h.in: * libs/gst/check/libcheck/libcompat/libcompat.h: * libs/gst/check/libcheck/meson.build: * libs/gst/check/meson.build: * libs/gst/meson.build: * pkgconfig/meson.build: * tests/meson.build: meson: make check and tests build on Windows with msvc 2018-01-02 10:02:45 +0100 Edward Hervey <edward@centricular.com> * libs/gst/check/gstharness.c: gstharness: Remove double free 2017-12-26 18:08:31 +0100 Sebastian Dröge <sebastian@centricular.com> * gst/gststreams.h: streams: GstStreamType/GstStream are available since 1.10 Annotate them as such. 2017-12-26 13:46:20 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: skip translations if gettext is not available 2017-12-26 12:51:22 +0100 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: remove DEBUG_FUNCPTR The new gst_element_do_foreach_pad() does not print the functions anymore. 2017-12-26 12:17:53 +0100 Stefan Sauer <ensonic@users.sf.net> * tools/gst-inspect.c: inspect: add comment for how to improve tracer support 2017-12-26 11:29:39 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstsegment.c: segment: add a FIXME-2.0 for the format parameters Capture the somewhat not ordinary use of the extra format parameter in a comment. See https://bugzilla.gnome.org/show_bug.cgi?id=788979 2017-12-24 16:21:38 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gst.c: * tests/check/Makefile.am: * tests/check/gst/.gitignore: * tests/check/gst/gstdeinit.c: * tests/check/meson.build: Skip gst_deinit() if gstreamer was not initialized properly Can happen if an error occurs during option parsing, for example. https://bugzilla.gnome.org/show_bug.cgi?id=781914 2017-12-23 23:43:33 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * tests/check/elements/multiqueue.c: tests: multiqueue: Replace large test macro with function Just a bit of cleanup. https://bugzilla.gnome.org/show_bug.cgi?id=756867 2017-12-15 09:43:40 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * tests/check/elements/multiqueue.c: tests: multiqueue: Check we get CREATE+ENTER stream-statuses when adding pads https://bugzilla.gnome.org/show_bug.cgi?id=756867 2017-12-15 09:14:57 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * plugins/elements/gstmultiqueue.c: multiqueue: Don't start new pads until parented Start task on new source pads added at runtime after they have been added to the element, not during activation. This ensures the pads can post their CREATE stream-status messages and the application can set thread priorities. https://bugzilla.gnome.org/show_bug.cgi?id=756867 2017-12-15 09:14:07 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * plugins/elements/gstmultiqueue.c: multiqueue: Split task handling from gst_single_queue_flush https://bugzilla.gnome.org/show_bug.cgi?id=756867 2017-12-23 23:25:58 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * libs/gst/base/gstaggregator.c: aggregator: Avoid a maybe-uninitialized warning Arch Linux x86_64, gcc 7.2.1-2, -Og -g3 2017-12-21 13:47:52 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstdownloadbuffer.c: downloadbuffer: Don't hold the mutex while posint the download-complete message Something might handle it from a sync message handler and call back into downloadbuffer, causing a deadlock. 2017-12-20 18:56:23 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: set_default() clock parameter can be NULL 2017-12-20 18:11:48 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: element: Annotate set_clock() clock parameter with allow-none 2017-12-20 18:09:28 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: element: Annotate set_bus() bus parameter as allow-none It's possible to replace the bus with NULL/None 2017-12-10 22:50:05 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/gst-uninstalled: gst-uninstalled: update for gl lib move from bad to base 2017-12-11 20:58:16 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasetransform.c: basetransform: Allow going passthrough inside decide_allocation Sub-class may want to decide to go passthrough/in-place by inspecting the support meta APIs. This patch duplicates the check for this mode, so we still don't do uneeded allocation query while we allow sub-classes to switch the behaviour during it's own decide_allocation call. Notice that such sub-class need to reset the class to non-passthrough in set_caps() in order for decide_allocation to be called again. This is needed otherwise we'd be doing an allocation query in element in which it make no sense (notably capsfilter). https://bugzilla.gnome.org/show_bug.cgi?id=791453 2017-12-17 14:18:38 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstplugin.c: plugin: Annotate add_dependency() arguments as NULL-terminated arrays 2017-12-14 00:03:04 +0530 Umang Jain <mailumangjain@gmail.com> * gst/gstbus.c: docs: GstBus: Provide more information for ref/unref during bus watch. https://bugzilla.gnome.org/show_bug.cgi?id=791588 2017-12-14 16:05:00 +1100 Matthew Waters <matthew@centricular.com> * win32/common/libgstreamer.def: update win32 defs for tracer API addition 2017-12-14 14:48:47 +1100 Matthew Waters <matthew@centricular.com> * common: Automatic update of common submodule From e8c7a71 to 3fa2c9e 2017-12-05 21:36:34 +1100 Matthew Waters <matthew@centricular.com> * docs/gst/gstreamer-sections.txt: * docs/plugins/Makefile.am: * docs/plugins/gstreamer-plugins-docs.sgml: * docs/plugins/gstreamer-plugins-sections.txt: * docs/plugins/inspect/plugin-coretracers.xml: * gst/gsttracerfactory.c: * gst/gsttracerfactory.h: * plugins/tracers/gstlatency.c: * plugins/tracers/gstleaks.c: * plugins/tracers/gstlog.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: docs: include tracers in the documentation Requires exposing the tracer GType from the GstTracerFactory in order to link the plugin with the tracer in the documentation. https://bugzilla.gnome.org/show_bug.cgi?id=791253 2017-12-05 20:56:09 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/check/gstharness.c: check/harness: fix transfer annotations on buffer passing functions 2017-08-30 13:03:28 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasesrc.h: * tests/check/libs/basesrc.c: * win32/common/libgstbase.def: basesrc: add buffer list support Add a gst_base_src_submit_buffer_list() function that allows subclasses to produce a bufferlist containing multiple buffers in the ::create() function. The buffers in the buffer list will then also be pushed out in one go as a GstBufferList. This can reduce push overhead significantly for sources with packetised inputs (such as udpsrc) in high-throughput scenarios. The _submit_buffer_list() approach was chosen because it is fairly straight-forward, backwards-compatible, bindings-friendly (as opposed to e.g. making the create function return a mini object instead), and it allows the subclass maximum control: the subclass can decide dynamically at runtime whether to return a list or a single buffer (which would be messier if we added a create_list virtual method). https://bugzilla.gnome.org/show_bug.cgi?id=750241 2017-08-31 01:18:28 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasesrc.c: basesrc: minor code readability improvement 2017-12-07 12:05:23 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstbus.c: * gst/gstevent.c: * gst/gsttracer.c: * gst/gsttracerutils.h: * gst/gstvalue.h: docs: Fix a few gtk-doc warnings Broken links mostly. 2017-12-06 20:58:42 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/aggregator.c: tests: aggregator: fix caps leak in unit test 2017-12-06 17:07:29 +0100 Edward Hervey <edward@centricular.com> * gst/gstpad.c: gstpad: Handle GST_PAD_PROBE_HANDLED on sticky event push When actually pushing an event, if we get GST_FLOW_CUSTOM_SUCCESS_1 (which is the conversion of GST_PAD_PROBE_HANDLED return value), don't consider the stick event push as ignored, but as handled 2017-12-06 13:40:46 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstevent.c: * gst/gstmessage.c: * gst/gstquery.c: event/query/message: Annotate get_structure() return value as nullable 2017-12-06 13:36:30 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstquery.c: query: Add an empty structure in writable_structure() if there is none yet This is consistent with how it works for GstEvent already. 2017-12-05 18:21:00 +0100 Edward Hervey <edward@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: * gst/gstpromise.c: * gst/gststreamcollection.h: * gst/gststreams.h: docs: Misc addition/fixes And also add the "Since" API sections for 1.12 and 1.14 2017-12-05 18:20:34 +0100 Edward Hervey <edward@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: docs: Add documentation for GST_SEQNUM_INVALID And link to it 2017-12-05 17:28:55 +0100 Edward Hervey <edward@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: utils: Never return a group_id of 0, add GST_GROUP_ID_INVALID Various plugins use special values (0 or G_MAXUINT32) as an invalid/unset group_id, but nothing guarantees a groupid won't have that value. Instead define a value which group_id will never have and make gst_group_id_next() always return a value different from that. API: GST_GROUP_ID_INVALID 2017-12-05 16:42:57 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstharness.c: harness: make bindings use the GBytes variant for _take_all_data() 2016-11-23 13:12:36 +0100 Havard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: harness: use new take_all_data() function in _dump_to_file(). 2017-12-05 15:28:43 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/check/Makefile.am: * libs/gst/check/gstharness.c: * libs/gst/check/gstharness.h: * tests/check/libs/gstharness.c: harness: add gst_harness_take_all_data() + _take_all_data_as_{bytes,buffer}() Convenience function to just grab all pending data from the harness, e.g. if we just want to check if it matches what we expect and we don't care about the chunking or buffer metadata. Based on patch by: Havard Graff <havard.graff@gmail.com> 2017-12-05 15:16:36 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: buffer: document that _extract_dup() will return NULL for 0-sized buf And make it explicit, and don't call _extract() on NULL data buffer. 2017-12-05 12:27:18 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/check/meson.build: meson: Use array syntax instead of .get() in tests 2017-11-24 02:39:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/parse/meson.build: meson: Use new find_program fallback syntax We use this syntax in libs/gst/helpers/meson.build already. 2017-12-04 18:08:39 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: gst: gst_element_remove_pad() is transfer none for the pad While the refcount of the pad is decreased, it's the refcount that is owned by the parent (i.e. the element) and not the one passed in by the caller. Fixes a memory leak in bindings. 2017-12-04 11:24:47 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add finish_buffer() vfunc So subclasses can override the finish behaviour and/or decorate or modify buffers before they get pushed out. https://bugzilla.gnome.org/show_bug.cgi?id=760981 2017-12-04 12:29:05 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: disable tag merging and forwarding for now Subclasses should handle this for now. 2017-11-06 20:23:12 +0100 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * gst/gstdevicemonitor.c: devicemonitor: Avoid maybe-uninitialized compiler warning On Arch Linux x86_64, gcc 7.2.0-3, -Og -g3: gstdevicemonitor.c: In function ‘bus_sync_message’: gstdevicemonitor.c:276:8: error: ‘matches’ may be used uninitialized in this function [-Werror=maybe-uninitialized] This commit also simplifies the code a bit. https://bugzilla.gnome.org/show_bug.cgi?id=789983 2017-12-03 14:48:22 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdebugutils.c: * gst/gstplugin.c: * gst/gstregistry.c: gst: Annotate various strings as type filename if they represent a path/filename 2017-12-02 15:44:48 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-sections.txt: * docs/libs/gstreamer-libs.types: * libs/gst/base/gstaggregator.c: aggregator: hook up to docs 2017-12-02 15:24:22 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/Makefile.am: * libs/gst/base/base.h: * libs/gst/base/gstaggregator.h: * libs/gst/base/meson.build: * tests/check/Makefile.am: * tests/check/libs/.gitignore: * tests/check/meson.build: * win32/common/libgstbase.def: aggregator: hook up to build system https://bugzilla.gnome.org/show_bug.cgi?id=739010 2017-12-02 15:12:25 +0000 Tim-Philipp Müller <tim@centricular.com> Move GstAggregator from -bad to core Merge branch 'aggregator-move' https://bugzilla.gnome.org/show_bug.cgi?id=739010 2017-11-06 21:07:51 +0100 Mathieu Duponchelle <mathieu@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Remove klass->sinkpads_type This posed problems for the python bindings (and possibly others). Instead, subclasses now use add_pad_template_with_gtype. https://bugzilla.gnome.org/show_bug.cgi?id=789986 2017-11-02 18:32:55 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add doc blurb for gst_aggregator_pad_is_eos() 2017-11-02 16:05:12 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: also remove now-unused PadForeachFunc declaration https://bugzilla.gnome.org/show_bug.cgi?id=785679 2017-08-02 12:08:26 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Remove pad iterator function Use new gst_element_foreach_sink_pad() from core instead. https://bugzilla.gnome.org/show_bug.cgi?id=785679 2017-11-02 12:46:26 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: use new gst_element_foreach_sink_pad() Instead of gst_aggregator_iterate_sinkpads() which will soon be removed. https://bugzilla.gnome.org/show_bug.cgi?id=785679 2017-11-01 15:18:08 +0100 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: add more comments 2017-10-23 11:52:38 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/libs/aggregator.c: tests: comment and logging cleanups for audiomixer and aggregator Remove some references to 'collectpads'. Logs pads through the object variants. Add some more comments. Remove a left over comment. 2017-10-22 19:43:17 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: fix type for latency property (int64 -> GStClockTime) The value is used as GstClockTiem in the code. Adapt the hack^H^H^H^Hcode in live-adder. 2017-07-13 19:03:19 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Don't take flush lock from output thread Instead just take it in the chain function. https://bugzilla.gnome.org/show_bug.cgi?id=784911 2017-07-13 18:38:34 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Don't block if adding to the tail of the queue If we're adding to the tail of the queue, it's because we're converting a gap event, so don't block there it means we're calling from the output thread. https://bugzilla.gnome.org/show_bug.cgi?id=784911 2017-10-17 08:03:02 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: review code related to time level Add a comment for when the state matters. Use a local var for priv in update_time_level() to improve readability. Move the our_latency local var below the query results checks. 2017-10-17 07:51:51 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: init latency values with 0 instead of FALSE 2017-10-15 20:46:09 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: code cleanup for event and query func Only look up klass for non serialized events/queries. For events remove superfluous assignment for the return value in the flushing case. 2017-10-15 17:46:45 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: simplify pad_event_func for FLUSH_STOP events We want to skip serialization for FLUSH_STOP events (apparently). We can simplify the code to add it to the top-level conditions. There was nothing done in the first code path if the event was FLUSH_STOP. 2017-10-15 16:57:13 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: drop special casing for eos Just queue it like any other serialized event. This way we don't need to check if there still are buffers in the queue. Validated with the tests and gst-launch-1.0 pipelines. 2017-10-15 16:51:21 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: add a doc-blob for the event_func 2017-10-15 16:48:21 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: rename a local variable The variable tracks wheter the queue is not empty, but num_buffers==0. That means we have events or queries to process. Rename accordingly. 2017-10-15 12:17:42 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: remove commented code The SEGMENT_DONE event does not require any special treatment. This is commented out in 6efc106a67. 2017-10-15 12:14:28 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: move the comment for the locks to the lock macros Looks like some code was inserted afterwards. 2017-10-15 10:44:44 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: improve section docs Mention how data ends up in the queues. Document the relation of the pad functions and the class vmethods to get events and queries. 2017-10-14 18:18:44 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/libs/aggregator.c: aggregator: add two more tests for a sequence of data This verifies that we handle events and queries at the head of the queue and then buffers. 2017-10-14 13:26:02 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/libs/aggregator.c: aggregator: refactor the test helper Make the test helpers use a queue. This lets us also test sequences of events, queries and data. 2017-10-14 12:08:19 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/libs/aggregator.c: aggregator: test cleanup Remove gst_init() from a few tests. Use _OBJECT variants in logging. Remove arbitrary extra blank lines. Make push_event() more like push_buffer() - set the event to NULL and add cleanup to _chain_data_clear(). 2017-10-03 12:36:10 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: cleanup event forwarding Don't copy the whole event struct. Set the input params when we call the forwarding helper. Initialize the internal fields and return values in the helper. 2017-10-03 12:08:42 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: simplify src_event Avoid extra ref/unref, we have a ref and do_seek unrefs. Just return the result as we have. This lets us remove the local var plus the label. 2017-09-17 12:37:03 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: register func for do_events_and_queries This fixes logging the func ptr from _iterate_sinkpads(). 2017-09-17 12:30:37 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: only set clipped_buffer to NULL if needed 2017-09-17 12:25:37 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: rename check_events This function also handles queries. Update the code to loop until all events and queuries are handled. 2017-09-17 12:24:54 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: add a few more comments to PadPrivate struct 2017-09-17 11:39:12 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: rename buffers field to data The queue stores buffers, events and queries. 2017-09-17 10:18:56 -0700 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: documentaion fixes Fix typos and remove params docs, where the param was moved. 2017-09-05 14:26:52 +0200 Edward Hervey <edward@centricular.com> * tests/check/libs/aggregator.c: check: Fix usage of dual probes Using two (or more) probes on the same pad where one of the probe returns HANDLED or DROP is tricky since the other probes might not be called. Instead use regular probes and a proper pad (the sinkpad already existed, it only required to be activated and have a dummy chain function for the events/buffers to be received/handled properly) 2017-07-30 12:17:57 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: log all events We already log a few events explicitly, just log them all with more detail. 2017-07-29 16:54:38 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: fix header formatting 2017-07-24 18:38:57 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Remove the GAP event from the queue before queueing up the GAP buffer Otherwise check_events() will not remove the GAP event (as the queue tail is not the event anymore but the GAP buffer), then the GAP buffer is handled, then the GAP event is handled again, ... forever. 2017-07-18 00:30:51 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: mark symbols explicitly for export with GST_EXPORT 2017-07-13 22:00:58 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: remove duplicated code fragment This code already runs above when (event || query). 2017-07-13 21:55:55 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: code cleanups Fix comment typos, some copy'n'paste in logging. Add more doc comments. 2017-04-13 22:11:55 +0200 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * libs/gst/base/gstaggregator.c: aggregator: Invalidate pad's tail position ... when dequeuing a segment event. https://bugzilla.gnome.org/show_bug.cgi?id=784593 2017-07-01 20:23:25 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: fix "'aggclass' may be used uninitialized in this function" 2017-05-23 00:53:57 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Process serialized queries through the queue This ensures that they really get processed in order with buffers. Just waiting for the queue to be empty is sometimes not enough as the buffers are dropped from the pad before the result is pushed to the next element, sometimes resulting in surprising re-ordering. 2017-05-23 00:53:23 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Set flow to FLUSHING on pad stop Fixes a rare race where the pad is being stopped while doing a query. 2016-11-18 14:44:16 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Request pad templates which are not request pad https://bugzilla.gnome.org/show_bug.cgi?id=782920 2016-11-18 14:41:54 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Don't restrict sink pad names Sink pads could have other names than sink_%u https://bugzilla.gnome.org/show_bug.cgi?id=782920 2017-05-21 15:19:17 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Implement propose allocation https://bugzilla.gnome.org/show_bug.cgi?id=782918 2017-05-21 14:34:13 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Check for the result of caps events https://bugzilla.gnome.org/show_bug.cgi?id=782918 2017-05-21 14:28:00 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Caps event always goes to the aggregate thread So no need to check it here. https://bugzilla.gnome.org/show_bug.cgi?id=782918 2017-05-20 16:58:54 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add downstream allocation query https://bugzilla.gnome.org/show_bug.cgi?id=746529 2017-05-20 15:56:16 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.h: aggregator: Remove unused GST_FLOW_NOT_HANDLED 2017-05-20 14:24:57 +0200 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add simple support for caps handling Modelled off the videoaggregator caps handling as that seems the most mature aggregtor-using implementation that has caps handling there is. https://bugzilla.gnome.org/show_bug.cgi?id=776931 2017-05-20 13:10:53 +0200 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Reset upstream latency on first buffer In the case an aggregator is created and pads are requested but only linked later, we end up never updating the upstream latency. This was because latency queries on pads that are not linked succeed, so we never did a new query once a live source has been linked, so the thread was never started. https://bugzilla.gnome.org/show_bug.cgi?id=757548 2016-05-14 15:52:37 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Always handle sync'ed events on output thread Having all synchronized events always be handled on the output thread should make synchronization easier. https://bugzilla.gnome.org/show_bug.cgi?id=781673 2016-07-06 16:39:17 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Delay clipping to output thread This is required because the synchronized events like caps or segments may only be processed on the output thread. https://bugzilla.gnome.org/show_bug.cgi?id=781673 2016-07-07 16:13:57 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Make pad eos as soon as all buffers are processed, dont way for events https://bugzilla.gnome.org/show_bug.cgi?id=781673 2016-07-07 11:47:40 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Only count buffers when declaring queue full https://bugzilla.gnome.org/show_bug.cgi?id=781673 2016-07-06 16:41:44 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Simplify clip function The return value was ignored anyway https://bugzilla.gnome.org/show_bug.cgi?id=781673 2016-05-15 16:04:58 +0300 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Only declare first buffer on actual buffer The function needs to be unlocked if any data is received, but only end the first buffer processing on an actual buffer, synchronized events don't matter on the first buffer processing. https://bugzilla.gnome.org/show_bug.cgi?id=781673 2017-05-09 20:20:07 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Set initial position on first buffer Set the initial position on the first buffer, otherwise the queue will grow without limits before the output thread is started. https://bugzilla.gnome.org/show_bug.cgi?id=781673 2017-05-09 20:06:29 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Reset the pad's first buffer flag with the rest There is not reason to have separate code to reset this one. https://bugzilla.gnome.org/show_bug.cgi?id=781673 2017-05-09 20:05:55 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Reset pad on init Factor out the pad reset code from the flushing and use it on init as well https://bugzilla.gnome.org/show_bug.cgi?id=781673 2017-05-09 20:13:58 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Fix indentation https://bugzilla.gnome.org/show_bug.cgi?id=781673 2017-03-08 15:01:13 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/base/gstaggregator.c: docs: Port all docstring to gtk-doc markdown 2017-04-12 12:06:52 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/base/gstaggregator.h: aggregator: Make instance var name match between .c and .h Making GI happy 2017-04-07 10:19:43 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * libs/gst/base/gstaggregator.c: gstaggregator: fix event use after free https://bugzilla.gnome.org/show_bug.cgi?id=781017 2016-09-06 16:05:53 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: Use the event_full function for GstAggregatorPads Allowing us to tell GstPad why we are failing an event, which might be because we are 'flushing' even if the sinkpad is not in flush state at that point. 2016-05-25 13:38:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstaggregator.c: Revert "aggregator: Start the task when linked" This reverts commit 302580c3815136d29479c3a8cae611d6e2ff3709. 2016-04-13 16:30:28 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Start the task when linked Until now we would start the task when the pad is activated. Part of the activiation concist of testing if the pipeline is live or not. Unfortunatly, this is often too soon, as it's likely that the pad get activated before it is fully linked in dynamic pipeline. Instead, start the task when the first serialized event arrive. This is a safe moment as we know that the upstream chain is complete and just like the pad activation, the pads are locked, hence cannot change. https://bugzilla.gnome.org/show_bug.cgi?id=757548 2016-04-22 10:15:39 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Check all pads for data when live When live, we still need to inspect all pads queue in order to determin if we have received the first buffer or not. https://bugzilla.gnome.org/show_bug.cgi?id=765431 2016-04-15 16:51:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Fix locking when using the clock This fixes a race where we check if there is a clock, then it get removed and we endup calling gst_clock_new_single_shot_id() with a NULL pointer instead of a valid clock and also calling gst_object_unref() with a NULL pointer later. https://bugzilla.gnome.org/show_bug.cgi?id=757548 2016-04-03 17:56:06 +0200 Aurélien Zanelli <aurelien.zanelli@darkosphere.fr> * libs/gst/base/gstaggregator.c: aggregator: remove duplicated test of flow_return in pad_chain_internal https://bugzilla.gnome.org/show_bug.cgi?id=764549 2016-03-28 13:52:07 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/libs/aggregator.c: aggregator: Fix leak in unit test GST_PAD_PROBE_HANDLED means that we should've unreffed the probe data, it was handled by us in one way or another. 2016-03-27 19:06:50 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fix strcmp test for sink template 2016-03-27 18:41:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't try to be too smart while allocating pad names Previously, while allocating the pad number for a new pad, aggregator was maintaining an interesting relationship between the pad count and the pad number. If you requested a sink pad called "sink_6", padcount (which is badly named and actually means number-of-pads-minus-one) would be set to 6. Which means that if you then requested a sink pad called "sink_0", it would be assigned the name "sink_6" again, which fails the non-uniqueness test inside gstelement.c. This can be fixed by instead setting padcount to be 7 in that case, but this breaks manual management of pad names by the application since it then becomes impossible to request a pad called "sink_2". Instead, we fix this by always directly using the requested name as the sink pad name. Uniqueness of the pad name is tested separately inside gstreamer core. If no name is requested, we use the next available pad number. Note that this is important since the sinkpad numbering in aggregator is not meaningless. Videoaggregator uses it to decide the Z-order of video frames. 2016-03-04 15:50:26 +0900 Vineeth TM <vineeth.tm@samsung.com> * tests/check/libs/aggregator.c: bad: use new gst_element_class_add_static_pad_template() https://bugzilla.gnome.org/show_bug.cgi?id=763081 2015-11-09 16:08:30 +0900 Hyunjun Ko <zzoon.ko@samsung.com> * tests/check/libs/aggregator.c: tests:aggregator: fix tc failure and correct check value Failure by this commit 2dfa548f3645844082c3db65d96d87255701b3ad, which is to append hooks instead of prepend. Because of this change, aggretated_cb is not called and leads to failure. And correct to check flush stop value instead of flush start value https://bugzilla.gnome.org/show_bug.cgi?id=757801 2015-11-05 12:36:48 +0000 Luis de Bethencourt <luisbg@osg.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: use GST_STIME_FORMAT for GstClockTimeDiff No need to manually handle negative value of deadline, GST_STIME_FORMAT does exactly this. 2015-11-03 19:09:33 -0800 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstaggregator.c: aggregator: don't compare templ instance pointers One can pass the PadTemplate from the element_class or the one from the factory. While they have the same content, the addresses are different. 2015-11-03 14:41:57 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Set to running in a single place Only set to running when the thread is actually started. 2015-11-03 14:37:26 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Document more locking 2015-11-02 20:10:35 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Hold object lock while manipulating the segment Make sure the object lock is held when aggregator->segment is modified. 2015-11-02 19:05:01 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Remove dead code This code will never be called as max>=min in all cases. If the upstream latency query returned min>max, the function already returned and all values that are added to those have max>= min. 2015-10-23 15:42:24 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add create_new_pad() vfunc to allow subclasses to override the default behaviour Not all aggregator subclasses will have a single pad template called sink_%u and might do something special depending on what the application requests. https://bugzilla.gnome.org/show_bug.cgi?id=757018 2015-09-30 19:05:35 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Convert GST_ERROR_OBJECT() for seek events to GST_DEBUG_OBJECT() 2015-09-30 19:03:05 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: For the start time selection, only set the segment position segment.time and segment.start can stay the same, and were always the same before anyway because of a mistake. https://bugzilla.gnome.org/show_bug.cgi?id=755623 2015-08-31 16:12:40 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't forward QOS events to sinkpads that had no buffer yet Otherwise they will receive a QOS event that has earliest_time=0 (because we can't have negative timestamps), and consider their buffer as too late https://bugzilla.gnome.org/show_bug.cgi?id=754356 2015-09-17 19:42:34 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Keep at least two buffers in the queue in live mode When in live mode, the queue needs to hold the currently processed buffer and one more at least. https://bugzilla.gnome.org/show_bug.cgi?id=754851 2015-09-11 12:21:50 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: Document that get_next_time() should return running time https://bugzilla.gnome.org/show_bug.cgi?id=753196 2015-08-28 23:05:20 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Also ignore start-time on seek from gst_element_send_event() https://bugzilla.gnome.org/show_bug.cgi?id=753806 2015-07-02 19:34:43 -0400 Olivier Crête <olivier.crete@collabora.com> * tests/check/libs/aggregator.c: tests: Add test for seeking live pipelines https://bugzilla.gnome.org/show_bug.cgi?id=745768 2015-07-02 19:19:33 -0400 Olivier Crête <olivier.crete@collabora.com> * tests/check/libs/aggregator.c: tests: Make source live to re-enable aggregator timeout tests The live mode is only enabled if one of the sources if live. https://bugzilla.gnome.org/show_bug.cgi?id=745768 2015-03-06 19:50:08 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Queue "latency" buffers at each sink pad. In the case where you have a source giving the GstAggregator smaller buffers than it uses, when it reaches a timeout, it will consume the first buffer, then try to read another buffer for the pad. If the previous element is not fast enough, it may get the next buffer even though it may be queued just before. To prevent that race, the easiest solution is to move the queue inside the GstAggregatorPad itself. It also means that there is no need for strange code cause by increasing the min latency without increasing the max latency proportionally. This also means queuing the synchronized events and possibly acting on them on the src task. https://bugzilla.gnome.org/show_bug.cgi?id=745768 2015-07-29 20:07:09 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Default to "zero" start time selection mode as documented 2015-07-29 20:06:11 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Ignore the "first" mode if the segment not a time segment 2015-06-15 18:30:20 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Add property to select how to decide on a start time Before aggregator based elements always started at running time 0, now it's possible to select the first input buffer running time or explicitly set a start-time value. https://bugzilla.gnome.org/show_bug.cgi?id=749966 2015-07-28 21:15:43 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Query the peer latency again on the next opportunity after a pad was added or removed Adding a pad will add a new upstream that might have a bigger minimum latency, so we might have to wait longer. Or it might be the first live upstream, in which case we will have to start deadline based aggregation. Removing a pad will remove a new upstream that might have had the biggest latency, so we can now stop waiting a bit earlier. Or it might be the last live upstream, in which case we can stop deadline based aggregation. 2015-05-06 13:07:52 -0300 Thiago Santos <thiagoss@osg.samsung.com> * libs/gst/base/gstaggregator.h: aggregator: add a convenience macro to get the source pad Easier than casting or acessing the parent everywhere 2015-06-01 18:50:14 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Document that the latency is in ns 2015-05-28 00:59:39 +1000 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Push EOS on error return. Before shutting down the srcpad task due to a downstream error, push an EOS to give downstream a chance to shut down somewhat cleanly. 2015-03-29 17:53:23 -0300 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: document gap handling behavior https://bugzilla.gnome.org/show_bug.cgi?id=746249 2015-03-27 19:36:42 -0300 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: drop stale white space at warning 2015-03-27 19:28:05 -0300 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * tests/check/libs/aggregator.c: aggregator: fix typo in test suite 2015-03-27 18:32:27 -0300 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * tests/check/libs/aggregator.c: aggregator: add gap event handling unit test https://bugzilla.gnome.org/show_bug.cgi?id=746249 2015-03-17 22:13:06 -0300 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: implement gap handling https://bugzilla.gnome.org/show_bug.cgi?id=746249 2015-04-01 22:10:11 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Unify downstream flow return and flushing Also means that having a non-OK downstream flow return wakes up the chain functions. https://bugzilla.gnome.org/show_bug.cgi?id=747220 2015-04-01 21:45:01 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Flushing is always in pad lock, no need to atomics The usage of atomics was always doubtful as it was used to release a GCond https://bugzilla.gnome.org/show_bug.cgi?id=747220 2015-04-01 21:38:11 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Reset pending_eos on pad flush https://bugzilla.gnome.org/show_bug.cgi?id=747220 2015-04-01 21:37:25 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Unify code to set a pad flushing https://bugzilla.gnome.org/show_bug.cgi?id=747220 2015-03-06 21:12:52 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Query latency on first incoming buffer. And keep on querying upstream until we get a reply. Also, the _get_latency_unlocked() method required being calld with a private lock, so removed the _unlocked() variant from the API. And it now returns GST_CLOCK_TIME_NONE when the element is not live as we think that 0 upstream latency is possible. https://bugzilla.gnome.org/show_bug.cgi?id=745768 2015-03-06 21:12:13 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Be more aggressive with invalid replies to our latency query https://bugzilla.gnome.org/show_bug.cgi?id=745768 2015-03-08 02:04:11 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.h: aggregatory: don't redefine GST_FLOW_CUSTOM_SUCCESS 2015-02-27 00:26:00 +0530 Arun Raghavan <git@arunraghavan.net> * libs/gst/base/gstaggregator.c: aggregator: Use standard upstream latency querying logic The same functionality is duplicated in the default latency querying now. 2015-02-19 21:21:56 -0500 Olivier Crete <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Use src_lock to protect latency related members One has to use the src_lock anyway to protect the min/max/live so they can be notified atomically to the src thread to wake it up on changes, such as property changes. So no point in having a second lock. Also, the object lock was being held across a call to GST_ELEMENT_WARNING, guaranteeing a deadlock. 2015-02-19 18:53:32 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Remove untrue comment 2015-02-19 18:30:35 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Don't try to push tags while flush seeking The downstream segment could have been flushed already, so need to re-send the segment event before re-sending the tags. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-02-19 11:04:28 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Use the sinkpads iterator directly to query upstream latencies While gst_aggregator_iterate_sinkpads() makes sure that every pad is only visited once, even when the iterator has to resync, this is not all we have to do for querying the latency. When the iterator resyncs we actually have to query all pads for the latency again and forget our previous results. It might have happened that a pad was removed, which influenced the result of the latency query. 2015-02-19 10:57:09 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Move gst_aggregator_get_latency_unlocked() a bit It was between another function and its helper function before, which was confusing when reading the code as it had nothing to do with the other functions. 2015-02-19 01:28:06 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fail the latency query if one of the upstream queries fails 2015-02-18 15:53:53 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Document locking order https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-02-18 15:11:14 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Rename confusinly named SRC_STREAM_LOCK macros to SRC_LOCK This will match the name of the lock itself. It is also not a stream lock as it not recursive and not held while pushing. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-02-18 15:06:01 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Rename confusingly named stream lock to flush lock This lock is not what is commonly known as a "stream lock" in GStremer, it's not recursive and it's taken from the non-serialized FLUSH_START event. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-02-18 15:04:04 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Fix macro indendation Changes no code https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-02-13 23:45:20 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: drop GAP events until we handle them properly 2015-02-13 15:53:19 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * tests/check/libs/aggregator.c: aggregator: use new gst_aggregator_pad_drop_buffer() 2015-02-13 15:49:50 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add gst_aggregator_pad_drop_buffer() steal_buffer() + unref seems to be a wide-spread idiom (which perhaps indicates that something is not quite right with the way aggregator pad works currently). 2015-02-12 13:32:39 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: only post latency message if anything changed Perhaps we should check for element state as well and only post it if in PLAYING state. 2015-02-11 14:16:21 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: Improve and fix LATENCY query handling This now follows the design docs everywhere, especially the maximum latency handling. https://bugzilla.gnome.org/show_bug.cgi?id=744106 2015-02-10 10:49:16 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Pause srcpad task on flow errors Otherwise we will call the task function over and over again until upstream finally handled the flow return and shuts us down. 2015-02-06 10:59:27 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Streamline latency calculations Min latency can never be invalid, latency property can never be invalid either. So no need to check for all these things in various places. 2015-02-06 10:36:28 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: If upstream has no max latency but the subclass has, take the subclass max latency 2015-02-06 10:33:59 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fix min>max latency error check We have to include the upstream latency, our own latency and the subclass latency in the calculations. FIXME: This is still not entirely correct 2015-02-06 10:30:59 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't add the latency property to the max latency It has no meaning for the max latency and is only used to increase the min latency. 2015-01-26 17:06:29 +0100 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Cleanup locking around AggregatorPad flush related fields And document the locking https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-26 13:11:05 +0100 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * libs/gst/base/gstaggregator.c: aggregator: keep chain functions as dumb as possible. + A pad chain function has no business checking other pads, that's what the aggregate thread is for. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-26 11:32:47 +0100 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: More fixes around locking when accessing protected private fields In some more places we were accessing GstAggregator->segment and GstAggregator->seqnum without holding the GST_OBJECT_LOCK https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-26 11:29:08 +0100 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Make the PAD_LOCK private Instead of using the GST_OBJECT_LOCK we should have a dedicated mutex for the pad as it is also associated with the mutex on the EVENT_MUTEX on which we wait in the _chain function of the pad. The GstAggregatorPad.segment is still protected with the GST_OBJECT_LOCK. Remove the gst_aggregator_pad_peak_unlocked method as it does not make sense anymore with a private lock. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-26 11:25:54 +0100 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: aggregator: Hide GstAggregatorPad buffer and EOS fileds And add a getter for the EOS. The user should always use the various getters to access those fields https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 18:41:43 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Document locking of GstAggregatorPrivate members Most of them are protected by the object lock, specify which ones use a different lock. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 18:47:09 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.h: aggregator: Document how the segment is protected Document that it can only be accessed with the object lock. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 19:44:57 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Protect all latency related members with the object lock The locking was not consistent, now consistently use the object lock. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 19:43:12 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Document locking for gst_aggregator_get_latency_unlocked() Renamed it to _unlocked() to make it clear. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 19:35:25 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Protect the srcpad caps negotiation with the stream lock Instead of adding another lock, use the srcpad stream lock, which is already taken anyway to push out the new caps if needed. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 19:33:18 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Protect the tags with the object lock The tags related variables were sometimes protected, sometimes not and sometimes atomic. Put them all under the object lock. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 18:53:20 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Consistenly lock the flow_return state Use the object's lock to protect it. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-21 18:45:36 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Consistently lock some members Some members sometimes used atomic access, sometimes where not locked at all. Instead consistently use a mutex to protect them, also document that. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-14 14:38:09 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Protect exported pad members with the pad's object lock https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-14 14:35:15 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Replace event lock with pad's object lock Reduce the number of locks simplify code, what is protects is exposed, but the lock was not. Also means adding an _unlocked version of gst_aggregator_pad_steal_buffer(). https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-09 22:01:00 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Protect data with the same mutex as GCond Whenever a GCond is used, the safest paradigm is to protect the variable which change is signalled by the GCond with the same mutex that the GCond depends on. https://bugzilla.gnome.org/show_bug.cgi?id=742684 2015-01-14 23:47:19 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Nitpick spacing/punctuation in debug logging 2015-01-09 21:51:40 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Remove pointless atomic It is only modified from the streaming thread 2015-01-09 21:30:36 -0500 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstaggregator.c: aggregator: Fix query leak 2015-01-09 16:43:39 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Print jitter from clock waiting in the debug logs 2015-01-04 17:15:37 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: don't use iterator when setting flush pending on pads 2015-01-04 16:57:05 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: check if pads are ready more efficiently No need to use an iterator for this which creates a temporary structure every time and also involves taking and releasing the object lock many times in the course of iterating. Not to mention all that GList handling in gst_aggregator_iterate_sinkpads(). 2015-01-04 12:59:19 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: name vfunc arguments consistently 2015-01-01 15:46:00 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add g-i transfer and scope annotations 2015-01-01 14:10:05 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: register names of iterate_sinkpads functions with debug system 2015-01-01 14:03:02 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: reduce debug messages for taking/releasing logs to TRACE level Don't spam debug log with this stuff. 2014-12-31 18:16:21 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: move property member into private structure Our locking (or lack thereof) while accessing this also looks generally quite dodgy. 2014-12-31 14:50:58 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: remove empty dispose function 2014-12-30 23:58:34 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: give private functions namespace prefix Especially the GST_DEBUG_FUNCPTR ones. 2014-12-31 12:35:06 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: fix up some docs comments in header 2014-12-30 23:44:46 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: remove now-unused system clock member 2014-12-30 19:22:01 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: make GstAggregatorPadForeachFunc take an GstAggregatorPad 2014-12-30 17:50:17 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: bring start/stop vfunc semantics in line with other baseclasses Sub-class should not have to chain up to GstAggregator's start/stop vfuncs, same as in GstBaseSrc, GstBaseSink, GstBaseTransform etc. 2014-12-28 18:26:49 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: remove pointless GST_DEBUG_FUNCPTR Not useful for GObject vfuncs. 2014-12-28 18:24:21 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: remove duplicate pad parent_class variable G_DEFINE_TYPE already provides one, just need to use it. 2014-12-28 18:22:57 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: add _CAST() variants for cast macros 2014-12-28 01:13:33 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.h: aggregator: make padding larger Esp. the class structures, can't have enough spare space for virtual functions. 2014-12-27 16:15:41 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Log to the pad instead of the element More correct way of doing the same thing as before 2014-12-27 09:49:43 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Make sure that the minimum latencies are never GST_CLOCK_TIME_NONE 2014-12-27 09:42:57 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Wait for the minimum latency, not the maximum The minimum latency is the latency we have to wait at least to guarantee that all upstreams have produced data. The maximum latency has no meaning like that and shouldn't be used for waiting. 2014-12-27 04:21:36 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Clamp the min latency at the max if it's greater 2014-12-27 04:21:26 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Print the sinkpad name while logging latency queries Very useful while debugging. 2014-12-27 04:19:52 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Take the stream lock when iterating sink pads When iterating sink pads to collect some data, we should take the stream lock so we don't get stale data and possibly deadlock because of that. This fixes a definitive deadlock in _wait_and_check() that manifests with high max latencies in a live pipeline, and fixes other possible race conditions. 2014-12-23 11:45:05 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't leak flush-start events 2014-12-23 10:24:27 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Also change the default latency to 0, not just the minimum 2014-12-23 09:52:20 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fix docs and default value of the latency property 2014-12-22 22:19:52 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Also include the subclass latency in the result of the latency query 2014-12-22 15:26:37 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Post a latency message if the value of the latency property changes 2014-12-22 15:03:59 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Wake up the src thread after handling a latency query Due to changed latencies or changed live-ness we might have to adjust if we wait on a deadline at all and how long. 2014-12-22 15:00:36 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Don't count the number of times we need to wake up but instead check all conditions for waiting again This simplifies the code and also makes sure that we don't forget to check all conditions for waiting. Also fix a potential deadlock caused by not checking if we're actually still running before starting to wait. 2014-12-17 19:51:32 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: Add function to allow subclasses to set their own latency For audiomixer this is one blocksize, for videoaggregator this should be the duration of one output frame. 2014-12-17 17:54:09 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: aggregator: Add a timeout parameter to ::aggregate() When this is TRUE, we really have to produce output. This happens in live mixing mode when we have to output something for the current time, no matter if we have enough input or not. 2014-12-16 19:49:35 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/aggregator.c: tests: fix aggregator unit test after property renaming 2014-12-16 17:33:01 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Some minor cleanup 2014-12-05 18:19:54 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: make the src pad task drive the pipeline for live pipelines This removes the uses of GAsyncQueue and replaces it with explicit GMutex, GCond and wakeup count which is used for the non-live case. For live pipelines, the aggregator waits on the clock until either data arrives on all sink pads or the expected output buffer time arrives plus the timeout/latency at which time, the subclass produces a buffer. https://bugzilla.gnome.org/show_bug.cgi?id=741146 2014-12-14 01:29:26 +0100 Sebastian Rasmussen <sebras@hotmail.com> * tests/check/libs/aggregator.c: tests/aggregator: Use correct type when setting property Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741495 2014-11-19 17:17:06 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Unblock events/queries immediately if the pad is flushing https://bugzilla.gnome.org/show_bug.cgi?id=740376 2014-11-19 17:15:02 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Drop serialized events/queries if the pad is flushing https://bugzilla.gnome.org/show_bug.cgi?id=740376 2014-11-19 17:03:41 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Block serialized events/queries until the pad has consumed all buffers Otherwise the caps of the pad might change while the subclass still works with a buffer of the old caps, assuming the the current pad caps apply to that buffer. Which then leads to crashes and other nice effects. https://bugzilla.gnome.org/show_bug.cgi?id=740376 2014-11-19 17:03:33 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Fix typo in debug output 2014-11-17 14:00:10 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add _get_latency() for subclass usage API: gst_aggregator_get_latency https://bugzilla.gnome.org/show_bug.cgi?id=739996 2014-10-20 18:25:08 +0530 Vineeth T M <vineeth.tm@samsung.com> * libs/gst/base/gstaggregator.c: audiomixer: critical error for blocksize, timeout min/max values Audiomixer blocksize, cant be 0, hence adjusting the minimum value to 1 timeout value of aggregator is defined with MAX of MAXINT64, but it cannot cross G_MAXLONG * GST_SECOND - 1 Hence changed the max value of the same https://bugzilla.gnome.org/show_bug.cgi?id=738845 2014-10-07 16:57:27 +1100 Matthew Waters <matthew@centricular.com> * tests/check/libs/aggregator.c: tests/aggregator: add timeout handling test for the timeout parameter 2014-10-06 21:46:24 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: add latency query handling 2014-10-06 18:23:03 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: aggregator: add a timeout property determining buffer wait time Determines the amount of time that a pad will wait for a buffer before being marked unresponsive. Network sources may fail to produce buffers for an extended period of time, currently causing the pipeline to stall possibly indefinitely, waiting for these buffers to appear. Subclasses should render unresponsive pads with either silence (audio), the last (video) frame or what makes the most sense in the given context. 2014-09-17 16:48:02 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * libs/gst/base/gstaggregator.c: aggregator: Replace GMainContext with GAsyncQueue (v2) The previous implementation kept accumulating GSources, slowing down the iteration and leaking memory. Instead of trying to fix the main context flushing, replace it with a GAsyncQueue which is simple to flush and has less overhead. https://bugzilla.gnome.org/show_bug.cgi?id=736782 2014-08-05 15:36:30 +0200 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * libs/gst/base/gstaggregator.c: aggregator: Set seqnum only when segments are received. 2014-08-02 18:25:01 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Add a streaming lock so to secure flush start action Without a lock that is taken in FLUSH_START we had a rare race where we end up aggregating a buffer that was before the whole FLUSH_START/STOP dance. That could lead to very wrong behaviour in subclasses. 2014-07-18 13:58:55 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Query seeking when a seek failed to see if it was expected And do not worry if seeking failed on a stream that is not seekable 2014-07-18 01:41:26 +0200 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * libs/gst/base/gstaggregator.c: aggregator: set future seqnum before propagating the seek event. So the seqnum is properly set for the following events. 2014-07-08 16:16:55 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Store segment when seeked in READY for later use 2014-10-06 10:11:23 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: Unref the taglist in GstAggregator::stop() 2014-10-03 12:34:15 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Take lock to ensure set_caps is not called concurently Avoiding to be in an inconsistent state where we do not have actual negotiate caps set as srccaps and leading to point where we try to unref ->srccaps when they have already been set to NULL. https://bugzilla.gnome.org/show_bug.cgi?id=735042 2014-08-11 23:38:40 +1000 Matthew Waters <ystreet00@gmail.com> * libs/gst/base/gstaggregator.c: aggregator: fix up doc comment for set_src_caps It does not occur 'later' anymore https://bugzilla.gnome.org/show_bug.cgi?id=732662 2014-08-07 19:54:36 +1000 Matthew Waters <ystreet00@gmail.com> * libs/gst/base/gstaggregator.c: videoaggregator: push the caps event as soon as we receive it Along with the required mandatory dependent events. Some elements need to perform an allocation query inside ::negotiated_caps(). Without the caps event being sent prior, downstream elements will be unable to answer and will return an error. https://bugzilla.gnome.org/show_bug.cgi?id=732662 2014-07-16 16:57:35 +0200 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * libs/gst/base/gstaggregator.c: aggregator: Reset flow_return *after* stopping the srcpad task. Otherwise it might be set in an already running aggregate function. 2014-07-10 13:18:21 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Flush sinkpads when stopping All values are meaningless in that case, so we should make sure that we clean everything 2014-07-10 13:15:55 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Do not forget to reset the flow return when stoping Setting it to FLUSHING when the element is not started, and to OK when it starts. 2014-07-08 16:48:08 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Handle event seqnum 2014-07-06 16:17:06 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstaggregator.c: aggregator: fix locking We would unlock a mutex we never locked on SEGMENT events. 2014-06-30 12:22:07 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: * tests/check/libs/aggregator.c: aggregator: Avoid destroying sources we do not own + Unref the maincontext in a new dispose function + Make sure to remove all sources on dispose https://bugzilla.gnome.org/show_bug.cgi?id=732445 2014-06-28 11:20:43 -0300 Thiago Santos <ts.santos@sisa.samsung.com> * tests/check/libs/aggregator.c: tests: aggregator: fix various leaks in the tests 2014-06-28 09:34:05 -0300 Thiago Santos <ts.santos@sisa.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: always store or unref the buffer on the _chain function Otherwise it leaks, and it is very common to go to flushing when the pipeline is stopping, leaking a buffer. 2014-06-28 09:32:32 -0300 Thiago Santos <ts.santos@sisa.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: always unref the buffer on _finish function Otherwise the user doesn't know if it was unref'd or not 2014-06-28 09:31:55 -0300 Thiago Santos <ts.santos@sisa.samsung.com> * libs/gst/base/gstaggregator.c: aggregator: add dispose/finalize functions Add functions to be able to cleanup the mutex/cond and pending buffers on the aggregator and on its pad 2014-06-26 10:53:16 +1000 Matthew Waters <ystreet00@gmail.com> * libs/gst/base/gstaggregator.c: aggregator: plug a memory leak of the srccaps 2014-06-21 16:51:01 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.h: libs:base: Properly declare APIs as UNSTABLE 2014-06-21 13:45:13 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: aggregator: Fix requested pad name 2014-05-22 19:44:37 +0200 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstaggregator.c: * libs/gst/base/gstaggregator.h: * tests/check/libs/aggregator.c: aggregator: Add new GstAggregator base class This base class has been added to a newly created libgstbadbase library Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> https://bugzilla.gnome.org/show_bug.cgi?id=731917 2017-12-02 12:02:15 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstinfo.c: tests: info: add test for post-gst_init() category registration perf When registering categories after gst_init() we would re-check *all* categories against the existing GST_DEBUG patterns again, whereas it's enough to just check the new category. Moreover, we would parse the GST_DEBUG pattern string again and re-add that to the existing pattern list for every newly-registered debug category, and then check that against all categories of course. This made registering categories after gst_init() very very slow. 2017-12-02 12:29:20 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: info: always check match patterns for new debug categories Not only if a match pattern was set originally via GST_DEBUG. Patterns might be set programmatically as well after all. 2017-12-02 12:22:47 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: info: fix performance issue with registering categories after gst_init() When registering a new debug category after gst_init(), simply check the existing patterns against that new category. No need to iterate over all categories and recheck them all against the existing patterns. Also, no need to re-parse the existing pattern string set via GST_DEBUG and add the same set of match patterns all over again to the existing list of match patterns every time we register a new debug category. Combined with iterating all debug categories on a change this would make adding debug categories after gst_init() very very very slow. 2017-12-01 13:33:48 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstplugin.c: plugin-scanner: Measure string length in bytes g_strndup() wants a number of bytes to copy, so use strlen intead of UTF-8 strlen function. 2017-11-30 17:49:10 +0100 Michael Tretter <m.tretter@pengutronix.de> * libs/gst/net/gstptpclock.c: ptpclock: do not require a name to create a clock The gst_ptp_clock_new() does not actually require a name. However, for example the rtpjitterbuffer may create a clock without a name, fail, and fall back to not using the PTP clock. https://bugzilla.gnome.org/show_bug.cgi?id=791034 2017-11-28 23:37:47 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: fix readable flag printing for pad properties 2017-11-27 20:09:42 +1100 Matthew Waters <matthew@centricular.com> * common: Automatic update of common submodule From 3f4aa96 to e8c7a71 2017-11-26 13:31:28 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/gstpreset.c: Revert "preset: Do not save deprecated properties" This reverts commit 81e10f61231ad56ca4aa07278993b87c6ec0f058. A mistake lead to committing it twice in a weird way. 2017-11-03 12:20:47 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstpreset.c: preset: Do not save deprecated properties It will g_warn upon deserialization and we should not use those anyway. https://bugzilla.gnome.org/show_bug.cgi?id=789871 2017-11-08 12:46:44 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/gsttaglist.c: taglist: Avoid assertions when getting tag nick from unregister tag With serialized GstDiscovererInfos we might end up trying to use tags that have not been registered. 2017-11-03 12:23:50 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/gstpreset.c: preset: Do not save deprecated properties It will g_warn upon desarialization and we should not use those anyway. https://bugzilla.gnome.org/show_bug.cgi?id=789871 2017-10-13 00:21:03 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/Makefile.am: * plugins/tracers/gstlog.c: tracers: log: no need to link to our internal printf implementation The call to __gst_vasprintf() was removed in commit 1a3e218b8. 2017-11-26 00:20:13 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: don't print element flags whch are always 'none' We print the interesting flags like clocking capabilities separately later, this function just always prints 'none', so remove it. 2017-11-25 23:43:56 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstpadtemplate.c: * tools/gst-inspect.c: tools: gst-inspect: print pad properties where we know the subclass type 2017-11-25 22:27:08 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: refactor way indentation is done during printing 2017-11-25 13:07:12 +0100 Edward Hervey <edward@centricular.com> * gst/gstinfo.c: gstinfo: Use free instead of g_free Because 2017-11-25 12:44:11 +0100 Edward Hervey <edward@centricular.com> * gst/gstinfo.c: gstinfo: Don't leak array of strings The array provided by backtrace_symbols needs to be freed. 2017-11-24 12:08:07 +0100 Edward Hervey <edward@centricular.com> * tests/check/gst/gstbuffer.c: check/buffer: Remove usless memcmp with empty size 1) checking nothing against nothing is pointless 2) memcmp needs to be provided non-NULL arguments 2017-11-24 12:05:26 +0100 Edward Hervey <edward@centricular.com> * gst/gstutils.c: gstutils: Fix linear regression comparision The check for dropping precision was wrong when sxx and syy were negative. if they are negative then "G_MAXINT64 - val" would always overflow The check was meant to use G_MININT64 (like in the loop contained just after). 2017-11-24 13:58:01 +1100 Matthew Waters <matthew@centricular.com> * libs/gst/check/Makefile.am: check: add missing harness function to symbol export list Fixes in user code: undefined reference to `gst_harness_add_element_sink_pad' Also reorder harness function list to be strictly in alphabetical order and double check the list with: awk '{ if ($1 !~ /#define/) if ($2 ~ /gst_harness_/) { print $2 }; if ($3 ~ /gst_harness_/) { print $3} }' libs/gst/check/gstharness.h | sort 2017-11-24 13:41:20 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/capsfilter.c: * tests/check/elements/dataurisrc.c: * tests/check/elements/fakesink.c: * tests/check/elements/fakesrc.c: * tests/check/elements/fdsrc.c: * tests/check/elements/filesink.c: * tests/check/elements/filesrc.c: * tests/check/elements/identity.c: * tests/check/elements/multiqueue.c: * tests/check/elements/queue.c: * tests/check/elements/queue2.c: * tests/check/elements/selector.c: * tests/check/elements/tee.c: * tests/check/elements/valve.c: * tests/check/generic/sinks.c: * tests/check/generic/states.c: * tests/check/gst/gst.c: * tests/check/gst/gstabi.c: * tests/check/gst/gstatomicqueue.c: * tests/check/gst/gstbin.c: * tests/check/gst/gstbufferlist.c: * tests/check/gst/gstbufferpool.c: * tests/check/gst/gstbus.c: * tests/check/gst/gstcaps.c: * tests/check/gst/gstcapsfeatures.c: * tests/check/gst/gstchildproxy.c: * tests/check/gst/gstclock.c: * tests/check/gst/gstcontext.c: * tests/check/gst/gstcontroller.c: * tests/check/gst/gstcpp.cc: * tests/check/gst/gstevent.c: * tests/check/gst/gstghostpad.c: * tests/check/gst/gstindex.c: * tests/check/gst/gstinfo.c: * tests/check/gst/gstiterator.c: * tests/check/gst/gstmessage.c: * tests/check/gst/gstminiobject.c: * tests/check/gst/gstpad.c: * tests/check/gst/gstparamspecs.c: * tests/check/gst/gstplugin.c: * tests/check/gst/gstpoll.c: * tests/check/gst/gstpreset.c: * tests/check/gst/gstprintf.c: * tests/check/gst/gstpromise.c: * tests/check/gst/gstprotection.c: * tests/check/gst/gstquery.c: * tests/check/gst/gstsegment.c: * tests/check/gst/gststream.c: * tests/check/gst/gststructure.c: * tests/check/gst/gstsystemclock.c: * tests/check/gst/gsttag.c: * tests/check/gst/gsttagsetter.c: * tests/check/gst/gsttask.c: * tests/check/gst/gsttoc.c: * tests/check/gst/gsttocsetter.c: * tests/check/gst/gsttracerrecord.c: * tests/check/gst/gsturi.c: * tests/check/gst/gstvalue.c: * tests/check/libs/adapter.c: * tests/check/libs/gstharness.c: * tests/check/libs/gstnetclientclock.c: * tests/check/libs/gstnettimeprovider.c: * tests/check/libs/gsttestclock.c: tests: include config.h and don't include unix headers In many cases the unistd.h includes weren't actually needed. Preparation for making tests work on Windows with MSVC. 2017-11-24 13:21:47 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/test_transform.c: tests: add missing license header to test_transform.c 2017-11-10 16:26:50 +0100 Mikhail Fludkov <misha@pexip.com> * configure.ac: * gst/gsttracerutils.c: * gst/gsttracerutils.h: * plugins/Makefile.am: gsttraceutils: actually disable tracing system hooks if configured `./configure --disable-gst-tracer-hooks` didn't do anything, hooks were always enabled regardless of the option. It works correctly in the Meson build though. 2017-10-26 12:09:07 +0200 Havard Graff <havard.graff@gmail.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: * win32/common/libgstreamer.def: utils: add gst_utils_dump_buffer() Useful for debugging. 2017-10-10 15:44:51 +0200 Håvard Graff <havard.graff@gmail.com> * pkgconfig/meson.build: meson.build: use join_paths() on prefix So that "/" are correct on Windows and the paths in the .pc files are like C:/some/where and not C:\some\where. 2017-11-24 09:49:27 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasetransform.c: * libs/gst/net/gstptpclock.c: libs: fix indentation 2017-08-18 14:30:32 +0200 Stian Selnes <stian@pexip.com> * gst/gstpad.c: * tests/check/gst/gstghostpad.c: pad: gst_pad_activate_mode() always succeed if same mode Checking that the pad is in the correct mode before the parent is checked makes the call always succeed if the mode is ok. This fixes a race with ghostpad where gst_pad_activate_mode() could trigger a g_critical() if the ghostpad is unparented while the proxypad is deactivating, for instance if the ghostpad is released. More specifically, gst_ghost_pad_internal_activate_push_default()'s call to gst_pad_activate_mode() would fail if ghostpad doesn't have a parent. With this patch it will return true of mode is already correct. 2017-03-31 16:36:05 +0200 Havard Graff <havard.graff@gmail.com> * libs/gst/base/gstbasetransform.c: * plugins/elements/gstfunnel.c: * plugins/elements/gstfunnel.h: gstbasetranform: replace GST_BASE_TRANSFORM with GST_BASE_TRANSFORM_CAST To avoid a global type-lock on chain etc. 2017-11-24 09:53:41 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstghostpad.c: ghostpad: return TRUE if target pad was already set The state is as it should be, so no reason to return FALSE really, everything's good. 2017-11-24 09:40:07 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstghostpad.c: ghostpad: access internal pad with lock held 2017-03-30 09:17:08 +0200 Havard Graff <havard.graff@gmail.com> * gst/gstghostpad.c: * tests/check/gst/gstghostpad.c: ghostpad: fix race-condition while tearing down An upstream query will take a ref on the internal proxypad, and can hence end up owning the last reference to that pad, causing a crash. 2013-03-23 13:44:51 +0100 Haakon Sporsheim <haakon.sporsheim@gmail.com> * libs/gst/check/gstcheck.c: check: Add test suite time elapsed output 2017-11-23 15:28:39 +0100 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue.c: queue: Only calculate level if we have valid levels Doing calculations with GST_CLOCK_STIME_NONE would result in completely bogus levels 2017-11-23 13:56:51 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstvalue.c: gstvalue: allocate slightly larger than needed tables at startup If we pre-allocate only *exactly* as many nodes as we need for the core types, we are practically guaranteed a re-alloc when external code like GstVideoTimeCode or GstEncodingProfile register their own GstValue things. So allocate a bit more than strictly needed. 2017-11-06 21:10:54 +0100 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstelement.c: * gst/gstelement.h: * gst/gstpadtemplate.c: * gst/gstpadtemplate.h: * win32/common/libgstreamer.def: pad templates: Allow specifying GType See https://bugzilla.gnome.org/show_bug.cgi?id=731301 https://bugzilla.gnome.org/show_bug.cgi?id=789986 2017-11-22 15:59:39 +0100 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update for latest promise api changes 2017-04-03 22:20:51 +1000 Matthew Waters <matthew@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: * docs/gst/gstreamer.types.in: * gst/Makefile.am: * gst/gst.c: * gst/gst.h: * gst/gstpromise.c: * gst/gstpromise.h: * gst/meson.build: * tests/check/Makefile.am: * tests/check/gst/.gitignore: * tests/check/gst/gstpromise.c: * tests/check/meson.build: * win32/common/libgstreamer.def: gst: add a promise object An object that can be waited on and asked for asynchronous values. In much the same way as promise/futures in js/java/etc A callback can be installed for when the promise changes state. Original idea by Jan Schmidt <jan@centricular.com> With contributions from Nirbheek Chauhan <nirbheek@centricular.com> Mathieu Duponchelle <mathieu@centricular.com> https://bugzilla.gnome.org/show_bug.cgi?id=789843 2017-11-20 17:01:04 +0100 Edward Hervey <edward@centricular.com> * gst/gstregistrychunks.c: registrychunks: Make sure we use aligned memory This is in the same vein as for all other features. Some systems might not allow unaligned read. 2017-11-17 00:15:17 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: stop printing element state_change function This is really not interesting at all, not sure why we print this. 2017-11-17 00:14:35 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: fix double empty line after pad templates 2017-11-16 10:47:46 +0100 Edward Hervey <edward@centricular.com> gstpad: Make pad (de)activation atomic The following could happen previously: * T1: calls gst_pad_set_active() * T2: currently (de)activating it * T1: gst_pad_set_active() returns, caller assumes that the pad has completed the requested (de)activation ... whereas it is not the case since the actual (de)activation in T2 might still be going on. To ensure atomicity of pad (de)activation, we use a internal variable (and cond) to ensure only one thread at a time goes through the actual (de)activation block https://bugzilla.gnome.org/show_bug.cgi?id=790431 2017-11-16 08:26:12 +0100 Edward Hervey <edward@centricular.com> * gst/gstpad.c: gstpad: Make calls to GstPadActivateFunction MT-safe checking whether we already were in the target GstPadMode was being done too early and there was the risk that we *would* end up (de)activating a pad more than once. Instead, re-do the check for pad mode when entering the final pad (de)activation block. https://bugzilla.gnome.org/show_bug.cgi?id=790431 2017-11-10 12:07:28 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstparamspecs.c: paramspec: Move condition check inside the g_return It's mostly a debug check and crash avoidance, it's better to keep all the condition inside the macro. 2017-11-10 12:03:00 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstparamspecs.c: paramspec: Add missing since for _spec_array() 2017-11-10 14:10:31 +0100 Edward Hervey <bilboed@bilboed.com> * plugins/elements/gstconcat.c: concat: Handle single-pad use-cases When EOS reaches concat, it will switch to the next candidate as its activate pad. The problem arises when there is only one sinkpad, the "active" pad becomes NULL. This results in concat becoming unusable after it receives a *single* EOS on its single sinkpad. If we detect there is a single sinkpad and there is no current active pad: * If we are waiting (from selected sink event/buffer), become the current active pad. * If there is a seek request, send it upstream. We don't switch the active_sinkpad property at that point in time, since the seek could fail. If the seek succeeds, the following SEGMENT (or STREAM_START) will cause the pad_wait() to elect that pad as the new active one. * Flush events get forwarded https://bugzilla.gnome.org/show_bug.cgi?id=790167 2017-11-09 17:38:19 +0100 Edward Hervey <edward@centricular.com> * plugins/elements/gstconcat.c: concat: Make QoS forward MT-safe In the same way it's done for other event forwarding. 2017-04-13 16:28:54 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * plugins/tracers/gstlatency.c: latency tracer: add timestamp to tracer records Include the timestamp of the recorded log as in the 'stats' tracer. This can be useful, for example, to plot a graph showing the latency over time. https://bugzilla.gnome.org/show_bug.cgi?id=781315 2017-11-04 11:45:54 +0100 Edward Hervey <edward@centricular.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Fix overflow some more Nothing guaranteed that off+size wouldn't exceed a 2**64 value. Instead we reverse the operation and use a subtraction. 2017-11-04 10:34:10 +0100 Edward Hervey <edward@centricular.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Fix signed integer overflow Make sure the whole calculation is done with 64bit unsigned values (To be ready for people want to typefind exabyte files). 2017-08-01 11:06:32 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstelement.c: * gst/gstelement.h: * tests/check/gst/gstelement.c: * win32/common/libgstreamer.def: element: add gst_element_foreach_*pad() Add convenience API that iterates over all pads, sink pads or source pads and makes sure that the foreach function is called exactly once for each pad. This is a KISS implementation. It doesn't use GstIterator and doesn't try to do clever things like resync if pads are added or removed while the function is executing. We can still do that in future if we think it's needed, but in practice it will likely make absolutely no difference whatsoever, since these things will have to be handled properly elsewhere by the element anyway if they're important. After all, it's always possible that a pad is added or removed just after the iterator finishes iterating, but before the function returns. This is also a replacement for gst_aggregator_iterate_sink_pads(). https://bugzilla.gnome.org/show_bug.cgi?id=785679 2017-10-27 14:58:28 +0200 Mathieu Duponchelle <mathieu@centricular.com> * plugins/tracers/gstleaks.c: gstleaks.c: always log leaks listing https://bugzilla.gnome.org/show_bug.cgi?id=789556 2017-11-01 12:27:31 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/meson.build: net: Add new file to the meson.build 2017-11-01 11:31:52 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/misc/netclock-replay.c: examples/netclock-replay: Fix build 2017-10-30 10:49:06 +0100 Robert Rosengren <robertr@axis.com> * libs/gst/net/Makefile.am: * libs/gst/net/gstnetclientclock.c: * libs/gst/net/gstnettimeprovider.c: * libs/gst/net/gstnetutils.c: * libs/gst/net/gstnetutils.h: netutils: Add util for setting socket DSCP Util function for setting QoS DSCP added, to remove duplicated code in netclientclock and nettimeprovider. Fix build error if missing IP_TOS. https://bugzilla.gnome.org/show_bug.cgi?id=784737 2017-10-31 11:39:23 +0100 Edward Hervey <edward@centricular.com> * gst/gstvalue.h: gstvalue: Cast GST_MAKE_FOURCC arguments To make it explicit that we are dealing with uint32 targets Avoids erroneous runtime error: left shift of negative value -1 https://bugzilla.gnome.org/show_bug.cgi?id=789700 2017-10-11 11:08:12 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/tracers/gstlatency.c: latency-tracer: Exclude synchronization time The goal of this tracer is to measure the processing latency between a src and a sink. In push mode, the time was read after the chain function have returned. As the amount of time we wait to get synched is reverse to the amount of latency the source introduced, the result was quite surprising. This patch moves the latency calculation in the pre-push hook. When there is no processing in a a pipeline (e.g. fakesrc ! fakesink), the latency will now be 0 as it's supposed to. For pull mode, the code was already correct. When GstBaseSink operate in pull mode, the processing time is done durring the pull, so pull-post is the right hook. The synchronization will happen after the pull has ended. Note that GstBaseSink rarely operate in pull mode. https://bugzilla.gnome.org/show_bug.cgi?id=788431 2017-10-27 09:53:06 +0200 Edward Hervey <edward@centricular.com> * gst/gstevent.c: event: Don't allow invalid SELECT_STREAMS event creation Asking to select no streams makes no sense and can create various issues. If one doesn't one any stream it should deactivate (or not use) the element in question. 2017-10-25 17:10:15 +0200 Edward Hervey <edward@centricular.com> * gst/gst.c: gst: Fix build with option parsing disabled 2017-10-20 17:28:11 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/gst/gstsegment.c: segment: update the tests Boy scout rule. Make is a little less painful to debug the tests by using fail_unless_equals_{uint64,int64,float} where appropriate. Ideally the large tests would be splitted to avoid guessing data dependencies. 2017-10-20 16:15:01 +0200 Stefan Sauer <ensonic@users.sf.net> * gst/gstsegment.h: segment: clarify the segment docs for the duration 2017-10-20 16:11:44 +0200 Stefan Sauer <ensonic@users.sf.net> * gst/gstsegment.c: Revert "segment: also intialize the duration" This reverts commit f1baaae17557fa75a9bcd940b994597714be2f74. 2017-10-20 14:30:42 +0200 Stefan Sauer <ensonic@users.sf.net> * gst/gstsegment.c: segment: also intialize the duration If start and stop are set, calculate the duration and set it too. 2017-10-20 13:02:35 +0200 Stefan Sauer <ensonic@users.sf.net> * tools/gst-inspect.c: gst-inspect: print more details for typefind and tracer features Print full details for typefind features. Print some of the available features for tracers and add some todos for the ones we'd like to see. 2017-10-20 11:16:46 +0200 Stefan Sauer <ensonic@users.sf.net> * tools/gst-inspect.c: gst-inspect: reduce casting back and forth Refactor the print_element_info() to take a GstPluginFeature. Reduces the need to cast to and from GstElementFactory. 2017-10-20 11:08:14 +0200 Stefan Sauer <ensonic@users.sf.net> * tools/gst-inspect.c: gst-inspect: simplify the code for printing feature info Rename print_element_features() to print_feature_info() and move the code that handles the ElementFactory there. This simplifies the calling code and improves readability. Also don't leak the features for other factories. 2017-06-02 16:27:29 +0200 Robert Rosengren <robertr@axis.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Add possibility to set QoS DSCP value https://bugzilla.gnome.org/show_bug.cgi?id=784737 2017-06-01 15:48:16 +0200 Robert Rosengren <robertr@axis.com> * libs/gst/net/gstnettimeprovider.c: nettimeprovider: Add possibility to set QoS DSCP value https://bugzilla.gnome.org/show_bug.cgi?id=784737 2017-10-18 02:31:12 +1100 Jan Schmidt <jan@centricular.com> * gst/gstutils.c: * gst/gstutils.h: seqnum: Never return a seqnum of 0, reset GST_SEQNUM_INVALID Various plugins use the value of '0' as an invalid seqnum value (qtdemux for matching duplicated seek events, for example). Make that behaviour explicit, create a GST_SEQNUM_INVALID value, and ensure gst_util_seqnum_next never returns it. 2017-10-16 16:06:37 +0530 Ashish Kumar <kr.ashish@samsung.com> * libs/gst/base/gstqueuearray.c: queuearray: Fix for possible crashes due to null pointer dereferencing https://bugzilla.gnome.org/show_bug.cgi?id=788838 2017-10-15 15:59:11 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstcollectpads.c: collectpads: mention the query function in the docs as well 2017-10-06 21:59:03 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gstbuffer.c: * tests/check/gst/gstmeta.c: gstbuffer: fix meta removal in gst_buffer_foreach_meta When updating the linked list, prev->next = next is correct if prev is actually updated after being set to the head of the list at the start. https://bugzilla.gnome.org/show_bug.cgi?id=788617 2017-10-10 15:53:38 +0200 fengalin <fengalin@free.fr> * libs/gst/base/gstflowcombiner.c: flowcombiner: Fix version for ref and unref functions The functions were introduced in version 1.12.1, GstFlowCombiner was introduced in 1.4. https://bugzilla.gnome.org/show_bug.cgi?id=788778 2017-10-05 13:35:14 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasesink.c: basesink: use new gst_buffer_list_calculate_size() utility function 2017-10-05 10:24:24 +0530 Ashish Kumar <kr.ashish@samsung.com> * gst/gstdeviceprovider.c: device-provider: gst_device_provider_unhide_provider() always fails https://bugzilla.gnome.org/show_bug.cgi?id=788520 2017-10-04 14:16:46 +0200 Havard Graff <havard.graff@gmail.com> * gst/meson.build: * libs/gst/base/meson.build: * libs/gst/controller/meson.build: * libs/gst/net/meson.build: * meson.build: meson: remove vs_module_defs The GST_EXPORT should handle it. 2017-10-03 13:54:25 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * libs/gst/base/gstbasetransform.h: * libs/gst/net/gstnettimepacket.c: * libs/gst/net/gstntppacket.c: * plugins/elements/gstidentity.c: Use proper GtkDoc notation for NULL/FALSE/TRUE 2017-10-02 17:59:17 +0200 Edward Hervey <edward@centricular.com> * gst/gstbin.c: * tests/check/gst/gstbin.c: bin: iterate_sorted: Ensure sources are always returned last For linked elements, the resulting gst_bin_iterate_sorted() will properly return elements from sink to sources. If we have some elements that are not linked, we *still* want to ensure that we return: * In priority any sinks * Last of all any sources * And in between any element which is neither source nor sink For this to work, when looking for the next candidate element, not only check the degree order, but if there are two candidates with the same degree order, prefer the non-source one. Amongst other things, this fixes the case where we activating a bin containing unlinked sources and other elements. Without this we could end up activating sources (which might start adding pads to be linked) before other (to which those new source element pads might be linked) are not activated https://bugzilla.gnome.org/show_bug.cgi?id=788434 2017-10-02 14:11:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/elements/tee.c: tee-test: Test a real use case The real use case is when downstream didn't set a pool or allocation params, in which case we expect the tee to not create a pool or param from thin air. Dowstream setting an pool with size=0 was in fact testing a downstream element bug. The fact we handle that is accidental. 2017-10-02 16:26:33 +0200 Stefan Sauer <ensonic@users.sf.net> * plugins/elements/gsttee.c: * tests/check/elements/tee.c: tee: don't create a pool if none is needed If the aggregated size is 0 and we create a pool, the pool would provide buffers with no memory assigned. Handle that case and skip the pool. This was the behaviour before cf803ea9f4e3fde92c1da86ecc47444035f7c0a7. Add a test for this scenario. https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-10-02 13:35:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/elements/tee.c: tee: Re-enabled alloc query + allow-not-linked test In the unit test refactoring, the unlinked pad required to test the different behaviour induced by "allow-not-linked" property was removed. Commit e364d7944ecbab86dea73c0ee3e639e766938d36 Move all the code for this test in the proper function, and re-add the missing unlinked pad. This makes the test useful again. 2017-10-02 16:25:00 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/elements/tee.c: tee: split the allocation query test Split the large allocation_query test into seperate tests. Add a setup helper to reduce code duplication. Fix the original test that used fail_unless instead of ck_assert_int_eq and had it accidentially working. 2017-10-02 16:22:00 +0200 Stefan Sauer <ensonic@users.sf.net> * gst/gststructure.c: structure: add a todo comment Printing NULL is confusing when the type is e.g. a GArray that is not empty. 2017-10-02 13:14:21 +0200 Stefan Sauer <ensonic@users.sf.net> * gst/gstquery.c: query: doc consistency Mention that it is the 'buffer size', like we do elsewhere. 2017-09-28 10:17:53 +0200 Edward Hervey <edward@centricular.com> * win32/common/libgstreamer.def: win32: update exports file 2017-09-27 20:29:06 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: * gst/gstplugin.c: gst: Modify behaviour of gst_get_main_executable_path To actually return the path of the executable, not its directory. https://bugzilla.gnome.org/show_bug.cgi?id=788256 2017-09-26 21:51:53 +0200 Mathieu Duponchelle <mathieu@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gst.c: * gst/gst.h: * win32/common/libgstreamer.def: gst: API: gst_get_main_executable_path() This is useful for plugins that need to inspect the folder of the main executable in order to determine the set of features they will expose, for example: https://github.com/centricular/gstreamer-vst3 https://bugzilla.gnome.org/show_bug.cgi?id=788214 2017-09-27 13:07:25 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: gst: Do not try to determine executable path on iOS. The method used relies on "libproc.h", which is only available on OSX. https://bugzilla.gnome.org/show_bug.cgi?id=788234 2017-09-27 13:01:13 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: gst: Fix typo in windows function name. GetModuleFilename -> GetModuleFileName https://bugzilla.gnome.org/show_bug.cgi?id=788234 2017-09-27 10:06:12 +0200 Edward Hervey <edward@centricular.com> * win32/common/libgstreamer.def: win32: Update export file 2017-09-26 15:15:27 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: * libs/gst/helpers/gst-plugin-scanner.c: plugin dependencies: fix 6cddce7663cb4b6ee061950d20365f42cb755851 There were a few errors: * The plugin scanner now accepts executable path as an argument. In case it is NULL, argc == 2 * We find the executable path in init_pre instead of gst_init, allowing this to work when gst is initialized through the option group (eg gst-inspect) * There was a semi-colon missing in the __APPLE__ #ifdef 2017-09-25 20:35:59 +0200 Mathieu Duponchelle <mathieu@centricular.com> * gst/gst.c: * gst/gst_private.h: * gst/gstplugin.c: * gst/gstplugin.h: * gst/gstpluginloader.c: * libs/gst/helpers/gst-plugin-scanner.c: * win32/common/libgstreamer.def: plugin: API: GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_RELATIVE_TO_EXE When a plugin declares a dependency using this flag, all the relative paths are considered to be relative to the path of the main executable. We try to determine the path of the executable portably, with implementations provided for Linux, Windows and Mac. If retrieval of the path fails, we will not detect changes. In order for the main executable path to be the same when scanning a plugin in a child process, a new variable is exposed in gst_private.h, _gst_executable_path https://bugzilla.gnome.org/show_bug.cgi?id=788152 2017-09-21 14:13:47 +0300 Vivia Nikolaidou <vivia@ahiru.eu> * scripts/git-update.sh: git-update: Also build $EXTRA_MODULES Doing a git pull but not autogen.sh / make is not consistent behaviour. https://bugzilla.gnome.org/show_bug.cgi?id=787981 2017-09-19 23:58:26 +0200 Mathieu Duponchelle <mathieu@centricular.com> * tools/gst-inspect.c: gst-inspect: Print GstValueArray properties nicely https://bugzilla.gnome.org/show_bug.cgi?id=787924 2017-04-01 07:15:22 +0200 Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> * plugins/elements/gstmultiqueue.c: Multiqueue: don't allow dropping SEGMENT_DONE events https://bugzilla.gnome.org/show_bug.cgi?id=780795 2017-09-17 18:55:19 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstinfo.h: info: GstStackTraceFlags were added in 1.12 2017-08-31 13:05:57 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: plugins: use new gst_buffer_list_calculate_size() 2017-08-31 12:54:55 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbufferlist.c: * gst/gstbufferlist.h: * tests/check/gst/gstbufferlist.c: * win32/common/libgstreamer.def: bufferlist: add gst_buffer_list_calculate_size() Returns size in bytes. 2017-08-30 13:50:33 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbufferlist.c: * gst/gstbufferlist.h: * tests/check/gst/gstbufferlist.c: * win32/common/libgstreamer.def: bufferlist: add gst_buffer_list_get_writable() Ensures buffer is writable. Useful if we want to change metadata on it such as timestamps. https://bugzilla.gnome.org/show_bug.cgi?id=750241 2017-09-12 18:30:00 +0300 Michael Shigorin <mike@altlinux.org> * gst/gstconfig.h.in: gstconfig.h.in: initial e2k arch support This makes gstreamer buildable on Elbrus 2000. https://bugzilla.gnome.org/show_bug.cgi?id=787587 2017-09-09 16:14:05 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstinfo.h: info: GstDebugColorFlags are flags, not an enum Annotate as such. 2017-09-06 10:01:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: Add a drop-allocation property When enabled, this property will make the allocation query fail. This is the same as one could have done using a tee before the tee started implementing the allocation query. https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-09-05 15:57:51 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gsttee.c: * tests/check/elements/tee.c: tee: Allocate one more buffer when multi-plexing This extra buffer ensure that the downstream threads are not starved when multiplexing a stream. https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-09-05 15:45:33 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/elements/tee.c: tee: Add test for the allocation query https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-08-08 17:39:43 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gsttee.c: tee: Implement allocation query aggregation This will aggregate allocation params, pool and will keep all meta that has no parameters. https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-08-08 17:35:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gsttee.c: tee: Deprecate alloc-pad property It has no effect, not implemented, and would lead to bad rendering. https://bugzilla.gnome.org/show_bug.cgi?id=730758 2017-09-04 12:20:43 +0200 Miguel París <mparisdiaz@gmail.com> * tests/check/gst/gstpad.c: pad: add test to check handled and drop probes https://bugzilla.gnome.org/show_bug.cgi?id=787243 2017-09-04 14:33:29 +0200 Edward Hervey <edward@centricular.com> * gst/gstpad.c: pad: Don't call remaining probes after they return DROPPED|HANDLED If multiple probes are set on a pad and one probe returns either GST_PAD_PROBE_HANDLED or GST_PAD_PROBE_DROPPED we need to stop calling the remaining probes. https://bugzilla.gnome.org/show_bug.cgi?id=787243 2017-08-26 13:44:38 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Handle serializing NULL GValueArray Concider them as an empty array and do not segfault... https://bugzilla.gnome.org/show_bug.cgi?id=786670 2017-08-24 16:00:42 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: fix taglist update spam We would constantly re-post the taglist because posted_avg_rate only gets set to avg_bitrate if parse->priv->post_avg_bitrate is true, so if it's false the posted rate will always differ from the current average rate and we'd queue an update, which leads to us spamming downstream and the application with taglist updates. Fix this by only queuing an update if the average rate will actually be posted. These taglists updates could cause expensive operations on the application side, e.g. in Totem. https://bugzilla.gnome.org/show_bug.cgi?id=786561 2017-08-17 12:23:10 +0100 Tim-Philipp Müller <tim@centricular.com> * README: * common: Automatic update of common submodule From 48a5d85 to 3f4aa96 2017-08-17 14:13:39 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstdeviceprovider.c: * gst/gstdeviceprovider.h: * gst/gstelement.c: * gst/gstelement.h: * win32/common/libgstreamer.def: element/deviceprovider: Add instance getter functions for class properties That is, the metadata and pad templates. Using instance getters is easier to deal with for bindings, especially autogenerated ones. 2017-08-16 22:47:31 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: Return FLUSHING instead of EOS and don't start waiting for anything if currently flushing Otherwise we might try unscheduling a clock id (that does not exist yet), then the streaming thread waits for id and the state change never continues because the streaming thread is blocked. Also shutting down and flushing and similar should return FLUSHING, not EOS. The stream is not over, we're just not accepting any buffers anymore. 2017-08-14 11:01:19 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstallocator.c: * win32/common/libgstreamer.def: allocator: Hide private sysmem GType func Was never exposed in any header file, only exported by accident. 2017-08-11 21:17:06 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * configure.ac: configure: Add switches for enabling/disabling libdw and libunwind https://bugzilla.gnome.org/show_bug.cgi?id=778193 2017-08-13 10:50:05 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/libcheck/libcompat/libcompat.h: libcheck: fix build failure Need to define CK_DLL_EXP to extern as well in libcompat.h which gets included before the internal-check.h where the other fallback definition for CK_DLL_EXP is. duplicate symbol _check_minor_version in: libcheckinternal.a(libcheckinternal_la-check.o) libcheckinternal.a(libcheckinternal_la-check_log.o) 2017-08-11 11:12:09 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue.c: queue: Allow re-usability after EOS After EOS, it is possible for a pad to be resetted by sending either a STREAM_START or SEGMENT event Mimic the same behaviour when receiving STREAM_START/SEGMENT events in queue if we are EOS'd https://bugzilla.gnome.org/show_bug.cgi?id=786056 2017-08-10 13:32:43 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/libcheck/meson.build: * meson.build: meson: hide symbols by default unless explicitly exported 2017-08-10 11:15:26 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstbufferstraw.h: * libs/gst/check/gstcheck.h: * libs/gst/check/gstconsistencychecker.h: * libs/gst/check/gstharness.h: * libs/gst/check/gsttestclock.c: * libs/gst/check/gsttestclock.h: * libs/gst/check/libcheck/check.h.in: libs: check: sprinkle some GST_EXPORT Have to modify libcheck header a bit to avoid warnings about duplicate 'extern extern'. Also needs some additions to the libcheck meson.build file to define CK_EXP_DLL when building the static libcheck. 2017-08-08 12:56:24 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.c: utils: fix g-ir-scanner warning about bogus transfer annotations for vararg parameters. Vararg functions are not introspectable anyway, so might just as well mark them as '(skip)' while we're at it. gstutils.c:2611: Warning: Gst: invalid "transfer" annotation for <varargs>: only valid for object and GVariant types 2017-08-09 16:15:23 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Allow re-usability after EOS After EOS, it is possible for a pad to be resetted by sending either a STREAM_START or SEGMENT event Mimic the same behaviour when receiving STREAM_START/SEGMENT events in queue2 if we are EOS'd https://bugzilla.gnome.org/show_bug.cgi?id=786056 2017-08-09 10:51:39 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: plugins: *queue* elements: Handle STREAM_START in EOS situation When queue-like elements are in "EOS" situation (received GST_FLOW_EOS from downstream or EOS was pushed), they drain buffers/events that wouldn't be processed anyway and let through events that might modify the EOS situation. Previously only GST_EVENT_EOS and GST_EVENT_SEGMENT events were let through, but we also need to allow GST_EVENT_STREAM_START to go through since it resets the EOS state of pads since 1.6 https://bugzilla.gnome.org/show_bug.cgi?id=786034 2017-08-08 21:19:32 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstutils.c: utils: Skip gst_calculate_linear_regression() in bindings 2017-08-07 12:24:37 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Handle buffering levels on NOT_LINKED When downstream returns NOT_LINKED, we return the buffering level as being 100%. Since the queue is no longer being consumed/used downstream, we want applications to essentially "ignore" this queue for buffering purposes. If other streams are still being used, those stream buffering levels will be used. If none are used, upstream will post an error message on the bus indicating no streams are used. https://bugzilla.gnome.org/show_bug.cgi?id=785799 2017-08-07 11:23:36 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/meson.build: * docs/libs/meson.build: meson: fix gtk-doc invocation Argument is called "scanobjs_args", and we were missing a quote. 2017-08-07 11:06:58 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/meson.build: * meson.build: meson: fix a few warnings 2017-08-07 10:33:32 +0100 Tim-Philipp Müller <tim@centricular.com> * pkgconfig/meson.build: meson: add -lm to gstreamer-check-1.0 pkgconfig file Fixes warning with meson from git about LIBM not being defined in the configuration_data. 2017-08-02 21:02:32 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Recheck sticky events after non-blocking buffer probes and blocking event probes Without the former, event changes (e.g. setting a pad offset) does not take effect for the current buffer but only for the next one. Without the latter, non-blocking event probes would not see any updated events yet. 2017-07-29 10:28:03 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: info: fix build with gst debugging disabled 2017-07-17 21:03:11 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstinfo.c: * gst/gstinfo.h: * win32/common/libgstreamer.def: debug: Add a memory ringbuffer based debug logger This stores debug logs in memory per thread and uses up to a configurable amount of bytes per thread for the logs. Inactive threads are timed out after a configurable amount of time. https://bugzilla.gnome.org/show_bug.cgi?id=785035 2017-07-28 17:27:18 +0100 Sebastian Dröge <sebastian@centricular.com> * gst/gstsegment.c: segment: Add missing out annotations for various parameters 2017-07-26 14:17:46 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstdownloadbuffer.h: downloadbuffer: remove unused struct member This was used in queue2 when handling in coming serialized queries, but downloadbuffer just refuses serialized queries. 2015-03-10 16:42:44 +0000 Luis de Bethencourt <luis.bg@samsung.com> * libs/gst/check/libcheck/check_run.c: check: duplicate code branches CID #1226446 2017-07-26 11:15:58 +0300 George Kiagiadakis <george.kiagiadakis@collabora.com> * gst/gstelement.c: element: document that gst_element_continue_state needs to be called with the STATE_LOCK It internally calls gst_element_change_state(), which requires the STATE_LOCK https://bugzilla.gnome.org/show_bug.cgi?id=785431 2017-07-20 17:31:41 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/gst-launch.c: gst-launch: fix compiler warnings for SIGHUP handlers on windows Fix unused variable/function compiler warnings on windows. The SIGHUP handling is only available under unix. https://bugzilla.gnome.org/show_bug.cgi?id=783661 2017-07-20 14:17:48 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Fix access to NULL pointer sq can be NULL. Also fix commit message (it's the queue we are iterating over that we are logging, not the one passed as argument). CID #1415569 2017-07-03 15:17:33 +0900 Seungha Yang <sh.yang@lge.com> * plugins/elements/gstmultiqueue.c: multiqueue: Calculate interleave only within each streaming thread ... and use the biggest interleave value among streaming threads. This is to optimize multiqueue size adaptation on adaptive streaming use case with "use-interleave" property. https://bugzilla.gnome.org/show_bug.cgi?id=784448 2017-07-15 12:40:28 +0100 Tim-Philipp Müller <tim@centricular.com> * po/meson.build: meson: po: use glib preset and read language list from LINGUAS Supported since meson 0.37, so we can use it now. 2017-07-15 11:54:18 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstminiobject.c: miniobject: don't modify memory if it's clearly not a valid miniobject Add back function guard that checks the refcount in a read-only operation first, and bail out without modifying the passed-in memory if it's clearly not a valid mini object. Otherwise we probably cause more harm than good. We keep the second sanity check based on the 'real refcount' at the time of the unref around for now too. https://bugzilla.gnome.org/show_bug.cgi?id=784383 2017-07-14 16:56:54 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasesrc.h: basesrc: deprecate non-functional "typefind" property https://bugzilla.gnome.org/show_bug.cgi?id=736565 2017-07-10 16:52:38 +0200 Francisco Velazquez <francisv@ifi.uio.no> * tests/benchmarks/complexity.c: * tests/benchmarks/complexity.scm: benchmark: fix complexity benchmark Make complexity benchmark code work for complexity > 1 https://bugzilla.gnome.org/show_bug.cgi?id=784754 2017-07-14 16:12:25 +0100 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * gst/gstpluginloader.c: * meson.build: win32: find plugin scanner in libexecdir subdir as configured https://bugzilla.gnome.org/show_bug.cgi?id=679115 2017-07-13 21:52:34 +0800 Jason Lin <shangchieh@realtek.com> * libs/gst/base/gstbasesink.c: basesink: fix buffer leaks if preroll failed buffer is not unreferened if preroll failed :Detailed Notes: - Problem : video freeze when switching from pause to 1/2-FF repeatedly - RootCause : buffer leaks in basesink - Solution : unref the buffer if prerolled failed :Testing Preformed: How to Test : pause -> 1/2 FF -> resume -> pause -> 1/2 FF ... https://bugzilla.gnome.org/show_bug.cgi?id=784932 2017-06-11 15:15:13 +0000 Graham Leggett <minfrin@sharp.fm> * docs/gst/running.xml: * tools/gst-launch-1.0.1: * tools/gst-launch.c: Generate a gstreamer pipeline diagram on SIGHUP. Useful for debugging a pipeline that refuses to enter a given state. https://bugzilla.gnome.org/show_bug.cgi?id=783661 2017-06-26 11:46:39 +0300 George Kiagiadakis <george.kiagiadakis@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: forward SINK_MESSAGE events downstream https://bugzilla.gnome.org/show_bug.cgi?id=784551 2017-07-11 14:56:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * meson.build: meson: Fix bashcomp installation For some reason the double quotes ended up in the path, hence the helper where installed at "."/share/... 2017-07-11 14:55:42 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * data/bash-completion/helpers/meson.build: * meson.build: * plugins/elements/meson.build: meson: Use join_paths and .set_quoted where possible 2017-07-11 16:15:16 +0100 Tim-Philipp Müller <tim@centricular.com> * pkgconfig/meson.build: meson: pkgconfig: add libunwind/libdw to gstreamer-1.0 Requires.private https://bugzilla.gnome.org/show_bug.cgi?id=784795 2017-07-11 15:29:44 +0200 Edward Hervey <edward@centricular.com> * configure.ac: * pkgconfig/gstreamer-uninstalled.pc.in: * pkgconfig/gstreamer.pc.in: pkgconfig: Add private requirements Add libunwind and dw to the .pc Requires.private. Fixes static library compilation if gstreamer was compiled with one of those dependencies https://bugzilla.gnome.org/show_bug.cgi?id=784795 2017-07-09 21:20:03 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstbasesink.c: basesink: use GST_CLOCK_TIME macros for readability Replace some -1 comparison with GST_CLOCK_TIME macros. 2017-07-09 21:16:44 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstcollectpads.c: collectpads: correct some comments and add more logging Add more logging to analyze event handling (especially failure cases). 2017-05-01 13:35:09 -0700 Scott D Phillips <scott.d.phillips@intel.com> * tools/gst-stats.c: tools: gst-stats: Use standard character escapes Having '\e' expand to '\x1b' is a gnu extension. I didn't see any document describing the behavior, but gcc also seems to expand '\[' to '['. https://bugzilla.gnome.org/show_bug.cgi?id=782028 2017-07-07 12:06:44 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/parse/meson.build: * meson.build: meson: find python3 via python3 module And rename python3 variable in meson build files for clarity. https://bugzilla.gnome.org/show_bug.cgi?id=783198 2017-07-05 13:20:19 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/meson.build: * meson_options.txt: * plugins/meson.build: * tests/check/meson.build: meson: add option to disable tracer hooks 2017-07-05 13:19:00 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstmemory.c: tests: memory: skip test that depends on debug system if it's disabled 2017-07-05 13:17:49 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gsttracerutils.h: tracing: fix build with tracer hooks disabled 2017-07-03 09:03:24 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstminiobject.c: miniobject: make refcount tracing and debug logging reliable Tracing of the refcounts wasn't thread-safe, and log output of the refcount values before/after wasn't reliable. https://bugzilla.gnome.org/show_bug.cgi?id=784383 2017-07-03 21:06:24 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstplugin.c: plugin: clarify code that deduces plugin name from file name Make the final else branch explicit for clarity. https://bugzilla.gnome.org/show_bug.cgi?id=783333 2017-06-27 07:44:17 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstbytereader-docs.h: docs: add a missing const in bytereader docs This syncs the prototype with gstbytereader.h 2017-06-29 10:50:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Removed unused private member qos_enabled 2017-06-26 14:09:20 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Don't reallocate buffers when flushing Instead of using gst_buffer_pool_set_active() when flushing, use gst_buffer_pool_set_flushing(), this avoids uneeded reallocation of the buffers. 2017-06-01 10:36:26 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Don't hold LIVE_LOCK in create/alloc/fill Holding this lock on live source prevents the source from changing the caps in ::create() without risking a deadlock. This has consequences as the LIVE_LOCK was replacing the STREAM_LOCK in many situation. As a side effect: - We no longer need to unlock when doing play/pause as the LIVE_LOCK isn't held. We then let the create() call finish, but will block if the state have changed meanwhile. This has the benefit that wait_preroll() calls in subclass is no longer needed. - We no longer need to change the state to unlock, simplifying the set_flushing() interface - We need different handling for EOS depending if we are in push or pull mode. This patch also document the locking of each private class member and the locking order. https://bugzilla.gnome.org/show_bug.cgi?id=783301 2017-06-01 10:01:13 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Protect access to pool and allocator This was only partly protected by the object lock. Always take the object lock to access the currently configured pool and allocator. https://bugzilla.gnome.org/show_bug.cgi?id=783301 2017-06-29 08:30:50 +0900 Jimmy Ohn <yongjin.ohn@lge.com> * tools/gst-inspect.c: gst-inspect: Fix memory leak in print_pad_templates_info gst_static_caps_get function returned allocated memory. So, It should be free using gst_caps_unref. https://bugzilla.gnome.org/show_bug.cgi?id=784311 2017-06-29 09:10:04 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: check for ppoll() as well 2017-06-27 09:59:52 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * tools/meson.build: meson: Add configinc as include_directory in tools/ Otherwise when the glib is used as a subproject config.h is the glib one, not ours. 2017-06-23 15:13:16 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * meson.build: meson: Allow using glib as a subproject 2017-06-28 09:54:56 +0200 Xabier Rodriguez Calvar <calvaris@igalia.com> * docs/gst/gstreamer-sections.txt: * gst/gstprotection.c: * gst/gstprotection.h: * win32/common/libgstreamer.def: protection: add function to filter system ids gst_protection_filter_systems_by_available_decryptors() takes an array of strings and returns a new array of strings filtered by the available decryptors for them so the ones you get are the ones that you should be able to decrypt. https://bugzilla.gnome.org/show_bug.cgi?id=770107 2017-06-23 11:11:44 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: fix with-package-name option https://bugzilla.gnome.org/show_bug.cgi?id=784082 2017-06-02 00:52:37 +0200 Matej Knopp <matej.knopp@gmail.com> * gst/gstplugin.c: gstplugin: remove gst prefix when loading plugin on MSVC When building with Meson and MSVC, our plugins don't have a 'libgst' suffix and are just 'gstfoo.dll', so look for that too. https://bugzilla.gnome.org/show_bug.cgi?id=783333 2017-06-21 10:48:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbaseparse.c: baseparse: sinkcaps can be NULL in default caps negotiation This was causing harmless assertion about the unreffed caps not being of type caps. https://bugzilla.gnome.org/show_bug.cgi?id=784041 2017-06-20 11:05:41 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * win32/common/libgstreamer.def: win32: Update .def file 2017-06-14 17:12:32 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: utils: Add a function to get a string representation of GstStateChange API: gst_state_change_get_name https://bugzilla.gnome.org/show_bug.cgi?id=783798 2017-06-15 10:38:29 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstelement.h: * gst/gstpipeline.c: element: Add missing values for "to same" state changes And handle newly added GstStateChange values in GstPipeline https://bugzilla.gnome.org/show_bug.cgi?id=783798 2017-06-20 15:57:47 +0900 Heekyoung Seo <heekyoung.seo@lge.com> * gst/gstutils.c: utils: Fix leak in failed case of regression overflow checking https://bugzilla.gnome.org/show_bug.cgi?id=783978 2017-06-20 16:10:07 +0900 Heekyoung Seo <heekyoung.seo@lge.com> * gst/gstregistrychunks.c: registrychunk: Fix leak in failed case of reading plugin dependency string https://bugzilla.gnome.org/show_bug.cgi?id=783978 2017-06-20 10:00:16 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/gsttimedvaluecontrolsource.c: * libs/gst/controller/gsttimedvaluecontrolsource.h: * win32/common/libgstcontroller.def: controller: Export boxed type copy/free functions for GstControlPoint 2017-06-20 09:57:01 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbaseparse.h: * libs/gst/base/gstflowcombiner.c: * libs/gst/base/gstflowcombiner.h: * win32/common/libgstbase.def: base: Export boxed type copy/free functions for the remaining types 2017-06-16 13:34:00 +0000 Andrejs Vasiljevs <andrejs.vasiljevs@ubnt.com> * libs/gst/net/gstptpclock.c: ptp: Unref timeout GSource for delay requests https://bugzilla.gnome.org/show_bug.cgi?id=783864 2017-06-15 10:51:50 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gsturi.c: * gst/gsturi.h: * tests/check/gst/gsturi.c: * tests/check/meson.build: meson: fix tests build with --werror Need to pass -DGST_DISABLE_DEPRECATED to avoid warnings when testing deprecated API such as gst_uri_construct(). Also remove #ifndef GST_DISABLE_DEPRECATED guard from header file, we don't use those any more for functions, the GST_DEPRECATED_FOR macro is enough. 2017-06-14 17:36:57 +0200 Dimitrios Katsaros <patcherwork@gmail.com> * gst/gsturi.c: * gst/gsturi.h: * tests/check/gst/gsturi.c: gsturi: Fixed incorrect escaping of path as a generic string The gst_uri_construct function was escaping the location string as a generic uri string. This is incorrect since the slash('/') characters are reserved for use in this exact case. The patch changes the escape_string function mode to handle the path correctly. I have deleted the escape_string function since it is no longer being used and have created a unit test for the function. I have also deprecated this function in favour of the GstUri API. https://bugzilla.gnome.org/show_bug.cgi?id=783787 2017-06-07 11:42:28 -0400 Thibault Saunier <thibault.saunier@osg.samsung.com> * tests/check/meson.build: meson: Do not use path separator in test names Avoiding warnings like: WARNING: Target "elements/audioamplify" has a path separator in its name. 2017-05-31 20:40:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Put correct annotations on gst_bin_add() too 2017-05-23 00:51:12 +0200 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesrc.c: basesrc: Hold object lock while updating latency Otherwise in gst_base_src_query_latency(), it ended up sometimes thinking it wasn't -1 when it was actually. 2017-05-22 12:01:41 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstobject.c: object: Add missing annotations to get_value_array() / get_value_g_array() Same as already used in GstControlBinding. 2017-05-21 18:11:36 +0100 Tim-Philipp Müller <tim@centricular.com> * config.h.meson: meson: actually remove config.h.meson as well 2017-05-21 19:16:57 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstprotection.c: protection: Fix annotations for gst_protection_select_system() 2017-05-21 17:04:10 +0200 Olivier Crête <olivier.crete@collabora.com> * gst/gstplugin.c: plugin: Stop plugin symbol name at first . This is because the python plugin ends up named libgstpython.cpython-35m-x86_64-linux-gnu.so so we need to stop at the first dot. https://bugzilla.gnome.org/show_bug.cgi?id=782924 2017-05-21 14:26:01 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * gst/meson.build: * meson.build: meson: don't need config.h.meson any more Meson does the largefile support automatically nowadays, and can generate a config.h from configuration_data() without a template as input. 2017-05-21 09:02:54 +0100 Tim-Philipp Müller <tim@centricular.com> * common: * meson.build: * tests/check/meson.build: meson: make C++ compiler optional It's only used to build tests to see if our headers are C++ clean. 2017-05-20 17:57:39 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/meson.build: meson: check: generate .gir file https://bugzilla.gnome.org/show_bug.cgi?id=782173 2017-05-20 19:42:51 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstparse.c: * gst/gstparse.h: * win32/common/libgstreamer.def: parse: Make gst_parse_context_copy() public for bindings 2017-05-20 16:44:14 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/Makefile.am: tools: dist new gst-stats man page Fixes meson build from tarball. 2017-05-20 16:43:39 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/Makefile.am: Dist meson ptp helper install script Fixes meson build from tarball. 2017-05-20 13:24:18 +0200 Thibault Saunier <thibault.saunier@osg.samsung.com> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks: Handle subclasses in filters even for unhandled/lazy loaded types Using typename in the set of unhandled types instead of the quark so that we also handle subclasses as with other filters. 2017-05-19 19:22:27 +0200 Matthew Waters <matthew@centricular.com> * gst/gstdebugutils.c: debugutils: add missing E character to the legend The E character on pads indicates the presence of the EOS flag. 2017-05-17 21:50:25 +0200 Matej Knopp <matej.knopp@gmail.com> * gst/gstplugin.c: gst-plugin: allow '-' in plugin file name '-' will be translated to underscore when determining symbol name https://bugzilla.gnome.org/show_bug.cgi?id=782756 2016-06-20 15:58:59 +0200 Christoph Reiter <reiter.christoph@gmail.com> * gst/gstbin.c: * tests/check/gst/gstbin.c: * tests/check/gst/gstclock.c: * tests/check/gst/gstsystemclock.c: gst: ref_sink() some more floating references returned by g_object_new() https://bugzilla.gnome.org/show_bug.cgi?id=743062 2017-05-15 18:58:38 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbufferpool.c: * gst/gstdevicemonitor.c: * gst/gststreamcollection.c: * gst/gststreams.c: * gst/gsttracerrecord.c: * gst/gsttracerutils.c: * libs/gst/net/gstnettimeprovider.c: gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent I.e. most of them unfortunately. https://bugzilla.gnome.org/show_bug.cgi?id=743062 2017-05-15 14:34:57 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstallocator.c: allocator: ref_sink() the global sysmem allocator after creation It's not owned by the first one to ask for it, but by this very code. https://bugzilla.gnome.org/show_bug.cgi?id=743062 2017-05-15 14:32:48 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: * gst/gstclock.c: * gst/gstcontrolsource.c: * gst/gstsystemclock.c: * gst/gsttask.c: * gst/gsttaskpool.c: * libs/gst/base/gstcollectpads.c: * libs/gst/check/gsttestclock.c: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gsttriggercontrolsource.c: * libs/gst/net/gstnetclientclock.c: * libs/gst/net/gstptpclock.c: * tests/check/gst/gstcontroller.c: gst: Don't ref_sink() GstObject subclasses in instance_init/constructor This is something bindings can't handle and it causes leaks. Instead move the ref_sink() to the explicit, new() constructors. This means that abstract classes, and anything that can have subclasses, will have to do ref_sink() in their new() function now. Specifically this affects GstClock and GstControlSource. https://bugzilla.gnome.org/show_bug.cgi?id=743062 2017-05-15 14:32:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * gst/gstelement.c: * gst/gstghostpad.c: * gst/gstobject.c: * gst/gstpadtemplate.c: * gst/gstplugin.c: * gst/gstregistry.c: * gst/gststreamcollection.c: * gst/gststreams.c: * gst/gsttracerrecord.c: * gst/gstutils.c: * libs/gst/controller/gstproxycontrolbinding.c: * libs/gst/net/gstnettimeprovider.c: gst: Correctly annotate functions taking floating reference parameters and returning floating references https://bugzilla.gnome.org/show_bug.cgi?id=702960 2017-05-15 14:29:05 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: * gst/gstelement.c: * gst/gstghostpad.c: * gst/gstregistry.c: * gst/gstutils.c: gst: Handle floating references consistently If a function takes a floating reference parameter, it should also be sinked in error cases. Otherwise the function behaves differently between error and normal cases, which is impossible for bindings to handle. https://bugzilla.gnome.org/show_bug.cgi?id=747990 2015-07-10 15:36:59 +0900 Vineeth TM <vineeth.tm@samsung.com> * gst/gstbin.c: * gst/gstelement.c: * gst/gstobject.c: gst: Fix floating reference inconsistencies in error cases If a function takes a floating reference and sinks it, it should also do that in error cases. I.e. call ref_sink() followed by unref(). Otherwise the reference counting behaviour of the function will be different between the good and the error case, and simply inconsistent. https://bugzilla.gnome.org/show_bug.cgi?id=747990 2017-05-16 13:31:06 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstconfig.h.in: Also use default visibility for plugins symbol 2017-05-16 13:29:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * config.h.meson: * configure.ac: * plugins/elements/Makefile.am: * plugins/elements/meson.build: * plugins/tracers/Makefile.am: Remove plugin specific static build option Static and dynamic plugins now have the same interface. The standard --enable-static/--enable-shared toggle are sufficient. 2017-05-16 00:02:11 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/meson.build: meson: fix gstprintf test linking Must link against gstprint helper lib to use private symbol. 2017-05-10 13:03:31 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstconfig.h.in: gstconfig.h: use default visibility for GST_EXPORT for gcc/clang too This will be needed later when we switch to using -fvisibility=hidden. 2017-05-10 13:07:31 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstconfig.h.in: * gst/gstobject.c: * gst/gstobject.h: * gst/gstsegment.c: * gst/gstsegment.h: gst: add GST_DEPRECATED_FOR() and also export deprecated symbols Can't use a #ifndef GST_DISABLE_DEPRECATED guard around deprecated functions any more, as they won't get exported then. Besides, we get a nicer error message from the compiler telling us what function to use instead this way. 2017-05-10 10:56:16 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: * gst/gst.h: * gst/gst_private.h: * gst/gstallocator.h: * gst/gstatomicqueue.h: * gst/gstbin.h: * gst/gstbuffer.h: * gst/gstbufferlist.h: * gst/gstbufferpool.h: * gst/gstbus.h: * gst/gstcaps.h: * gst/gstcapsfeatures.h: * gst/gstchildproxy.h: * gst/gstclock.h: * gst/gstcontext.h: * gst/gstcontrolbinding.h: * gst/gstcontrolsource.h: * gst/gstdatetime.h: * gst/gstdebugutils.h: * gst/gstdevice.h: * gst/gstdevicemonitor.h: * gst/gstdeviceprovider.h: * gst/gstdeviceproviderfactory.h: * gst/gstdynamictypefactory.h: * gst/gstelement.h: * gst/gstelementfactory.h: * gst/gstenumtypes.h.template: * gst/gsterror.h: * gst/gstevent.h: * gst/gstformat.h: * gst/gstghostpad.h: * gst/gstinfo.h: * gst/gstiterator.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstmeta.h: * gst/gstminiobject.h: * gst/gstobject.h: * gst/gstpad.h: * gst/gstpadtemplate.h: * gst/gstparamspecs.h: * gst/gstparse.h: * gst/gstpipeline.h: * gst/gstplugin.h: * gst/gstpluginfeature.h: * gst/gstpoll.h: * gst/gstpreset.h: * gst/gstprotection.h: * gst/gstquery.h: * gst/gstregistry.h: * gst/gstsample.h: * gst/gstsegment.h: * gst/gststreamcollection.h: * gst/gststreams.h: * gst/gststructure.h: * gst/gstsystemclock.h: * gst/gsttaglist.h: * gst/gsttagsetter.h: * gst/gsttask.h: * gst/gsttaskpool.h: * gst/gsttoc.h: * gst/gsttocsetter.h: * gst/gsttracer.h: * gst/gsttracerfactory.h: * gst/gsttracerrecord.h: * gst/gsttypefind.h: * gst/gsttypefindfactory.h: * gst/gsturi.h: * gst/gstutils.h: * gst/gstvalue.h: gst: mark symbols explicitly for export with GST_EXPORT One omission: gst_allocator_sysmem_get_type() was exported but never in any public header file. 2017-05-10 00:11:10 +0100 Tim-Philipp Müller <tim@centricular.com> * common: * libs/gst/controller/Makefile.am: * libs/gst/controller/controller_mkenum.py: * libs/gst/controller/gstargbcontrolbinding.h: * libs/gst/controller/gstdirectcontrolbinding.h: * libs/gst/controller/gstinterpolationcontrolsource.h: * libs/gst/controller/gstlfocontrolsource.h: * libs/gst/controller/gstproxycontrolbinding.h: * libs/gst/controller/gsttimedvaluecontrolsource.h: * libs/gst/controller/gsttriggercontrolsource.h: libs: controller: mark symbols explicitly for export with GST_EXPORT 2017-05-09 16:19:31 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstadapter.h: * libs/gst/base/gstbaseparse.h: * libs/gst/base/gstbasesink.h: * libs/gst/base/gstbasesrc.h: * libs/gst/base/gstbasetransform.h: * libs/gst/base/gstbitreader.h: * libs/gst/base/gstbytereader.h: * libs/gst/base/gstbytewriter.h: * libs/gst/base/gstcollectpads.h: * libs/gst/base/gstdataqueue.h: * libs/gst/base/gstflowcombiner.h: * libs/gst/base/gstpushsrc.h: * libs/gst/base/gstqueuearray.h: * libs/gst/base/gsttypefindhelper.h: libs: base: mark symbols explicitly for export with GST_EXPORT 2017-05-09 16:01:46 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/net/gstnetaddressmeta.h: * libs/gst/net/gstnetclientclock.h: * libs/gst/net/gstnetcontrolmessagemeta.h: * libs/gst/net/gstnettimepacket.h: * libs/gst/net/gstnettimeprovider.h: * libs/gst/net/gstptpclock.h: libs: net: mark symbols explicitly for export with GST_EXPORT 2017-05-13 18:30:27 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * meson_options.txt: meson: add options to set package name and origin https://bugzilla.gnome.org/show_bug.cgi?id=782172 2017-05-13 18:19:05 +0200 Stefan Sauer <ensonic@users.sf.net> * docs/libs/Makefile.am: docs: use the full path to ignore dirs 2017-05-12 17:49:25 +0200 Stefan Sauer <ensonic@users.sf.net> * libs/gst/check/gstharness.c: docs: remove stray ',\' from doc comment 2017-02-25 12:18:14 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbuffer.h: * win32/common/libgstreamer.def: buffer: Add GstReferenceTimestampMeta This is a meta that generically allows to attach additional reference timestamps to a buffer, that don't have to relate to the pipeline clock in any way. Examples of this could be an NTP timestamp when the media was captured, a frame counter on the capture side or the (local) UNIX timestamp when the media was captured. https://bugzilla.gnome.org/show_bug.cgi?id=779213 2017-05-09 16:29:21 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: bump meson version requirement to 0.40.1 2016-12-15 12:48:55 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbus.c: * gst/gstbus.h: * win32/common/libgstreamer.def: bus: Add function to get the file descriptor of the bus This is useful for integration with other event loops that work by polling file descriptors. G_IO_IN will always be set whenever a message is available currently. https://bugzilla.gnome.org/show_bug.cgi?id=776126 2017-02-27 21:38:11 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gst_private.h: * gst/gstplugin.c: * gst/gstplugin.h: plugin: Unify static and dynamic plugin interface This patch changes the entry point of each plugin in order to unify the interface for static and dynamic plugin. What we do is replace the current static plugin interface and extend the dymamic one. The plugin entry was a C structure, name "gst_plugin_desc". With this patch, the interface is now: GstPpluginDesc *gst_plugin_<name>_get_desc(void); The reason we change the C structure into function, is that it is potentially more common to have function pointers, avoiding possible binding language limitation. Additionally to that. This change prevents the symbols from clashing between plugins, allowing to build once the plugin (assuming you have -fPIC). On the plugin loader side, we symply derive the shared object basename to extract the plugin name. If this symbol is not found, we fallback to gst_plugin_desc for backward compatibility. This has one side effect, which is that the shared objects now need to be named after their plugin name. This is generally the case with few exceptions. The benifit of this limitation is that you can control the gst_plugin_<name>_desc clash at file level. https://bugzilla.gnome.org/show_bug.cgi?id=779344 2017-05-09 09:24:43 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/meson.build: meson: fix search path for setcap 2017-05-07 11:17:22 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstdebugutils.c: debugutils: make local variable static 2017-05-05 12:23:43 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/ptp_helper_post_install.sh: meson: fail silently in ptp helper post install script .. in case permissions/capabilities could not be set. 2017-05-05 12:02:33 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/meson.build: meson: use cc.find_library() find_library() was deprecated and removed in later versions. 2017-05-05 11:49:08 +0100 Tim-Philipp Müller <tim@centricular.com> * config.h.meson: * gst/meson.build: * libs/gst/helpers/meson.build: * libs/gst/helpers/ptp_helper_post_install.sh: * meson.build: * meson_options.txt: meson: add gst-ptp-helper https://bugzilla.gnome.org/show_bug.cgi?id=774418 2017-05-05 09:10:56 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: fix indentation No tabs please. 2017-05-05 00:45:06 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/helpers/Makefile.am: helpers: remove old cruft from CLEANFILES These files are no longer built, so no need to clean them. 2017-04-29 11:30:54 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: * libs/gst/base/Makefile.am: * libs/gst/check/Makefile.am: * libs/gst/controller/Makefile.am: * libs/gst/net/Makefile.am: * meson.build: g-i: no need to load registry in g-i scanner 2017-05-04 21:37:28 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * gst-element-check-1.0.m4: Don't generate gst-element-check-1.0.m4 on the fly and fix meson build This will interfere with 'git pull'. You will have to remove the old generated gst-element-check-1.0.m4 manually if you're pulling on a dirty build directory, sorry. https://bugzilla.gnome.org/show_bug.cgi?id=782174 2017-05-04 21:06:21 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: install gst-element-check-1.0.m4 https://bugzilla.gnome.org/show_bug.cgi?id=782174 2017-04-30 12:10:49 +0900 Yasushi SHOJI <yashi@atmark-techno.com> * libs/gst/check/gstharness.c: harness: Abort when failed to construct the specified pipeline gst_harness_new_parse() returns without any error even if it doesn't find the specified element. Then a succeeding call to gst_harness_set_sink_caps_str() causes an error like this: Unexpected critical/warning: gst_pad_push_event: assertion 'GST_IS_PAD (pad)' failed This is a bit cryptic and doesn't give users any clue what was going on. gst_harness_new_parse() calls gst_harness_add_parse() with a newly created empty harness and the given pipeline description string, but gst_harness_add_parse() does not have a way to propagate the error back to the caller. Since the function, gst_harness_add_parse(), is a public API, it's not a good idea to change its signature. This patch, instead, makes the function to g_error() when it discovers any error. With this change the same error prints: ** (myelement-test:25345): ERROR **: Unable to create pipeline 'bin.( myelement )': no element "myelement" The current implementation of gst_parse_launch_full() doesn't return partially constructed pipeline when GST_PARSE_FLAG_FATAL_ERRORS is specified, however, this patch also adds a check for it. https://bugzilla.gnome.org/show_bug.cgi?id=781958 2017-05-04 18:59:14 +0300 Sebastian Dröge <sebastian@centricular.com> * configure.ac: * meson.build: Back to development === release 1.12.0 === 2017-05-04 15:36:55 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * meson.build: Release 1.12.0 2017-05-04 15:00:16 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/ast.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2017-05-02 14:35:50 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstmessage.c: message: Don't pass a NULL debug string to g_utf8_validate() g_utf8_validate() crashes on NULL, but NULL is valid for the debug string nonetheless. 2017-05-02 14:27:14 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstadapter.c: adapter: Check if meta transform_func is NULL before using it https://bugzilla.gnome.org/show_bug.cgi?id=782050 2017-05-02 10:32:54 +0200 Frédéric Dalleau <frederic.dalleau@collabora.com> * libs/gst/base/gstbasetransform.c: basetransform: Check if meta transform_func is NULL before using it An untested pointer segfaulted in webkit while playing video on imx6 sabrelite. It turned out that the imx plugin didn't implement the meta transform function. The following GST_DEBUG trace was visible: gstbasetransform.c:1779:foreach_metadata:<conv2> copy metadata GstImxVpuBufferMetaAPI Thread 26 vqueue:src received signal SIGSEGV, Segmentation fault. (gdb) bt 0x00000000 in ?? () 0x73f8d7d8 in foreach_metadata (inbuf=0xc9b020, meta=0x474b2490, user_data=<optimized out>) at gstbasetransform.c:1781 0x73eb3ea8 in gst_buffer_foreach_meta (buffer=buffer@entry=0xc9b020, func=0x73f8d705 <foreach_metadata>, user_data=user_data@entry=0x474b24d4) at gstbuffer.c:2234 https://bugzilla.gnome.org/show_bug.cgi?id=782050 2017-04-28 19:43:49 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/gst.c: gst: check non-null before dereference It is possible to use gst_deinit() without registering the base classes. For example, when using gst_init_get_option_group() and call the program with an invalid parameter. In that case, gst_deinit() will lead to a segmentation fault, since there is a dereference to a pointer that is null. This patch validates if the type is non-null before dereferencing it. https://bugzilla.gnome.org/show_bug.cgi?id=781914 2017-04-28 11:57:41 +0200 Nicola Murino <nicola.murino@gmail.com> * scripts/gst-uninstalled: gst-uninstalled: add opencv to bad libs https://bugzilla.gnome.org/show_bug.cgi?id=781889 === release 1.11.91 === 2017-04-27 17:24:05 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * meson.build: Release 1.11.91 2017-04-27 15:48:33 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/ast.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/fur.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2017-04-27 15:21:26 +0300 Sebastian Dröge <sebastian@centricular.com> * po/LINGUAS: * po/ast.po: * po/fur.po: po: Update translations 2017-04-24 20:27:33 +0100 Tim-Philipp Müller <tim@centricular.com> * common: Automatic update of common submodule From 60aeef6 to 48a5d85 2017-04-21 15:04:32 +0200 Koop Mast <kwm@rainbow-runner.nl> * tools/meson.build: Meson: also build and install gst-stats-1.0 and it's man page. https://bugzilla.gnome.org/show_bug.cgi?id=781585 2017-04-21 15:03:18 +0200 Koop Mast <kwm@rainbow-runner.nl> * tools/gst-stats-1.0.1: Add very simple man page for gst-stats. https://bugzilla.gnome.org/show_bug.cgi?id=781585 2017-04-21 10:51:59 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstelement.h: doc: Fix some doctsing making GI happy 2017-04-06 17:51:29 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstelement.h: doc: Fix GstChangeState docstring 2017-04-19 17:31:38 +0100 Sebastian Dröge <sebastian@centricular.com> * gst/gstinfo.c: info: Move debug output in for_each_threshold_by_entry() to TRACE level It's otherwise appearing many, many times in logs and usually is nothing you're interested in. 2017-03-31 12:22:00 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * tests/check/pipelines/seek.c: tests: fix message leak in seek test https://bugzilla.gnome.org/show_bug.cgi?id=780757 2017-03-29 19:26:53 +0900 Yasushi SHOJI <yashi@atmark-techno.com> * libs/gst/base/gstbasetransform.c: basetransform: fix typo in debug log output This unbalanced closing parenthesis is leftover from the commit 8b739d91e7. It used to wrap the caps but we don't seem to do that in the current code. So, just remove it. No functionality has been changed. https://bugzilla.gnome.org/show_bug.cgi?id=781484 2017-04-10 16:28:57 +0200 Rico Tzschichholz <ricotz@ubuntu.com> * gst/meson.build: * libs/gst/base/meson.build: * libs/gst/controller/meson.build: * libs/gst/net/meson.build: meson: A couple for GIR-generation fixes 2017-04-12 09:48:53 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/controller/meson.build: meson: Add controller enum file as generated sources Avoiding build failure like https://ci.appveyor.com/project/thiblahute/gst-build-ge9m5/build/1.0.2857 2017-04-11 20:19:03 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: meson: dist new meson build script 2017-04-11 20:16:53 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/controller/controller.h: controller: include new proxycontrolbinding header And fix includes in docs to just include the main header (the include for the proxycontrolbinding was wrong in the docs). 2017-04-11 20:16:41 +0100 Tim-Philipp Müller <tim@centricular.com> * .gitignore: .gitignore: ignore more 2017-04-11 11:52:20 -0400 Olivier Crete <olivier.crete@collabora.com> * gst/parse/meson.build: meson: Only check the first parameter https://bugzilla.gnome.org/show_bug.cgi?id=781155 2017-04-11 10:17:40 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/parse/meson.build: meson: Check bison and flex are recent enough https://bugzilla.gnome.org/show_bug.cgi?id=781155 2017-04-10 23:48:53 +0100 Tim-Philipp Müller <tim@centricular.com> * common: Automatic update of common submodule From 39ac2f5 to 60aeef6 2017-04-10 12:24:06 -0400 Olivier Crête <olivier.crete@collabora.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Accept NULL as a structure Some GstStructure properties default to NULL, so it should be a supported value. With unit test. 2017-04-10 14:26:42 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/Makefile.am: controller: Fix build with srcdir!=builddir 2017-04-10 13:52:17 +0300 Rico Tzschichholz <ricotz@t-online.de> * libs/gst/controller/Makefile.am: controller: Add missing sources/headers to the GIR build 2017-04-09 12:16:39 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/meson.build: meson: And actually make the controller mkenums rules work 2017-04-09 12:09:33 +0300 Sebastian Dröge <sebastian@centricular.com> * meson.build: meson: Add check for glib-mkenums 2017-04-09 12:02:43 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/Makefile.am: * libs/gst/controller/controller_mkenum.py: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstinterpolationcontrolsource.h: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gstlfocontrolsource.h: * libs/gst/controller/meson.build: controller: Generate GLib enums automatically 2017-04-04 17:53:39 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbufferpool.c: * gst/gstbus.c: * gst/gstdeviceproviderfactory.c: * gst/gstdynamictypefactory.c: * gst/gstelementfactory.c: * gst/gstplugin.c: * gst/gstpluginloader.c: * gst/gstregistry.c: * gst/gstregistrychunks.c: * gst/gsttask.c: * gst/gsttaskpool.c: * gst/gsttracer.c: * gst/gsttracerrecord.c: * gst/gsttypefind.c: * libs/gst/base/gstadapter.c: * libs/gst/base/gstdataqueue.c: * libs/gst/base/gstindex.c: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gsttriggercontrolsource.c: * tests/check/gst/gstcontroller.c: * tests/check/gst/gstelementfactory.c: Don't use deprecated g_object_newv() Use g_object_new() instead which nowadays has a shortcut for the no-properties check. It still does an extra GType check in the function guard, but there's a pending patch to remove that and it's hardly going to be a performance issue in practice, even less so on a system that's compiled without run-time checks. Alternative would be to move to the new g_object_new_properties() with a fallback define for older glib versions, but it makes the code look more unwieldy and doesn't seem worth it. Fixes deprecation warnings when building against newer GLib versions. https://bugzilla.gnome.org/show_bug.cgi?id=780903 2017-04-07 13:49:29 -0400 Olivier Crête <olivier.crete@collabora.com> * tests/check/gst/gststructure.c: test: Add test for serializing/deserializing NULL strings === release 1.11.90 === 2017-04-07 16:30:35 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gstreamer-plugins.args: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * meson.build: Release 1.11.90 2017-04-07 15:04:11 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2017-03-08 12:09:45 -0500 Olivier Crête <olivier.crete@collabora.com> * gst/gststructure.c: structure: Don't print warning on NULL strings or pointers Putting NULL for those is a valid serialization for the NULL value. 2017-04-05 16:32:38 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.h: gst: Use GstClockTimeDiff instead of GstClockTime as type for GST_SECOND and friends They were (signed!) gint64 before because of G_GINT64_CONSTANT() already and they are actually used in signed calculations. With this change we at least ensure that an integer type of the correct size is used for GI (it was using gint before). 2017-04-05 15:46:26 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.h: * gst/gstelementfactory.h: * gst/gstevent.h: * gst/gstquery.h: gst: Update some more types and values of combined-flags constants 2017-04-05 14:45:00 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.h: * gst/gstmemory.h: * gst/gstminiobject.h: gst: Cast combined-flags constants to their respective target types This makes C++ compilers a bit more happy without having the user of the constants cast. It also provides the correct type information to GI. https://bugzilla.gnome.org/show_bug.cgi?id=780923 2017-04-05 14:42:16 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.h: * gst/gstmemory.h: * gst/gstminiobject.h: gst: Set values and types for combined-flags constants in GI annotations 2017-04-05 14:26:33 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstvalue.h: value: Properly set value and type for GST_FLAG_SET_MASK_EXACT in GI annotations Storing a -1 inside an unsigned integer confuses GIR based bindings generators. 2017-04-04 16:28:45 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * data/bash-completion/helpers/gst.in: completion: Try to avoid parsing summary In GES, the summary refers to options that are only available when built against gst-valdiate. Those where picked by our regex. This patch add a initial grep to try and filter-out as best as possible the content to which we will extract the command list. 2017-04-04 14:25:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * data/bash-completion/helpers/meson.build: * data/meson.build: * libs/gst/helpers/meson.build: * meson.build: meson: Add bash completion support 2017-04-04 13:42:50 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * configure.ac: * data/Makefile.am: * data/bash-completion/completions/gst-inspect-1.0: * data/bash-completion/completions/gst-launch-1.0: * data/bash-completion/helpers/.gitignore: * data/bash-completion/helpers/gst.in: * libs/gst/helpers/.gitignore: * libs/gst/helpers/Makefile.am: * pkgconfig/gstreamer-uninstalled.pc.in: * pkgconfig/gstreamer.pc.in: completion: Place the completion helper in libexec This patch reorganize the bash completion scripts in order to install the binary helper (gst-completion-helper) in libexec path rather then share folder. Most Linux hierarchy compliance requires that no binary executable are placed in share. We also cleanup the unused .pc entries and remove copy pasted parts of the script. Note that other project including the common helper, should now use $_GST_HELPER to read the binary executable gst-completion-helper. This helper is not longer version, as it is placed in a versionned subfolder (libexec/gstreamer.10) just like the other helpers (scanner and ptp). 2017-03-31 11:22:49 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * gst/gstvalue.c: gstvalue: fix GstValue leak in structure_field_union_into https://bugzilla.gnome.org/show_bug.cgi?id=780751 2017-03-31 10:38:15 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * gst/gststreamcollection.c: streamcollection: fix racy user-after-free The issue happens when the structure is printed by the logging subsystem: the object is included in the log, and this will cause the full object printout to be done there. However, after dispose, the queue was already cleared, so the access to it (to print the object) would assert, as the queue was already freed. The patch changes it so that the queue is merely empty, and only freed in _finalize. https://bugzilla.gnome.org/show_bug.cgi?id=776293 2017-03-27 18:30:35 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstdebugutils.c: debugutils: add pad EOS flag in pipeline dot file dumps But only if set. Helps debug issues with EOS propagation. 2017-03-27 18:27:59 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/gst-launch.c: tools: gst-launch: print structure property notifies nicer One less layer of escaping, but still lots of ugly \. 2017-03-24 14:33:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * win32/common/libgstreamer.def: Fix win32 libgstreamer.def ordering This should fix make distcheck 2017-03-15 17:31:39 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstparamspecs.c: paramspec: Fix array validation logic A paramspec validation should modify the content to match what the spec requires and return TURE if a modification happened. This previous implementation would only fix the first element of the array and return. It was also return TRUE for empty array, while no modification was needed. https://bugzilla.gnome.org/show_bug.cgi?id=780111 2017-03-22 13:35:32 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstparamspecs.c: array/fraction: In param types, use get_type() function directly The GST_TYPE macro points to global variables initialized by the first call to get_type. This is not an issue if you call gst_init() but unfortunatly pygi will need to acces the param type before init can be called. This removes an assertion. 2017-03-22 13:33:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstparamspecs.c: fraction/array: Make get_type() thread safe Those aren't suppose to be called from multiple thread, but all fundamental get_type() function are thread safe. Fix it to be consistent and it may help if we change the typing mechanism in GStreamer come day. 2017-03-20 16:46:33 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: * win32/common/libgstreamer.def: gstutils: Add helpers to get/set array properties This is to help bindings access properties of type GST_TYPE_ARRAY. This function will get/set the property and convert form/to GValueArray. New API: gst_util_set_object_array gst_util_get_object_array https://bugzilla.gnome.org/show_bug.cgi?id=753754 2017-03-20 15:50:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * docs/gst/gstreamer-sections.txt: * gst/gststructure.c: * gst/gststructure.h: * win32/common/libgstreamer.def: structure: Add get/set_array/list using GValueArray This adds a binding friendly interface to get and set arrays and list into GstStructure. New API: - gst_structure_set_array - gst_structure_set_list - gst_structure_get_array - gst_structure_get_list https://bugzilla.gnome.org/show_bug.cgi?id=753754 2017-03-20 15:40:25 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: gstvalue: Add transformation to/from GValueArray This allow transforming a GValue of type G_TYPE_VALUE_ARRAY to and from GST_TYPE_ARRAY/LIST. https://bugzilla.gnome.org/show_bug.cgi?id=753754 2017-03-24 14:21:30 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstqueuearray.h: queuearray: Add G_BEGIN_DECLS and G_END_DECLS to make it usable from C++ code 2017-03-24 17:53:31 +1100 Jan Schmidt <jan@centricular.com> * gst/gstparamspecs.c: paramspecs: Use gst_value_array_get_type() for GstParamSpecArray type When registering GstParamSpecArray, use the gst_value_array_get_type() function to get the type, rather than the GST_TYPE_ARRAY macro, which gets it from the _gst_value_array_type, which is in turn only initialised during gst_init() Fixes criticals with (python) bindings that look up all the types from the gobject-introspection info as soon as they are imported. /usr/lib64/python3.5/site-packages/gi/module.py:178: Warning: g_param_type_register_static: assertion 'g_type_name (pspec_info->value_type) != NULL' failed g_type = info.get_g_type() /usr/lib64/python3.5/site-packages/gi/module.py:212: Warning: g_type_get_qdata: assertion 'node != NULL' failed type_ = g_type.pytype /usr/lib64/python3.5/site-packages/gi/module.py:226: Warning: g_type_get_qdata: assertion 'node != NULL' failed g_type.pytype = wrapper /usr/lib64/python3.5/site-packages/gi/module.py:226: Warning: g_type_set_qdata: assertion 'node != NULL' failed g_type.pytype = wrapper 2017-03-17 22:32:19 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Don't forget error returns when processing more If parsing returns a non-OK flow return in the middle of processing an input buffer, don't overwrite that if a later return is OK again - the subclass might return not-linked in the middle, and then discard subsequent data without pushing while returning OK. A later success doesn't invalidate the earlier failure, but we should continue processing after not-linked, so as to keep parse state consistent. https://bugzilla.gnome.org/show_bug.cgi?id=779831 2017-03-20 16:54:22 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-launch-1.0.1: tools: replace mentions of 'mad' on the gst-launch-1.0 man page The 'mad' plugin has been removed. Mention mpg123audiodec instead. https://bugzilla.gnome.org/show_bug.cgi?id=776140 2017-03-13 11:08:01 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: fix union of int range and int when extending on a side The internal representation uses bounds scaled by the step Add tests to catch those cases 2017-03-14 22:18:36 -0700 Thiago Santos <thiagossantos@gmail.com> * plugins/elements/gstqueue.c: queue: avoid return flushing if we have a not-linked Return the correct flow return instead of returning always flushing. This would cause queue to convert not-linked to flushing and making upstream elements stop. Based on the previous patch for queue2. https://bugzilla.gnome.org/show_bug.cgi?id=776999 2017-01-22 11:26:56 -0300 Thiago Santos <thiagossantos@gmail.com> * plugins/elements/gstqueue2.c: queue2: avoid return flushing if we have a not-linked Return the correct flow return instead of returning always flushing. This would cause queue2 to convert not-linked to flushing and making upstream elements stop. https://bugzilla.gnome.org/show_bug.cgi?id=776999 2016-09-18 12:02:54 -0300 Thiago Santos <thiagossantos@gmail.com> * tests/check/gst/gstbin.c: tests: bin: add more tests for suppressed flags Add tests to confirm flags are persisted even after removing elements that have those suppressed flags 2017-03-10 10:13:05 +0100 Wim Taymans <wtaymans@redhat.com> * libs/gst/check/gstharness.c: * plugins/elements/gstdownloadbuffer.c: buffer: handle gst_buffer_map failures 2017-03-10 10:12:49 +0100 Wim Taymans <wtaymans@redhat.com> * plugins/elements/gstdownloadbuffer.c: downloadbuffer: unlock mutex in error case 2017-03-09 12:09:57 +1100 Jan Schmidt <jan@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstcaps.c: * tests/check/gst/gststructure.c: gstvalue: Do more checks when guessing at flagset strings If guessing that a string matches a flagset, be more thorough at checking that the string following a string of hex:hex: actually looks like a flag set string. Add some unit tests to catch more cases. https://bugzilla.gnome.org/show_bug.cgi?id=779755 2017-03-09 12:09:57 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstmultiqueue.c: * plugins/elements/gstmultiqueue.h: multiqueue: Make min-interleave-time a configurable property Remove a FIXME about making the minimum interleave buffering a configurable property 2017-03-08 14:51:42 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstelementfactory.c: elementfactory: promote factory not found log message to WARNING In most cases people really want to know when an element could not be created. 2017-03-07 08:21:48 +0900 Seungha Yang <sh.yang@lge.com> * plugins/elements/gstinputselector.c: inputselector: Always proxy position/duration query active-pad switch causes reconfigure event with lock taken, and upstream element might query the current position or duration before returning the reconfigure event. Meanwhile, gst_input_selector_get_linked_pad() is used to get srcpad inside of default query handle, and it takes also lock. Since inputselector is still locked by active-pad switch, and so the query cannot be handled further. https://bugzilla.gnome.org/show_bug.cgi?id=775445 2017-03-03 12:53:26 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.h: info: document that logging macros don't need newlines at the end https://bugzilla.gnome.org/show_bug.cgi?id=779459 2017-02-24 21:35:27 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstpad.c: pad: add since marker to docs for new API 2017-02-24 21:33:49 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update .def file for new API 2017-02-24 10:23:01 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstregistry.c: registry: Only scan plugin files that end with an extension Not file that would for some reason end with 'so' or 'dll', etc... https://bugzilla.gnome.org/show_bug.cgi?id=779175 2017-02-17 15:48:17 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * docs/gst/gstreamer-sections.txt: * gst/gstpad.c: * gst/gstpad.h: pad: Add API to get the current state of a task Avoiding the user to need to deal with the locking himself etc. API: gst_pad_task_get_state https://bugzilla.gnome.org/show_bug.cgi?id=778830 2017-02-13 15:18:59 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/meson.build: * meson.build: * meson_options.txt: meson: Add an option to disable usage of libunwind Fixes https://bugzilla.gnome.org/show_bug.cgi?id=778193 2017-02-24 15:59:35 +0200 Sebastian Dröge <sebastian@centricular.com> * meson.build: meson: Update version 2017-02-24 15:37:30 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.11.2 === 2017-02-24 15:06:46 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gstreamer-plugins.args: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: Release 1.11.2 2017-02-24 12:44:17 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2017-02-23 20:52:39 +0200 Vivia Nikolaidou <vivia@toolsonair.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Add deserialization for arrays/lists outside GstStructures This is mostly useful for properties of those types when used in gst-launch or similar. https://bugzilla.gnome.org/show_bug.cgi?id=777375 2017-02-23 20:50:38 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstvalue.c: value: Add a type abbreviation for GstFlagSet in serialization 2017-02-23 20:47:30 +0200 Vivia Nikolaidou <vivia@toolsonair.com> * gst/gst_private.h: * gst/gststructure.c: * gst/gstvalue.c: value: Always add the type name to elements when serializing arrays/lists But only when serializing outside of GstStructures, because in case of GstStructure the type is already preprended to the array/list and the GstStructure API makes sure that they have the same "generic" type so deserialization works properly. This keeps serialization of GstStructures the same as before, and the GstCaps unit tests already test for that. However when serializing standalone arrays/lists get the types added now. 2017-02-23 20:22:03 +0200 Vivia Nikolaidou <vivia@toolsonair.com> * gst/gst_private.h: * gst/gststructure.c: * gst/gstvalue.c: value: Move list/array serialization/deserialization functions from GstStructure to GstValue https://bugzilla.gnome.org/show_bug.cgi?id=777375 2017-02-23 20:16:17 +0200 Vivia Nikolaidou <vivia@toolsonair.com> * gst/gstparamspecs.c: * gst/gstparamspecs.h: * win32/common/libgstreamer.def: paramspecs: Add GstParamSpecArray for GST_TYPE_ARRAY typed properties These are mostly useful to get our automatic serialization/deserialization from strings and simple usage from gst-launch or similar. https://bugzilla.gnome.org/show_bug.cgi?id=777375 2017-02-21 20:23:51 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbytereader.c: * tests/check/libs/bytereader.c: bytereader: fix peek value when scanning for 00 00 01 with non-0 offset We would add the offset a second time in _scan_for_start_code() when we found a result, but it's already been added to the data pointer at the beginning of _masked_scan_uint32_peek(), so the peeked value would be wrong if the initial offset was >0, and we would potentially read memory out-of-bounds. Add unit test for all of this. https://bugzilla.gnome.org/show_bug.cgi?id=778365 2017-02-20 12:16:32 +0100 Wim Taymans <wtaymans@redhat.com> * gst/gstinfo.h: info: put () around macro arguments Put braces around macro arguments or else we might run into problems with operater precedence. 2017-02-20 10:45:57 +0100 Wim Taymans <wtaymans@redhat.com> * gst/gstdeviceproviderfactory.c: deviceproviderfactory: ignore empty classes 2017-02-20 10:25:50 +0100 Wim Taymans <wtaymans@redhat.com> * gst/gstdeviceproviderfactory.c: deviceproviderfactory: compare class against NULL gstdeviceproviderfactory.c:501:20: error: comparison between pointer and zero character constant [-Werror=pointer-compare] if (classes[0] == '\0') 2017-02-18 16:49:40 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: meson: Fix build with latest upstream git Trivial incorrect include_directories() call 2017-02-18 10:03:24 +0100 Peter Korsgaard <peter@korsgaard.com> * gst/gstconfig.h.in: gstconfig: Fix unaligned access support for the openrisc architecture Teach gstconfig.h.in about the openrisc (or1k) architecture. Fixes buildroot autobuild failure: http://autobuild.buildroot.net/results/717/717d78ce0935749f477bdf3133b6f20057a28c01/build-end.log https://bugzilla.gnome.org/show_bug.cgi?id=778866 2017-02-15 21:37:31 +0100 Stefan Sauer <ensonic@users.sf.net> * libs/gst/base/gstbasesink.c: gstbasesink: xref symbol in docs 2017-02-15 20:58:49 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstpad.h: pad: revert the content changes from previous commit The default behaviour when returning GST_PAD_PROBE_OK is unrelated to the other return code. 2017-02-15 20:37:40 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstpad.h: pad: fix docs for GstPadProbeReturn There is no 'block' value, but we have 'drop'. Also fix the markup; it is '%' to link to constants (and enum values). 2016-10-24 22:47:29 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: meson: dist meson build files Ship meson build files in tarballs, so people who use tarballs in their builds can start playing with meson already. 2017-01-31 09:55:59 +0000 Julien Isorce <jisorce@oblong.com> * tests/check/pipelines/seek.c: tests: add 2 unit tests for non-flush seek with gstbaseparse The unit test defines a test parse element that inherit from GstBaseParse. The test pipeline is: fakesrc ! testparse ! fakesink sync=1 Before the fix b2c05cac8 the first new test would have fail because the pipeline would have wait doing nothing just after proceeded the seek event. The second new test would have fail because the pipeline would have played the media instantly just after proceeded the seek event (like if sync was FALSE on the sink). https://bugzilla.gnome.org/show_bug.cgi?id=777780 2017-01-31 21:19:18 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/parse/grammar.y: parse: Don't translate the "bin" element name Otherwise we won't be able to create bins, there is no element called "Behälter" if you're using a German locale. https://bugzilla.gnome.org/show_bug.cgi?id=777998 2016-04-15 20:54:42 +0900 Seungha Yang <sh.yang@lge.com> * gst/gstsegment.c: * tests/check/gst/gstsegment.c: segment: Modifiy inside segment condition There is a special case that segment_start == segment_stop == start. It's inside of segment https://bugzilla.gnome.org/show_bug.cgi?id=764707 2017-01-26 16:35:27 +0000 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstinfo.c: info: Check libunwind return codes 2017-01-18 18:16:26 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/controller/meson.build: * libs/gst/net/meson.build: meson: libs: Add gir to the source list of the dependency 2017-01-16 11:26:16 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gst.c: * gst/gstallocator.c: * gst/gstbin.c: * gst/gstbuffer.c: * gst/gstbufferlist.c: * gst/gstbufferpool.c: * gst/gstbufferpool.h: * gst/gstbus.c: * gst/gstcaps.c: * gst/gstcapsfeatures.c: * gst/gstchildproxy.c: * gst/gstclock.c: * gst/gstclock.h: * gst/gstcompat.h: * gst/gstcontext.c: * gst/gstcontrolbinding.c: * gst/gstcontrolsource.c: * gst/gstdebugutils.h: * gst/gstdevice.c: * gst/gstdevicemonitor.c: * gst/gstdeviceprovider.c: * gst/gstdeviceproviderfactory.c: * gst/gstdynamictypefactory.c: * gst/gstelement.c: * gst/gstelement.h: * gst/gstelementfactory.c: * gst/gsterror.c: * gst/gstevent.c: * gst/gstformat.c: * gst/gstghostpad.c: * gst/gstinfo.c: * gst/gstinfo.h: * gst/gstiterator.c: * gst/gstmemory.c: * gst/gstmessage.c: * gst/gstmeta.c: * gst/gstminiobject.c: * gst/gstobject.c: * gst/gstpad.c: * gst/gstpad.h: * gst/gstpadtemplate.c: * gst/gstparamspecs.c: * gst/gstparse.c: * gst/gstpipeline.c: * gst/gstplugin.c: * gst/gstpluginfeature.c: * gst/gstpoll.c: * gst/gstpreset.c: * gst/gstprotection.c: * gst/gstquery.c: * gst/gstregistry.c: * gst/gstsample.c: * gst/gstsegment.c: * gst/gststreamcollection.c: * gst/gststreams.c: * gst/gststructure.c: * gst/gstsystemclock.c: * gst/gsttaglist.c: * gst/gsttagsetter.c: * gst/gsttask.c: * gst/gsttaskpool.c: * gst/gsttoc.c: * gst/gsttocsetter.c: * gst/gsttracer.c: * gst/gsttracerfactory.c: * gst/gsttracerrecord.c: * gst/gsttypefind.c: * gst/gsttypefindfactory.c: * gst/gsturi.c: * gst/gstutils.c: * gst/gstvalue.c: * gst/gstvalue.h: * libs/gst/base/gstadapter.c: * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: * libs/gst/base/gstbasetransform.c: * libs/gst/base/gstbasetransform.h: * libs/gst/base/gstbitreader.c: * libs/gst/base/gstbytereader.c: * libs/gst/base/gstbytewriter.c: * libs/gst/base/gstcollectpads.c: * libs/gst/base/gstdataqueue.c: * libs/gst/base/gstdataqueue.h: * libs/gst/base/gstflowcombiner.c: * libs/gst/base/gstindex.c: * libs/gst/base/gstpushsrc.c: * libs/gst/base/gstqueuearray.c: * libs/gst/base/gsttypefindhelper.c: * libs/gst/check/gstbufferstraw.c: * libs/gst/check/gstcheck.c: * libs/gst/check/gstconsistencychecker.c: * libs/gst/check/gstharness.c: * libs/gst/check/gsttestclock.c: * libs/gst/controller/gstargbcontrolbinding.c: * libs/gst/controller/gstdirectcontrolbinding.c: * libs/gst/controller/gstinterpolationcontrolsource.c: * libs/gst/controller/gstlfocontrolsource.c: * libs/gst/controller/gstproxycontrolbinding.c: * libs/gst/controller/gsttimedvaluecontrolsource.c: * libs/gst/controller/gsttriggercontrolsource.c: * libs/gst/net/gstnetaddressmeta.c: * libs/gst/net/gstnetclientclock.c: * libs/gst/net/gstnetcontrolmessagemeta.c: * libs/gst/net/gstnettimepacket.c: * libs/gst/net/gstnettimeprovider.c: * libs/gst/net/gstptpclock.c: * plugins/elements/gstcapsfilter.c: * plugins/elements/gstconcat.c: * plugins/elements/gstdataurisrc.c: * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfakesrc.h: * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsrc.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesrc.c: * plugins/elements/gstfunnel.c: * plugins/elements/gstidentity.c: * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstoutputselector.c: * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: * plugins/elements/gststreamiddemux.c: * plugins/elements/gsttee.c: * plugins/elements/gsttypefindelement.c: * plugins/elements/gstvalve.c: Port gtk-doc comments to their equivalent markdown syntax Modernizing our documentation and preparing a possible move to hotdoc. This commits also adds missing @title metadatas to all SECTIONs 2017-01-11 17:25:08 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstbuffer.h: * gst/gstcontrolbinding.h: * gst/gstelement.h: * gst/gstevent.h: * gst/gstmemory.h: * gst/gstmessage.h: * gst/gstmeta.h: * gst/gstquery.h: * gst/gststreamcollection.h: * gst/gststreams.h: * gst/gsttracer.h: * gst/gsturi.h: gst: Fix includes so that files can be built separately It used to work but it has broke in the 1.10 cycle. 2017-01-18 10:56:38 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstpoll.c: gstpoll: Encode in utf-8 2017-01-26 15:32:31 -0800 Brendan Shanks <brendan.shanks@teradek.com> * gst/gststreamcollection.h: * gst/gststreams.h: GstStream/GstStreamCollection: add g_autoptr() support https://bugzilla.gnome.org/show_bug.cgi?id=777810 2017-01-26 16:51:21 +0000 Julien Isorce <jisorce@oblong.com> * libs/gst/base/gstbaseparse.c: baseparse: correctly handle non-flush seek Otherwise when seeking/looping to the start when reaching the end, the sink waits for the duration of the stream. So the user hears nothing for the duration of the stream before it actually loop again. See example attached to the bug for that. Existing test: gst-plugins-good/tests/icles/test-segment-seeks foo.flac Without the patch the user hears a crack/cut at each seek. https://bugzilla.gnome.org/show_bug.cgi?id=777780 2016-05-24 14:57:54 +0200 Stian Selnes <stian@pexip.com> * libs/gst/check/Makefile.am: * libs/gst/check/gstcheck.c: * libs/gst/check/gstcheck.h: check: Add API to filter g_warning/g_critical etc New API functions to filter log messages before they are processed by GstCheck. This can be used to discard specific messages that are accepted by the test or to add callbacks that test specific messages. Default bevavior when no callback is given to a filter is to discard the message, because it does not makes sense to have a filter with no callback which does not discard; that would be a noop. Discarded messages will in addition to bypass the GstCheck handling also return to GLib that the message is not fatal if it occurs. https://bugzilla.gnome.org/show_bug.cgi?id=773091 2017-01-18 22:39:33 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstbin.c: bin: update the docs for the event forwarding First this sends the events not only to the sources and 2nd this is not only for seek events. 2017-01-18 15:07:58 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/parse/grammar.y: parse: Don't hold element's object lock while querying element pads' caps This can easily deadlock if the element uses the object lock for something internally, like posting an error message. Use an GstIterator for iterating over the pads instead. https://bugzilla.gnome.org/show_bug.cgi?id=777449 2017-01-16 09:41:19 +1100 Jan Schmidt <jan@centricular.com> * gst/gstbin.c: gstbin: Quieten a noisy FIXME about duration caching Only print this FIXME once per run, at it's pretty annoying in lots of logs otherwise. 2015-07-14 13:11:11 +0000 Jan Schmidt <jan@centricular.com> * plugins/elements/gstidentity.c: * plugins/elements/gstidentity.h: identity: Add ts-offset property. Add a property to delay or advance sync time when sync=true, with the same behaviour as the ts-offset property in basesink 2017-01-15 11:52:44 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstdatetime.c: * tests/check/gst/gstdatetime.c: datetime: fix potential out-of-bound read on malformed datetime string https://bugzilla.gnome.org/show_bug.cgi?id=777263 2017-01-13 12:34:43 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: bump version 2017-01-12 16:32:38 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.11.1 === 2017-01-12 15:29:15 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: Release 1.11.1 2017-01-12 14:35:22 +0200 Sebastian Dröge <sebastian@centricular.com> * po/hr.po: * po/id.po: * po/pl.po: * po/zh_CN.po: Update .po files 2017-01-12 14:34:18 +0200 Sebastian Dröge <sebastian@centricular.com> * po/hr.po: * po/id.po: * po/pl.po: * po/zh_CN.po: po: Update translations 2017-01-12 14:26:55 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2017-01-05 13:45:37 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * tools/gst-inspect-1.0.1: tools: update gst-inspect man page 2017-01-05 10:32:03 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * pkgconfig/meson.build: meson: Do not generate .pc files for libgstcheck on windows The lib is not built 2017-01-04 12:10:45 +0100 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * pkgconfig/Makefile.am: * pkgconfig/gstreamer-base-uninstalled.pc.in: * pkgconfig/gstreamer-check-uninstalled.pc.in: * pkgconfig/gstreamer-controller-uninstalled.pc.in: * pkgconfig/gstreamer-net-uninstalled.pc.in: * pkgconfig/gstreamer-uninstalled.pc.in: * pkgconfig/meson.build: meson: generate pkg-config -uninstalled pc files Generating those files is useful for users building the GStreamer stack using meson and having to link it to another project which is still using the autotools. https://bugzilla.gnome.org/show_bug.cgi?id=776810 2017-01-03 12:30:02 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstpad.h: pad: clarify docs for GST_PAD_PROBE_DROP 2017-01-03 02:13:30 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstqueue.c: queue: Don't generate GST_FLOW_ERROR without logging At least log a message to the debug log when generating a GST_FLOW_ERROR, to make it possible to find where it came from. 2017-01-03 02:12:27 +1100 Jan Schmidt <jan@centricular.com> * gst/gstpadtemplate.c: padtemplate: Fix null pointer dereference on invalid static caps A typo in a static caps string may result in failure to deserialise it, so don't dereference the result without checking. 2017-01-03 02:11:27 +1100 Jan Schmidt <jan@centricular.com> * gst/gstcaps.c: caps: Fix null pointer dereference on invalid static caps A typo in a static caps string may result in failure to deserialise it, so don't dereference the result without checking. 2016-12-30 19:42:57 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gststructure.c: structure: reword comment for gst_structure_parse_string() The comment was a bit confusing. Turn it into gtkdoc style and reword it. 2016-12-28 21:47:03 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstinfo.c: info: re-eval GST_DEBUG env var for late categories When registering a new debug category after _debug_init(), we need to re check the GST_DEBUG filter settings again. In addition when parsing the filter setting, we need to already bump up the min-debug level to not suppress debug log statments that dynamically register a category. This happens in libraries that use a function to register a category on first use. 2016-12-29 17:04:04 +0100 Edward Hervey <edward@centricular.com> * scripts/gst-uninstalled: gst-uninstalled: Default to python3 It's 2016, unless you've specified a different version of python, we'll default to python3 2016-12-28 13:45:54 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * libs/gst/base/gstbaseparse.c: baseparse: also unset DISCONT on buffers in reverse playback fragments 2016-12-21 21:58:53 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * tools/gst-inspect-1.0.1: * tools/gst-inspect.c: gst-launch: Add a '--types' option to filter elements by types to print This way the user can easily figure out what are the available audio encoder for example doing: gst-inspect-1.0 --types Encoder/Audio https://bugzilla.gnome.org/show_bug.cgi?id=776392 2016-12-22 18:45:10 +0100 Nicolas Dechesne <nicolas.dechesne@linaro.org> * tools/gst-launch.c: tools: gst-launch: set GST_GL_XINITTHREADS This ensure that XInitThreads is called and so gl contexts are properly initialized. https://bugzilla.gnome.org/show_bug.cgi?id=776401 2016-12-22 16:13:22 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstpreset.c: gstpreset: Lower some debug logs level A property not defined in a preset file can simply mean that the user wants it to be set as it default value, and we should not warn about that. A missing preset file in a directory can happen has there are several directory where a preset can be found in. 2016-12-22 23:39:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: meson: Fix order of C source and header in mkenums Otherwise gstenum_h dependencies don't get added properly to gst_dep and we see racy build failures everywhere. 2016-12-17 14:35:19 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/build_mkenum.py: * gst/gstenumtypes.c.template: * gst/gstenumtypes.h.template: * gst/meson.build: meson: use gnome.mkenums() with template files for enum file gen Saves us a custom script. Template files are nicer than passing multiline templating stuff through to glib-mkenums. And we can get rid of our custom python script. 2016-12-22 12:05:56 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: element: Add guard to gst_element_release_pad() to ensure the pad belongs to this element It's a programming error to pass other pads here, and it easily causes crashes or other problematic behaviour down the road as subclasses usually assume to only get their pads. 2016-12-21 22:18:17 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstrusage.c: gstrusage: explicitly register to hooks We were attaching to any probe point to take rusage samples. The new refcount hooks are called way too frequently though to make this still feasible. 2016-12-21 23:49:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: * meson.build: * tests/check/meson.build: meson: Add several missing features from configure.ac * -Wl,-Bsymbolic-functions * HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID * HAVE_POSIX_TIMERS * HAVE_MONOTONIC_CLOCK * HAVE_UINT128_T * HAVE_LONG_LONG * HAVE_PROCESS_H * HAVE_GMP * HAVE_GSL * HAVE_DLADDR Also, don't use prefix for checking functions, and only check msvc functions on Windows. 2016-12-21 09:33:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * config.h.meson: * configure.ac: * meson.build: build: Remove unused functions fgetpos, fsetpos, mmap, posix_memalign. None of these are used anywhere in the codebase. 2016-12-21 09:00:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: * plugins/tracers/meson.build: meson: Derive defines from header/function names This is what Autoconf already does for us, so just do this. Avoids people making typos while adding header or function checks. Because we use a config.h.meson, such typos won't even be noticed. Also, starting from Meson 0.36.0, the XCode 8 workaround that we use for clock_gettime is no longer needed. 2016-12-21 10:02:45 +0100 Stefan Sauer <ensonic@users.sf.net> * tests/check/gst/gststructure.c: gststructure: simplify test We can compare structures, that is what the caps fucntion that was used before would call anyway. 2016-12-20 21:08:09 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gsttracerrecord.h: tracerrecord: improve the values flags docs 2016-12-20 21:07:14 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstlatency.c: latency: the latency is not an aggregated value The logged latencies are individual meassurements. 2016-12-02 08:29:11 -0300 Thibault Saunier <tsaunier@gnome.org> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks: Allow user to set the flags to use to retrieve stack traces https://bugzilla.gnome.org/show_bug.cgi?id=775541 2016-12-01 17:35:45 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/gstminiobject.c: * gst/gstobject.c: * gst/gsttracerutils.c: * gst/gsttracerutils.h: * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks: Allow tracing Gst(Mini)Object reffing operations It makes it much simpler to later debug refcount issues. https://bugzilla.gnome.org/show_bug.cgi?id=775541 2016-11-30 17:05:56 -0300 Thibault Saunier <tsaunier@gnome.org> * plugins/tracers/gstleaks.c: leaks: Allow passing a GstStructure to configure the tracer But keep understanding the simple synthax with a comma separated list of filters https://bugzilla.gnome.org/show_bug.cgi?id=775541 2016-12-21 00:40:10 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Switch to normal mode before have-type Before emitting have-type, switch to NORMAL mode, as part of the have-type processing sends the caps event downstream, which might trigger actions like downstream autoplugging or flushing seeks - and the latter are only passed upstream if we've set typefind to NORMAL mode. 2016-12-13 21:12:23 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Protect against spurious wakeups of the condition variable 2016-11-30 21:17:55 +0100 Fabrice Bellet <fabrice@bellet.info> * libs/gst/base/gstbasesink.c: basesink: fix a use after free case The event may be disposed while being pushed, so we make sure the debug infrastructure won't use it after the gst_pad_push(). 2016-12-16 18:30:20 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstcheck.c: check: fix typo in docs 2016-12-16 23:45:08 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/parse/meson.build: * meson.build: meson: Don't search for python3 twice 2016-12-16 18:14:29 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/Makefile.am: check: export new global variable 2016-12-16 13:59:51 -0300 Thibault Saunier <tsaunier@gnome.org> * libs/gst/check/gstcheck.c: check: Avoid possible double free 2016-12-02 11:59:43 -0300 Thibault Saunier <tsaunier@gnome.org> * libs/gst/check/gstcheck.c: * libs/gst/check/gstcheck.h: check: Allow listing unit tests names Adding options while running gst_check_init https://bugzilla.gnome.org/show_bug.cgi?id=775540 2016-12-15 15:37:45 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gststats.c: * tools/gst-stats.c: tracers/stats: log optional fields instead of GST_CLOCK_TIME_NONE Simplify the traces and avoid trace analyzer to know that ((1<<64) - 1) means we had no value. 2016-12-16 15:05:46 +0100 Josep Torra <n770galaxy@gmail.com> * autogen.sh: autogen.sh: drop a leftover docbook related bit 2016-12-08 21:01:52 +1100 Matthew Waters <matthew@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: add structure intersect/union/is_subset/fixate implementations Allows proper usage of structures in structures in caps. Subtraction is not implemented due to complications with empty fields representing all possible values. The only implementation that doesn't delegate to the already existing GstStructure functions is the union function. https://bugzilla.gnome.org/show_bug.cgi?id=775796 2016-12-08 15:41:40 +1100 Matthew Waters <matthew@centricular.com> * tests/check/gst/gststructure.c: tests/structure: add some more is_subset checks Explicitly testing extra/missing fields and name differences 2016-12-14 18:19:00 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstmeta.c: tests: meta: add test for gst_buffer_iterate_meta*() https://bugzilla.gnome.org/show_bug.cgi?id=775727 2016-12-03 13:05:03 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbuffer.h: * win32/common/libgstreamer.def: buffer: add gst_buffer_iterate_meta_filtered() For convenience. Pretty much every user of gst_buffer_iterate_meta() filters for a specific api type. https://bugzilla.gnome.org/show_bug.cgi?id=775727 2016-12-14 15:22:30 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: buffer: mark gst_buffer_iterate_meta() as 'skip' for bindings The pointer state arg won't work well, bindings can use the foreach function instead. https://bugzilla.gnome.org/show_bug.cgi?id=775727 2016-12-14 06:56:55 +0100 Iñaki García Etxebarria <garetxe@gmail.com> * gst/gstevent.c: g-i: Fix annotations for gst_event_new_select_streams() and gst_event_parse_select_streams() A gchar is not a string. https://bugzilla.gnome.org/show_bug.cgi?id=775944 2016-12-13 23:25:39 -0800 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * gst/gstpad.c: gstpad: only warn on performance penalty if not using the template caps After b76ecfd992b0d3a423cc9ace5539ecd2ba509d41 introduced GST_PAD_FLAG_ACCEPT_TEMPLATE, the performance penalty this message is refering to (the cascading ACCEPT_CAPS query) only applies to the cases where !GST_PAD_IS_ACCEPT_TEMPLATE 2016-12-13 20:51:17 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue.c: * plugins/elements/gstqueue.h: * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: queue/queue2: Protect against spurious condition variable wakeups Make sure that we only wake up when we have to flush, or when this specific query was handled. https://bugzilla.gnome.org/show_bug.cgi?id=776039 2016-12-13 20:00:55 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: queue/queue2: Ensure that the streaming thread is unlocked after deactivating the srcpad It might happen that the srcpad task function is never called at all, in which case unlocking everything from there will never happen. Make sure to unlock everything another time after the task function is definitely stopped. https://bugzilla.gnome.org/show_bug.cgi?id=776039 2016-12-12 22:14:24 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gststructure.c: * gst/gstvalue.c: * tests/check/gst/gstvalue.c: gstvalue: add serialisation for GTypes We need this in the GstTracerRecord. This will serialize GTypes to the typename and vice versa. 2016-12-13 13:20:09 +0100 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstinfo.c: gst: Fix building with msvc 2016-12-12 20:55:31 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gst.c: gst: init new flags type in gst_init() Fix 'make check' some more. 2016-12-12 19:25:17 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update .def file for new API 2016-11-30 15:10:48 -0300 Thibault Saunier <tsaunier@gnome.org> info: Add a 'flags' parametter to gst_debug_get_stack_trace This is an API break but that API has not been released yet. We are passing a flag rather than a simple boolean as we can imagine to implement more features in the future for example to retrieve a stack trace for all the threads, etc.. Retrieving source file and line numbers is pretty expensive while getting a stack trace, this new argument allows the user to decide to retrieve a backtrace without those infos instead which is much faster. For example running $ GST_LEAKS_TRACER_STACK_TRACE=1 GST_DEBUG=GST_TRACER:7 \ GST_TRACERS=leaks time gst-launch-1.0 videotestsrc num-buffers=1 ! fakesink: * With simple stack traces: 0.04s user 0.02s system 99% cpu 0.060 total * With full stack traces: 0.66s user 0.23s system 96% cpu 0.926 total https://bugzilla.gnome.org/show_bug.cgi?id=775423 2016-12-12 16:19:13 +0100 Edward Hervey <edward@centricular.com> * plugins/elements/gstfilesrc.c: filesrc: Set GError in another error case When changing the location while open, properly set the GError regarding the failure. 2016-12-10 18:38:32 +0900 Seungha Yang <sh.yang@lge.com> * plugins/elements/gstmultiqueue.c: multiqueue: Fix overflow on get_buffering_level() guint64 denominator factor for gst_util_uint64_scale_int() can cause overflow https://bugzilla.gnome.org/show_bug.cgi?id=775921 2016-12-09 19:28:22 -0300 Thibault Saunier <tsaunier@gnome.org> * meson_options.txt: * plugins/tracers/meson.build: meson: Fix build 2016-12-09 17:55:39 -0300 Thibault Saunier <tsaunier@gnome.org> * meson.build: * plugins/tracers/meson.build: * tests/check/meson.build: meson: Support building with Gst debug disabled 2016-12-09 22:39:36 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/libcompat/clock_gettime.c: check: Fix macro check for OS X TARGET_OS_MAC is defined on all Apple platforms. You need to check for !TARGET_OS_IPHONE to detect OS X (now called macOS). 2016-12-09 18:02:15 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Use gst_query_has_scheduling_mode_with_flags() convenience function 2016-12-09 18:01:35 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/libcompat/clock_gettime.c: check: Don't try to include CoreServices.h on iOS On iOS, we have MobileCoreServices.h but it's not really needed. 2016-12-09 17:59:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * config.h.meson: * libs/gst/check/libcheck/Makefile.am: * libs/gst/check/libcheck/README.txt: * libs/gst/check/libcheck/libcompat/malloc.c: * libs/gst/check/libcheck/libcompat/realloc.c: * libs/gst/check/libcheck/meson.build: * m4/check-checks.m4: check: Don't check for malloc/realloc and try to fallback When malloc is not available, this will set #define malloc rpl_malloc which is implemented only inside libcheck, and not everything will link to libcheck. We don't really need to care too much about how malloc is implemented and we don't care about platforms that don't implement malloc. 2016-12-09 16:03:41 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/README.txt: Add a README.txt with context for libcheck https://bugzilla.gnome.org/show_bug.cgi?id=775870 2016-12-09 15:18:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * config.h.meson: * libs/gst/check/libcheck/Makefile.am: * libs/gst/check/libcheck/libcompat/alarm.c: * libs/gst/check/libcheck/libcompat/clock_gettime.c: * libs/gst/check/libcheck/libcompat/getline.c: * libs/gst/check/libcheck/libcompat/gettimeofday.c: * libs/gst/check/libcheck/libcompat/libcompat.c: * libs/gst/check/libcheck/libcompat/libcompat.h: * libs/gst/check/libcheck/libcompat/localtime_r.c: * libs/gst/check/libcheck/libcompat/malloc.c: * libs/gst/check/libcheck/libcompat/realloc.c: * libs/gst/check/libcheck/libcompat/strdup.c: * libs/gst/check/libcheck/libcompat/strsignal.c: * libs/gst/check/libcheck/libcompat/timer_create.c: * libs/gst/check/libcheck/libcompat/timer_delete.c: * libs/gst/check/libcheck/libcompat/timer_settime.c: * libs/gst/check/libcheck/meson.build: * libs/gst/check/meson.build: * m4/check-checks.m4: * meson.build: libcheck: Update the compatibility code and checks This brings us up-to-speed with the latest compatibility code from upstream check git. For completeness, we do all the checks that upstream check does, but we skip the snprintf/vsnprintf code because it's not straightforward (involves running code and that is bad for cross-compilation) and not necessary for the platforms we support anyway. If someone really wants this, they can uncomment this and copy the relevant checks from the check git repository. https://bugzilla.gnome.org/show_bug.cgi?id=775870 2016-12-09 15:18:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/Makefile.am: * libs/gst/check/libcheck/libcompat/alarm.c: * libs/gst/check/libcheck/libcompat/clock_gettime.c: * libs/gst/check/libcheck/libcompat/libcompat.c: * libs/gst/check/libcheck/libcompat/libcompat.h: * libs/gst/check/libcheck/libcompat/localtime_r.c: * libs/gst/check/libcheck/libcompat/strsignal.c: * libs/gst/check/libcheck/libcompat/timer_create.c: * libs/gst/check/libcheck/libcompat/timer_delete.c: * libs/gst/check/libcheck/libcompat/timer_settime.c: * libs/gst/check/libcheck/meson.build: libcheck: Just move libcompat files to a subdir Makes it clearer which files are actually used in libcheck and which are used for cross-platform compatibility. This is going to be especially useful when we add all the libcompat fallback code that upstream libcheck has which will add about 6 new files. https://bugzilla.gnome.org/show_bug.cgi?id=775870 2016-12-09 15:18:11 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/check.c: * libs/gst/check/libcheck/check.h.in: * libs/gst/check/libcheck/check_error.c: * libs/gst/check/libcheck/check_error.h: * libs/gst/check/libcheck/check_impl.h: * libs/gst/check/libcheck/check_list.c: * libs/gst/check/libcheck/check_list.h: * libs/gst/check/libcheck/check_log.c: * libs/gst/check/libcheck/check_log.h: * libs/gst/check/libcheck/check_msg.c: * libs/gst/check/libcheck/check_msg.h: * libs/gst/check/libcheck/check_pack.c: * libs/gst/check/libcheck/check_pack.h: * libs/gst/check/libcheck/check_print.c: * libs/gst/check/libcheck/check_print.h: * libs/gst/check/libcheck/check_run.c: * libs/gst/check/libcheck/check_str.c: * libs/gst/check/libcheck/check_str.h: libcheck: port to latest check git Upstream seems to have stopped doing releases, but we need to update for better Windows and Visual Studio support. This patch only updates the libcheck sources and ignores the compatibility sources for now. https://bugzilla.gnome.org/show_bug.cgi?id=775870 2016-12-08 22:03:19 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstlog.c: tracers/log: log more detail Log the objects like we would in GST_TRACE_OBJECT. Add the hook function into the fucntion field. 2016-12-08 22:02:17 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstlog.c: tracer/log: fix hook prototype s/GstElement/GstPad/ 2016-12-08 20:20:17 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstpad.c: tracer: move the PAD_LINK tracer hook to _pad_link_full() This is ultimately executing the pad_link. In the previous position we missed some links, notably ghostpads. 2016-12-07 21:53:49 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstlatency.c: tracer/latency: clear qdata When reading the qdata, clear it to avoid it being read and unreffed again. Fixes #774332 2016-12-06 22:32:31 +0100 Peter Seiderer <ps.report@gmx.net> * gst/gstconfig.h.in: gstconfig: Fix unaligned access support for arc and nios2 architectures Fixes buildroot autobuild failures ([1], [2]). [1] http://autobuild.buildroot.net/results/fbd/fbdcd90635d5ec3a62ad98a7ff93b71b8e5ecde4 [2] http://autobuild.buildroot.net/results/f3c/f3c9b0ed4ffb114221057237ce22c995b673a98b https://bugzilla.gnome.org/show_bug.cgi?id=775728 2016-11-22 16:52:46 +0900 Seungha Yang <sh.yang@lge.com> * docs/gst/gstreamer-sections.txt: * gst/gsturi.c: * gst/gsturi.h: * tests/check/gst/gsturi.c: * win32/common/libgstreamer.def: uri: Add new uri API to get media fragments URI as table As an usecase of URI fragment, it can indicate temporal or spatial dimension of a media stream. To easily parse key-value pair, newly added gst_uri_get_media_fragment_table () API will provide the table of key-value pair likewise URI query. See also https://www.w3.org/TR/media-frags/ https://bugzilla.gnome.org/show_bug.cgi?id=774830 2016-12-06 16:27:23 +0100 Ricardo Ribalda Delgado <ricardo.ribalda@gmail.com> * libs/gst/helpers/gst: helpers/gst: Get bash completion options from gst-launch It is more likely that gst-launch is installed than ges-launch Reported-by: Marianna Smidth Buschle <msb@qtec.com> https://bugzilla.gnome.org/show_bug.cgi?id=775714 2016-12-06 18:06:56 +0000 Tim-Philipp Müller <tim@centricular.com> * configure.ac: configure: update for removed docs/design directory 2016-12-05 18:16:34 -0300 Thibault Saunier <tsaunier@gnome.org> * docs/Makefile.am: * docs/design/Makefile.am: * docs/design/draft-klass.txt: * docs/design/draft-metadata.txt: * docs/design/draft-push-pull.txt: * docs/design/draft-tagreading.txt: * docs/design/part-MT-refcounting.txt: * docs/design/part-TODO.txt: * docs/design/part-activation.txt: * docs/design/part-buffer.txt: * docs/design/part-buffering.txt: * docs/design/part-bufferpool.txt: * docs/design/part-caps.txt: * docs/design/part-clocks.txt: * docs/design/part-context.txt: * docs/design/part-controller.txt: * docs/design/part-conventions.txt: * docs/design/part-dynamic.txt: * docs/design/part-element-sink.txt: * docs/design/part-element-source.txt: * docs/design/part-element-transform.txt: * docs/design/part-events.txt: * docs/design/part-framestep.txt: * docs/design/part-gstbin.txt: * docs/design/part-gstbus.txt: * docs/design/part-gstelement.txt: * docs/design/part-gstghostpad.txt: * docs/design/part-gstobject.txt: * docs/design/part-gstpipeline.txt: * docs/design/part-latency.txt: * docs/design/part-live-source.txt: * docs/design/part-memory.txt: * docs/design/part-messages.txt: * docs/design/part-meta.txt: * docs/design/part-miniobject.txt: * docs/design/part-missing-plugins.txt: * docs/design/part-negotiation.txt: * docs/design/part-overview.txt: * docs/design/part-preroll.txt: * docs/design/part-probes.txt: * docs/design/part-progress.txt: * docs/design/part-push-pull.txt: * docs/design/part-qos.txt: * docs/design/part-query.txt: * docs/design/part-relations.txt: * docs/design/part-scheduling.txt: * docs/design/part-seeking.txt: * docs/design/part-segments.txt: * docs/design/part-seqnums.txt: * docs/design/part-sparsestreams.txt: * docs/design/part-standards.txt: * docs/design/part-states.txt: * docs/design/part-stream-selection.txt: * docs/design/part-stream-status.txt: * docs/design/part-streams.txt: * docs/design/part-synchronisation.txt: * docs/design/part-toc.txt: * docs/design/part-tracing.txt: * docs/design/part-trickmodes.txt: docs: Remove design doc as they have been moved to gst-docs https://bugzilla.gnome.org/show_bug.cgi?id=775667 2016-11-29 17:34:40 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/gstinfo.c: info: Properly start and end dwfl sessions when getting stack traces We were creating a new session to retrive each line of a stack trace and we are supposed to start it once for a whole stack trace. And pass the whole file to gst-indent. https://bugzilla.gnome.org/show_bug.cgi?id=775365 2016-12-02 22:47:32 +0100 Marcin Kolny <marcin.kolny@gmail.com> * libs/gst/net/gstnetclientclock.c: net: set clock name in the constructor gst_net_client_clock_new() and gst_ntp_clock_new() didn't set the "name" property. https://bugzilla.gnome.org/show_bug.cgi?id=775538 2016-12-05 21:09:52 +0100 Peter Seiderer <ps.report@gmx.net> * gst/gstconfig.h.in: gstconfig: Fix unaligned access support for microblaze and xtensa architectures Fixes buildroot autobuild failures, for details see: http://lists.busybox.net/pipermail/buildroot/2016-December/178895.html https://bugzilla.gnome.org/show_bug.cgi?id=775661 2016-12-02 15:30:59 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstmeta.h: * tests/check/gst/struct_arm.h: * tests/check/gst/struct_hppa.h: * tests/check/gst/struct_i386.h: * tests/check/gst/struct_i386w.h: * tests/check/gst/struct_ppc32.h: * tests/check/gst/struct_ppc64.h: * tests/check/gst/struct_sparc.h: * tests/check/gst/struct_x86_64.h: meta: remove unnecessary padding for GstMetaInfo struct This structure is always allocated by GStreamer, can't be subclassed or extended, and is never allocated or used on the stack, so we don't need any padding and can extend it as we please. 2016-06-29 19:36:09 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstelements_private.c: * plugins/elements/gstelements_private.h: * plugins/elements/gstfakesink.c: * plugins/elements/gstidentity.c: fakesink, identity: print metas attached to buffer in silent=false mode 2016-12-05 11:01:45 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstconcat.c: * plugins/elements/gsttee.c: elements: Handle GstIterator RESYNC return value correctly in gst_iterator_foreach() 2016-12-04 12:15:09 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstlog.c: tracers/log: log messages in message category 2016-12-03 08:19:08 +0100 Edward Hervey <bilboed@bilboed.com> * README: * autogen.sh: * common: Automatic update of common submodule From f980fd9 to 39ac2f5 2016-12-01 18:20:11 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Make sure to resync iterators and handle RESYNC at all in gst_iterator_foreach() calls 2016-11-29 18:14:24 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.c: clock: Fix offsetting of times_temp relative to the times array 2016-11-29 10:34:14 -0300 Thibault Saunier <tsaunier@gnome.org> * meson.build: meson: Set default debug level to ERROR when running from git 2016-11-28 19:28:27 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: * plugins/elements/meson.build: * tests/check/meson.build: meson: Add Autotools changes that weren't mirrored commits: a7d282d27256ad1d1a55afc37d1db7f60b040089 6fdb4df0f8c8a9e39f7f7cb73ab65306fb0517f5 1aceebd67f0161806dc3b4b68488d599290f283e 2016-11-28 14:11:27 +0100 Edward Hervey <edward@centricular.com> * tests/check/gst/gstpipeline.c: check/pipeline: Make failure message more informative This will provide maybe a bit more insight the next time it fails 2016-11-28 14:00:18 +0100 Edward Hervey <edward@centricular.com> * tests/check/gst/gstmemory.c: check/memory: Don't leak the custom allocator 2016-11-28 13:48:16 +0100 Edward Hervey <edward@centricular.com> * gst/gstutils.c: gstutils: Fix a pad leak When requesting a pad from a template and it's already linked, this means it was a static pad. Since we only want to return an *available* pad, we must return NULL ... but we must also remove the reference we got from getting that static pad. The "No need to unref" message (which wasn't true for quite some time) dates back from the very very very first commit introducing the 0.10 features. 2016-11-28 09:50:40 +0100 Edward Hervey <edward@centricular.com> * tests/check/elements/queue2.c: check: Fix leak in queue2 test 2016-11-23 15:41:28 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/Makefile.am: * gst/gst_private.h: * gst/gstclock-linreg.c: * gst/gstclock.c: * gst/gstutils.c: * gst/gstutils.h: * tests/check/gst/gstclock.c: * tests/check/gst/gstutils.c: * win32/common/libgstreamer.def: utils: Export linear regression calculation as public function It is useful outside the GstClock code too. https://bugzilla.gnome.org/show_bug.cgi?id=774916 2016-11-28 11:56:23 +0000 Tim-Philipp Müller <tim@centricular.com> * .gitignore: * Makefile.am: * configure.ac: * gstreamer.spec.in: Remove generated gstreamer.spec file Likely extremely bitrotten, and we should not ship this anyway. 2016-11-28 11:09:08 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/plugins/Makefile.am: * docs/plugins/gstreamer-plugins-docs.sgml: * docs/plugins/gstreamer-plugins-sections.txt: * docs/plugins/gstreamer-plugins.args: * docs/plugins/gstreamer-plugins.hierarchy: * docs/plugins/gstreamer-plugins.interfaces: * docs/plugins/inspect/plugin-coreelements.xml: docs: add dataurisrc to docs and update https://bugzilla.gnome.org/show_bug.cgi?id=774527 2016-11-28 11:10:05 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/filesrc.c: tests: filesrc: init and clear GCond and mutex Might otherwise leak on non-Linux systems. 2016-11-28 11:08:24 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/Makefile.am: * tests/check/elements/.gitignore: * tests/check/elements/dataurisrc.c: tests: rewrite and enable dataurisrc test Can't use playbin for core unit tests. https://bugzilla.gnome.org/show_bug.cgi?id=774527 2016-11-28 11:07:20 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/Makefile.am: * plugins/elements/gstdataurisrc.c: * plugins/elements/gstelements.c: elements: add dataurisrc to build Moved from -bad. 2016-11-28 10:42:46 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstdataurisrc.c: dataurisrc: fix string leak in property getter 2016-11-28 11:18:39 +0000 Tim-Philipp Müller <tim@centricular.com> Move dataurisrc element from -bad https://bugzilla.gnome.org/show_bug.cgi?id=774527 2016-11-28 12:28:28 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstmessage.c: message: Ensure that the "debug" field of error/warning/info messages is valid UTF-8 The caller might pass arbitrary data here that caused the error, and trying to set invalid UTF-8 in a GstStructure causes it to be not set at all. Later when trying to parse it, the field will not exist and the return value will point to invalid memory. Prevent this by storing NULL instead. Also print a g_warning(), the caller should never ever do this to begin with. 2016-11-26 11:20:51 +0000 Tim-Philipp Müller <tim@centricular.com> * .gitmodules: common: use https protocol for common submodule https://bugzilla.gnome.org/show_bug.cgi?id=775110 2016-11-26 11:06:20 +0000 Hanno Boeck <hanno@hboeck.de> * scripts/create-uninstalled-setup.sh: scripts: create-uninstalled-setup: use https protocol to clone repos The git:// protocol is problematic from a security perspective, as it provides no authenticity of data. https:// also works better in environments with restricted network connectivity. Also add CLONE_OPTS to do shallow checkouts more easily. https://bugzilla.gnome.org/show_bug.cgi?id=775110 2016-11-15 03:03:22 +0800 Ting-Wei Lan <lantw@src.gnome.org> * meson.build: meson: Support execinfo.h on FreeBSD by using -lexecinfo FreeBSD supports execinfo.h and backtrace* functions, but using them requires linking with -lexecinfo. Requires sufficiently-new meson with #1053 fixed (post-0.36). https://bugzilla.gnome.org/show_bug.cgi?id=774424 2016-11-23 18:56:20 +0100 Edward Hervey <edward@centricular.com> * tools/Makefile.am: tools: Remove files to be cleaned manpages are no longer auto-generated cov-related files should not be there (if needed we could use gitignore) 2016-11-04 18:54:10 -0400 Olivier Crête <olivier.crete@collabora.com> * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesink.h: basesink: Document the interaction between unlock() and wait_preroll() This was totally non-obvious, the kind of big problem is that subclasses must be able to unblock their streaming thread and continue exactly where they left off on unpause! https://bugzilla.gnome.org/show_bug.cgi?id=773912 2016-11-04 18:46:45 -0400 Olivier Crête <olivier.crete@collabora.com> * plugins/elements/gstelements_private.c: * plugins/elements/gstelements_private.h: * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsink.h: * plugins/elements/gstfilesink.c: fdsink: Block in preroll_wait on unlock The correct behaviour of anything stuck in the ->render() function between ->unlock() and ->unlock_stop() is to call gst_base_sink_wait_preroll() and only return an error if this returns an error, otherwise, it must continue where it left off! https://bugzilla.gnome.org/show_bug.cgi?id=773912 2016-11-23 18:57:17 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: element: Don't increment NULL pointers Trivial workaround for coverity false warning. CID 1394488, 1394487. 2016-11-23 09:58:44 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/.gitignore: * tools/Makefile.am: tools: fix distcheck and .gitignore 2016-11-03 10:30:53 +0100 Antonio Ospite <ao2@ao2.it> * tools/meson.build: meson: tools: install the man pages https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-03 10:30:53 +0100 Antonio Ospite <ao2@ao2.it> * tools/.gitignore: * tools/Makefile.am: * tools/gst-inspect-1.0.1: * tools/gst-launch-1.0.1: * tools/gst-typefind-1.0.1: tools: ship the final man pages directly, no more man pages templates Don't use templates for the man pages, the API version change is a rare event, so it's not really worth keeping in place the "sed" boilerplate to have it set at build time. Shipping the final man pages directly also makes it easer to install the man pages with meson (in a future commit). Note that now all the occurrences of the programs names have the API version as a suffix. Traditionally the example command lines looked like: gst-launch ... Now they look like: gst-launch-1.0 ... This reflects the actual programs names and makes it easier to copy and paste the example commands. Also, the .gitignore file is adjusted not to ignore the final man pages anymore. You may need to clean your src/build directory before pulling in this patch. https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-18 13:09:21 +1100 Matthew Waters <matthew@centricular.com> * docs/libs/gstreamer-libs-docs.sgml: * docs/libs/gstreamer-libs-sections.txt: * libs/gst/controller/Makefile.am: * libs/gst/controller/gstproxycontrolbinding.c: * libs/gst/controller/gstproxycontrolbinding.h: * libs/gst/controller/meson.build: * tests/check/libs/controller.c: * win32/common/libgstcontroller.def: controllers: add new proxy control binding Allows proxying the control interface from one property on one GstObject to another property (of the same type) in another GstObject. E.g. in a parent-child relationship, one may need to gst_object_sync_values() on the child and have a binding (set elsewhere) on the parent update the value. Note: that this doesn't solve GObject property forwarding and must be taken care of by the implementation manually or using GBinding. https://bugzilla.gnome.org/show_bug.cgi?id=774657 2016-10-07 11:39:26 +0100 Julien Isorce <j.isorce@samsung.com> * gst/gstmemory.c: * tests/check/gst/gstmemory.c: memory: log with GST_INFO instead GST_ERROR when subclass map failed. Add unit test to ensure that. It can be a normal execution path to do some map trials and there is no need to worry the user in that case. The application has to check the return value of gst_memory_map. https://bugzilla.gnome.org/show_bug.cgi?id=765600 2016-11-17 17:37:16 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasetransform.c: basetransform: Ensure to set the RECONFIGURE flag again if reconfiguration failed It might've failed just because of flushing or other things, and we should retry again on the next possibility if something ever calls in here again. https://bugzilla.gnome.org/show_bug.cgi?id=774623 2016-11-17 16:39:52 -0800 Scott D Phillips <scott.d.phillips@intel.com> * meson.build: meson: add_global_arguments -> add_project_arguments https://bugzilla.gnome.org/show_bug.cgi?id=774656 2016-11-16 23:19:28 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Make sure not-linked streams get woken up When running in sync-by-running-time mode, pad groups that have exactly 1 pad and it's not-linked might never wake up after computing a high time, as the per-pad-group high time was only recomputed when a pad in the group advances. Wake those up using the global multiqueue high-time across all other groups instead. https://bugzilla.gnome.org/show_bug.cgi?id=774322 2016-11-16 10:55:29 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: * gst/gstbin.h: * gst/gstelement.h: * gst/gstutils.h: docs: misc fixes 2016-11-16 10:51:48 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.h: utils: use temp var in fallback GST_WRITE_*() macros To make sure the value is only expanded/used once, in case there are side effects to it, and to avoid calculating it or looking it up multiple times if there is a calculation or lookup involved. 2016-11-16 00:30:26 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Fix previous commit Check the correct segment format value. parse->segment.format is the format we're outputting in, not the upstream format. Use parse->priv->upstream_format instead, and make sure it's set in pull mode. 2016-11-15 23:51:06 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Restrict query/convert responses when demuxing If the parser is not parsing a raw elementary stream, restrict the position, duration and conversion query replies to things we can sensibly answer about - especially don't do random conversions to/from bytes. 2016-11-15 22:39:43 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: * plugins/elements/gsttypefindelement.c: queues: Don't return negative position queries. When subtracting queued data sizes from upstream queries in queue, queue2, downloadbuffer and typefind, clamp the result to not go negative, in case upstream returned a nonsense value that's too small (as could happen if upstream is estimating, or just broken) 2016-11-14 11:27:05 -0800 Scott D Phillips <scott.d.phillips@intel.com> * gst/gstbuffer.c: * gst/gstprotection.c: * libs/gst/net/gstnetaddressmeta.c: * libs/gst/net/gstnetcontrolmessagemeta.c: Cast away const from GstMetaInfo in *_get_meta_info() functions MSVC warns about the const in the implicit argument conversion in the calls to g_once_init_{enter,leave}. It's OK so explicitly cast it. https://bugzilla.gnome.org/show_bug.cgi?id=774293 2016-11-14 11:32:51 -0800 Scott D Phillips <scott.d.phillips@intel.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Update prototype of helper_find_suggest() forward declaration prototype is updated to match the change in: 5a72c23 Change some types to match their prototypes https://bugzilla.gnome.org/show_bug.cgi?id=774293 2016-11-14 21:28:22 +0000 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * configure.ac: * win32/MANIFEST: * win32/README.txt: * win32/common/config.h: * win32/common/gstconfig.h: * win32/common/gstenumtypes.c: * win32/common/gstenumtypes.h: * win32/common/gstversion.h: win32: remove copies of generated headers 2016-11-14 21:18:13 +0000 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * docs/Makefile.am: * docs/htmlinstall.mak: * docs/image-eps: * docs/image-pdf: * docs/image-png: * docs/manuals.mak: * docs/slides/Makefile.am: * docs/slides/README: * docs/slides/abstract: * docs/slides/abstract.save: * docs/slides/outline: * docs/slides/slides: * docs/url.entities: * docs/xsl/Makefile.am: * docs/xsl/admon.xsl: * docs/xsl/css.xsl: * docs/xsl/fileext.xsl: * docs/xsl/fo.xsl: * docs/xsl/html.xsl: * docs/xsl/keycombo.xsl: * docs/xsl/ulink.xsl: docs: remove more docbook build cruft that's no longer needed 2016-11-14 21:29:43 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/README: docs/README: remove more outdated pieces of info/advice 2016-10-20 22:32:50 +0200 Stefan Sauer <ensonic@users.sf.net> * docs/design/part-tracing.txt: * scripts/gst-plot-traces.sh: scripts/gst-plot-traces.sh: make log parsing a bit more solid Use grep -o to grab the log message only. This makes it work with colored log files too. Prefilter the log to not catch tracer classes. Update the commandline for the script in the docs. 2016-10-20 15:38:46 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/printf/meson.build: * libs/gst/check/libcheck/meson.build: * meson.build: meson: require meson 0.36 and use new `pic` arg on static libs Removes a meson warning and some special casing we had. 2016-11-11 10:30:44 -0800 Scott D Phillips <scott.d.phillips@intel.com> * gst/gstevent.h: * gst/gsttask.c: * libs/gst/base/gsttypefindhelper.c: Change some types to match their prototypes Particularly note that the underlying integer type of the enum GstTypeFindProbability is implementation dependent and may not match guint. https://bugzilla.gnome.org/show_bug.cgi?id=774293 2016-11-14 18:04:28 +0000 Tim-Philipp Müller <tim@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: po: update for new translatable strings 2016-11-14 17:46:07 +0000 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * autogen.sh: * configure.ac: * docs/Makefile.am: * docs/README: * docs/faq/.gitignore: * docs/faq/Makefile.am: * docs/faq/base.css: * docs/faq/dependencies.xml: * docs/faq/developing.xml: * docs/faq/faq.xml: * docs/faq/general.xml: * docs/faq/getting.xml: * docs/faq/git.xml: * docs/faq/legal.xml: * docs/faq/start.xml: * docs/faq/troubleshooting.xml: * docs/faq/using.xml: * gstreamer.spec.in: docs: remove FAQ which was moved into gst-docs module 2015-04-29 12:34:49 +0200 Nicola Murino <nicola.murino@gmail.com> * scripts/gst-uninstalled: gst-uninstalled: add GIO_EXTRA_MODULES In case glib is installed into local prefix dir. https://bugzilla.gnome.org/show_bug.cgi?id=748626 2016-11-12 12:36:05 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.h: utils: faster GST_WRITE_* macros if unaligned access is possible https://bugzilla.gnome.org/show_bug.cgi?id=599546 2016-11-11 20:31:03 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/parse/grammar.y: parse: better error message when linking two elements with capsfilter fails https://bugzilla.gnome.org/show_bug.cgi?id=760550 2016-11-11 16:11:15 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstinfo.c: * gst/gstinfo.h: * win32/common/libgstreamer.def: Add gst_print(), gst_println(), gst_printerr(), gst_printerrln() Useful for debugging. https://bugzilla.gnome.org/show_bug.cgi?id=766470 2016-11-11 10:23:17 -0800 Scott D Phillips <scott.d.phillips@intel.com> * gst/gsttaglist.c: taglist: remove `return void` in gst_tag_register MSVC warns on this and the documentation about the warning says: > The compiler assumes the function returns a value of type int which is a little scary, so lets just remove the unnecessary 'return' https://bugzilla.gnome.org/show_bug.cgi?id=774293 2016-05-09 15:32:43 +0200 Nicolas Huet <nicolas.huet@parrot.com> * tests/check/libs/adapter.c: tests: add unit test for gst_adapter_prev_pts_at_offset() https://bugzilla.gnome.org/show_bug.cgi?id=765662 2016-04-27 10:57:29 +0200 Nicolas Huet <nicolas.huet@parrot.com> * libs/gst/base/gstadapter.c: adapter: fix distance when getting prev pts/dts at offset https://bugzilla.gnome.org/show_bug.cgi?id=765662 2016-10-26 22:38:07 -0700 Scott D Phillips <scott.d.phillips@intel.com> * meson.build: meson: don't add_global_arguments when being built as a subproject https://bugzilla.gnome.org/show_bug.cgi?id=773568 2016-07-21 10:52:30 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * libs/gst/base/gstbasetransform.c: basetransform: fix pool leak when early returning in decide_allocation https://bugzilla.gnome.org/show_bug.cgi?id=769023 2016-07-27 13:39:50 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstinfo.c: info: add GstStream and GstStreamCollection support to gst_debug_print_object() https://bugzilla.gnome.org/show_bug.cgi?id=769220 2016-08-12 08:03:41 +0900 Seungha Yang <sh.yang@lge.com> * libs/gst/base/gstbasesrc.c: basesrc: Support PROTECTION event from application Application may want to send PROTECTION event to the src element. https://bugzilla.gnome.org/show_bug.cgi?id=769775 2016-11-03 13:34:18 +0100 Antonio Ospite <ao2@ao2.it> * tools/meson.build: meson: tools: generate the targets dynamically The three targets are the same except for input and output files, use a loop and generate them dynamically. https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-03 15:21:05 +0100 Antonio Ospite <ao2@ao2.it> * tools/gst-inspect.1.in: * tools/gst-typefind.1.in: tools: don't mention gst-feedback in man pages gst-feedback no longer exists. https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-03 00:18:21 +0100 Antonio Ospite <ao2@ao2.it> * tools/gst-launch.1.in: tools: put the examples descriptions before the commands in man page Put the description of the example command lines before the command instead of after them. The new way is more intuitive. https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-02 22:56:01 +0100 Antonio Ospite <ao2@ao2.it> * tools/gst-launch.1.in: tools: don't start lines with single quotes in man page When a line starts with a single quote it's treated in a special way by man, which may result in paragraphs of the man page not rendered by the man pager, so just avoid that. A possible solution could have been to escape the singe quote with a \(cq sequence but this is rather unreadable, instead the text has been reformatted to have the problematic quoted 'ppc' string on the previous line. https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-02 22:36:27 +0100 Antonio Ospite <ao2@ao2.it> * tools/gst-inspect.1.in: * tools/gst-launch.1.in: * tools/gst-typefind.1.in: tools: escape dashes in the man pages The portable way to have the dashes to be rendered as ASCII minuses is to use the sequence backslash-dash, use this style at least for text that can be copied and pasted (e.g. command names, file names, element options). Also use backslash-dash in the NAME section as suggested by lexgrog(1). https://bugzilla.gnome.org/show_bug.cgi?id=773917 2016-11-11 04:42:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/net/meson.build: meson: Fir dependencies of gstnet-1.0 It depends on gst_base_dep which will pull in gst_dep 2016-11-11 04:41:39 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/base/meson.build: meson: Add GstBase-1.0.gir to gst_base_dep Without this, GIR generators can't find and use it 2016-11-10 13:42:46 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbaseparse.c: * win32/common/libgstbase.def: baseparse: add since marker for new API to docs and fix win32 .def file 2016-11-10 12:47:37 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbaseparse.h: * win32/common/libgstbase.def: baseparse: expose gst_base_parse_drain 2016-11-09 14:07:28 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/base/meson.build: * libs/gst/controller/meson.build: * libs/gst/net/meson.build: meson: Advertise dependency on gst_dep generating girs And do not simply link to libgst as the gir information location only exist in declare_dependecy https://bugzilla.gnome.org/show_bug.cgi?id=774044 2016-11-08 17:09:53 +0100 Victor Toso <me@victortoso.com> * tests/misc/netclock-replay.c: tests: Fix compile warning on mingw64 In file included from ../../libs/gst/net/gstntppacket.c:35:0, from netclock-replay.c:25: ../../config.h:546:0: error: "__MSVCRT_VERSION__" redefined [-Werror] #define __MSVCRT_VERSION__ 0x0601 In file included from /usr/x86_64-w64-mingw32/sys-root/mingw/include/crtdefs.h:10:0, from /usr/x86_64-w64-mingw32/sys-root/mingw/include/stdio.h:9, from netclock-replay.c:21: /usr/x86_64-w64-mingw32/sys-root/mingw/include/_mingw.h:220:0: note: this is the location of the previous definition # define __MSVCRT_VERSION__ 0x0700 https://bugzilla.gnome.org/show_bug.cgi?id=774108 2016-11-09 11:37:09 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfunnel.c: funnel: Make sure to only lock the stream lock once We also only unlock it once, and otherwise have it locked forever from this thread, causing deadlocks on shutdown later. 2016-11-08 16:58:53 +0100 Victor Toso <me@victortoso.com> * gst/gstpoll.c: pool: Fix compiler warning on mingw64 gstpoll.c: In function 'release_event': gstpoll.c:239:3: error: suggest parentheses around assignment used as truth value [-Werror=parentheses] if (status = WaitForSingleObject (set->wakeup_event, INFINITE)) { ^~ https://bugzilla.gnome.org/show_bug.cgi?id=774108 2016-11-04 21:15:58 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update .def for new API 2016-11-04 10:19:17 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * meson.build: meson: Unset the plugin paths to generate the .gir files Avoiding problems when using subproject: Failed to load plugin 'something.so: file too short 2016-10-10 16:40:21 +0200 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/gstinfo.c: debug: Remove the Gst only based stack trace printing implementation We now have 2 other implementations that should work better. https://bugzilla.gnome.org/show_bug.cgi?id=772555 2016-10-07 12:02:44 +0200 Thibault Saunier <thibault.saunier@osg.samsung.com> * plugins/tracers/Makefile.am: * plugins/tracers/gstleaks.c: * plugins/tracers/meson.build: tracers: leaks: Use the new gst_debug_get_stack_trace And remove the local implementation of it. https://bugzilla.gnome.org/show_bug.cgi?id=772555 2016-10-07 11:38:27 +0200 Thibault Saunier <thibault.saunier@osg.samsung.com> * config.h.meson: * configure.ac: * docs/gst/gstreamer-sections.txt: * gst/Makefile.am: * gst/gstinfo.c: * gst/gstinfo.h: * gst/meson.build: * meson.build: * plugins/tracers/meson.build: gst: Use libunwind/libdw to generate backtraces if avalaible Making the gst_debug_print_trace function more generally useful. API: + gst_debug_get_trace https://bugzilla.gnome.org/show_bug.cgi?id=772555 2016-11-02 13:57:51 +0100 Antonio Ospite <ao2@ao2.it> * tools/gst-launch.c: tools: gst-launch: fix minor memory leak when failing to parse options Commit 215cfcf99338 (gstreamer: Fix memory leaks when context parse fails) fixes some memory leak, but in one of the newly added calls to g_clear_error() the wrong variable was passed. When failing to parse command line options, free the "err" variable, not the "error" one. https://bugzilla.gnome.org/show_bug.cgi?id=773907 2016-11-03 15:22:34 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesink.c: basesink: Make sure we never drop the preroll buffer This is cosmetic as 'late' should never be set during preroll (in pause). Though code may evolve in the future, so this is good for preventing potential bugs. https://bugzilla.gnome.org/show_bug.cgi?id=772468 2016-10-05 14:26:11 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstbasesink.c: basesink: Don't nest prepare/render calls When the first buffer arrives, we endup calling: ->prepare() ->prepare() ->preroll() ->render() This will likely confuse any element using this method. With this patch, we ensure the preroll take place before the first render prepare() is called. This will result in: ->prepare() ->preroll() ->prepare() ->render() https://bugzilla.gnome.org/show_bug.cgi?id=772468 2016-11-02 16:27:58 +0000 Luis de Bethencourt <luisbg@osg.samsung.com> * libs/gst/base/gstbasesink.c: basesink: fix typo in documentation Small typo in the documentatin of gst_base_sink_set_drop_out_of_segment(). Fixing it. 2016-11-02 16:35:59 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesink.h: basesink: Fix gst_base_sink_set_drop_out_of_segment() documentation Also silences a GI warning. 2016-11-02 14:11:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/check/libcheck/clock_gettime.c: clock_gettime.c: Use __APPLE__ instead of __MACH__ Hurd also defines __MACH__, but it does not have mach_absolute_time. Use the more strict __APPLE__ instead. Has also been sent upstream: https://github.com/libcheck/check/pull/65 2016-11-02 14:01:38 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * m4/check-checks.m4: build: Fix AM_CONDITIONAL check for clock_gettime It was always evaluating to false, so clock_gettime.c was always being included into libcheck. This breaks building on Hurd and causes us to always override clock_gettime() even when it is available. https://bugzilla.gnome.org/show_bug.cgi?id=773813 2016-11-02 10:12:58 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/meson.build: gst: Also include the gstdynamictypefactory.c source file in the build 2016-11-02 10:04:01 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/Makefile.am: * gst/meson.build: gst: Install gstdynamictypefactory.h header file 2016-11-02 09:35:05 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: Revert "baseparse: fix draining with less data than min frame size available" This reverts commit 2e278aeb7128e8732f5324ab8c8b22a47950c80a. Some parsers, specifically audio parsers, assume to get all remaining data on EOS and just pass them onwards. While the idea here is correct, we will probably need a property for this on baseparse for parsers to opt-in. https://bugzilla.gnome.org/show_bug.cgi?id=773666 2015-06-26 03:29:27 +1000 Jan Schmidt <jan@centricular.com> * gst/parse/grammar.y: * gst/parse/parse.l: * gst/parse/types.h: * tests/check/pipelines/parse-launch.c: * tools/gst-launch.1.in: parse-launch: Support linking all pads with new operator Introduce a new operator ':' - e.g. element1 ':' element2 For example, 'uridecodebin : encodebin' - if the encodebin has multiple profiles compatible with the decodebin, multiple links will be created. With '!' , after one delayed link is successfully done, the pad-added callback is disconnected. https://bugzilla.gnome.org/show_bug.cgi?id=751450 2016-11-02 11:32:42 +1100 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbasesink.c: * win32/common/libgstbase.def: Add new basesink API to exports and Since markers Add Since markers to the new basesink API to drop out-of-segment buffers, and add them to the win32 exports 2015-05-14 00:25:21 +1000 Jan Schmidt <jan@centricular.com> * gst/Makefile.am: * gst/gst.h: * gst/gst_private.h: * gst/gstdynamictypefactory.c: * gst/gstdynamictypefactory.h: * gst/gstelementfactory.h: * gst/gstregistrybinary.c: * gst/gstregistrychunks.c: * gst/gstregistrychunks.h: * gst/gststructure.c: * gst/gstvalue.c: * win32/common/libgstreamer.def: dynamic types: Implement dynamic types in the registry Implement GstDynamicTypeFactory as a new registry feature. GstDynamicTypeFactory provides a way of registering a GType into the registry, such that it will be registered as a dynamic type when the registry is loaded, and then automatically loaded if the type is needed during caps parsing. This allows using non-core types in pad templates, by loading a registry feature to create the GType on the fly. https://bugzilla.gnome.org/show_bug.cgi?id=750079 2016-04-29 02:38:49 +1000 Jan Schmidt <jan@centricular.com> * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesink.h: * plugins/elements/gstfakesink.c: fakesink: Add property to not drop out-of-segment buffers Implement handling in basesink to not unconditionally discard out-of-segment buffers and expose it as a new property on fakesink (not unconditionally in all basesink based sinks). The property defaults to FALSE. https://bugzilla.gnome.org/show_bug.cgi?id=765734 2016-11-01 23:54:05 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstvalue.c: value: Update GstValue table size for GValueArray 2016-07-07 19:41:49 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfunnel.c: funnel: Always push all sticky events whenever we forward a serialized event Otherwise downstream will have an inconsistent set of sticky events at this point, e.g. when a TAG event is pushed and downstream wants to relate it to the stream by looking at the current STREAM_START event. https://bugzilla.gnome.org/show_bug.cgi?id=768526 2016-03-29 10:38:05 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttee.c: tee: Set GST_PAD_FLAG_PROXY_CAPS before forwarding sticky events https://bugzilla.gnome.org/show_bug.cgi?id=752213 2016-10-29 11:17:38 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: fix draining with less data than min frame size available baseparse would pass whatever is left in the adapter to the subclass when draining, even if it's less than the minimum frame size required. This is bogus, baseparse should just discard that data then. The original intention of that code seems to have been that if we have more data available than the minimum required we should pass all of the data available and not just the minimum required, which does make sense, so we'll continue to do that in the case that more data is available. Fixes assertions in rawvideoparse on EOS after not-negotiated with fakesrc sizetype=random ! queue ! rawvideoparse format=rgb ! appsink caps=video/x-raw,format=I420 https://bugzilla.gnome.org/show_bug.cgi?id=773666 2015-10-29 22:51:18 +0100 Stian Selnes <stian@pexip.com> * gst/gstinfo.c: info: Replace %p and %r in GST_DEBUG_FILE It's useful to be able to set a name pattern for GST_DEBUG_FILE so that the same environment variable can be used for multiple processes and still write to different files. Especially useful if these processes run simultaneously. %p: Replaced with PID %r: Replaced with random number %p is obviously useful. %r is useful when for instance running two processes with same PID but in different containers. https://bugzilla.gnome.org/show_bug.cgi?id=773092 2013-05-02 10:09:29 +0200 Stian Selnes <stian.selnes@gmail.com> * gst/gst.c: * gst/gstregistry.c: registry: set env GST_REGISTRY_DISABLE=yes to disable registry If GST_REGISTRY_DISABLE=yes the registry is disabled similar to compile time switch GST_DISABLE_REGISTRY. https://bugzilla.gnome.org/show_bug.cgi?id=773089 2015-11-11 16:43:40 +0100 Stian Selnes <stian@pexip.com> * gst/gstvalue.c: gstvalue: Make GValueArray serializable For instance very useful for logging GValueArray with GST_PTR_FORMAT https://bugzilla.gnome.org/show_bug.cgi?id=761918 2016-04-29 16:26:49 +0900 Wonchul Lee <wonchul.lee@collabora.com> * gst/gstelement.c: * gst/gstpadtemplate.c: * tests/check/gst/gstelement.c: * tests/check/gst/gstpad.c: element: Allow multiple conversion specifiers for request pads This allows pad template names like "src_%u_%u", but it does not allow multiple specifiers of string type %s as that would lead to ambiguities. https://bugzilla.gnome.org/show_bug.cgi?id=761225 2015-11-05 17:13:25 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstpad.c: * gst/gstpad.h: pad: add no-reconfigure link check Enable it to prevent sending reconfigure when linking elements. Useful for autoplugging when we know caps or bufferpools shouldn't change to save doing caps renegotiation to end up with the same final scenario. The no-reconfigure is not a proper check, it is a flag. It is implemented as a GstPadLinkCheck to avoid creating another gst_pad_link variant. https://bugzilla.gnome.org/show_bug.cgi?id=757653 2016-11-01 18:08:18 +0000 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: update version 2016-11-01 17:35:18 +0000 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * docs/Makefile.am: * docs/manual/.gitignore: * docs/manual/Makefile.am: * docs/manual/README: * docs/manual/advanced-autoplugging.xml: * docs/manual/advanced-buffering.xml: * docs/manual/advanced-clocks.xml: * docs/manual/advanced-dataaccess.xml: * docs/manual/advanced-dparams.xml: * docs/manual/advanced-interfaces.xml: * docs/manual/advanced-metadata.xml: * docs/manual/advanced-position.xml: * docs/manual/advanced-threads.xml: * docs/manual/appendix-checklist.xml: * docs/manual/appendix-compiling.xml: * docs/manual/appendix-integration.xml: * docs/manual/appendix-licensing.xml: * docs/manual/appendix-porting.xml: * docs/manual/appendix-programs.xml: * docs/manual/appendix-quotes.xml: * docs/manual/base.css: * docs/manual/basics-bins.xml: * docs/manual/basics-bus.xml: * docs/manual/basics-data.xml: * docs/manual/basics-elements.xml: * docs/manual/basics-helloworld.xml: * docs/manual/basics-init.xml: * docs/manual/basics-pads.xml: * docs/manual/basics-plugins.xml: * docs/manual/bin-element-ghost.png: * docs/manual/bin-element-noghost.png: * docs/manual/bin-element.png: * docs/manual/clocks.png: * docs/manual/communication.png: * docs/manual/diagrams-clocks.svg: * docs/manual/diagrams-general.svg: * docs/manual/diagrams-pipelines.svg: * docs/manual/filter-element-multi.png: * docs/manual/filter-element.png: * docs/manual/gstreamer-overview.png: * docs/manual/hello-world.png: * docs/manual/highlevel-playback.xml: * docs/manual/highlevel-xml.xml: * docs/manual/images/.gitignore: * docs/manual/intro-basics.xml: * docs/manual/intro-gstreamer.xml: * docs/manual/intro-motivation.xml: * docs/manual/intro-preface.xml: * docs/manual/linked-elements.png: * docs/manual/manual.xml: * docs/manual/mime-world.png: * docs/manual/outline.txt: * docs/manual/simple-player.png: * docs/manual/sink-element.png: * docs/manual/src-element.png: * docs/manual/state-diagram.svg: * docs/manual/thread-buffering.png: * docs/manual/thread-synchronizing.png: * docs/manual/titlepage.xml: * docs/pwg/.gitignore: * docs/pwg/Makefile.am: * docs/pwg/advanced-allocation.xml: * docs/pwg/advanced-clock.xml: * docs/pwg/advanced-dparams.xml: * docs/pwg/advanced-events.xml: * docs/pwg/advanced-interfaces.xml: * docs/pwg/advanced-negotiation.xml: * docs/pwg/advanced-qos.xml: * docs/pwg/advanced-request.xml: * docs/pwg/advanced-scheduling.xml: * docs/pwg/advanced-tagging.xml: * docs/pwg/advanced-types.xml: * docs/pwg/appendix-checklist.xml: * docs/pwg/appendix-licensing.xml: * docs/pwg/appendix-porting.xml: * docs/pwg/appendix-python.xml: * docs/pwg/base.css: * docs/pwg/building-boiler.xml: * docs/pwg/building-chainfn.xml: * docs/pwg/building-eventfn.xml: * docs/pwg/building-pads.xml: * docs/pwg/building-props.xml: * docs/pwg/building-queryfn.xml: * docs/pwg/building-signals.xml: * docs/pwg/building-state.xml: * docs/pwg/building-testapp.xml: * docs/pwg/intro-basics.xml: * docs/pwg/intro-preface.xml: * docs/pwg/other-base.xml: * docs/pwg/other-manager.xml: * docs/pwg/other-ntoone.xml: * docs/pwg/other-oneton.xml: * docs/pwg/other-sink.xml: * docs/pwg/other-source.xml: * docs/pwg/pwg.xml: * docs/pwg/titlepage.xml: * tests/examples/Makefile.am: * tests/examples/manual/.gitignore: * tests/examples/manual/Makefile.am: * tests/examples/manual/extract.pl: docs: remove app dev manual and plugin writer's guide They have moved to gst-docs and will be maintained there in future. === release 1.11.0 === 2016-11-01 18:53:15 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.10.0 === 2016-11-01 17:50:24 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstenumtypes.c: * win32/common/gstversion.h: Release 1.10.0 2016-11-01 17:40:11 +0200 Sebastian Dröge <sebastian@centricular.com> * po/nb.po: Update .po files 2016-11-01 17:38:43 +0200 Sebastian Dröge <sebastian@centricular.com> * po/nb.po: po: Update translations 2016-11-01 17:36:02 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2016-10-25 12:21:07 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: * meson_options.txt: meson: Add an option to explicitly disable gtk-doc Similar to how Autotools provides an option, default is 'enabled'. 2016-10-24 11:45:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstcollectpads.c: Revert "collectpads: Assume PTS is equal DTS if PTS is missing" This reverts commit 9b0d42ceecb3198399d7e05e3d5f080a7ca27ca9. https://bugzilla.gnome.org/show_bug.cgi?id=762207 2016-10-18 11:59:25 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstallocator.c: allocator: Mark registered allocator for leak 2016-06-21 08:00:30 -0500 Andrew Eikum <aeikum@codeweavers.com> * gst/gstmessage.h: gstmessage.h: Avoid gcc bit shift overflow compiler warning Avoids bit shift overflow warning with gcc6. https://bugzilla.gnome.org/show_bug.cgi?id=767882 (glib) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71803 (gcc) https://bugzilla.gnome.org/show_bug.cgi?id=767883 2016-10-23 22:11:08 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/parse/grammar.y: parse: fix erroneous use of _("") Fixes xgettext warnings when doing 'make update-po': gst/parse/grammar.y:217: warning: Empty msgid. It is reserved by GNU gettext: gettext("") returns the header entry with meta information, not the empty string. 2016-10-22 17:05:44 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/libs/gstreamer-libs-docs.sgml: docs: add index for API new in 1.10 2016-10-22 17:05:25 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-docs.sgml: * docs/libs/gstreamer-libs-docs.sgml: docs: add index for API new in 1.8 2016-10-21 15:40:47 +0200 Jesper Larsen <knorr.jesper@gmail.com> * libs/gst/base/gstadapter.c: adapter: Fix mix-up between DTS and PTS https://bugzilla.gnome.org/show_bug.cgi?id=773319 2016-10-21 15:22:28 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue.c: Revert "queue: Fix race when calculating cur_level.time" This reverts commit d03bd547809f849405a3f706920091d9b03147b0. It breaks the unit test, although it ensures that only correct values are used for calculations. Needs to be fixed up. https://bugzilla.gnome.org/show_bug.cgi?id=773096 2016-10-20 17:19:25 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/printf/meson.build: * libs/gst/check/libcheck/meson.build: * meson.build: Revert "meson: Use the new `pic` argument on static libs" This reverts commit a5752240a178c2c651ed10167025fad8b9c4e7bd. pic was added after 0.35 and will be present in 0.36 (meson documentation was wrong). 2016-10-20 15:38:46 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * gst/printf/meson.build: * libs/gst/check/libcheck/meson.build: * meson.build: meson: Use the new `pic` argument on static libs We depend on meson 0.35 which makes it simpler to handle Removes a meson warning 2016-09-14 14:23:56 +0200 Stian Selnes <stian@pexip.com> * plugins/elements/gstqueue.c: queue: Fix race when calculating cur_level.time On the first buffer, it's possible that sink_segment is set but src_segment has not been set yet. If this is the case, we should not calculate cur_level.time since sink_segment.position may be large and src_segment.position default is 0, with the resulting diff being larger than max-size-time, causing the queue to start leaking (if leaky=downstream). One potential consequence of this is that the segment event may be stored on the srcpad before the caps event is pushed downstream, causing a g_warning ("Sticky event misordering, got 'segment' before 'caps'"). https://bugzilla.gnome.org/show_bug.cgi?id=773096 2016-09-27 00:00:30 +1000 Matthew Waters <matthew@centricular.com> * gst/gstelement.c: element: use g_strcmp0 in set_context It's NULL-safe while the libc implementation may not be. https://bugzilla.gnome.org/show_bug.cgi?id=771773 2016-09-26 23:59:29 +1000 Matthew Waters <matthew@centricular.com> * gst/gstelement.c: element: check for invalid gstcontext's being provided to set_context https://bugzilla.gnome.org/show_bug.cgi?id=771773 2016-10-18 09:38:04 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * meson.build: build: Apply XCode 8 workaround for iOS too clock_gettime was also added for iOS 10.0, so don't use it if we're targetting an older version. That would've caused the symbol to not be found at runtime on older devices. 2016-10-15 21:49:21 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * meson.build: meson: Don't use c_std=c99 Just use the default c_std used by the compiler. With GCC on Linux this is gnu89. Tons of errors related to time.h, signal.h, etc when using c99: FAILED: libs/gst/check/libcheck/check@sta/check_run.c.o cc '-Ilibs/gst/check/libcheck/check@sta' '-fdiagnostics-color=always' '-I../libs/gst/check/libcheck' '-Ilibs/gst/check/libcheck' '-I.' '-I../.' '-Ilibs/gst/check/libcheck/..' '-I../libs/gst/check/libcheck/..' '-pipe' '-Wall' '-Winvalid-pch' '-std=c99' '-DHAVE_CONFIG_H' '-fPIC' '-O2' '-g' '-fPIC' '-MMD' '-MQ' 'libs/gst/check/libcheck/check@sta/check_run.c.o' '-MF' 'libs/gst/check/libcheck/check@sta/check_run.c.o.d' -o 'libs/gst/check/libcheck/check@sta/check_run.c.o' -c ../libs/gst/check/libcheck/check_run.c In file included from ../libs/gst/check/libcheck/check_run.c:21:0: ../libs/gst/check/libcheck/libcompat.h:167:18: warning: ‘struct itimerspec’ declared inside parameter list will not be visible outside of this definition or declaration const struct itimerspec *new_value, struct itimerspec *old_value); ^~~~~~~~~~ ../libs/gst/check/libcheck/check_run.c:98:25: error: array type has incomplete element type ‘struct sigaction’ static struct sigaction old_action[3]; ^~~~~~~~~~ ../libs/gst/check/libcheck/check_run.c:99:25: error: array type has incomplete element type ‘struct sigaction’ static struct sigaction new_action[3]; ^~~~~~~~~~ [...] ninja: build stopped: subcommand failed. The change was originally made because gnu99 was causing issues on OS X. 2016-10-14 11:59:24 +0200 Thibault Saunier <thibault.saunier@osg.samsung.com> * plugins/tracers/gststats.c: stats: Fix warning 2016-10-04 09:20:37 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * libs/gst/helpers/meson.build: * meson.build: * tests/check/meson.build: meson: Make use of new environment object and set plugin path to builddir - Properly set where to find gst-plugin-scanner - Use GST_LOADING_WHITELIST so that only core plugins are used Bump meson requirement to 0.35 2016-10-13 18:20:58 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstcontrolbinding.c: * gst/gstcontrolbinding.h: controlbinding: Store object in a thread-safe GWeakRef g_object_weak_ref() is not thread-safe. 2016-10-13 18:02:38 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/gstargbcontrolbinding.c: argbcontrolbinding: gst_object_replace() is transfer none 2016-10-13 18:01:14 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/controller/gstdirectcontrolbinding.c: directcontrolbinding: Clarify in the documentation what the difference between absolute and not is 2016-10-13 17:55:45 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstcontrolsource.c: controlsource: Remove misleading sentence from the documentation control sources are not required to return values between 0.0 and 1.0. This is completely up to the control binding that is used. 2016-10-13 17:21:30 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstobject.c: object: Fix broken sentence structure in docs 2016-10-13 12:18:12 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * plugins/tracers/gststats.c: tracers: fix structure leak https://bugzilla.gnome.org/show_bug.cgi?id=772851 2016-10-13 12:03:20 +0200 Edward Hervey <edward@centricular.com> * gst/gststreams.h: streams: Extend GstStreamType documentation Users shouldn't assume it will be a single value since it's a flag. 2016-10-03 20:22:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * m4/check-checks.m4: * meson.build: build: Fix clock_gettime check with XCode 8 With XCode 8, clock_gettime will be incorrectly detected as being available regardless of what OS X version we're targetting because the symbol is available in the .tbd library as a weak symbol. See: https://github.com/Homebrew/homebrew-core/issues/3727#issue-170086273 It's only starting from macOS 10.12 that clock_gettime is actually available, so we can unconditionally disable it when targetting older versions. We cannot simply do AC_CHECK_FUNCS with -Wl,-no_weak_imports because the autoconf check does its own prototype declaration that doesn't trigger that compiler flag. https://bugzilla.gnome.org/show_bug.cgi?id=772451 2016-10-11 12:12:57 +0200 Edward Hervey <edward@centricular.com> * gst/gstbin.h: bin: Add a new GST_BIN_FLAG_STREAMS_AWARE flag This flag is to indicate to child elements that they can add and remove pads at any point in time without re-adding existing ones. Elements should post before-hand a GST_MESSAGE_STREAM_COLLECTION https://bugzilla.gnome.org/show_bug.cgi?id=772741 2016-10-10 10:59:26 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/running.xml: docs: paths in env vars are separated by semicolons on windows https://bugzilla.gnome.org/show_bug.cgi?id=772431 2016-10-07 17:02:47 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * docs/design/part-tracing.txt: docs: fix GST_LEAKS_TRACER_SIG doc The documentation wasn't mentioning the SIGUSR2 signal. https://bugzilla.gnome.org/show_bug.cgi?id=772571 2016-10-08 17:23:08 +0200 Edward Hervey <edward@centricular.com> * gst/gstbin.c: bin: Fix iterator resync'ing When we get GST_ITERATOR_RESYNC, we need to call gst_iterator_resync() otherwise we will always get GST_ITERATOR_RESYNC (and that loop would run forever). 2016-10-08 13:54:42 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Implement gst_event_full_func handling Same as we do for queue 2016-10-08 13:20:58 +0200 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gstrusage.c: tracer/rusage: fix format string args The format string contains a process id, but we did not provice one. This caused us to log garbage since all args got shifted. 2016-10-01 16:47:05 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstmessage.c: message: Fix typo in gst_message_new_progress() docs test -> text 2016-09-30 09:57:57 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * hooks/pre-commit.hook: * meson.build: meson: Setup pre-commit hooks when configuring 2016-09-30 11:38:37 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: meson: update version === release 1.9.90 === 2016-09-30 13:01:17 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstversion.h: Release 1.9.90 2016-09-30 12:08:52 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2016-09-30 11:41:14 +0300 Sebastian Dröge <sebastian@centricular.com> * po/de.po: po: Update translations 2016-09-27 18:00:47 +0100 Tim-Philipp Müller <tim@centricular.com> * meson.build: * plugins/tracers/meson.build: meson: tracers: signal availability of libunwind and backtrace() to code Not setting cdata here on purpose because of .. complications. 2016-09-26 18:21:19 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * config.h.meson: * meson.build: * plugins/meson.build: * plugins/tracers/meson.build: meson: Build tracers 2016-09-23 20:40:39 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * docs/gst/meson.build: * docs/libs/meson.build: * docs/meson.build: meson: Fix gtkdoc using new meson features 2016-09-26 12:14:14 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstbuffer.c: * tests/check/gst/gstmemory.c: * tests/check/gst/gstmeta.c: tests: remove unused valgrind stuff Code was also checking the wrong define anyway. 2016-09-26 12:12:12 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/Makefile.am: * tests/check/pipelines/parse-launch.c: tests: parse-launch: looks clean nowadays, so re-enable for valgrind Also, the valgrind bits weren't hooked up properly anyway, checking the wrong define. 2016-09-24 18:22:26 +0100 Tim-Philipp Müller <tim@centricular.com> * config.h.meson: * meson.build: meson: remove incorrect and unneeded check for ptrdiff_t Need to include stddef.h for it, so this would've worked: if cc.has_type('ptrdiff_t', prefix: '#include <stddef.h>') 2016-09-24 18:06:31 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/printf/meson.build: meson: fix internal printf for %ll format modifier on 32-bit systems gst/gstprintf unit test would fail on 32-bit x86 with: gstprintf.c:83:printf_I32_I64:0: 'str' (64-bit x value = b5a6978f) is not equal to '"64-bit x value = f1e2d3c4b5a6978f"' 2016-09-23 04:19:47 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: Revert "meson: Force gstenum_h to be built when using gst_dep" This reverts commit cfc565e2d88a8e7d656b68c5c2a1b7acb08cdb7f. The commit was redundant since gst_gen_sources already contains gstenum_h. We're still investigating why some people are still seeing a racy build failure. 2016-09-23 00:28:53 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/meson.build: meson: Force gstenum_h to be built when using gst_dep This forces gstenumtypes.h to be built whenever something uses gst_dep as a subproject dependency. This is needed since gst/gst.h includes gstenumtypes.h Closes https://github.com/mesonbuild/meson/issues/714 which is not actually a Meson bug. 2016-09-19 10:07:51 -0400 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Add forgotten "git commit --amend" for last commit Need to cast away the const as g_queue_foreach() takes a non-const GQueue* 2016-09-19 10:04:55 -0400 Kouhei Sutou <kou@clear-code.com> * gst/gstbin.c: bin: When copying the sort iterator, also copy its internal queue Otherwise both iterators share the same references, the second one usually resulting in a crash when being freed. https://bugzilla.gnome.org/show_bug.cgi?id=771649 2016-09-11 15:28:43 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * tests/check/elements/queue2.c: queue2: Fix watermark test This carries over code for a similar test from multiqueue to ensure full control over the dataflow while testing. (The previous attempt was racy since the fill level changed without any thread sync with the test code.) https://bugzilla.gnome.org/show_bug.cgi?id=771210 2016-09-11 15:26:26 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstqueue2.c: queue2: Update buffering if its enabled and low/high watermarks are changed https://bugzilla.gnome.org/show_bug.cgi?id=771210 2016-09-15 17:38:49 +0530 Arun Raghavan <arun@arunraghavan.net> * gst/gstmessage.c: message: Fix documentation for gst_message_new_duration() Seems like there was some documentation left over from when this was gst_message_new_duration(). 2016-09-12 17:41:16 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Remove unused fields and always use the buffer timestamp difference for calculating the QoS proportion The buffer timestamps are only hints and more often than not have nothing to do with reality. https://bugzilla.gnome.org/show_bug.cgi?id=771306 2016-09-08 12:58:54 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * gst/gstconfig.h.in: * meson.build: gstconfig: Use __declspec when built with MinGW and linking with MSVC Earlier we were only using __declspec(dllexport/import) when we were built with MSVC because when built with MinGW and linking with MinGW we don't need it (and we get linker errors because of it). However, when we're built with MinGW and someone wants to link to us with MSVC, we still need the prototypes to have __declspec(dllimport) since MSVC cannot do auto-import like GCC can. https://bugzilla.gnome.org/show_bug.cgi?id=771029 2016-09-12 17:07:09 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbin.c: bin: Also don't *unset* element flags if they're in the suppressed flags Otherwise our bin might lose various flags that were explicitly set on it at arbitrary times. 2016-09-10 11:59:11 -0300 Thiago Santos <thiagossantos@gmail.com> * tests/check/gst/gstbin.c: tests: gstbin: add tests for suppressed flags Some simple tests to make sure it keeps working 2016-09-02 17:39:17 +0900 Wonchul Lee <wonchul.lee@collabora.com> * gst/gstbin.c: * gst/gstbin.h: * win32/common/libgstreamer.def: bin: Add setter and getter to suppress element flags Suppress-flags is for preventing propagation of child element's specific flag when it is added to the bin. https://bugzilla.gnome.org/show_bug.cgi?id=770627 2016-09-10 20:50:48 +1000 Jan Schmidt <jan@centricular.com> * autogen.sh: * common: Automatic update of common submodule From b18d820 to f980fd9 2015-11-13 16:00:02 +0000 Graham Leggett <minfrin@sharp.fm> * gst/gst.c: gst: Ensure gst_value is initialised before gst_tag Otherwise GST_TYPE_FRACTION will work correctly in tags. https://bugzilla.gnome.org/show_bug.cgi?id=753922 2016-09-09 11:46:11 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstutils.c: element: Reset the stop position to NONE in seek_simple() When using seek_simple() in combination with other kinds of seeks, this becomes problematic. seek_simple() does not reset the stop position to GST_CLOCK_TIME_NONE but keeps whatever a previous seek did. So for example when doing a seek_simple() after a rate=-1 seek, we would usually get assertions that start>stop (and stop being the old stop from the rate=1 seek). https://bugzilla.gnome.org/show_bug.cgi?id=771104 2016-09-10 09:53:42 +1000 Jan Schmidt <jan@centricular.com> * autogen.sh: * common: Automatic update of common submodule From f49c55e to b18d820 2016-09-09 09:36:40 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * tests/check/meson.build: meson:tests: Bump timeout to 3 minutes Basically we already have each test with a 20sec timeout, and testsuite can last more than the default 30secs from meson. 3 minutes is another arbitrary timeout but should be good enough. 2016-09-08 15:19:38 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Use the average durations based on timestamps for the QoS proportion when doing trickmodes The durations of the buffers are (usually) assuming that no frames are being dropped and are just the durations coming from the stream. However if we do trickmodes, frames are being dropped regularly especially if only key units are supposed to be played. Fixes completely bogus QoS proportion values in the above case. 2016-09-05 18:07:49 -0300 Thibault Saunier <thibault.saunier@osg.samsung.com> * meson.build: meson: Fix building with meson 0.34 2016-08-26 20:06:59 -0300 Thibault Saunier <tsaunier@gnome.org> * gst/meson.build: * meson.build: * meson_options.txt: meson: Allow others to build GIR files when using GStreamer as subproject And add a way to disable the introspection and bump version to 1.9.2 2016-09-05 11:11:29 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstconfig.h.in: gstconfig.h.in: Add another version of the SH4 #define and S390x https://bugzilla.gnome.org/show_bug.cgi?id=770731 2016-09-05 09:50:17 +0200 Wim Taymans <wtaymans@redhat.com> * gst/gstconfig.h.in: config: newer gcc doesn't know __ppc__ and __ppc64__ anymore __ppc__ and __ppc64__ are non-standard defines, we should use __powerpc__ and __powerpc64__ instead because newer gcc doesn't know them anymore. 2016-09-04 20:39:31 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: add * for pointer signal arguments where needed Print GObject argument properly with pointer marker: "client-added" : void user_function (GstElement* object, GObject* arg0, gpointer user_data); instead of "client-added" : void user_function (GstElement* object, GObject arg0, gpointer user_data); for gst-inspect-1.0 tcpserversink. 2016-09-02 23:22:17 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/Makefile.am: tests: don't build misc subdir if both examples and benchmarks have been disabled https://bugzilla.gnome.org/show_bug.cgi?id=770740 2016-09-01 14:13:40 +0200 Wim Taymans <wtaymans@redhat.com> * gst/gstconfig.h.in: config: support System z 2016-09-01 12:25:23 +0300 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.9.2 === 2016-09-01 12:24:45 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gstreamer-plugins.args: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstenumtypes.c: * win32/common/gstversion.h: Release 1.9.2 2016-09-01 11:22:45 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: po: Update translations 2016-08-31 09:49:03 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstmultiqueue.c: * tests/check/elements/multiqueue.c: multiqueue: Add higher-resolution low/high-watermark properties low/high-watermark are of type double, and given in range 0.0-1.0. This makes it possible to set low/high watermarks with greater resolution, which is useful with large multiqueue max sizes and watermarks like 0.5%. Also adding a test to check the fill and watermark level behavior. https://bugzilla.gnome.org/show_bug.cgi?id=770628 2016-08-31 09:48:53 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstmultiqueue.c: * plugins/elements/gstmultiqueue.h: multiqueue: Distinguish between buffering percentage and buffering level To make the code clearer, and to facilitate future improvements, introduce a distinction between the buffering level and the buffering percentage. Buffering level: the queue's current fill level. The low/high watermarks are in this range. Buffering percentage: percentage relative to the low/high watermarks (0% = low watermark, 100% = high watermark). To that end, get_percentage() is renamed to get_buffering_level(). Also, low/high_percent are renamed to low/high_watermark to avoid confusion. mq->buffering_percent values are now normalized in the 0..100 range for buffering messages inside update_buffering(), and not just before sending the buffering message. Finally the buffering level range is parameterized by adding a new constant called MAX_BUFFERING_LEVEL. https://bugzilla.gnome.org/show_bug.cgi?id=770628 2016-08-31 09:48:38 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstmultiqueue.c: * plugins/elements/gstmultiqueue.h: multiqueue: Rename percent/percent_changed to buffering_percent(_changed) This is a prerequisite for subsequent commits, and makes queue2 and multiqueue code a little more consistent. https://bugzilla.gnome.org/show_bug.cgi?id=770628 2016-08-23 14:57:33 +0900 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Fix high_time wakeup logic When calculating the high_time, cache the group value in each singlequeue. This fixes the issue by which wake_up_next_non_linked() would use the global high-time to decide whether to wake-up a waiting thread, instead of the group one, resulting in those threads constantly spinning. Tidy up a bit the waiting logic while we're at it. With this patch, we go from 212% playing a 8 audio / 8 video file down to less than 10% (most of it being the video decoding). https://bugzilla.gnome.org/show_bug.cgi?id=770225 2016-08-28 16:02:14 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/gst-inspect.c: tools: gst-inspect: don't print internal pad request function name This just confuses people, they look at it and try to call it directly by name, instead of using the public GstElement API. It stands to reason that it goes without saying that when an element provides request pads that they can actually be requested using the standard API, and there's no point in printing internal implementation details of the element. 2016-08-23 13:27:58 -0300 Thibault Saunier <tsaunier@gnome.org> * libs/gst/base/gstbaseparse.c: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: * plugins/elements/gsttypefindelement.c: Make use of the new GST_ELEMENT_FLOW_ERROR API all around. https://bugzilla.gnome.org/show_bug.cgi?id=770158 2016-08-23 13:27:20 -0300 Thibault Saunier <tsaunier@gnome.org> * docs/gst/gstreamer-sections.txt: * gst/gstelement.h: element: Add API to more easily post messages about flowing issues In many parts of the code we raise streaming error when the flow goes wrong, and each time we create more or less similare error message. Also that message does not let the application know what has actually gone wrong. In the new API we add a "flow-return" detail field inside the GstMessage so that the application has all the information if it needs it. API: GST_ELEMENT_FLOW_ERROR https://bugzilla.gnome.org/show_bug.cgi?id=770158 2016-08-26 19:27:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * gst/gstconfig.h.in: * meson.build: gstconfig: Decide GST_EXPORT declaration style at build time We only use GST_EXPORT consistently when building with MSVC by using the visual studio definitions files (win32/common/*.def), so always disable it when building with Autotools and only enable it with Meson when building with MSVC. This allows you to use MinGW to link to a GStreamer built with MSVC and get the correct function prototypes to find functions and variables in DLLs. 2016-08-26 16:21:30 +0900 Wonchul Lee <wonchul.lee@collabora.com> * docs/design/part-stream-selection.txt: docs: fix typo in stream selection docs https://bugzilla.gnome.org//show_bug.cgi?id=770428 2016-08-26 12:55:04 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstelement.c: * gst/gstelement.h: * win32/common/libgstreamer.def: element: rename gst_element_message_new_details() to gst_make_element_message_details() Fixes g-i warning "Gst: Constructor return type mismatch symbol='gst_element_message_new_details' constructed='Gst.Element' return='Gst.Structure'". This is a newly-added function in git that has not been in a stable release yet, so it's fine to rename it. It's also only used indirectly via macros. 2016-08-26 12:35:23 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstelement.c: * gst/gstmessage.c: * gst/gsttracerutils.c: docs: fix various gtk-doc warnings e.g. "warning: multi-line since docs found" 2016-08-26 12:04:33 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: g-i: info: allow passing NULL to gst_debug_remove_log_function() Useful for removing the default handler from bindings. 2016-08-25 15:04:06 -0300 Thibault Saunier <tsaunier@gnome.org> * docs/gst/meson.build: * docs/libs/meson.build: * meson.build: meson: doc: Fix building documentation when using subprojects and check the presence of gtk-doc before building the documentation 2016-08-26 03:17:41 +1000 Jan Schmidt <jan@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: Implement can_intersect for GstFlagSet types Make sure that gst_value_can_intersect returns TRUE for GstFlagSet combinations that can successfully intersect 2016-08-03 15:20:20 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: * tests/check/elements/queue2.c: queue2: Add higher-resolution low/high-watermark properties low/high-watermark are of type double, and given in range 0.0-1.0. This makes it possible to set low/high watermarks with greater resolution, which is useful with large queue2 max sizes and watermarks like 0.5%. Also adding a test to check the fill and watermark level behavior. https://bugzilla.gnome.org/show_bug.cgi?id=769449 2016-08-03 15:27:40 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstqueue2.c: queue2: Distinguish between buffering percentage and buffering level To make the code clearer, and to facilitate future improvements, introduce a distinction between the buffering level and the buffering percentage. Buffering level: the queue's current fill level. The low/high watermarks are in this range. Buffering percentage: percentage relative to the low/high watermarks (0% = low watermark, 100% = high watermark). To that end, get_buffering_percent() is renamed to get_buffering_level(), and the code at the end that transforms to the buffering percentage is factored out into a new convert_to_buffering_percent() function. Also, the buffering level range is parameterized by adding a new constant called MAX_BUFFERING_LEVEL. https://bugzilla.gnome.org/show_bug.cgi?id=769449 2016-08-23 10:52:32 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/random/release: docs: release: add tag signing command 2016-07-07 08:01:24 +0200 Arjen Veenhuizen <arjen.veenhuizen@tno.nl> * docs/gst/gstreamer-sections.txt: * gst/gstbuffer.c: * gst/gstbuffer.h: * win32/common/libgstreamer.def: buffer: add explicit getters and setters for buffer flags These can be used from bindings. https://bugzilla.gnome.org/show_bug.cgi?id=768301 2016-08-22 00:01:46 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/meson.build: meson: install libgstcheck-1.0 and add api version to name 2016-08-20 08:54:27 +0900 Hoonhee Lee <hoonhee.lee@lge.com> * gst/gststreams.c: streams: update and emit notify signal only if taglist actually changed https://bugzilla.gnome.org/show_bug.cgi?id=770161 2016-08-12 20:25:17 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * .gitignore: * config.h.meson: * docs/gst/meson.build: * docs/libs/meson.build: * docs/meson.build: * gst/build_mkenum.py: * gst/meson.build: * gst/parse/gen_grammar.py.in: * gst/parse/gen_lex.py.in: * gst/parse/meson.build: * gst/printf/meson.build: * libs/gst/base/meson.build: * libs/gst/check/libcheck/meson.build: * libs/gst/check/meson.build: * libs/gst/controller/meson.build: * libs/gst/helpers/meson.build: * libs/gst/meson.build: * libs/gst/net/meson.build: * libs/meson.build: * meson.build: * meson_options.txt: * pkgconfig/meson.build: * plugins/elements/meson.build: * plugins/meson.build: * po/meson.build: * tests/benchmarks/meson.build: * tests/check/meson.build: * tests/examples/adapter/meson.build: * tests/examples/controller/meson.build: * tests/examples/helloworld/meson.build: * tests/examples/memory/meson.build: * tests/examples/meson.build: * tests/examples/netclock/meson.build: * tests/examples/ptp/meson.build: * tests/examples/stepping/meson.build: * tests/examples/streamiddemux/meson.build: * tests/examples/streams/meson.build: * tests/meson.build: * tests/misc/meson.build: * tools/meson.build: Add support for Meson as alternative/parallel build system https://github.com/mesonbuild/meson With contributions from: Tim-Philipp Müller <tim@centricular.com> Mathieu Duponchelle <mathieu.duponchelle@opencreed.com> Jussi Pakkanen <jpakkane@gmail.com> (original port) Highlights of the features provided are: * Faster builds on Linux (~40-50% faster) * The ability to build with MSVC on Windows * Generate Visual Studio project files * Generate XCode project files * Much faster builds on Windows (on-par with Linux) * Seriously fast configure and building on embedded ... and many more. For more details see: http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html Building with Meson should work on both Linux and Windows, but may need a few more tweaks on other operating systems. 2016-08-13 13:55:15 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: * pkgconfig/gstreamer.pc.in: Move gstconfig.h back to normal include dir Now that it's arch-independent again. Will need fixes in cerbero too. 2016-06-21 18:59:49 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * gst/gstconfig.h.in: gstconfig.h: Detect unaligned access support at compile-time This makes gstconfig.h completely arch-independent. Should cover all compilers that gstreamer is known to build on, and all architectures that I could find information on. People are encouraged to file bugs if their platform/arch is missing. 2016-08-13 09:55:46 +0100 Tim-Philipp Müller <tim@centricular.com> * Makefile.am: * configure.ac: * docs/gst/gstreamer-sections.txt: * gst/Makefile.am: * gst/gst.c: * gst/gstclock.c: * gst/gstconfig.h.in: * gst/gstminiobject.c: * gst/gstobject.c: * gst/gsttrace.c: * gst/gsttrace.h: * po/POTFILES.in: * tests/check/Makefile.am: * win32/common/gstconfig.h: * win32/common/libgstreamer.def: Remove old alloc tracing code now that we have a GstTracer-based replacement It's been internal API only in 1.x. 2016-08-12 16:15:25 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Post buffering messages earlier in ringbuffer mode In ringbuffer mode we need to make sure we post buffering messages *before* blocking to wait for data to be drained. Without this, we would end up in situations like this: * pipeline is pre-rolling * Downstream demuxer/decoder has pushed data to all sinks, and demuxer thread is blocking downstream (i.e. not pulling from upstream/queue2). * Therefore pipeline has pre-rolled ... * ... but queue2 hasn't filled up yet, therefore the application waits for the buffering 100% messages before setting the pipeline to PLAYING * But queue2 can't post that message, since the 100% message will be posted *after* there is room available for that last buffer. https://bugzilla.gnome.org/show_bug.cgi?id=769802 2016-08-08 16:42:06 +0200 Josep Torra <n770galaxy@gmail.com> * plugins/elements/gstmultiqueue.c: multiqueue: removed redundant call to g_thread_self Remove an unneeded call to g_thread_self and minor coding style fix. 2016-03-16 18:00:15 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstinputselector.c: inputselector: Handle stream-group-done Handle the new stream-group-done message to unblock pads which are waiting for the running time to advance on that group. https://bugzilla.gnome.org/show_bug.cgi?id=768995 2016-03-14 14:20:42 +1100 Jan Schmidt <jan@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstevent.c: * gst/gstevent.h: * gst/gstpad.c: * gst/gstquark.c: * gst/gstquark.h: * tests/check/gst/gstevent.c: * win32/common/libgstreamer.def: events: Implement the stream-group-done event A new event which precedes EOS in situations where we need downstream to unblock any pads waiting on a stream before we can send EOS. E.g, decodebin draining a chain so it can switch pads. https://bugzilla.gnome.org/show_bug.cgi?id=768995 2016-07-25 11:22:36 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * docs/gst/gstreamer-sections.txt: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gstquark.c: * gst/gstquark.h: * tests/check/gst/gstmessage.c: * win32/common/libgstreamer.def: message: Add redirect message Redirection messages are already used in fragmented sources and in uridecodebin, so it makes sense to introduce these as an official message type. https://bugzilla.gnome.org/show_bug.cgi?id=631673 2016-07-25 19:15:15 +1000 Jan Schmidt <jan@centricular.com> * plugins/elements/gstinputselector.c: inputselector: Wake other pads when selected goes EOS Other pads that are waiting for the stream on the selected pad to advance before they finish waiting themselves should be given the chance to do so when the selected pad goes EOS. Fixes problems where input streams can end up waiting forever if the active stream goes EOS earlier than their own end time. 2016-07-24 01:35:41 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstelement.h: element: fix GST_ELEMENT_ERROR() error code expansion In some corner cases, the error 'code' part passed to GST_ELEMENT_ERROR() is a valid define as well, in which case it won't survive two levels of macro expansion, but only one. Fixes: oss4-sink.c: In function ‘gst_oss4_sink_open’: error: ‘GST_RESOURCE_ERROR_0x00000002’ undeclared (first use in this function) GST_ ## domain ## _ERROR_ ## code, __txt, __dbg, __FILE__, which is from GST_ELEMENT_ERROR(el,RESOURCE,OPEN_WRITE,..) and OPEN_WRITE happens to be defined to 2 here. https://bugzilla.gnome.org/show_bug.cgi?id=756806 https://bugzilla.gnome.org/show_bug.cgi?id=769117 2016-07-22 17:32:33 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstmessage.c: message: fix some nonsensical annotations 2016-07-22 15:25:09 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * docs/gst/gstreamer-sections.txt: docs: add GST_ELEMENT_*_WITH_DETAILS to doc list 2016-07-22 15:04:58 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * docs/gst/gstreamer-sections.txt: docs: list new message details apis where they seem to belong 2016-07-22 14:59:56 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * win32/common/libgstreamer.def: libgstreamer.def: fix mentions of new message details api I had not updated it after the review changes 2016-03-02 11:22:23 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * gst/gstelement.c: * gst/gstelement.h: * gst/gstmessage.c: * gst/gstmessage.h: * tests/check/gst/gstmessage.c: * win32/common/libgstreamer.def: message: new API for additional custom data to error messages https://bugzilla.gnome.org/show_bug.cgi?id=756806 2016-07-20 12:22:10 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: tracers: leaks: update type filter later for unknown types This allow us to filter using an object type which is implemented by a plugin like, say, GstGtkGLSink. https://bugzilla.gnome.org/show_bug.cgi?id=768989 2016-07-19 14:45:53 +0200 Aurélien Zanelli <aurelien.zanelli@parrot.com> * libs/gst/base/gstcollectpads.c: collectpads: add g-i transfer annotations to peek/pop/read_buffer/take_buffer functions https://bugzilla.gnome.org/show_bug.cgi?id=768948 2016-07-19 23:18:24 +1000 Jan Schmidt <jan@centricular.com> * tests/check/libs/gstnetclientclock.c: tests: Use gst_clock_wait_for_sync () for net client clock Instead of looping, use the gst_clock_wait_for_sync() function to give clocks up to 1 second to synchronise 2016-07-13 15:43:21 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstmessage.c: message: fix annotation of parse_stream_{collection,streams_selected} gst_structure_id_get() returns a new reference so the returned object is actually (transfer full). The unit tests was already unreffing the objects. https://bugzilla.gnome.org/show_bug.cgi?id=768776 2016-07-13 15:43:21 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstdevicemonitor.c: * gst/gstmessage.c: message: fix annotation of parse_device_{added,removed} gst_structure_id_get() returns a new reference so the returned device is actually (transfer full). The code using this API was already correct but the code example in comments was not. https://bugzilla.gnome.org/show_bug.cgi?id=768776 2016-07-14 16:40:22 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstpad.c: pad: add g-i transfer annotatation to _store_sticky_event() For clarity. https://bugzilla.gnome.org/show_bug.cgi?id=768810 2016-07-12 12:32:56 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesrc.c: basesrc: Fix automatic-eos=false mode if a segment.stop is given If segment.stop was given, and the subclass provides a size that might be smaller than segment.stop and also smaller than the actual size, we would already stop there. Instead try reading up to segment.stop, the goal is to ignore the (possibly inaccurate) size the subclass gives and finish until segment.stop or when the subclass tells us to stop. 2016-07-11 21:13:28 +0200 Stefan Sauer <ensonic@users.sf.net> * common: Automatic update of common submodule From f363b32 to f49c55e 2016-07-11 18:45:49 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * tests/benchmarks/capsnego.c: benchmarks: Fix potential stack corruption in capsnego test flavour_str is a non-const pointer that will be written to if the -f option is passed 2016-07-11 11:34:02 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * plugins/tracers/gstleaks.c: leaks: check return values of libunwind calls 2016-07-11 09:58:47 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue2.c: queue2: Fix average input rate calculation on small input range When dealing with small-ish input data coming into queue2, such as adaptivedemux fragments, we would never take into account the last <200ms of data coming in. The problem is that usually on TCP connection the download rate gradually increases (i.e. the rate is lower at the beginning of a download than it is later on). Combined with small download time (less than a second) we would end up with a computed average input rate which was sometimes up to 30-50% off from the *actual* average input rate for that fragment. In order to fix this, force the average input rate calculation when we receive an EOS so that we take into account that final window of data. https://bugzilla.gnome.org/show_bug.cgi?id=768649 2016-07-08 16:31:56 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstminiobject.c: miniobject: weak_unref: display the pointer of the object if failing That's generally the most useful information to help debugging the problem. https://bugzilla.gnome.org/show_bug.cgi?id=768579 2016-07-08 16:29:38 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstbin.c: bin: properly display the type of the removed message Makes debugging easier. https://bugzilla.gnome.org/show_bug.cgi?id=768579 2016-07-08 17:46:06 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstelement.c: element: re-create threadpool after cleaning up tasks We don't free this from gst_deinit() but from gst_task_cleanup_all(), so more GStreamer API may be called. In particular makes unit tests work again with CK_FORK=no. https://bugzilla.gnome.org/show_bug.cgi?id=768577 2016-07-08 16:53:51 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks: warn if object is destroyed while the tracer is disposing This should not happen and generally means some thread is still running. https://bugzilla.gnome.org/show_bug.cgi?id=768578 2016-07-08 16:36:01 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gst_private.h: * gst/gstelement.c: * gst/gsttask.c: element: clean up thread pool from gst_task_cleanup_all() This ensures that all async operations (started from gst_element_call_async()) have been completed and so there is no extra thread running. Fix races when checking for leaks on unit tests as some of those operations were still running when the leaks tracer was checking for leaked objects. https://bugzilla.gnome.org/show_bug.cgi?id=768577 2016-07-08 11:15:06 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * configure.ac: * plugins/tracers/gstleaks.c: leaks tracer: use G_OS_UNIX to check for signal support Checking for signal.h is not good enough as it's present in Windows. Those signals are UNIX specific anyway. https://bugzilla.gnome.org/show_bug.cgi?id=767857 2016-06-22 16:25:16 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * configure.ac: * docs/design/part-tracing.txt: * plugins/tracers/Makefile.am: * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks tracer: add creation stack trace support This allow us to provide the trace of leaked objects making it easier to debug. https://bugzilla.gnome.org/show_bug.cgi?id=767862 2016-06-01 11:08:39 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * docs/design/part-tracing.txt: * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: leaks tracer: add checkpoint support using SIGUSR2 https://bugzilla.gnome.org/show_bug.cgi?id=767857 2016-05-31 16:56:26 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * configure.ac: * docs/design/part-tracing.txt: * plugins/tracers/gstleaks.c: leaks tracer: log alive objects when receiving SIGUSR1 We don't want to automatically catch signals so use an env variable to enable this feature. https://bugzilla.gnome.org/show_bug.cgi?id=767857 2016-07-07 13:15:51 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstfunnel.c: funnel: Only forward sticky events on GAP events if needed That is, if the active pad changed and if forwarding of sticky events is requested at all. We otherwise forward events too often. 2016-07-05 16:50:16 +0200 Miguel París Díaz <mparisdiaz@gmail.com> * gst/gstpad.c: pad: check query caps answered and caps not NULL https://bugzilla.gnome.org/show_bug.cgi?id=768450 2016-07-06 13:50:56 +0300 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.9.1 === 2016-07-06 13:05:02 +0300 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gstreamer-plugins.hierarchy: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstenumtypes.c: * win32/common/gstenumtypes.h: * win32/common/gstversion.h: Release 1.9.1 2016-07-06 11:37:56 +0300 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2016-07-06 10:17:37 +0300 Sebastian Dröge <sebastian@centricular.com> * po/da.po: * po/hr.po: * po/pt_BR.po: * po/sk.po: po: Update translations 2016-07-05 12:17:18 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> * libs/gst/base/gstbaseparse.c: baseparse: Don't add calculated bitrates until threshold Waiting before posting calculated bitrates seems to be the intent of the code, so avoid adding them to the tag list pushed with the first frame. When the threshold is reached, gst_base_parse_update_bitrates sets tags_changed, so this posts the calculated ones right that moment. This prevents an insane average calculated from just the first (key) frame from getting posted. https://bugzilla.gnome.org/show_bug.cgi?id=768439 2016-07-04 10:00:38 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Make sure to not create an invalid event order when generating the default CAPS event because of a GAP event There must be a SEGMENT event before the GAP event, and SEGMENT events must come after any CAPS event. We however did not produce any CAPS yet, so we need to ensure to insert the CAPS event before the SEGMENT event into the pending events list. https://bugzilla.gnome.org/show_bug.cgi?id=766970 2016-07-01 22:34:59 +1000 Jan Schmidt <jan@centricular.com> * gst/gstinfo.h: gstinfo: Avoid gcc 6 warning that breaks the tests build gcc 6 has problems detecting and avoiding throwing a warning for tautological compares in macros (they should only trigger for compares outside macros). Avoid them with a nasty cast of one parameter to void * https://bugzilla.gnome.org/show_bug.cgi?id=764526 2016-07-01 09:44:12 +0200 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Fix behaviour with not-linked and eos pads This is an update on c9b6848885f4675d447e823c8fb117e247658252 multiqueue: Fix not-linked pad handling at EOS While that commit did fix the behaviour if upstream sent a GST_EVENT_EOS, it would break the same issue when *downstream* returns GST_FLOW_EOS (which can happen for example when downstream decoders receive data from after the segment stop). GST_PAD_IS_EOS() is only TRUE when a GST_EVENT_EOS has flown through it and not when a GST_EVENT_EOS has gone through it. In order to handle both cases, also take into account the last flow return. https://bugzilla.gnome.org/show_bug.cgi?id=763770 2016-06-30 15:07:28 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstevent.c: * gst/gstevent.h: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gststreamcollection.c: * gst/gststreamcollection.h: * gst/gststreams.c: * gst/gstutils.c: streams: sprinkle some Since: markers for docs 2016-06-30 14:37:17 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: add gtk-doc blurb for new pad property 2016-02-10 11:42:04 +0100 Edward Hervey <edward@centricular.com> * plugins/elements/gstmultiqueue.c: * plugins/elements/gstmultiqueue.h: multiqueue: Add a pad property to "group" streams When syncing by running time, multiqueue will throttle unlinked streams based on a global "high-time" and the pending "next_time" of a stream. The idea is that we don't want unlinked streams to be "behind" the global running time of linked streams, so that if/when they get linked (like when switching tracks) decoding/playback can resume from the same position as the other streams. The problem is that it assumes elements downstream will have a more or less equal buffering/latency ... which isn't the case for streams of different type. Video decoders tend to have higher latency (and therefore consume more from upstream to output a given decoded frame) compared to audio ones, resulting in the computed "high_time" being at the position of the video stream, much further than the audio streams. This means the unlinked audio streams end up being quite a bit after the linked audio streams, resulting in gaps when switching streams. In order to mitigate this issue, this patch adds a new "group-id" pad property which allows users to "group" streams together. Calculating the high-time will now be done not only globally, but also per group. This ensures that within a given group unlinked streams will be throttled by that group's high-time instead. This fixes gaps when switching downstream elements (like switching audio tracks). 2015-06-12 10:53:23 +0200 Edward Hervey <edward@centricular.com> * docs/design/part-stream-selection.txt: * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: * gst/Makefile.am: * gst/gst.c: * gst/gst.h: * gst/gstevent.c: * gst/gstevent.h: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gstquark.c: * gst/gstquark.h: * gst/gststreamcollection.c: * gst/gststreamcollection.h: * gst/gststreams.c: * gst/gststreams.h: * gst/gstutils.c: * gst/gstutils.h: * tests/check/Makefile.am: * tests/check/gst/.gitignore: * tests/check/gst/gstevent.c: * tests/check/gst/gstmessage.c: * tests/check/gst/gststream.c: * tests/check/gst/gststream.h: * win32/common/libgstreamer.def: gst: New Stream listing/selection system * GstStream * GstStreamCollection * GST_EVENT_SELECT_STREAMS * GST_MESSAGE_STREAM_COLLECTION 2016-06-29 23:24:02 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbufferpool.c: * gst/gstbus.c: * gst/gstpoll.c: poll: #define EWOULDBLOCK to EAGAIN if it's not defined on Windows 2016-06-29 14:05:18 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbufferpool.c: bufferpool: Fix handling of the GstPoll Especially if multiple threads are waiting for buffers to be available again, the current code was wrong. Fix this and document clearly how the GstPoll is supposed to be used. Also fix some potential races with reading from the GstPoll before writing actually happened. https://bugzilla.gnome.org/show_bug.cgi?id=767979 2016-06-29 14:02:55 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Make sure to always read the control after popping a message It might happen that we popped the message before writing of the control happened. In this case we just have to retry again a bit later, and failure to do so will cause an additional byte in the control and the GSource / gst_poll_wait() to always wake up again immediately. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-29 13:37:28 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstsystemclock.c: systemclock: Improve GstPoll handling and don't check for impossible errno values Also just read/write control every time, GstPoll is optimized by itself already to only do I/O if switching between empty and one byte. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-29 13:35:35 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpoll.c: poll: Clarify when FALSE is returned from read/write_control() And also mention what the expected values of errno are going to be. write_control() will only ever return FALSE if there was a critical error. It will never return because of EINTR, EAGAIN or EWOULDBLOCK. read_control() will return FALSE if there was no byte to read, in which case errno would be EWOULDBLOCK. In all other cases there was a critical error. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-29 13:26:57 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpoll.c: poll: set_controllable(), restart() and set_flushing() are only valid for non-timer GstPolls On timer GstPolls it will cause the control socket state to become inconsistent as now one less read_control() than write_control() be would needed. Similarly, read_control() and write_control() are only valid on timer GstPolls. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-29 13:11:01 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpoll.h: poll: Warn if the return value of gst_poll_read_control() is unused This might fail even under correct usage, e.g. if read_control() is called from another thread before write_control() finished in another. It has to be retried then, or other measures have to be taken, depending on how it is used by the surrounding code. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-29 18:57:42 +0200 Matthew Gruenke <mgruenke@tycoint.com> * gst/gstpoll.c: poll: Fix various race conditions with read_control() and write_control() This addresses slightly different race conditions on Linux and Windows, and fixes gst_poll_read_control() when control_pending == 0. On Linux, the socketpair() used for control should not be made O_NONBLOCK. If there's any propagation delay between set->control_write_fd.fd and set->control_read_fd.fd, even the mutex now held will not be sufficient to prevent a race condition. There's no benefit to using O_NONBLOCK, here. Only liabilities. For Windows, it's necessary to fix the race condition between testing set->control_pending and performing WAKE_EVENT()/RELEASE_EVENT(). This is accomplished by acquiring and holding set->lock, for both of these operations. We could optimize the Linux version by making this Windows-specific. For consistency with the Linux implementation, Windows' RELEASE_EVENT() has also been made to block, although it should never happen. Also, changed release_wakeup() to return TRUE and decrement control_pending only when > 0. Furthermore, RELEASE_EVENT() is called only when control_pending == 1. Finally, changed control_pending to use normal, non-atomic arithmetic operations, since it's now protected by set->lock. Note: even though the underlying signaling mechanisms are blocking, release_wakeup() is effectively non-blocking, as it will only attempt to read from control_read_fd.fd after a byte has been written to control_write_fd.fd or WaitForSingleObject() after it's been signaled. https://bugzilla.gnome.org/show_bug.cgi?id=750397 2016-06-28 15:01:17 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstbus.c: bus: chain up GObject::constructed() to the parent class' implementation Needed so GstBus can be tracked by the leaks tracer. https://bugzilla.gnome.org/show_bug.cgi?id=768141 2016-06-24 05:26:09 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstconfig.h.in: gstconfig.h: Don't use extern with dllexport GCC emits an error for this with -Werror: plugin.c:22:1: error: 'gst_plugin_desc' initialized and declared 'extern' [-Werror] This matches how glib does symbol exporting. https://bugzilla.gnome.org/show_bug.cgi?id=767463 2016-06-21 19:49:15 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * configure.ac: * gst/gstconfig.h.in: win32: Don't use dllexport/import when only building statically If the prototypes in the public API have dllimport in them when building statically on Windows, the compiler will look for symbols with symbol mangling and indirection corresponding to a DLL. This will cause a build failure when trying to link tests/examples/etc. External users of GStreamer also need to define -DGST_STATIC_COMPILATION if they want to link to static gstreamer libraries on Windows. A similar version of this patch has been committed to all gstreamer repositories. https://bugzilla.gnome.org/show_bug.cgi?id=767463 2016-06-21 11:45:26 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * common: Automatic update of common submodule From ac2f647 to f363b32 2016-06-15 16:24:27 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * tests/check/elements/queue2.c: tests: add a test for small ring buffer sizes https://bugzilla.gnome.org/show_bug.cgi?id=767688 2016-06-15 13:43:59 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * plugins/elements/gstqueue2.c: queue2: fix crash deleting current region for small ring buffers Ensure we do not attempt to destroy the current range. Doing so causes the current one to be left dangling, and it may be dereferenced later, leading to a crash. This can happen with a very small queue2 ring buffer (10000 bytes) and 4 kB buffers. repro case: gst-launch-1.0 fakesrc sizetype=2 sizemax=4096 ! \ queue2 ring-buffer-max-size=1000 ! fakesink sync=true https://bugzilla.gnome.org/show_bug.cgi?id=767688 2016-06-20 11:34:49 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstobject.c: tests: gstobject: fix typo in test name 2016-06-16 14:08:01 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * docs/design/part-tracing.txt: docs/design/part-tracing: fix reference to renamed func 2016-06-08 12:34:53 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * plugins/elements/gsttee.c: tee: Properly handle return value when only 1 pad This patch handle the case when you have 1 pad (so the fast path is being used) but this pad is removed. If we are in allow-not-linked, we should return GST_FLOW_OK, otherwise, we should return GST_FLOW_UNLINKED and ignore the meaningless return value obtained from pushing. https://bugzilla.gnome.org/show_bug.cgi?id=767413 2016-06-16 15:52:16 +0200 Stefan Sauer <ensonic@users.sf.net> * scripts/gst-plot-traces.sh: gst-plot-traces.sh: add a script to plot gst-tracer graphs The script extracts cpu-usage data from a tracelog and plots it via gnuplot. 2016-06-15 16:12:23 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstdevice.c: device: Fix typo paramater -> parameter 2016-06-14 19:16:33 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.h: info: flesh out GST_PTR_FORMAT docs a bit 2016-06-13 18:33:27 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Update start time when losing state only if we were in PLAYING If we were in PAUSED, the current clock time and base time don't have much to do with the running time anymore as the clock might have advanced while we were PAUSED. The system clock does that for example, audio clocks often don't. Updating the start time in PAUSED will cause a) the wrong position to be reported, b) step events to step not just the requested amount but the amount of time we spent in PAUSED. The start time should only ever be updated when going from PLAYING to PAUSED to remember the current running time (to be able to compensate later when going to PLAYING for the clock time advancing while PAUSED), not when we are already in PAUSED. Based on a patch by Kishore Arepalli <kishore.arepalli@gmail.com> The updating of the start time when the state is lost was added in commit ba943a82c0bbfd17c9ee9f5068d44c9d9274fd13 to fix the position reporting when the state is lost. This still works correctly after this change. https://bugzilla.gnome.org/show_bug.cgi?id=739289 2016-06-11 22:18:06 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Log pad offsets as signed times 2016-06-11 21:56:19 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpad.c: pad: Also check the number of segment events and if other serialized events and queries trigger segment updating too https://bugzilla.gnome.org/show_bug.cgi?id=765049 2016-06-11 21:37:47 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpad.c: pad: Add unit test for pad offset handling on src pads https://bugzilla.gnome.org/show_bug.cgi?id=765049 2016-06-07 11:32:47 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstadapter.c: * libs/gst/base/gstadapter.h: * tests/check/libs/adapter.c: * win32/common/libgstbase.def: adapter: Rename functions and implement new functions, update test We don't do calculations with different units (buffer offsets and bytes) anymore but have functions for: 1) getting the number of bytes since the last discont 2) getting the offset (and pts/dts) at the last discont and the previously added function to get the last offset and its distance from the current adapter position. https://bugzilla.gnome.org/show_bug.cgi?id=766647 2016-05-19 10:31:02 +0200 Edward Hervey <edward@centricular.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/base/gstadapter.c: * libs/gst/base/gstadapter.h: * tests/check/libs/adapter.c: * win32/common/libgstbase.def: adapter: Add methods to query current offset API: gst_buffer_prev_offset API: gst_buffer_get_offset_from_discont The gst_buffer_get_offset_from_discont() method allows retrieving the current offset based on the GST_BUFFER_OFFSET of the buffers that were pushed in. The offset will be set initially by the GST_BUFFER_OFFSET of DISCONT buffers, and then incremented by the sizes of the following buffers. The gst_buffer_prev_offset() method allows retrievent the previous GST_BUFFER_OFFSET regardless of flags. It works in the same way as the other gst_buffer_prev_*() methods. https://bugzilla.gnome.org/show_bug.cgi?id=766647 2016-06-09 17:42:13 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstconfig.h.in: gstconfig.h.in: indent #if #else jungle for better readability 2016-06-08 12:11:19 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: * win32/common/libgstreamer.def: utils: Add gst_pad_link_maybe_ghosting() for consistency We already had a _full() version, but having that alone seems inconsistent. Add a non-full version that mirrors the behaviour of gst_pad_link() vs gst_pad_link_full(). 2016-05-22 13:10:06 +0200 Edward Hervey <edward@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Make sure DISCONT flags are properly propagated If we drop a frame that contained a discontinuity, we must remember that for the next frame that *will* be pushed downstream. https://bugzilla.gnome.org/show_bug.cgi?id=766795 2016-06-04 13:31:58 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstdeviceprovider.c: deviceprovider: remove base_class_finalize function It's not going to get called anyway. https://bugzilla.gnome.org/show_bug.cgi?id=765540 2016-06-04 13:11:55 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstelement.c: element: remove base_class_finalize_func which is never called Won't be called for static types, so no point keeping it around. https://bugzilla.gnome.org/show_bug.cgi?id=765540 2016-06-03 13:55:44 +0100 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/gstleaks.c: tracers: leaks: some micro-optimisations - we know number of filter items is not going to change, but compiler doesn't - only do GST_IS_TRACER check for GObjects, not mini objects - use non-type check cast macros in performance critical paths 2016-05-10 09:29:12 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * docs/design/part-tracing.txt: * plugins/tracers/Makefile.am: * plugins/tracers/gstleaks.c: * plugins/tracers/gstleaks.h: * plugins/tracers/gsttracers.c: tracers: add leaks tracer https://bugzilla.gnome.org/show_bug.cgi?id=765052 2016-05-30 12:11:13 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstcaps.c: * gst/gstdeviceproviderfactory.c: * gst/gstelementfactory.c: * gst/gstpadtemplate.c: * gst/gsttask.c: * libs/gst/net/gstnetclientclock.c: Use MAY_BE_LEAKED_FLAG This helps having "make check" passing with the leaks tracer enabled. https://bugzilla.gnome.org/show_bug.cgi?id=766008 2016-05-09 16:31:36 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstminiobject.c: * gst/gstobject.c: * gst/gsttracerutils.c: * gst/gsttracerutils.h: tracing: add hooks when objects or miniobjects are created and destroyed https://bugzilla.gnome.org/show_bug.cgi?id=765052 2016-05-09 16:56:56 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gst.c: gst_deinit: move down tracers cleaning We want the tracer detecting leaks to be finalized as late as possible to give the chance to other gst components to be properly cleaned first. https://bugzilla.gnome.org/show_bug.cgi?id=765052 2016-05-10 11:06:42 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/gst/gstplugin.c: tests: plugin: remove feature refcount assert This check fails if one, or more, tracers are loaded while running the test. The new "leaks" tracer will be able to check for leaks anyway. https://bugzilla.gnome.org/show_bug.cgi?id=765052 2016-04-14 12:25:43 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gststructure.c: tracerrecord: allow G_TYPE_POINTER for field types Tracers may want to display the address of an object. https://bugzilla.gnome.org/show_bug.cgi?id=765052 2016-05-30 13:42:36 +0200 Stefan Sauer <ensonic@users.sf.net> * tests/check/gst/gstobject.c: gstobject: split up name tests It is better to have separate tests: 1) the test name will tell what is broekn when the test fails 2) we still run the other tests when one assert fails 3) the tests are easier to understand 4) we don't rely on sie effect of previous actions 5) ... Also ix the assertion message for the name checks (Gst -> fakeobject). 2016-05-30 02:06:01 -0700 Stefan Sauer <ensonic@users.sf.net> * docs/design/part-tracing.txt: design: update design doc Some of the api was renamed before the merge. 2016-05-30 02:04:18 -0700 Stefan Sauer <ensonic@users.sf.net> * gst/gstquery.c: docs: xref the free function and expand allocation query docs Add xrefs for how to parse pool details from an allocation query. 2016-05-26 14:43:10 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/gst/gstobject.c: object: Add _set_name() test on parented object This is not allowed, and set_name() should fail. https://bugzilla.gnome.org/show_bug.cgi?id=766923 2016-05-26 14:41:38 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * tests/check/gst/gstobject.c: object: Check that name change are notified once GObject allow calling g_object_notify() within set_property() and won't notify it twice. As it was raised during review, add a unit test to make sure. https://bugzilla.gnome.org/show_bug.cgi?id=766923 2016-05-26 13:17:37 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com> * gst/gstobject.c: object: Notify name change when using _set_name() There was a 0.11 FIXME about notifying the name change or removing that function. Clearly we can't remove this function, so let's notify it. https://bugzilla.gnome.org/show_bug.cgi?id=766923 2016-05-25 15:30:21 +0200 Edward Hervey <bilboed@bilboed.com> * gst/gst_private.h: gst_private: Fix gstconfig include Since it's a generated header, we need to specify the gst subdir so that it gets properly included in out-of-dir compilation 2016-05-25 10:48:05 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gst_private.h: gst: make sure to include gstconfig.h also in gst_private.h For GST_EXPORT define and also things like GST_DISABLE_REGISTRY. Hopefully fixes the following build failure on cerbero-cross-mingw32: helpers/gst-plugin-scanner.c:50: undefined reference to `_imp___gst_disable_registry_cache' 2016-05-24 00:40:27 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: * libs/gst/base/Makefile.am: * libs/gst/check/Makefile.am: * libs/gst/controller/Makefile.am: * libs/gst/net/Makefile.am: g-i: pass compiler env to g-ir-scanner It's what introspection.mak does as well. Should fix spurious build failures on gnome-continuous. 2016-05-23 21:15:48 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/Makefile.am: gst: g-i: pass compiler with quotes So CC="ccache gcc" works properly. 2016-05-23 21:06:53 +0100 Ray Strode <rstrode@redhat.com> * gst/Makefile.am: gst: attempt to fix/track-down mysterious gnome-continuous build failures 2016-05-23 18:00:30 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstiterator.c: iterator: only unset GValue if it was inited And add some function guards. From GLib 2.48 on it is allowed to pass an uninitialised GValue to g_value_unset(). https://bugzilla.gnome.org/show_bug.cgi?id=763762 2016-05-23 18:44:01 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/parse/Makefile.am: gst/parse: Also pass -DGST_EXPORTS here This static library gets included directly into libgstreamer-1.0.so, so it needs the same GST_EXPORTS definition as the rest of the code that's compiled into that otherwise it will try to find the constants it uses from gstinfo via DLL importing (__declspec(dllimport)). Fixes https://ci.gstreamer.net/job/cerbero-cross-mingw32/4393/ 2016-05-20 00:24:54 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstconfig.h.in: gstconfig.h: Always use dllexport/import on Windows __declspec(dllexport/import) are supported by GCC and are needed for properly generating code that fetches the values of constants from DLLs built with __declspec(dllexport) which happens when anything using GST_EXPORT is built with MSVC. See: https://msdn.microsoft.com/en-us/library/619w14ds.aspx Essentially, if you built gstreamer with MSVC and then tried to use constants from it (such as GST_TYPE_CAPS) in a plugin, GCC would retrieve the address of the value instead of the value itself. 2016-05-19 11:27:36 -0300 Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> * scripts/git-update.sh: scripts: make git-update.sh build with all cores available The git-update.sh now builds with all cores available. In case of failure it defaults to 1 The developer can still override this by setting -j to something else in MAKEFLAGS, as stated by 299605dfe2f97fca330161ff01a392e1a85fe422. https://bugzilla.gnome.org/show_bug.cgi?id=766666 2016-05-04 13:53:56 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstminiobject.h: * gst/gstobject.h: (mini)object: add MAY_BE_LEAKED flag https://bugzilla.gnome.org/show_bug.cgi?id=766008 2016-05-15 14:15:51 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbin.c: * tests/check/gst/gstbin.c: bin: emit deep-element-{added,removed} for children of newly-added/removed bin https://bugzilla.gnome.org/show_bug.cgi?id=578933 2016-05-14 10:55:53 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbin.c: * gst/gstbin.h: * tests/check/gst/gstbin.c: bin: add "deep-element-added" and "deep-element-removed" signals This means applications and bin sub-classes can easily track when a new child element is added to the pipeline sub-hierarchy or removed. Currently doesn't signal deep added/removed for elements inside a bin if a bin is added/removed. https://bugzilla.gnome.org/show_bug.cgi?id=578933 2016-05-15 15:02:49 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.h: pad: Improve IDLE probe docs Make it explicit that the pad is only blocked while the callback is running, and the pad will be unblocked again once the callback returned. If BLOCK and IDLE behaviour is needed, both need to be used. https://bugzilla.gnome.org/show_bug.cgi?id=766002 2016-05-15 13:29:55 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/plugins/inspect/plugin-coreelements.xml: docs: Update for git master 2016-03-11 16:04:52 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: queue: Only unblock upstream waiting for the query once downstream is finished ... when flushing and deactivating pads. Otherwise downstream might have a query that was already unreffed by upstream, causing crashes or other interesting effects. https://bugzilla.gnome.org/show_bug.cgi?id=763496 2016-05-14 17:31:51 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: basesink/src: Post an error message if ::start() fails The subclass should do that already, but just in case do it ourselves too as a fallback. Without this, e.g. playbin will just wait forever if this fails because it is triggered as part of an ASYNC state change. 2016-05-14 23:36:43 +1000 Jan Schmidt <jan@centricular.com> * gst/gstbin.c: bin: Fix EOS forwarding on PLAYING->PLAYING When doing a transition from PLAYING to PLAYING, we will fail to forward an EOS message on the bus, and noone else will ever send it because there'll be no actual state changed message. Allow EOS through directly in that case. 2016-05-13 09:43:14 +0200 Edward Hervey <bilboed@bilboed.com> * gst/gstpad.c: pad: Don't drop LATENCY queries with default implementation If there is only one pad in the internal pads, when folding for LATENCY queries it will just drop the response if it's not live. This is maybe not the proper fix, but it will just accept the first peer responses, and if there are any other pads, it will only take them into account if the response is live. This *should* properly handle the aggregation/folding behaviour of multiple live peer responses, while at the same time handling the simple one-pad-only-and-forward use-case https://bugzilla.gnome.org/show_bug.cgi?id=766360 2016-04-07 00:46:20 +1000 Jan Schmidt <jan@centricular.com> * tools/gst-launch.1.in: Update the examples in the gst-launch-1.0 manpage Replace elements that don't exist any more with ones that do, and insert elements like mpegaudioparse where they are needed. https://bugzilla.gnome.org/show_bug.cgi?id=727105 2016-04-02 01:05:39 +1100 Jan Schmidt <jan@centricular.com> * gst/gst.c: debug: Instantiate GType when dumping debug categories. A lot of debug categories are declared in element class_init functions, which don't get run until the element is first created (not just registered in the plugin load function). This means that --gst-debug-help doesn't print out a lot of categories. Creating an instance of each element from the element factory makes them visible, at some extra cost - 2-3 times longer, which can be a full second or two of extra waiting. Yikes! https://bugzilla.gnome.org/show_bug.cgi?id=741001 2016-05-11 15:06:39 +0300 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Only push a CAPS event downstream if the sinkpad is not in PULL mode The other signal handlers of the type-found signal might have reactivated typefind in PULL mode already, pushing a CAPS event at that point would cause deadlocks and is in general unexpected by elements that are in PULL mode. https://bugzilla.gnome.org/show_bug.cgi?id=765906 2016-05-11 12:16:09 +0900 Wonchul Lee <wonchul.lee@collabora.com> * gst/gstdebugutils.c: debugutils: fix warning on enum properties printing https://bugzilla.gnome.org/show_bug.cgi?id=766251 2016-05-10 15:01:42 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: Fix pad state when deactivating from one mode and then trying to activate another and failing When activating a pad in PULL mode, it might already be in PUSH mode. We now first try to deactivate it from PUSH mode and then try to activate it in PULL mode. If the activation fails, we would set the pad to flushing and set it back to its old mode. However the old mode is wrong, the pad is not in PUSH mode anymore but in NONE mode. This fixes e.g. typefind in decodebin reactivating PUSH/PULL mode if upstream actually fails to go into PULL mode after first PUSHING data to typefind. 2016-03-13 11:05:29 -0400 Anthony G. Basile <blueness@gentoo.org> * libs/gst/check/libcheck/strsignal.c: libcompat.h: strsignal() should be not be decleared const POSIX standards requires strsignal() to return a pointer to a char, not a const pointer to a char. [1] On uClibc, and possibly other libc's, that do not HAVE_DECL_STRSIGNAL, libcompat.h declares const char *strsignal (int sig) which causes a type error. [1] man 3 strsignal https://bugzilla.gnome.org/show_bug.cgi?id=763567 2016-05-05 18:50:05 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstflowcombiner.c: flowcombiner: add debug category Not that it logs much. 2016-05-05 18:02:21 +0100 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstflowcombiner.c: flowcombiner: fix docs for gst_flow_combiner_reset() 2016-05-04 10:04:30 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/pipelines/parse-launch.c: parse-launch: fix factory leak in test We get 2 references one from gst_element_factory_find() and the other from gst_plugin_feature_load(). https://bugzilla.gnome.org/show_bug.cgi?id=765976 2016-05-04 13:46:46 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/gst/gstminiobject.c: miniobject: fix ref count leaks in tests https://bugzilla.gnome.org/show_bug.cgi?id=765978 2016-05-04 09:53:32 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstutils.c: * tests/check/pipelines/parse-launch.c: utils: fix element leak in find_common_root() The root element was not unreffed when iterating over ancestors. https://bugzilla.gnome.org/show_bug.cgi?id=765961 2016-05-02 17:35:29 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tools/gst-inspect.c: inspect: fix feature leak https://bugzilla.gnome.org/show_bug.cgi?id=765957 2016-05-03 11:49:03 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gsturi.c: uri: unref instead of using _gst_uri_free() directly This confuses gst_tracing as we shortcut the mini object reference system. https://bugzilla.gnome.org/show_bug.cgi?id=765958 2016-05-02 09:32:47 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/pipelines/seek.c: pipeline: fix bus leak in seek test gst_bus_add_signal_watch_full() keeps a ref on the bus which should be released using gst_bus_remove_signal_watch(). https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 09:29:31 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/elements/streamiddemux.c: streamiddemux: fix list and event leaks in test https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 08:43:04 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/elements/selector.c: selector: fix pad leaks in tests setup_input_pad() creates a new pad so we should unref it once we're done. https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 08:33:42 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/elements/filesrc.c: filesrc: fix buffer leaks in tests gst_check_setup_sink_pad() internally uses gst_check_chain_func() so we should call gst_check_drop_buffers() when tearing down tests to free the buffers which have been exchanged through the pipeline. https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 08:29:00 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/elements/fakesink.c: fakesink: fix pipeline leak in test https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 07:35:45 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/gst/gstelementfactory.c: elementfactory: fix factory leak in test https://bugzilla.gnome.org/show_bug.cgi?id=765903 2016-05-02 16:00:42 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gstdeviceproviderfactory.c: deviceproviderfactory: fix factory leak The code path when early returning was leaking the extra reference on the factory. https://bugzilla.gnome.org/show_bug.cgi?id=765904 2016-04-10 11:42:18 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstquery.c: query: fix compiler warning C4146: unary minus operator applied to unsigned type, result still unsigned 2016-04-28 14:59:51 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/gst/gstbin.c: bin: fix leaks in unit tests The test rely on bus being flushed when setting the bin to the NULL state which is not the case. This apply only when setting the pipeline state to NULL. https://bugzilla.gnome.org/show_bug.cgi?id=765720 2016-04-28 14:56:18 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * tests/check/gst/gstpad.c: pad: fix buffer leaks in tests The buffer received through the pad have to be unreffed using gst_check_drop_buffers(). https://bugzilla.gnome.org/show_bug.cgi?id=765719 2016-04-30 14:15:08 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstbuffer.c: * gst/gstghostpad.c: * libs/gst/check/gstharness.c: Fix some nonsensical g-i annotations 2016-04-29 14:55:02 +0200 Matej Knopp <matej.knopp@gmail.com> * plugins/elements/gstmultiqueue.c: multiqueue: Ignore time when determining whether sparse stream limits have been reached Basically, sq->max_size.visible is never increased for sparse streams in overruncb when empty queue has been found; If the queue is sparse it just skip the entire logic determining whether max_size.visible should be increased, deadlocking the demuxer. What should be done instead is that when determining if limits have been reached, to ignore time for sparse streams, as the buffer may be far in the future. https://bugzilla.gnome.org/show_bug.cgi?id=765736 2016-02-28 12:06:40 +0200 Sebastian Dröge <sebastian@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstbin.c: * gst/gstbin.h: * gst/gstelement.c: * gst/gstelement.h: * win32/common/libgstreamer.def: element: Add gst_element_call_async() This calls a function from another thread, asynchronously. This is to be used for cases when a state change has to be performed from a streaming thread, directly via gst_element_set_state() or indirectly e.g. via SEEK events. Calling those functions directly from the streaming thread will cause deadlocks in many situations, as they might involve waiting for the streaming thread to shut down from this very streaming thread. This is mostly a convenience function around a GThreadPool and is for example used by GstBin to continue asynchronous state changes. https://bugzilla.gnome.org/show_bug.cgi?id=760532 2016-04-27 09:21:31 +0300 Sebastian Dröge <sebastian@centricular.com> * docs/manual/advanced-dataaccess.xml: manual: Fix buffer memory leak in appsrc example g_signal_emit_by_name() is not like gst_app_src_push_buffer() due to reference counting limitations of signals, it does *not* take ownership of the buffer. 2016-04-26 16:02:14 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gst.c: * gst/gst_private.h: * gst/gstcaps.c: caps: add cleanup priv function Those are allocated in _priv_gst_caps_initialize() so it makes sense to have a symetric cleanup functions called by gst_deinit(). https://bugzilla.gnome.org/show_bug.cgi?id=765606 2016-04-26 16:02:14 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gst.c: * gst/gst_private.h: * gst/gstcapsfeatures.c: capsfeature: add cleanup priv function Those are allocated in _priv_gst_caps_features_initialize() so it makes sense to have a symetric cleanup functions called by gst_deinit(). https://bugzilla.gnome.org/show_bug.cgi?id=765606 2016-04-21 14:45:39 +0100 Alex Ashley <bugzilla@ashley-family.net> * libs/gst/check/gsttestclock.c: testclock: add clock-type property To allow the GstTestClock to be used as a GstSystemClock, it is useful to implement the clock-type property that GstSystemClock provides. This allows GstTestClock to be used as the system clock with code that expects a GstSystemClock. https://bugzilla.gnome.org/show_bug.cgi?id=762147 2016-04-21 13:49:32 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstdatetime.c: datetime: Sanity check year, month and day when parsing ISO-8601 strings Passing years > 9999, months > 12 or days > 31 to gst_date_time_new() will cause an assertion and generally does not make much sense. Instead consider it as a parsing error like hours > 24 and return NULL. 2016-04-20 11:46:19 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Remember if we interpolated DTS from PTS and refresh it whenever we update the PTS Otherwise PTS and DTS will come out of sync if upstream continues to provide PTS and not DTS, and we have to skip some data from the stream or PTS are not exactly increasing with the duration of each packet. https://bugzilla.gnome.org/show_bug.cgi?id=765260 2016-04-20 11:45:28 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gsttypefindhelper.c: typefindhelper: Fix gobject-introspection warning about invalid transfer annotation gsttypefindhelper.c:485: Warning: GstBase: invalid "transfer" annotation for gsize: only valid for array, struct, union, boxed, object and interface types 2016-04-18 13:05:40 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * gst/gst.c: * gst/gst_private.h: * gst/gstallocator.c: allocator: add cleanup method Make tracking memory leaks easier. https://bugzilla.gnome.org/show_bug.cgi?id=765212 2016-03-25 15:55:18 +0100 Francisco Velazquez <francisv@ifi.uio.no> * tests/check/gst/gstplugin.c: tests: plugin: improve debug message https://bugzilla.gnome.org/show_bug.cgi?id=764199 2016-04-14 11:54:32 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstmultiqueue.c: * tests/check/elements/multiqueue.c: multiqueue: Recheck buffering status after changing low threshold https://bugzilla.gnome.org/show_bug.cgi?id=763757 2016-04-14 00:09:44 +0200 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstmultiqueue.c: * tests/check/elements/multiqueue.c: multiqueue: Recalculate fill level after changing high-threshold This ensures the following special case is handled properly: 1. Queue is empty 2. Data is pushed, fill level is below the current high-threshold 3. high-threshold is set to a level that is below the current fill level Since mq->percent wasn't being recalculated in step #3 properly, this caused the multiqueue to switch off its buffering state when new data is pushed in, and never post a 100% buffering message. The application will have received a <100% buffering message from step #2, but will never see 100%. Fix this by recalculating the current fill level percentage during high-threshold property changes in the same manner as it is done when use-buffering is modified. https://bugzilla.gnome.org/show_bug.cgi?id=763757 2016-04-15 13:50:30 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: When initializing DTS from PTS, remember that we did so If we don't store the value in prev_dts, we would over and over again initialize the DTS from the last known upstream PTS. If upstream only provides PTS every now and then, then this causes DTS to be rather static. For example in adaptive streaming scenarios this means that all buffers in a fragment will have exactly the same DTS while the PTS is properly updated. As our queues are now preferring to do buffer fill level calculations on DTS, this is causing huge problems there. See https://bugzilla.gnome.org/show_bug.cgi?id=691481#c27 where this part of the code was introduced. https://bugzilla.gnome.org/show_bug.cgi?id=765096 2016-04-14 09:58:04 +0100 Julien Isorce <j.isorce@samsung.com> * README: * common: Automatic update of common submodule From 6f2d209 to ac2f647 2016-04-13 16:08:30 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk> * plugins/elements/gstmultiqueue.c: multiqueue: catch errors and flushing case after lock This ensures we can not get into an indefinite wait on the following cond var wait. https://bugzilla.gnome.org/show_bug.cgi?id=764999 2016-04-13 16:40:43 +0100 Tim-Philipp Müller <tim@centricular.com> * tools/gst-launch.c: tools: gst-launch: fix up caps printing in verbose mode Add missing 'else' and print caps and taglists without the annoying duplicate string escaping, making both nicer to read. Fixes string leak and coverity CID 1358492. 2016-04-13 12:38:05 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> * plugins/tracers/gstrusage.c: rusage: properly free the queue memory The queue is allocated as part of the tracer struct so we should not use g_queue_free() to free it. https://bugzilla.gnome.org/show_bug.cgi?id=764985 2016-04-13 10:21:15 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.c: * gst/gstmeta.c: meta: Warn if a meta implementation is registered without init function This previously caused uninitialized memory unless something else was initializing all the fields explicitly to something. To be on the safe side, we also allocate metas without init function to all zeroes now as it was relatively common. https://bugzilla.gnome.org/show_bug.cgi?id=764902 2016-04-12 15:17:36 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: Revert "basesink: Take PREROLL_LOCK in wait_event()" This reverts commit 828a4627db0cb6a6706b96d9be97e5e5c7d22215. The lock was already taken elsewhere, in gst_base_sink_event(). 2016-04-12 15:11:30 +0300 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbasesink.c: basesink: Take PREROLL_LOCK in wait_event() It is calling do_sync(), which requires the STREAM_LOCK and PREROLL_LOCK to be taken. The STREAM_LOCK is already taken in all callers, the PREROLL_LOCK not. https://bugzilla.gnome.org/show_bug.cgi?id=764939 2016-02-11 09:33:28 +0100 Julien Isorce <j.isorce@samsung.com> * tests/check/Makefile.am: tests: add PTHREAD_CFLAGS for make check to pass on OS X Currently "make check" fails with: "error: argument unused during compilation: '-pthread'" PTHREAD_CFLAGS now contains -Qunused-arguments to fix that. Explanation here: http://savannah.gnu.org/patch/?8186#comment21 https://bugzilla.gnome.org/show_bug.cgi?id=747954 2016-04-11 10:44:22 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/baseparse.c: tests: baseparse: make work with CK_FORK=no https://bugzilla.gnome.org/show_bug.cgi?id=623469 2016-04-11 10:27:56 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/test_transform.c: * tests/check/libs/transform1.c: * tests/check/libs/transform2.c: tests: transform1: make test work with CK_FORK=no We need to clear some global state and register a new test basetransform subclass for each test because we do things in class_init base on global state. https://bugzilla.gnome.org/show_bug.cgi?id=623469 2016-04-10 20:45:24 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/collectpads.c: tests: collectpads: fix for CK_FORK=no Reset global state when done, and unref sink pads too in teardown function to make it valgrind clean. https://bugzilla.gnome.org/show_bug.cgi?id=623469 2016-04-10 20:25:44 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/streamiddemux.c: tests: streamiddemux: fix with CK_FORK=no Clear global state when done. https://bugzilla.gnome.org/show_bug.cgi?id=623469 2016-04-10 20:04:07 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstbufferpool.c: tests: bufferpool: fix wrong assumptions about pointers and object lifecycles The test assumed that if a buffer has the same pointer address as before it is in fact the same mini object and has been re-used by the pool. This seems to be mostly true, but not always. The buffer might be destroyed and when a new buffer is created the allocator might return the same memory that we just freed. Instead attach a qdata with destroy notify function to buffer instances we want to track to make sure the buffer actually gets finalized rather than resurrected and put back into the pool. 2016-04-10 18:37:31 +0100 Tim-Philipp Müller <tim@centricular.com> * docs/pwg/building-boiler.xml: * docs/pwg/pwg.xml: docs: pwg: remove broken references to example code We point to gst-template at the beginning that shoul be enough. https://bugzilla.gnome.org/show_bug.cgi?id=623575 2016-04-08 13:26:48 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/Makefile.am: tests: don't run tracerrecord in valgrind for now Because of the way we implement logging and adding/removing log functions currently (we leak a GList on purpose) this test leaks. 2016-03-05 17:51:01 +0000 Tim-Philipp Müller <tim@centricular.com> * tools/gst-launch.c: tools: gst-launch: use new async property change notification API https://bugzilla.gnome.org/show_bug.cgi?id=763142 2016-03-05 14:12:36 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstelement.c: * gst/gstelement.h: * gst/gstmessage.c: * gst/gstmessage.h: * gst/gstquark.c: * gst/gstquark.h: * tests/check/gst/gstelement.c: * win32/common/libgstreamer.def: element: add API to get property change notifications via messages Be notified in the application thread via bus messages about notify::* and deep-notify::* property changes, instead of having to deal with it in a non-application thread. API: gst_element_add_property_notify_watch() API: gst_element_add_property_deep_notify_watch() API: gst_element_remove_property_notify_watch() API: gst_message_new_property_notify() API: gst_message_parse_property_notify() API: GST_MESSAGE_PROPERTY_NOTIFY https://bugzilla.gnome.org/show_bug.cgi?id=763142 2016-04-07 20:29:10 +0300 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstcpp.cc: * tests/check/libs/gstlibscpp.cc: tests: Add C++ tests for the other INIT macros we have 2016-04-06 17:19:28 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstcpp.cc: tests: gstcpp: flesh out C++ test so we can add more bits Like a check for GST_MAP_INFO_INIT. 2016-04-06 16:48:38 +0100 Tim-Philipp Müller <tim@centricular.com> * tests/check/libs/gstlibscpp.cc: tests: use catch-all includes for c++ gst libs include test So we get any new header files as well as they're added. 2016-04-06 17:23:20 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstmemory.h: memory: fix C++ compiler warnings with GST_MAP_INFO_INIT 2016-04-04 10:28:18 +0000 Matthew Waters <matthew@centricular.com> * gst/gstutils.c: * tests/check/gst/gstutils.c: utils: check the correct element's state on ghosting pads Checking the current element's state when we're adding pads to the parent element is checking the wrong thing. Silences a 'attempting to add an inactive pad to a running element' warning when adding a ghost pad to a running parent bin of the parent bin of the element. https://bugzilla.gnome.org/show_bug.cgi?id=764176 2016-03-25 01:28:18 +0000 Matthew Waters <matthew@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstutils.c: * gst/gstutils.h: * win32/common/libgstreamer.def: utils: expose pad_link_maybe_ghosting This is a useful function to automatically add ghost pads when linking two elements across bin boundaries without know their exact parentage. e.g. when using gst_parse_bin_from_description (with or without it ghosting pads), one can simply retreive the src/sink pads from the bin to link to another pad. Similar functionality is provided by gst_element_link_pads{_full}() however only by pad name rather than by actual pads. API: gst_pad_link_maybe_ghosting_full https://bugzilla.gnome.org/show_bug.cgi?id=764176 2016-04-03 23:35:46 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com> * docs/design/part-states.txt: docs/design/part-states.txt: spelling fix 2015-05-15 13:36:04 +0100 Mark Combellack <gnome-bugzilla@combellack.net> * gst/gstbin.c: * gst/gstbufferpool.c: * gst/gstelement.c: * gst/gstobject.c: * gst/gstpad.c: * gst/gstpipeline.c: GST_REFCOUNTING: Add logging of pointer address for dispose, finalize, etc messages Updated the GST_REFCOUNTING logging so that it includes the pointer address of the object that is being disposed or finalized. With this change is is then possible to match up GST_REFCOUNTING log messages for object allocation/disposal/finalization. This can help with diagnosing "memory leaks" in applications that have not correctly disposed of all the GStreamer objects it creates. https://bugzilla.gnome.org/show_bug.cgi?id=749427 2016-03-31 11:46:03 +0100 Luis de Bethencourt <luisbg@osg.samsung.com> * gst/gstinfo.c: info: only open log file when adding it to the log function This avoids the leak of opening it and then not passing it or closing it before it goes out of scope. 2016-04-01 22:41:51 +0300 Sebastian Dröge <sebastian@centricular.com> * gst/gstclock.c: clock: Return FALSE in all paths that don't set out parameters in gst_clock_add_observation_unapplied() It returned TRUE when regression failed, while not setting any of the out parameters. This caused uninitialized data from the stack to be used for setting the clock calibration. 2016-03-24 17:34:20 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstpad.c: pad: rework probe's hook_marshall function PUSH and PULL mode have opposite scenarios for IDLE and BLOCK probes. For PUSH it will BLOCK with some data type and IDLE won't have a type. For PULL it will BLOCK before getting some data and will be IDLE when some data is obtained. The check in hook_marshall was specific for PUSH mode and would cause PULL probes to fail to be called. Adding different checks for the mode to fix this issue. https://bugzilla.gnome.org/show_bug.cgi?id=761211 2016-03-24 17:34:40 -0300 Thiago Santos <thiagoss@osg.samsung.com> * tests/check/gst/gstpad.c: tests: pad: extra tests for pad pull probes For BUFFER and IDLE probes https://bugzilla.gnome.org/show_bug.cgi?id=761211 2016-01-28 16:22:17 +0100 Matej Knopp <matej.knopp@gmail.com> * tests/check/gst/gstpad.c: pad: Add test for blocking pull probe https://bugzilla.gnome.org/show_bug.cgi?id=761211 2016-03-24 12:13:39 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstpad.c: pad: consider PROBE_TYPE_EVENT_FLUSH when using PROBE_TYPE_ALL_BOTH When GST_PAD_PROBE_EVENT_FLUSH is used, the probes already have a data type and it is not needed to automatically add the default types. https://bugzilla.gnome.org/show_bug.cgi?id=762330 2016-02-19 16:18:12 +0100 Linus Svensson <linussn@axis.com> * tests/check/gst/gstpad.c: gstpad tests: Add a test for flush event only probes https://bugzilla.gnome.org/show_bug.cgi?id=762330 2016-03-26 17:21:51 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstdebugutils.c: debugutils: fix enum/flag properties printing for elements We want to use the flag/enum nicks here, not only because they are shorter but also because in case of element-specific enums and flags we abuse the enum/flag name field for the description, and we don't want that printed in the dot file. https://bugzilla.gnome.org/show_bug.cgi?id=763814 2016-03-23 10:31:46 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gsttrace.c: alloctrace: print size and allocator details for buffers and memories 2016-02-29 19:04:16 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstinfo.c: info: make it possible to remove default log handler before gst_init() Make sure it's not even added then, so that we never output anything via the default log handler then. https://bugzilla.gnome.org/show_bug.cgi?id=751538 2016-03-05 14:27:35 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstmemory.h: * gst/gstminiobject.h: * gst/gsturi.h: miniobject, memory, uri: warn on unused return value of some funcs Make compiler issue a warning for common beginner mistakes such as: ... gst_buffer_make_writable (buf); gst_buffer_map (buf, &map, GST_MAP_WRITE); ... and similar. Only do this for some functions for now. 2016-03-26 11:17:02 +0000 Tim-Philipp Müller <tim@centricular.com> * .gitignore: .gitignore new netclock-replay testing tool binary 2015-10-17 18:01:47 +0100 Tim-Philipp Müller <tim@centricular.com> * gst/gstregistry.c: registry: allow plugin and feature filter funcs to call registry API Don't keep the registry locked whilst iterating over the plugins or features with a filter function. This would deadlock if the callback tried to access the registry from the function. Instead, make a copy of the feature/plugin list and then filter it without holding the registry lock. This is still considerably faster than the alternative which would be to use a GstIterator. https://bugzilla.gnome.org/show_bug.cgi?id=756738 2016-03-25 12:59:57 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: configure: Remove unneeded parenthesis from AG_GST_CHECK_CHECKS 2016-03-25 12:05:41 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/elements/valve.c: valve: Fix unit test by sending caps before buffers Unexpected critical/warning: gstpad.c:4400:gst_pad_push_data:<'':src> Got data flow before segment event https://bugzilla.gnome.org/show_bug.cgi?id=763753 2016-03-25 10:23:46 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/misc/Makefile.am: netclock: Link the replay example to GIO 2016-03-03 21:45:54 +0530 Arun Raghavan <arun@centricular.com> * tests/misc/Makefile.am: * tests/misc/netclock-replay.c: tests: Add some code to replay and analyse netclientclock This takes readings in the form of ... <local_1> <remote_1> <remote_2> <local_2> ... with one observation per line, and then replays it using the netclientclock code. The output is the statistics structure emitted by the netclientclock, which can then be analysed and tuned once we get those readings for potential edge-cases. It should be possible to find some inputs with "bad" data and convert this into a unit test for future tweaks to run against. 2016-03-03 21:44:35 +0530 Arun Raghavan <arun@centricular.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Always dump clock observations in logs This makes it possible to examine what values we get in logs, and potentially tune our filtering/extrapolation in various scenarios. 2016-03-04 15:50:26 +0900 Vineeth TM <vineeth.tm@samsung.com> * plugins/elements/gstdataurisrc.c: bad: use new gst_element_class_add_static_pad_template() https://bugzilla.gnome.org/show_bug.cgi?id=763081 2016-03-16 15:13:39 +0100 Havard Graff <havard.graff@gmail.com> * plugins/elements/gstvalve.c: * tests/check/elements/valve.c: valve: don't send sticky events as a direct response to upstream events Also refactor the existing valve test to actually test the valve, and not just test the EOS mechanism of a pad. https://bugzilla.gnome.org/show_bug.cgi?id=763753 2016-03-11 09:23:04 +0100 Carlos Rafael Giani <dv@pseudoterminal.org> * gst/gstparse.c: * gst/gstparse.h: * gst/parse/grammar.y: parse-launch: Add flag for placing elements in a bin instead of a pipeline By default, gst_parse_launch_full() creates a GstPipeline if there's more than one toplevel element. Add a flag to let it use a GstBin instead. Also fix the parser to let it use this flag for GST_TYPE_ELEMENT property values, to avoid having GstPipelines inside other GstPipelines. https://bugzilla.gnome.org/show_bug.cgi?id=763457 2016-03-08 19:08:16 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstcapsfilter.c: * plugins/elements/gstcapsfilter.h: capsfilter: optimisation: avoid unnecessary gst_pad_has_current_caps() checks No need to do this for every input buffer, since it involves locking and iterating of the sticky events array and such. https://bugzilla.gnome.org/show_bug.cgi?id=763337 2016-03-03 14:15:00 +0900 Vineeth TM <vineeth.tm@samsung.com> * gst/gstpadtemplate.c: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: * tests/check/elements/fakesink.c: * tests/check/gst/gstpad.c: * tests/check/gst/gstprotection.c: * tests/check/gst/gstutils.c: * tests/check/libs/baseparse.c: * tests/check/libs/collectpads.c: * tests/check/libs/test_transform.c: * tests/check/pipelines/parse-launch.c: * tests/check/pipelines/seek.c: gstreamer: use new gst_element_class_add_static_pad_template() https://bugzilla.gnome.org/show_bug.cgi?id=763020 2016-03-02 17:47:33 +0100 Edward Hervey <edward@centricular.com> * plugins/elements/gstqueue.c: * plugins/elements/gstqueue.h: queue: Use full running time for level calculation Ensures we have proper time level estimation for the cases where the incoming buffers have PTS/DTS outside of the segment start/stop values. https://bugzilla.gnome.org/show_bug.cgi?id=762995 2016-01-27 11:46:06 +0100 Stian Selnes <stian@pexip.com> * gst/gstpad.c: pad: Fix race between gst_element_remove_pad and state change When going from READY to NULL all element pads are deactivated. If simultaneously the pad is being removed from the element with gst_element_remove_pad() and the pad is unparented, there is a race where the deactivation will assert (g_critical) if the parent is lost at the wrong time. The proposed fix will check parent only once and retain it to avoid the race. https://bugzilla.gnome.org/show_bug.cgi?id=761912 2016-03-02 21:11:51 -0500 Nicolas Dufresne <nicolas.dufresne@collabora.com> * libs/gst/base/gstcollectpads.c: collectpads: Assume PTS is equal DTS if PTS is missing This is the best guess we can make if such a buffer reached the collect pad. This is uncommon, we do expect parsers to have tried and fixed that if possible (or needed). https://bugzilla.gnome.org/show_bug.cgi?id=762207 2016-03-24 13:32:41 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development 2016-03-24 11:49:44 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Remove redundant assignment CID 1357158 === release 1.8.0 === 2016-03-24 11:49:08 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstversion.h: Release 1.8.0 2016-03-24 11:35:26 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: Update .po files 2016-03-13 11:05:29 -0400 Anthony G. Basile <blueness@gentoo.org> * libs/gst/check/libcheck/libcompat.h: libcompat.h: strsignal() should be not be decleared const POSIX standards requires strsignal() to return a pointer to a char, not a const pointer to a char. [1] On uClibc, and possibly other libc's, that do not HAVE_DECL_STRSIGNAL, libcompat.h declares const char *strsignal (int sig) which causes a type error. [1] man 3 strsignal https://bugzilla.gnome.org/show_bug.cgi?id=763567 2016-03-22 19:04:59 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpreset.c: preset: Use GST_PRESET_PATH as an extension of the system path, not a replacement of the user path First load all system presets, then all from the environment variable, then from the app directory, then from the user directory. Any one in the chain with the highest version completely replaces all previous ones, later ones with lower versions are merged in without replacing existing presets. This is basically the same behaviour as before, just that GST_PRESET_PATH is inserted as another source of directories between the system and app presets. It was added in ca08af1f17d2ce36b83998a0ba3a7b8bcafd7872, but was accidentially overriding the user preset path there. Which caused inconsistent behaviour as new presets were still stored in the system path, just not loaded from there. Meaning you could store a new preset (in the user path), just for GstPreset to not find it anymore later (because it only looked in the GST_PRESET_PATH instead of the user path). https://bugzilla.gnome.org/show_bug.cgi?id=764034 2016-03-19 12:55:09 +0100 Aurélien Zanelli <aurelien.zanelli@darkosphere.fr> * gst/gstutils.c: utils: add 'transfer full' annotation to gst_pad_peer_query_caps https://bugzilla.gnome.org/show_bug.cgi?id=763912 2016-03-19 12:39:18 +0100 Aurélien Zanelli <aurelien.zanelli@darkosphere.fr> * gst/gstpad.c: pad: add 'transfer full' and 'nullable' annotations to gst_pad_get_current_caps and also change the description accordingly since function returns an incremented caps object or NULL if there is no caps set. https://bugzilla.gnome.org/show_bug.cgi?id=763912 2016-03-18 16:02:43 -0400 Ben Iofel <iofelben@gmail.com> * gst/gstutils.c: utils: fix gir annotation for gst_element_query_convert() https://bugzilla.gnome.org/show_bug.cgi?id=763895 2016-03-17 01:42:55 +1100 Jan Schmidt <jan@centricular.com> * tests/check/elements/multiqueue.c: tests: Check multiqueue not-linked EOS handling Add a test which checks that not-linked pads continue to output data after linked pads have gone EOS https://bugzilla.gnome.org/show_bug.cgi?id=763770 2016-03-18 03:08:39 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: Fix not-linked pad handling at EOS Ensure that not-linked pads will drain out at EOS by correctly detecting the EOS condition based on the EOS pad flag (which indicates we actually pushed an EOS), and make sure that not-linked pads are woken when doing EOS processing on linked pads. https://bugzilla.gnome.org/show_bug.cgi?id=763770 2016-03-15 16:37:33 +0100 Romain Picard <romain.picard@oakbits.com> * plugins/elements/gsttypefindelement.c: typefind: Allow caps query in "have-type" signal handlers If an application calls gst_pad_query_caps from its "have-type" signal handler, then the query fails because typefind->caps has not been set yet. This patch sets typefind->caps in the object method handler, before the signal handlers are called. https://bugzilla.gnome.org/show_bug.cgi?id=763491 === release 1.7.91 === 2016-03-15 11:56:10 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstversion.h: Release 1.7.91 2016-03-15 11:44:03 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/gl.po: * po/hr.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/tr.po: * po/zh_TW.po: Update .po files 2016-03-15 11:39:42 +0200 Sebastian Dröge <sebastian@centricular.com> * po/cs.po: * po/fr.po: * po/hu.po: * po/ru.po: * po/sr.po: * po/sv.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: po: Update translations 2016-03-11 14:17:13 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Store caps on the pad before emitting have-type but send it downstream only in the default signal handler https://bugzilla.gnome.org/show_bug.cgi?id=763491 2016-03-13 10:33:53 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: Recheck after pre_push_frame() if there are tags pending Many parsers are storing tags only in pre_push_frame(), if we wouldn't check afterwards we would push buffers before those tags and a lot of code assumes that tags are available before preroll. https://bugzilla.gnome.org/show_bug.cgi?id=763553 2016-03-14 11:15:07 +0100 Carlos Rafael Giani <dv@pseudoterminal.org> * plugins/elements/gstconcat.c: concat: Fix comment typo 2016-03-12 12:56:28 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: Revert "typefind: Store caps on the pad before emitting have-type but send it downstream only in the default signal handler" This reverts commit 0835c3d6569dde0ec9e5524436367c7678cc4a4a. It causes deadlocks in decodebin, which currently would deadlock if the caps are already on the pad in have-type and are forwarded while copying the sticky events (while holding the decodebin lock)... as that might cause the next element to expose pads, which then calls back into decodebin and takes the decodebin lock. This needs some more thoughts. 2016-03-11 14:17:13 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: Store caps on the pad before emitting have-type but send it downstream only in the default signal handler https://bugzilla.gnome.org/show_bug.cgi?id=763491 2016-03-10 10:35:40 +0100 Carlos Rafael Giani <dv@pseudoterminal.org> * gst/gstelement.h: * gst/gstobject.h: docs: Flesh out element and object macro accessor docs a bit https://bugzilla.gnome.org/show_bug.cgi?id=763213 2016-03-09 16:06:58 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Remove some obsolete code that can cause warnings 2016-03-09 13:44:24 +0200 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Don't reset calibration of internal clock whenever a new netclient clock is created https://bugzilla.gnome.org/show_bug.cgi?id=763325 2016-03-04 18:23:18 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/gstbuffer.h: * tests/check/gst/gstbuffer.c: gstbuffer: fix GstParentBufferMeta GType name The alias define GST_TYPE_PARENT_BUFFER_META_API_TYPE is wrong and breaks the usage of gst_buffer_get_parent_buffer_meta(). This patch fixes the GType alias and make another alias to keep the API compatibility guarded by GST_DISABLE_DEPRECATED. Also added a unit test. https://bugzilla.gnome.org/show_bug.cgi?id=763112 2016-03-02 10:37:09 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gsttracerrecord.c: tracerrecord: Remove useless NULL check and add assertion for making assumptions explicit gst_structure_new_empty() is not returning NULL in any valid scenarios, checking for NULL here is useless. Especially because we would dereference any NULL right after the NULL check again. CID 1352037. We previously check if the string ends on .class, as such strrchr() should return something non-NULL. Add an assertion for that. CID 1349642. 2016-03-01 19:50:26 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstelement.c: element: minor docs fix Make gtk-doc happy. === release 1.7.90 === 2016-03-01 18:14:03 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstversion.h: Release 1.7.90 2016-03-01 16:52:41 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: po: Update translations 2016-02-29 23:33:03 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: * tests/check/gst/gstpipeline.c: Revert "bus: change GstBusSource to hold a weak ref to GstBus" This reverts commit 894c67e642c0f858b5b18097fa7c995bf3cc50c1. 2016-02-29 23:32:58 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: Revert "bus: Make sure to remove the GPollFD from the GSources when destroying the bus" This reverts commit 05700a7082c145057ccc0be763067bcc263239eb. 2016-02-29 17:06:36 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.h: element: Remove GST_STATE_LOCK_FULL() / UNLOCK_FULL() There is no corresponding API for that in GLib and nobody could've ever used these macros without compiler errors anyway. 2016-02-29 10:01:50 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbus.c: bus: Make sure to remove the GPollFD from the GSources when destroying the bus Otherwise the GSource can look into our already destroyed bus where the GPollFD is stored. https://bugzilla.gnome.org/show_bug.cgi?id=762849 2016-02-29 11:06:50 +0900 Vineeth TM <vineeth.tm@samsung.com> * tests/check/gst/gstghostpad.c: tests: ghostpad: Fix memory leaks https://bugzilla.gnome.org/show_bug.cgi?id=762845 2016-02-28 13:59:48 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gsttaglist.c: taglist: add guard to check writability when removing tags from a taglist https://bugzilla.gnome.org/show_bug.cgi?id=762793 2016-02-27 15:36:28 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstcapsfilter.c: * plugins/elements/gstconcat.c: * plugins/elements/gstdownloadbuffer.c: * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfdsink.c: * plugins/elements/gstfdsrc.c: * plugins/elements/gstfilesink.c: * plugins/elements/gstfilesrc.c: * plugins/elements/gstfunnel.c: * plugins/elements/gstidentity.c: * plugins/elements/gstinputselector.c: * plugins/elements/gstmultiqueue.c: * plugins/elements/gstoutputselector.c: * plugins/elements/gstqueue.c: * plugins/elements/gstqueue2.c: * plugins/elements/gststreamiddemux.c: * plugins/elements/gsttee.c: * plugins/elements/gsttypefindelement.c: * plugins/elements/gstvalve.c: elements: use new gst_element_class_add_static_pad_template() https://bugzilla.gnome.org/show_bug.cgi?id=762778 2016-02-27 15:28:49 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/gst/gstreamer-sections.txt: * gst/gstelement.c: * gst/gstelement.h: * win32/common/libgstreamer.def: element: add gst_element_class_add_static_pad_template() Pretty much every single element does gst_element_class_add_pad_template (element_class, gst_static_pad_template_get (&some_templ)); which is both confusing and unnecessary. We might just as well add a function to do that in one step. https://bugzilla.gnome.org/show_bug.cgi?id=762778 2016-02-27 15:32:19 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gsttypefindelement.c: typefind: fix indentation 2016-02-26 12:40:55 +0200 Sebastian Dröge <sebastian@centricular.com> * common: Automatic update of common submodule From b64f03f to 6f2d209 2016-02-25 22:36:14 +0000 James Stevenson <james@stev.org> * gst/gstbus.c: bus: Prevent gst_bus_add_watch_full_unlocked from a segfault if priv->poll == NULL This happens if the process runs out of file descriptors. Better print a critical warning instead of just crashing. https://bugzilla.gnome.org/show_bug.cgi?id=762702 2016-02-24 10:56:24 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstbus.c: * tests/check/gst/gstpipeline.c: bus: change GstBusSource to hold a weak ref to GstBus When holding a regular ref it will cause the GstBus to never reach 0 references and it won't be destroyed unless the application explicitly calls gst_bus_remove_signal_watch(). Switching to weakref will allow the GstBus to be destroyed. The application is still responsible for destroying the GSource. https://bugzilla.gnome.org/show_bug.cgi?id=762552 2016-02-25 14:11:34 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstidentity.c: identity: Add a " " after pts: in the silent=false output 2014-04-16 11:42:18 +0200 Edward Hervey <edward@collabora.com> * docs/manual/advanced-dataaccess.xml: manual: Fix examples to check for gst_buffer_map return values Otherwise people reading the manual will expect it to always succeed :) https://bugzilla.gnome.org/show_bug.cgi?id=728326 2014-04-16 11:40:46 +0200 Edward Hervey <edward@collabora.com> * libs/gst/check/gstcheck.c: gstcheck: Check return value of gst_buffer_map We can't check contents if we don't have access to it https://bugzilla.gnome.org/show_bug.cgi?id=728326 2014-04-16 11:39:15 +0200 Edward Hervey <edward@collabora.com> * plugins/elements/gstfakesink.c: * plugins/elements/gstfakesrc.c: * plugins/elements/gstfdsrc.c: * plugins/elements/gstfilesrc.c: * plugins/elements/gstidentity.c: * plugins/elements/gstqueue2.c: plugins: Check return values of gst_buffer_map() They can fail for various reasons. For non-fatal cases (such as the dump feature of identiy and fakesink), we just silently skip it. For other cases post an error message. https://bugzilla.gnome.org/show_bug.cgi?id=728326 2016-02-23 17:23:43 +0100 Edward Hervey <bilboed@bilboed.com> * gst/gstbuffer.c: buffer: Check return value of gst_memory_map() Only do memory operations if the memory was succesfully map'ed https://bugzilla.gnome.org/show_bug.cgi?id=728326 2016-02-23 18:17:42 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstdataurisrc.c: dataurisrc: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps() Remove calls to gst_pad_has_current_caps() which then go on to call gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just use gst_pad_get_current_caps() and check for NULL. https://bugzilla.gnome.org/show_bug.cgi?id=759539 2015-12-10 15:32:27 +0100 Adam Miartus <adam.miartus@streamunlimited.com> * gst/gsttaglist.c: * gst/gsttaglist.h: taglist: add GST_TAG_CONDUCTOR This is useful for metadata which explicitely distinguishes between artist/composer and conductor. https://bugzilla.gnome.org/show_bug.cgi?id=762450 2016-02-22 14:09:56 +0100 Mark Nauwelaerts <mnauw@users.sourceforge.net> * gst/gstevent.c: event: add some more documentation on stream-id ... where it might end up being used for. 2016-01-22 11:25:30 +0100 Thibault Saunier <tsaunier@gnome.org> * gst/gsttracerutils.c: tracer: Initialize GstTracer _priv_tracers and quarks unconditionnally Some people might use tracer hooks even if GST_TRACER_PLUGINS is not set. https://bugzilla.gnome.org/show_bug.cgi?id=760979 2016-02-20 10:18:06 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/manual/appendix-integration.xml: docs: manual: remove dead link from integration page 2016-02-20 10:13:38 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/manual/advanced-dataaccess.xml: docs: manual: fix formatting advanced-dataaccess.xml:1210: element listitem: validity error : Element listitem content does not follow the DTD, expecting (...), got (para CDATA para ) </listitem> 2016-02-20 00:55:30 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/create-uninstalled-setup.sh: scripts: check for git in create-uninstalled-setup.sh as well 2016-02-19 20:26:26 +0530 Nirbheek Chauhan <nirbheek.chauhan@gmail.com> * gst/glib-compat.c: * gst/gsttask.c: * libs/gst/net/gstptpclock.c: Whenever we include windows.h, also define WIN32_LEAN_AND_MEAN This reduces the number of symbols and code pulled in drastically 2016-02-13 06:53:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/printf/gst-printf.h: printf: On MSVC, also define HAVE_STDINT_H_WITH_UINTMAX MSVC provides stdint.h but not inttypes.h, and we need to include stdint.h to get intmax_t 2016-02-13 06:42:06 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * libs/gst/net/gstptpclock.c: ptpclock: Only include unistd.h if found unistd.h is not provided by the Microsoft Visual C++ compiler. It instead provides the necessary defines through io.h 2016-02-13 06:19:52 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstplugin.c: plugin: Only check for S_IFBLK if it is defined Windows does not define S_IFBLK since it doesn't have block devices 2016-02-19 20:17:02 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/MANIFEST: * win32/README.txt: * win32/common/dirent.c: * win32/common/dirent.h: * win32/common/gtchar.h: * win32/common/libgstdataprotocol.def: * win32/vs10/Common.props: * win32/vs10/Library.props: * win32/vs10/Plugin.props: * win32/vs10/ReadMe.txt: * win32/vs10/Tool.props: * win32/vs10/base/base.vcxproj: * win32/vs10/base/base.vcxproj.filters: * win32/vs10/controller/controller.vcxproj: * win32/vs10/controller/controller.vcxproj.filters: * win32/vs10/generated/generated.vcxproj: * win32/vs10/generated/generated.vcxproj.filters: * win32/vs10/gst-inspect/gst-inspect.vcxproj: * win32/vs10/gst-inspect/gst-inspect.vcxproj.filters: * win32/vs10/gst-launch/gst-launch.vcxproj: * win32/vs10/gst-launch/gst-launch.vcxproj.filters: * win32/vs10/gst-typefind/gst-typefind.vcxproj: * win32/vs10/gst-typefind/gst-typefind.vcxproj.filters: * win32/vs10/gstcoreelements/gstcoreelements.vcxproj: * win32/vs10/gstcoreelements/gstcoreelements.vcxproj.filters: * win32/vs10/gstreamer.sln: * win32/vs10/gstreamer/gstreamer.vcxproj: * win32/vs10/gstreamer/gstreamer.vcxproj.filters: * win32/vs10/net/net.vcxproj: * win32/vs10/net/net.vcxproj.filters: * win32/vs6/grammar.dsp: * win32/vs6/gst_inspect.dsp: * win32/vs6/gst_launch.dsp: * win32/vs6/gstreamer.dsw: * win32/vs6/libgstbase.dsp: * win32/vs6/libgstcontroller.dsp: * win32/vs6/libgstcoreelements.dsp: * win32/vs6/libgstnet.dsp: * win32/vs6/libgstreamer.dsp: * win32/vs7/grammar.vcproj: * win32/vs7/gst-inspect.vcproj: * win32/vs7/gst-launch.vcproj: * win32/vs7/gstreamer.sln: * win32/vs7/libgstbase.vcproj: * win32/vs7/libgstcontroller.vcproj: * win32/vs7/libgstcoreelements.vcproj: * win32/vs7/libgstreamer.vcproj: * win32/vs8/grammar.vcproj: * win32/vs8/gst-inspect.vcproj: * win32/vs8/gst-launch.vcproj: * win32/vs8/gstreamer.sln: * win32/vs8/libgstbase.vcproj: * win32/vs8/libgstcontroller.vcproj: * win32/vs8/libgstcoreelements.vcproj: * win32/vs8/libgstreamer.vcproj: win32: update README and remove outdated build cruft This hasn't been touched for generations, doesn't work, and is just causing confusion. We also don't want to maintain these files manually. 2016-02-19 08:43:00 +0000 George Yunaev <gyunaev@gmail.com> * docs/manual/advanced-dataaccess.xml: manual: Explain what happens if upstream elements are removed from the pipeline without draining them first https://bugzilla.gnome.org/show_bug.cgi?id=762302 2016-02-19 14:41:55 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/elements/identity.c: * tests/check/libs/gstharness.c: tests: fix indentation 2016-02-19 12:38:21 +0200 Sebastian Dröge <sebastian@centricular.com> * configure.ac: Back to development === release 1.7.2 === 2016-02-19 11:47:52 +0200 Sebastian Dröge <sebastian@centricular.com> * ChangeLog: * NEWS: * RELEASE: * configure.ac: * docs/plugins/gstreamer-plugins.args: * docs/plugins/inspect/plugin-coreelements.xml: * gstreamer.doap: * win32/common/config.h: * win32/common/gstenumtypes.c: * win32/common/gstenumtypes.h: * win32/common/gstversion.h: Release 1.7.2 2016-02-19 10:29:40 +0200 Sebastian Dröge <sebastian@centricular.com> * po/af.po: * po/az.po: * po/be.po: * po/bg.po: * po/ca.po: * po/cs.po: * po/da.po: * po/de.po: * po/el.po: * po/en_GB.po: * po/eo.po: * po/es.po: * po/eu.po: * po/fi.po: * po/fr.po: * po/gl.po: * po/hr.po: * po/hu.po: * po/id.po: * po/it.po: * po/ja.po: * po/lt.po: * po/nb.po: * po/nl.po: * po/pl.po: * po/pt_BR.po: * po/ro.po: * po/ru.po: * po/rw.po: * po/sk.po: * po/sl.po: * po/sq.po: * po/sr.po: * po/sv.po: * po/tr.po: * po/uk.po: * po/vi.po: * po/zh_CN.po: * po/zh_TW.po: po: Update translations 2016-02-18 14:20:17 +0000 Julien Isorce <j.isorce@samsung.com> * pkgconfig/gstreamer-base-uninstalled.pc.in: * pkgconfig/gstreamer-check-uninstalled.pc.in: * pkgconfig/gstreamer-controller-uninstalled.pc.in: * pkgconfig/gstreamer-net-uninstalled.pc.in: * pkgconfig/gstreamer-uninstalled.pc.in: uninstalled.pc: add support for non libtool build systems Currently the .la path is provided which requires to use libtool as mentioned in the GStreamer manual section-helloworld-compilerun.html. It is fine as long as the application is built using libtool. So currently it is not possible to compile a GStreamer application within gst-uninstalled with CMake or other build system different than autotools. This patch allows to do the following in gst-uninstalled env: gcc test.c -o test $(pkg-config --cflags --libs gstreamer-1.0) Previously it required to prepend libtool --mode=link https://bugzilla.gnome.org/show_bug.cgi?id=720778 2016-02-18 11:43:22 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: Revert "pad: PULL probes are called without a buffer so don't require any of the data flags to be set" This reverts commit b89fa4786b3df6cb79f662c037dee74b3f7428d6. The changes break various tests. 2016-02-18 11:43:04 +0200 Sebastian Dröge <sebastian@centricular.com> * tests/check/gst/gstpad.c: Revert "pad: Add test for blocking pull probe" This reverts commit 17d30e944be0425ebb4fb6046f82d1f61701fe8f. The PULL probe changes break various tests. 2016-02-18 11:09:36 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstbuffer.c: buffer: Protect against failing to map input memory when merging memories https://bugzilla.gnome.org/show_bug.cgi?id=762239 2016-01-28 16:22:17 +0100 Matej Knopp <matej.knopp@gmail.com> * tests/check/gst/gstpad.c: pad: Add test for blocking pull probe https://bugzilla.gnome.org/show_bug.cgi?id=761211 2016-02-17 16:57:27 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstpad.c: pad: PULL probes are called without a buffer so don't require any of the data flags to be set https://bugzilla.gnome.org/show_bug.cgi?id=761211 2016-02-17 16:41:02 +0200 Sebastian Dröge <sebastian@centricular.com> * gst/gstelement.c: Revert "element: Don't hold state lock all the time while sending an event" This reverts commit b427997119a2b6aacbeb550f729936f8b963e24b. It breaks things that used to work before, even if the change by itself is correct and the previous code is just working around deeper bugs in the async state change code. Let's go back to what previously worked and then fix async state changes in general. https://bugzilla.gnome.org/show_bug.cgi?id=760532 2016-02-17 15:26:49 +0100 Edward Hervey <bilboed@bilboed.com> * gst/gstghostpad.c: Revert "ghostpad: Do nothing in _internal_activate_push_default" That commit would break scheduling reconfiguration with ghostpads This reverts commit ab55ad7eaad4fa2c0b16c789350e882cf70a27ed. 2016-02-17 15:25:08 +0100 Edward Hervey <edward@centricular.com> * tests/check/gst/gstghostpad.c: check: Add test for checking scheduling reconfiguration with ghostpads Showcases the regression introduced by this commit: Commit: ab55ad7eaad4fa2c0b16c789350e882cf70a27ed Author: Stian Selnes <stian@pexip.com> Date: Wed Jan 27 13:20:23 2016 +0100 ghostpad: Do nothing in _internal_activate_push_default 2016-02-17 11:02:34 +0100 Havard Graff <havard.graff@gmail.com> * tests/check/gst/gstghostpad.c: ghostpad: add some tests for activation https://bugzilla.gnome.org/show_bug.cgi?id=761913 2016-01-27 13:20:23 +0100 Stian Selnes <stian@pexip.com> * gst/gstghostpad.c: ghostpad: Do nothing in _internal_activate_push_default When calling gst_pad_activate_mode() on a ghostpad gst_ghost_pad_activate_push_default() will be called. This will call gst_pad_activate_mode() on the proxypad (which is internal of the ghostpad), calling gst_ghost_pad_internal_activate_push_default(), which again will call gst_pad_activate_mode() on the original ghostpad. By simply returning TRUE in gst_ghost_pad_internal_activate_push_default() the redundant call to gst_pad_activate_mode() (for the same pad) is avoided. https://bugzilla.gnome.org/show_bug.cgi?id=761913 2016-02-16 17:53:10 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstregistrychunks.c: registrychunks: remove unused macro macro was added in 2011 and isn't used anymore 2016-02-16 19:11:59 +0200 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: * tests/check/elements/queue2.c: Revert "queue2: add overrun signal" This reverts commit 8ae8b2723d0cf179a4f09b2f6c5f797e2d97034d. It's not used anymore by anything and was considered a bad idea in general. 2014-06-05 13:27:28 -0700 Evan Nemerson <evan@nemerson.com> * gst/gstbuffer.c: * gst/gstcaps.c: * gst/gstcapsfeatures.c: * gst/gstclock.h: * gst/gstevent.c: * gst/gstinfo.c: * gst/gstinfo.h: * gst/gstiterator.c: * gst/gstmessage.c: * gst/gstpadtemplate.c: * gst/gstpluginfeature.c: * gst/gstquery.c: * gst/gststructure.c: * gst/gsttagsetter.c: * gst/gsttypefindfactory.c: * libs/gst/base/gstadapter.c: * libs/gst/base/gstbasesink.c: * libs/gst/base/gstbasesrc.c: docs: annotate C examples as such https://bugzilla.gnome.org/show_bug.cgi?id=731292 2016-02-15 11:13:40 -0300 Thiago Santos <thiagoss@osg.samsung.com> * tests/benchmarks/tracerserialize.c: benchmark: tracerserialize: add missing return statement tracerserialize.c:117:1: error: control reaches end of non-void function [-Werror=return-type] 2016-02-15 10:06:09 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstprotection.c: * libs/gst/check/gstharness.c: * tests/check/gst/gstsystemclock.c: protection/harness/systemclock: move declaration out of for loop initialization C90 compilers complain about it error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode Also run gst-indent on systemclock tests. 2016-01-27 15:16:03 +0100 Havard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: harness: always set our test-clock on the harnessed element The integration is already so tight, there is no reason to not further formalize it! https://bugzilla.gnome.org/show_bug.cgi?id=761914 2016-02-13 16:10:27 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstharness.c: harness: fix compilation Was supposed to be squashed with 336c7bb6 https://bugzilla.gnome.org/show_bug.cgi?id=761910 2016-02-13 16:10:11 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/check/gstharness.c: harness: fix indentation 2016-01-21 13:33:15 +0100 Stian Selnes <stian@pexip.com> * libs/gst/check/gstharness.c: * tests/check/libs/gstharness.c: harness: Fix MT issues when forwarding event/query to sink harness https://bugzilla.gnome.org/show_bug.cgi?id=761910 2016-02-13 10:04:42 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/gst-uninstalled: gst-uninstalled: add new -bad libraries audio, player and wayland to paths And remove egl which no longer exists. 2016-02-12 11:57:55 -0800 Martin Kelly <martin@surround.io> * libs/gst/base/gstpushsrc.h: pushsrc: fix minor typos in header https://bugzilla.gnome.org/show_bug.cgi?id=761970 2016-01-21 13:28:23 +0100 Stian Selnes <stian@pexip.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/check/Makefile.am: * libs/gst/check/gstharness.c: * libs/gst/check/gstharness.h: harness: Add event stress test functions with callback Similar to the stress test functions for buffers that has a callback to create the buffer to be pushed, it's useful to have functions that use a callback to create the event to be pushed. API: gst_harness_stress_push_event_with_cb_start() API: gst_harness_stress_push_event_with_cb_start_full() API: gst_harness_stress_send_upstream_event_with_cb_start() API: gst_harness_stress_push_upstream_event_with_cb_start_full() https://bugzilla.gnome.org/show_bug.cgi?id=761932 2016-01-14 21:54:42 +0100 Havard Graff <havard.graff@gmail.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/check/Makefile.am: * libs/gst/check/gstharness.c: * libs/gst/check/gsttestclock.c: * libs/gst/check/gsttestclock.h: * tests/check/libs/gsttestclock.c: testclock: add crank method And use it inside GstHarness API: gst_test_clock_crank() https://bugzilla.gnome.org/show_bug.cgi?id=761906 2015-12-09 13:43:38 +1100 Havard Graff <havard.graff@gmail.com> * docs/libs/gstreamer-libs-sections.txt: * libs/gst/check/Makefile.am: * libs/gst/check/gstharness.c: * libs/gst/check/gstharness.h: harness: enable empty harness creation and refactor around this Also make the testclock a member of the harness, allowing some more interactions with the clock prior to adding elements. https://bugzilla.gnome.org/show_bug.cgi?id=761905 2016-02-12 15:12:43 +0100 Stian Selnes <stian@pexip.com> * libs/gst/check/gstcheck.h: check: fix unused parameter compiler warning https://bugzilla.gnome.org/show_bug.cgi?id=761919 2015-08-04 17:09:35 +0200 Mikhail Fludkov <misha@pexip.com> * libs/gst/check/gstharness.c: harness: fix the race in blocking push mode Depending on when gst_harness_pull was called - before the buffer reached gst_harness_chain or after we can get different behaviors of the test with enabled blocking push mode. The fix makes the behavior always the same. In pull function we get the buffer first, thus making sure gst_harness_chain waits for the signal, and emitting the signal after. https://bugzilla.gnome.org/show_bug.cgi?id=761931 2016-02-04 15:16:41 +0100 Stian Selnes <stian@pexip.com> * libs/gst/check/gstcheck.h: check: Add tcase_skip_broken_loop_test https://bugzilla.gnome.org/show_bug.cgi?id=761917 2016-01-21 13:25:40 +0100 Stian Selnes <stian@pexip.com> * libs/gst/check/gstharness.c: harness: Fix docs for stress test functions notify is not called per buffer, but when the thread is freed. Comment about serialized events and OOB does not make sense for upstream events. https://bugzilla.gnome.org/show_bug.cgi?id=761909 2015-12-08 14:18:21 +0100 Stian Selnes <stian@pexip.com> * libs/gst/check/gstharness.c: harness: Unset sink_forward_pad before tearing down sink_harness Set the sink_forward_pad to NULL before tearing down sink_harness to avoid that the harness tries to forward events/queries to it while it's tearing down. https://bugzilla.gnome.org/show_bug.cgi?id=761904 2015-09-29 12:12:24 +0200 Havard Graff <havard.graff@gmail.com> * libs/gst/check/gstharness.c: harness: fix up docs to reference functions properly https://bugzilla.gnome.org/show_bug.cgi?id=761901 2016-02-10 14:01:54 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com> * gst/gstbufferpool.c: bufferpool: pass acquire params to alloc_buffer When allocating a new buffer in the pool, both the do_alloc_buffer() and the vmethod, alloc_buffer(), receive the parameter GstBufferPoolAcquireParams. Nonetheless, when default_acquire_buffer() calls the do_alloc_buffer() it does not pass the received GstBufferPoolAcquireParams, so when the user pass those parameters they are ignored by alloc_buffer() vmethod. This one-liner patch pass the received acquire params to do_alloc_buffer(). https://bugzilla.gnome.org/show_bug.cgi?id=761824 2016-02-10 09:09:29 +0100 Stian Selnes <stian@pexip.com> * gst/gstsystemclock.c: * tests/check/gst/gstsystemclock.c: systemclock: Fix wait/unschedule race Fixes a race where an entry is set to BUSY in gst_system_clock_id_wait_jitter() and is UNSCHEDULED before gst_system_clock_id_wait_jitter_unlocked() starts processing it. The wakeup added by gst_system_clock_id_unschedule() must be cleaned up. Two stress tests are added. One test that triggers the specific issue described above. The second stresses the code path where a wait is rescheduled because the poll returned early. https://bugzilla.gnome.org/show_bug.cgi?id=761586 2016-02-05 15:34:47 -0300 Thiago Santos <thiagoss@osg.samsung.com> * gst/gstsystemclock.c: systemclock: handle unschedule of late entries If the clockentry is too late and is unscheduled before it gets a change to detect its lateness the wakeup count and the poll are used but never properly cleaned up. This leaves it in a dirty state that is going to mess with the next clock entry waiting requests. https://bugzilla.gnome.org/show_bug.cgi?id=761586 2016-02-05 19:08:18 -0300 Thiago Santos <thiagoss@osg.samsung.com> * tests/check/Makefile.am: tests: extend the AM_TESTS_ENVIRONMENT from check.mak To get the CK_DEFAULT_TIMEOUT defined for all tests https://bugzilla.gnome.org/show_bug.cgi?id=761472 2016-02-05 18:01:52 -0300 Thiago Santos <thiagoss@osg.samsung.com> * autogen.sh: * common: Automatic update of common submodule From 86e4663 to b64f03f 2016-02-04 10:07:22 +0000 Tim-Philipp Müller <tim@centricular.com> * libs/gst/base/gstbaseparse.c: baseparse: fix stray discont flag set on outgoing buffers in push mode We have no guarantees about what flags are set on buffers we take out of the GstAdapter. If we push out multiple buffers from the first input buffer (which will have discont set), only the first buffer we push out should be flagged as discont, not all of the buffers produced from that first initial input buffer. Fixes issue where the first few mp3 frames/seconds of data in push mode were skipped or garbled in some cases, and the discont flags would also trip up decoders which were getting drained/flushed for every buffer. This was a regression introduced in 1.6 apparently. 2016-02-02 16:35:34 +0100 Thibault Saunier <tsaunier@gnome.org> * libs/gst/controller/gstdirectcontrolbinding.c: controller: Do not unset uninitiallized GValue In case the property was not interpollable we might never initialize the GValue, we should thus never unset it. 2016-02-02 16:34:51 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/pwg/advanced-allocation.xml: docs: pwg: fix missing end of line semicolon in custom meta example 2016-02-02 10:56:35 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gsturi.c: uri: add guard to make sure gstreamer is initialized https://bugzilla.gnome.org/show_bug.cgi?id=761448 2016-02-01 18:41:55 +0000 Tim-Philipp Müller <tim@centricular.com> * scripts/gst-uninstalled: gst-uninstalled: add new rtsp server plugin location to plugins path 2016-01-25 16:30:04 +0900 HoonHee Lee <hoonhee.lee@lge.com> * libs/gst/base/gstbaseparse.c: baseparse: Try to generate caps on the srcpad before forwarding GAP event To configure downstream elements and complete initial pre-rolling, ensure we have default output caps before forwarding GAP event. https://bugzilla.gnome.org/show_bug.cgi?id=753899 2016-01-28 20:18:55 -0700 Alex Henrie <alexhenrie24@gmail.com> * plugins/elements/gsttypefindelement.c: typefindelement: Improve English grammar https://bugzilla.gnome.org/show_bug.cgi?id=761273 2016-01-27 12:45:20 +0000 Luis de Bethencourt <luisbg@osg.samsung.com> * docs/manual/advanced-clocks.xml: docs: fix an other typo in clock chapter Shockingly I missed this bigger typo in the previos fix 2016-01-27 12:24:57 +0000 Luis de Bethencourt <luisbg@osg.samsung.com> * docs/manual/advanced-clocks.xml: docs: fix typo in clock chapter 2016-01-25 12:09:54 +0900 Vineeth TM <vineeth.tm@samsung.com> * tests/check/gst/gstinfo.c: tests:gstinfo: Fix string memory leak info_fourcc test leaks string. https://bugzilla.gnome.org/show_bug.cgi?id=761071 2016-01-23 16:00:48 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gstinfo.c: tests: info: make work without registry 2016-01-22 12:50:08 +0000 Tim-Philipp Müller <tim@centricular.com> * docs/design/part-tracing.txt: * gst/gsttracerutils.c: * tests/benchmarks/tracing.sh: tracer: rename GST_TRACER_PLUGINS env var to GST_TRACERS 2016-01-21 08:12:01 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * plugins/tracers/gstlatency.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: * tests/check/gst/gsttracerrecord.c: tracerrecord: don't leak the spec structures Change the gst_tracer_record_new() api to take the parameters the make the spec structure directly. This allows us to own the top-level structure and also collect the args so that we can take ownership of the sub-structures. https://bugzilla.gnome.org/show_bug.cgi?id=760821 2016-01-21 15:45:30 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstdevice.c: device: fix comparison in _has_classesv() We're comparing a pointer type with '\0' here, which probably isn't right, and the loop condition made sure that classes[0] is != NULL already, so it's pointless. Was probaby meant to check if the string pointed to is not empty, so make it do that instead. 2016-01-20 20:32:24 +0100 Stefan Sauer <ensonic@users.sf.net> * tests/check/gst/gsttracerrecord.c: test/tracerrecord: unref objects and free string 2016-01-18 22:45:58 +0000 Florin Apostol <florin.apostol@oregan.net> * tests/check/gst/gstsystemclock.c: systemclock: tests: added stress test for async order Keep inserting alarms at the beginning of the list. Due to https://bugzilla.gnome.org/show_bug.cgi?id=760757 alarm thread will get confused and not serve them in order. 2016-01-18 16:25:20 +0000 Florin Apostol <florin.apostol@oregan.net> * gst/gstsystemclock.c: systemclock: fixed race condition in handling alarms When choosing the first entry from the list, gst_system_clock_async_thread must set the entry state to busy before releasing the clock lock. Otherwise a new entry could be added to the beginning of the list and gst_system_clock_async_thread will be unaware and keep waiting on the entry it has already chosen. Also improved messages about expected state and bumped them to ERROR level to detect unexpected state changes. https://bugzilla.gnome.org/show_bug.cgi?id=760757 2016-01-20 11:07:17 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstutils.c: utils: remove duplicate check 2016-01-20 09:57:00 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/elements/gstmultiqueue.c: multiqueue: two small fixes for when an existing pad is requested Unlock when returning NULL from gst_single_queue_new(), and don't crash with debug logging enabled if NULL is returned. Spotted by Steven Hoving. 2016-01-20 10:02:37 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gstvalue.c: gstvalue: remove a half finishesh sentence in the docs No idea what was the idea here. SO lets just drop it. 2016-01-19 14:39:06 +0900 Vineeth TM <vineeth.tm@samsung.com> * gst/gsttracerrecord.c: tracerrecord: Fix self->spec structure invalid free self->spec is got using g_value_get_boxed(), which is a transfer none function. So the same should not be freed, which is resulting in wrong behavior. https://bugzilla.gnome.org/show_bug.cgi?id=760821 2016-01-20 09:25:44 +0100 Vineeth TM <vineeth.tm@samsung.com> * gst/gsttracerrecord.c: tracerrecord: Initialise flags to avoid wrong comparision GstTracerValueFlags is not being initialized and the same could result in wrong comparision and behavior. Hence initializing it to GST_TRACER_VALUE_FLAGS_NONE. https://bugzilla.gnome.org/show_bug.cgi?id=760821 2016-01-20 09:18:01 +0100 Stefan Sauer <ensonic@users.sf.net> * tests/check/gst/gstinfo.c: tests/gst/info: Fix messages glist memory leak 2016-01-19 15:03:55 +0900 Vineeth TM <vineeth.tm@samsung.com> * tests/check/gst/gsttracerrecord.c: tests: tracerrecord: Fix messages glist memory leak https://bugzilla.gnome.org/show_bug.cgi?id=760821 2016-01-18 21:12:53 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gst_private.h: * gst/gstinfo.c: * gst/gststructure.c: * gst/gstvalue.c: tracer: add an internal ptr format for tracer serialisation We need to apply the string wrapping that value serialisation does also in the tracer logging, otherwise we can't parse nested structures. 2016-01-18 21:09:49 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gststats.c: * tools/gst-stats.c: tracer/gststats: fix mismatch between '.class' and tracer args Clean up from the recent changes. The logging descriptiors did not match what we logged. 2015-11-12 01:14:34 +1100 Jan Schmidt <jan@centricular.com> * plugins/elements/gstqueue2.c: * plugins/elements/gstqueue2.h: queue2: Add use-tags-bitrate property The use-tags-bitrate property makes queue2 look at tag events in the stream and extract a bitrate for the stream to use when calculating a duration for buffers that don't have one explicitly set. This lets queue2 sensibly buffer to a time threshold for any bytestream for which the general bitrate is known. 2016-01-19 12:04:16 +0000 Luis de Bethencourt <luisbg@osg.samsung.com> * gst/gsttracerrecord.c: tracerrecord: avoid overwriting value res value is overwritten, remove the assignment. priv__gst_structure_append_template_to_gstring () always returns TRUE anyway. CID 1349645 2016-01-19 11:11:25 +0100 Edward Hervey <edward@centricular.com> * tests/benchmarks/Makefile.am: benchmarks: Disable tracerserialize benchmark on GST_DISABLE_GST_DEBUG no gst-debugging => no tracer logging (and no pony either) 2016-01-19 11:10:30 +0100 Edward Hervey <edward@centricular.com> * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: tracerrecord: Disable logging if GST_DISABLE_GST_DEBUG Make the gst_tracer_record_log() a no-op if the gst-debug subsystem is disabled. 2016-01-18 19:17:16 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstvalue.c: * tests/check/gst/gstvalue.c: value: fail flag deserialization on invalid flag names 2016-01-18 19:10:48 +0000 Tim-Philipp Müller <tim@centricular.com> * tests/check/gst/gststructure.c: tests: structure: fix wrong flag name in deserialization test There is no GST_SEEK_FLAGS_NONE only GST_SEEK_FLAG_NONE (but the deserializer silently skips bad flag names currently). 2016-01-17 23:49:27 +0000 Tim-Philipp Müller <tim@centricular.com> * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: * tools/gst-stats.c: tracers: fix thread-id casts to 64-bit ints on 32-bit systems https://bugzilla.gnome.org/show_bug.cgi?id=760762 2016-01-18 10:13:02 +0900 Vineeth TM <vineeth.tm@samsung.com> * gst/gst.c: gst: ref/unref new enum types in gst_init/deinit https://bugzilla.gnome.org/show_bug.cgi?id=760767 2016-01-17 00:08:33 +0000 Tim-Philipp Müller <tim@centricular.com> * win32/common/libgstreamer.def: win32: update exports for new flags get_type() 2016-01-16 22:43:23 +0100 Philip Van Hoof <philip@codeminded.be> * gst/gsttracer.c: * gst/gsttracer.h: tracer.h: don't include private noinst header gsttracerutils.h in a public header https://bugzilla.gnome.org/show_bug.cgi?id=760732 2016-01-16 21:24:19 +0100 Stefan Sauer <ensonic@users.sf.net> * tests/benchmarks/tracing.sh: benchmark: improve script Use a temp file for the log and fix one env-var. 2016-01-16 21:23:10 +0100 Stefan Sauer <ensonic@users.sf.net> * plugins/tracers/gststats.c: tracer/stats: use the right log template When porting we used the wrong record (copy and paste). 2016-01-16 21:04:46 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/gst/gstreamer-sections.txt: * gst/gsttracerrecord.h: tracer: update the docs Add the new enum and flags. Remove the GstTracerRecordPrivate. 2016-01-16 21:02:39 +0100 Stefan Sauer <ensonic@users.sf.net> * tools/gst-stats.c: gst-stats: update to latest tarcer api The thread-ids are serialized as uint64. The 'elem-ix' got changed to 'element-ix'. Make the code a bit more robust. 2016-01-16 18:55:07 +0100 Stefan Sauer <ensonic@users.sf.net> * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * plugins/tracers/gststats.c: tracer: use the new flags to create the optional field in the format string This spares us explicitly listing the field in the spec. and thus hide this implementation detail. 2016-01-16 18:52:32 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/design/part-tracing.txt: * gst/gsttracerrecord.h: * plugins/tracers/gstlatency.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: tracer: add a GstTracerValueFlags and replace strings This allows us to document the flags and makes the logs a bit smaller. 2016-01-16 16:01:38 +0000 Tim-Philipp Müller <tim@centricular.com> * gst/gstmessage.c: message: add function guard to gst_message_set_buffering_stats() https://bugzilla.gnome.org/show_bug.cgi?id=760704 2016-01-16 14:51:37 +0000 Tim-Philipp Müller <tim@centricular.com> * configure.ac: * docs/gst/Makefile.am: * gst/gst.h: * gst/gsttracer.c: * gst/gsttracer.h: * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * gst/gsttracerutils.c: * plugins/tracers/Makefile.am: * tests/check/Makefile.am: gst.h: Don't spew warnings if GST_USE_UNSTABLE_API is not defined Only hide GstTracer and GstTracerRecord API behind GST_USE_UNSTABLE_API, but don't spew any warnings, otherwise everyone has to define this to avoid compiler warnings. This reverts parts of commit 89ee5d948dff560204e6edd210c44ed2b8654b8e. 2016-01-16 13:30:34 +0100 Stefan Sauer <ensonic@users.sf.net> * tests/benchmarks/tracerserialize.c: * tests/benchmarks/tracing.sh: benchmarks: update the tracer benchmark and add a shell benchmark 2016-01-16 13:28:32 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/design/part-tracing.txt: docs/design: update tracerspec examples 2016-01-16 13:27:59 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/design/draft-tagreading.txt: docs/design: spell checking 2016-01-16 13:24:16 +0100 Stefan Sauer <ensonic@users.sf.net> * configure.ac: * docs/gst/Makefile.am: * gst/gst.h: * gst/gsttracer.c: * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * gst/gsttracerutils.c: * plugins/tracers/Makefile.am: * plugins/tracers/gstlatency.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: * tests/check/Makefile.am: * win32/common/libgstreamer.def: tracer: add a GFlag for the tracer scope Port all tracers. Add the GST_USE_UNSTABLE_API flag to the internal CFLAGS so that we don't have to specify this for gir, docs, mkenum, ... 2016-01-16 10:48:02 +0100 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstoutputselector.c: output-selector: Make access to the active pad and last buffer thread-safe Both can be modified from different threads at the same time. 2016-01-16 10:47:36 +0100 Sebastian Dröge <sebastian@centricular.com> * plugins/elements/gstoutputselector.c: output-selector: Notify when the active-pad property is changing 2016-01-12 14:59:04 +0100 Stefan Sauer <ensonic@users.sf.net> * docs/gst/gstreamer-docs.sgml: * docs/gst/gstreamer-sections.txt: * docs/gst/gstreamer.types.in: * gst/Makefile.am: * gst/gst_private.h: * gst/gststructure.c: * gst/gsttracer.c: * gst/gsttracer.h: * gst/gsttracerrecord.c: * gst/gsttracerrecord.h: * plugins/tracers/gstlatency.c: * plugins/tracers/gstrusage.c: * plugins/tracers/gststats.c: * tests/check/Makefile.am: * tests/check/gst/.gitignore: * tests/check/gst/gsttracerrecord.c: * win32/common/libgstreamer.def: tracerrecord: add a log record class We use this class to register tracer log entry metadata and build a log template. With the log template we can serialize log data very efficiently. This also simplifies the logging code, since that is now a simple varargs function that is not exposing the implementation details. Add docs for the new class and basic tests. Remove the previous log handler. Fixes #760267 2016-01-15 09:48:32 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Check return value of g_socket_close() CID 1348452 2016-01-15 09:02:42 +0100 Sebastian Dröge <sebastian@centricular.com> * libs/gst/net/gstnetclientclock.c: netclientclock: Free data after removing it from the list Does not matter here but makes Coverity more happy. It can't know that g_list_remove() only looks at the pointer value but does not dereference it. CID 1348454 2016-01-15 00:30:59 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstdevicemonitor.c: GstDeviceMonitor: Clarify the behaviour of gst_device_monitor_add_filter 2016-01-15 00:25:05 +0530 Nirbheek Chauhan <nirbheek@centricular.com> * gst/gstdevicemonitor.c: GstDeviceMonitor: Don't remove unmatched class filters If no providers for a particular class could be found, then removing unmatched filters would cause all devices to be returned instead which is not at all what the user intended. We still return 0 for unmatched filters. 2016-01-13 21:32:20 +0000 Florin Apostol <florin.apostol@oregan.net> * libs/gst/net/gstnetclientclock.c: netclientclock: Fix GError memory leak in handling N