=== release 1.13.90 === 2018-03-03 21:51:49 +0000 Tim-Philipp Müller * NEWS: * RELEASE: * configure.ac: * gstreamer.doap: * meson.build: Release 1.13.90 2018-03-03 21:51:49 +0000 Tim-Philipp Müller * docs/plugins/inspect/plugin-coreelements.xml: * docs/plugins/inspect/plugin-coretracers.xml: Update docs 2018-02-13 22:20:18 +1100 Matthew Waters * 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 * 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 * 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 * meson.build: meson: -Wformat-* require -Wformat 2018-03-01 17:20:06 +0100 Mathieu Duponchelle * 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 * 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 * 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 * 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 * gst/gstpad.c: pad: fix mixed declarations 2018-03-01 00:31:11 +0100 Mathieu Duponchelle * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/gstbuffer.h: buffer: fix gtk-doc warning regarding _get_n_meta() declaration 2018-02-02 00:24:20 +1100 Matthew Waters * gst/gstpromise.c: * gst/gstpromise.h: gstpromise: add since 1.14 markers 2017-10-18 21:24:19 +1100 Matthew Waters * scripts/gst-uninstalled: gst-uninstalled: add webrtc to libraries 2018-01-31 14:01:36 +0100 Mathieu Duponchelle * gst/gstbuffer.h: gstbuffer.h: move FLAG_LAST documentation back to the bottom 2018-01-31 13:36:15 +0100 Mathieu Duponchelle * libs/gst/base/gstbasetransform.h: basetransform: annotate virtual methods 2018-01-30 16:41:39 +0100 Mathieu Duponchelle * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstbasesrc.h: basesrc: Annotate some of the virtual methods 2018-01-23 08:56:34 +0000 Tim-Philipp Müller * 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 * 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 * win32/common/libgstreamer.def: win32: fix .def file for new API Fixes check + distcheck 2017-08-01 10:43:32 +0200 Michele Dionisio * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/check/gstcheck.c: libs: check: print stacktrace on unexpected criticals 2018-01-11 12:02:47 +0000 Tim-Philipp Müller * 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 * 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 * 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 * 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 * libs/gst/check/gstharness.c: gstharness: Remove double free 2017-12-26 18:08:31 +0100 Sebastian Dröge * 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 * meson.build: meson: skip translations if gettext is not available 2017-12-26 12:51:22 +0100 Stefan Sauer * 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 * tools/gst-inspect.c: inspect: add comment for how to improve tracer support 2017-12-26 11:29:39 +0100 Stefan Sauer * 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 * 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) * 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) * 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) * 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) * 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) * 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 * 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 * gst/gstsystemclock.c: systemclock: set_default() clock parameter can be NULL 2017-12-20 18:11:48 +0200 Sebastian Dröge * gst/gstelement.c: element: Annotate set_clock() clock parameter with allow-none 2017-12-20 18:09:28 +0200 Sebastian Dröge * 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 * scripts/gst-uninstalled: gst-uninstalled: update for gl lib move from bad to base 2017-12-11 20:58:16 -0500 Nicolas Dufresne * 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 * gst/gstplugin.c: plugin: Annotate add_dependency() arguments as NULL-terminated arrays 2017-12-14 00:03:04 +0530 Umang Jain * 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 * win32/common/libgstreamer.def: update win32 defs for tracer API addition 2017-12-14 14:48:47 +1100 Matthew Waters * common: Automatic update of common submodule From e8c7a71 to 3fa2c9e 2017-12-05 21:36:34 +1100 Matthew Waters * 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 * 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 * 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 * libs/gst/base/gstbasesrc.c: basesrc: minor code readability improvement 2017-12-07 12:05:23 +0000 Tim-Philipp Müller * 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 * tests/check/libs/aggregator.c: tests: aggregator: fix caps leak in unit test 2017-12-06 17:07:29 +0100 Edward Hervey * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 2017-12-05 15:16:36 +0000 Tim-Philipp Müller * 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 * tests/check/meson.build: meson: Use array syntax instead of .get() in tests 2017-11-24 02:39:43 +0530 Nirbheek Chauhan * 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 * 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 * 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 * 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) * 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 * 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 * 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 * 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 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: add more comments 2017-10-23 11:52:38 +0200 Stefan Sauer * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: init latency values with 0 instead of FALSE 2017-10-15 20:46:09 +0200 Stefan Sauer * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: add a doc-blob for the event_func 2017-10-15 16:48:21 +0200 Stefan Sauer * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: only set clipped_buffer to NULL if needed 2017-09-17 12:25:37 -0700 Stefan Sauer * 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 * libs/gst/base/gstaggregator.c: aggregator: add a few more comments to PadPrivate struct 2017-09-17 11:39:12 -0700 Stefan Sauer * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.h: aggregator: fix header formatting 2017-07-24 18:38:57 +0300 Sebastian Dröge * 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 * libs/gst/base/gstaggregator.h: aggregator: mark symbols explicitly for export with GST_EXPORT 2017-07-13 22:00:58 +0200 Stefan Sauer * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.h: aggregator: Remove unused GST_FLOW_NOT_HANDLED 2017-05-20 14:24:57 +0200 Matthew Waters * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: docs: Port all docstring to gtk-doc markdown 2017-04-12 12:06:52 -0300 Thibault Saunier * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Fix strcmp test for sink template 2016-03-27 18:41:30 +0530 Nirbheek Chauhan * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Document more locking 2015-11-02 20:10:35 -0500 Olivier Crête * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Document that the latency is in ns 2015-05-28 00:59:39 +1000 Jan Schmidt * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: drop stale white space at warning 2015-03-27 19:28:05 -0300 Reynaldo H. Verdejo Pinochet * tests/check/libs/aggregator.c: aggregator: fix typo in test suite 2015-03-27 18:32:27 -0300 Reynaldo H. Verdejo Pinochet * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.h: aggregatory: don't redefine GST_FLOW_CUSTOM_SUCCESS 2015-02-27 00:26:00 +0530 Arun Raghavan * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Remove untrue comment 2015-02-19 18:30:35 -0500 Olivier Crête * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Nitpick spacing/punctuation in debug logging 2015-01-09 21:51:40 -0500 Olivier Crête * 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 * libs/gst/base/gstaggregator.c: aggregator: Fix query leak 2015-01-09 16:43:39 +0100 Sebastian Dröge * 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 * 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 * 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 * libs/gst/base/gstaggregator.h: aggregator: name vfunc arguments consistently 2015-01-01 15:46:00 +0000 Tim-Philipp Müller * libs/gst/base/gstaggregator.c: aggregator: add g-i transfer and scope annotations 2015-01-01 14:10:05 +0000 Tim-Philipp Müller * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: remove empty dispose function 2014-12-30 23:58:34 +0000 Tim-Philipp Müller * 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 * libs/gst/base/gstaggregator.h: aggregator: fix up some docs comments in header 2014-12-30 23:44:46 +0000 Tim-Philipp Müller * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.h: aggregator: add _CAST() variants for cast macros 2014-12-28 01:13:33 +0000 Tim-Philipp Müller * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Don't leak flush-start events 2014-12-23 10:24:27 +0100 Sebastian Dröge * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * tests/check/libs/aggregator.c: tests: fix aggregator unit test after property renaming 2014-12-16 17:33:01 +0100 Sebastian Dröge * libs/gst/base/gstaggregator.c: aggregator: Some minor cleanup 2014-12-05 18:19:54 +1100 Matthew Waters * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Fix typo in debug output 2014-11-17 14:00:10 +1100 Matthew Waters * 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 * 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 * tests/check/libs/aggregator.c: tests/aggregator: add timeout handling test for the timeout parameter 2014-10-06 21:46:24 +1100 Matthew Waters * libs/gst/base/gstaggregator.c: aggregator: add latency query handling 2014-10-06 18:23:03 +1100 Matthew Waters * 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) * 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 * libs/gst/base/gstaggregator.c: aggregator: Set seqnum only when segments are received. 2014-08-02 18:25:01 +0200 Thibault Saunier * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Unref the taglist in GstAggregator::stop() 2014-10-03 12:34:15 +0200 Thibault Saunier * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: Handle event seqnum 2014-07-06 16:17:06 +0100 Tim-Philipp Müller * 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 * 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 * tests/check/libs/aggregator.c: tests: aggregator: fix various leaks in the tests 2014-06-28 09:34:05 -0300 Thiago Santos * 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 * 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 * 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 * libs/gst/base/gstaggregator.c: aggregator: plug a memory leak of the srccaps 2014-06-21 16:51:01 +0200 Thibault Saunier * libs/gst/base/gstaggregator.h: libs:base: Properly declare APIs as UNSTABLE 2014-06-21 13:45:13 +0200 Thibault Saunier * libs/gst/base/gstaggregator.c: aggregator: Fix requested pad name 2014-05-22 19:44:37 +0200 Thibault Saunier * 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 https://bugzilla.gnome.org/show_bug.cgi?id=731917 2017-12-02 12:02:15 +0000 Tim-Philipp Müller * 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 * 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 * 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 * 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 * 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 * tools/gst-inspect.c: tools: gst-inspect: fix readable flag printing for pad properties 2017-11-27 20:09:42 +1100 Matthew Waters * common: Automatic update of common submodule From 3f4aa96 to e8c7a71 2017-11-26 13:31:28 -0300 Thibault Saunier * 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 * 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 * 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 * 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 * 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 * 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 * 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 * tools/gst-inspect.c: tools: gst-inspect: refactor way indentation is done during printing 2017-11-25 13:07:12 +0100 Edward Hervey * gst/gstinfo.c: gstinfo: Use free instead of g_free Because 2017-11-25 12:44:11 +0100 Edward Hervey * 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 * 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 * 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 * 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 * 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 * tests/check/libs/test_transform.c: tests: add missing license header to test_transform.c 2017-11-10 16:26:50 +0100 Mikhail Fludkov * 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 * 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 * 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 * libs/gst/base/gstbasetransform.c: * libs/gst/net/gstptpclock.c: libs: fix indentation 2017-08-18 14:30:32 +0200 Stian Selnes * 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 * 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 * 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 * gst/gstghostpad.c: ghostpad: access internal pad with lock held 2017-03-30 09:17:08 +0200 Havard Graff * 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 * libs/gst/check/gstcheck.c: check: Add test suite time elapsed output 2017-11-23 15:28:39 +0100 Edward Hervey * 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 * 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 * 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 * win32/common/libgstreamer.def: win32: update for latest promise api changes 2017-04-03 22:20:51 +1000 Matthew Waters * 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 With contributions from Nirbheek Chauhan Mathieu Duponchelle https://bugzilla.gnome.org/show_bug.cgi?id=789843 2017-11-20 17:01:04 +0100 Edward Hervey * 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 * 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 * tools/gst-inspect.c: tools: gst-inspect: fix double empty line after pad templates 2017-11-16 10:47:46 +0100 Edward Hervey 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 * 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 * 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 * gst/gstparamspecs.c: paramspec: Add missing since for _spec_array() 2017-11-10 14:10:31 +0100 Edward Hervey * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/net/meson.build: net: Add new file to the meson.build 2017-11-01 11:31:52 +0200 Sebastian Dröge * tests/misc/netclock-replay.c: examples/netclock-replay: Fix build 2017-10-30 10:49:06 +0100 Robert Rosengren * 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 * 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 * 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 * 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 * gst/gst.c: gst: Fix build with option parsing disabled 2017-10-20 17:28:11 +0200 Stefan Sauer * 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 * gst/gstsegment.h: segment: clarify the segment docs for the duration 2017-10-20 16:11:44 +0200 Stefan Sauer * gst/gstsegment.c: Revert "segment: also intialize the duration" This reverts commit f1baaae17557fa75a9bcd940b994597714be2f74. 2017-10-20 14:30:42 +0200 Stefan Sauer * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * libs/gst/base/gstcollectpads.c: collectpads: mention the query function in the docs as well 2017-10-06 21:59:03 +0200 Mathieu Duponchelle * 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 * 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 * libs/gst/base/gstbasesink.c: basesink: use new gst_buffer_list_calculate_size() utility function 2017-10-05 10:24:24 +0530 Ashish Kumar * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * win32/common/libgstreamer.def: win32: update exports file 2017-09-27 20:29:06 +0200 Mathieu Duponchelle * 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 * 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 * 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 * 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 * win32/common/libgstreamer.def: win32: Update export file 2017-09-26 15:15:27 +0200 Mathieu Duponchelle * 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 * 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 * 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 * 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 * 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 * gst/gstinfo.h: info: GstStackTraceFlags were added in 1.12 2017-08-31 13:05:57 +0100 Tim-Philipp Müller * 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 * 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 * 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 * 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 * gst/gstinfo.h: info: GstDebugColorFlags are flags, not an enum Annotate as such. 2017-09-06 10:01:58 -0400 Nicolas Dufresne * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * README: * common: Automatic update of common submodule From 48a5d85 to 3f4aa96 2017-08-17 14:13:39 +0300 Sebastian Dröge * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 : only valid for object and GVariant types 2017-08-09 16:15:23 +0200 Edward Hervey * 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 * 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 * gst/gstutils.c: utils: Skip gst_calculate_linear_regression() in bindings 2017-08-07 12:24:37 +0200 Edward Hervey * 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 * 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 * gst/meson.build: * meson.build: meson: fix a few warnings 2017-08-07 10:33:32 +0100 Tim-Philipp Müller * 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 * 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 * gst/gstinfo.c: info: fix build with gst debugging disabled 2017-07-17 21:03:11 +0300 Sebastian Dröge * 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 * gst/gstsegment.c: segment: Add missing out annotations for various parameters 2017-07-26 14:17:46 +0100 Tim-Philipp Müller * 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 * libs/gst/check/libcheck/check_run.c: check: duplicate code branches CID #1226446 2017-07-26 11:15:58 +0300 George Kiagiadakis * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/gsttracerutils.h: tracing: fix build with tracer hooks disabled 2017-07-03 09:03:24 +0100 Tim-Philipp Müller * 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 * 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 * 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 * libs/gst/base/gstbasesrc.c: basesrc: Removed unused private member qos_enabled 2017-06-26 14:09:20 -0400 Nicolas Dufresne * 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 * 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 * 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 * 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 * meson.build: meson: check for ppoll() as well 2017-06-27 09:59:52 -0400 Thibault Saunier * 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 * meson.build: meson: Allow using glib as a subproject 2017-06-28 09:54:56 +0200 Xabier Rodriguez Calvar * 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 * 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 * 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 * 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 * win32/common/libgstreamer.def: win32: Update .def file 2017-06-14 17:12:32 -0400 Thibault Saunier * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/gstbin.c: bin: Put correct annotations on gst_bin_add() too 2017-05-23 00:51:12 +0200 Olivier Crête * 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 * 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 * config.h.meson: meson: actually remove config.h.meson as well 2017-05-21 19:16:57 +0300 Sebastian Dröge * gst/gstprotection.c: protection: Fix annotations for gst_protection_select_system() 2017-05-21 17:04:10 +0200 Olivier Crête * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * gst/gstconfig.h.in: Also use default visibility for plugins symbol 2017-05-16 13:29:38 -0400 Nicolas Dufresne * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * docs/libs/Makefile.am: docs: use the full path to ignore dirs 2017-05-12 17:49:25 +0200 Stefan Sauer * libs/gst/check/gstharness.c: docs: remove stray ',\' from doc comment 2017-02-25 12:18:14 +0200 Sebastian Dröge * 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 * meson.build: meson: bump meson version requirement to 0.40.1 2016-12-15 12:48:55 +0200 Sebastian Dröge * 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 * 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__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__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 * libs/gst/helpers/meson.build: meson: fix search path for setcap 2017-05-07 11:17:22 +0100 Tim-Philipp Müller * gst/gstdebugutils.c: debugutils: make local variable static 2017-05-05 12:23:43 +0100 Tim-Philipp Müller * 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 * 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 * 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 * meson.build: meson: fix indentation No tabs please. 2017-05-05 00:45:06 +0100 Tim-Philipp Müller * 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 * 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 * 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 * 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 * 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 * configure.ac: * meson.build: Back to development