From 03ac058183791ec301ee8b45840e4e38b6dcf929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 19 Jun 2020 19:18:59 +0100 Subject: [PATCH] Release 1.17.1 --- ChangeLog | 5639 ++++++++++++++++++++++++++++++++++- NEWS | 1300 +------- RELEASE | 15 +- docs/gst_plugins_cache.json | 152 +- gst-plugins-good.doap | 12 +- meson.build | 2 +- 6 files changed, 5805 insertions(+), 1315 deletions(-) diff --git a/ChangeLog b/ChangeLog index 628a07a4ff..5c00d63dd3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,5638 @@ +=== release 1.17.1 === + +2020-06-19 19:18:59 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * gst-plugins-good.doap: + * meson.build: + Release 1.17.1 + +2020-06-19 20:24:12 +0900 Seungha Yang + + * gst/deinterlace/meson.build: + meson: deinterlace: Check host cpu type for asm build + Add host cpu type check as we would enable asm only for x86_64 + Part-of: + +2020-06-19 19:54:08 +0900 Seungha Yang + + * meson.build: + meson: Fix build error with MSVC caused by ARCH_X86_64 define + ARCH_X86_64 define will enable GCC specific code path in dv_types.h + while building dv plugin. + Part-of: + +2020-06-19 10:32:45 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + * ext/shout2/gstshout2.c: + shout2: advertise documentation caps properly + shout2send caps depend on what the libshout2 + version in question supports, but the + documentation caps should always be the same. + Part-of: + +2019-05-26 20:20:03 +1000 Jan Schmidt + + * gst/isomp4/meson.build: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + * gst/isomp4/qtdemux_tags.c: + * gst/isomp4/qtdemux_tags.h: + qtdemux: Split tag reading functions out + Move some code out of the enormous qtdemux.c into a separate + qtdemux_tags helper, and make some structs available via qtdemux.h + to accommodate that. + Part-of: + +2019-05-26 05:05:06 +1000 Jan Schmidt + + * gst/isomp4/meson.build: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_tree.c: + * gst/isomp4/qtdemux_tree.h: + qtdemux: Move some tree parsing files out to a separate file. + Reduce a tiny bit of the bulk of qtdemux.c by moving some + agnostic helper functions out. + Part-of: + +2019-05-26 01:24:54 +1000 Jan Schmidt + + * gst/isomp4/atoms.c: + * gst/isomp4/qtdemux.c: + qtdemux: Factor out svmi parsing. Fix bounds checking. + Move the SVMI stereoscopic atom parsing out to a helper + function to shrink qtdemux_parse_trak a bit. + Add a bounds check that the received atom is large enough + before parsing it. + Add a note to the atom parser that svmi comes from the + MPEG-A spec 23000-11. + Part-of: + +2020-06-15 13:05:49 +0200 Guillaume Desmottes + + * ext/pulse/pulsedeviceprovider.c: + pulse: fix discovery of newly added devices + Fix regression introduced in 7bc5e28d85992b03e5852879b8d4d96043496caf + preventing the device provider to send the device-added message for new + devices. + By early returning the patch was discarding add/remove events. + Fix #735 + Part-of: + +2020-06-18 10:47:28 +0100 Tim-Philipp Müller + + * tests/examples/qt/qmlsink-dynamically-added/meson.build: + * tests/examples/qt/qmlsink-dynamically-added/play.pro: + * tests/examples/qt/qmlsink-dynamically-added/qmlsink-dyn-added.qrc: + examples: qmlsink: rename qrc file to avoid naming conflicts with older meson versions + Would get "Tried to create target "qt5-qmlsink_qrc", but a + target of that name already exists." with older meson versions. + Work around that by renaming the qrc file. + Part-of: + +2020-06-17 16:42:16 +0530 Nirbheek Chauhan + + * meson.build: + meson: Check the nasm version with run_command + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/751 + Part-of: + +2020-06-16 19:34:01 +0900 Seungha Yang + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Don't return TRUE for unhandled query + Expected return value for unhandled query is FALSE + Part-of: + +2020-06-16 11:52:38 +0300 Vivia Nikolaidou + + * gst/deinterlace/meson.build: + * gst/deinterlace/x86/x86inc.asm: + * gst/deinterlace/x86/yadif.asm: + * gst/deinterlace/yadif.c: + * gst/deinterlace/yadif.h: + * meson.build: + * meson_options.txt: + deinterlace: Add yadif ASM optimisations + Measured to be about 3.4x faster than C + Part-of: + +2020-06-12 13:21:02 +0300 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + deinterlace: Fix invalid read in yadif + Part-of: + +2020-06-12 12:18:11 +1000 Matthew Waters + + * ext/qt/qtglrenderer.cc: + qt/gloverlay: reset OpenGL state after Qt drawing + Reset to the original OpenGL state as required by the GStreamer OpenGL + API contract. Fixes output with a glimagesink element downstream. + Part-of: + +2020-06-12 12:16:49 +1000 Matthew Waters + + * ext/qt/qtglrenderer.cc: + qt/gloverlay: reset current OpenGL context after Qt + Qt may replace the drawable with its own which breaks output if Qt is + not displaying the resulting video as used with e.g. glimagesink. + Part-of: + +2020-06-12 09:52:56 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + flvdemux: Change a GST_ERROR_OBJECT() back to GST_DEBUG_OBJECT() + It was accidentally changed in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/436 + Part-of: + +2020-06-11 20:39:33 +0300 Jordan Petridis + + * gst/isomp4/gstqtmux.c: + * sys/v4l2/gstv4l2videodec.c: + Use gst_element_class_set_metadata when passing dynamic strings + gst_element_class_set_metadata is meant to only be used with + static or inlined strings, which isn't the case for the 2 elements + here resulting in use-after-free later on. + https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c#gst_element_class_set_static_metadata + Part-of: + +2020-06-10 13:56:22 +0000 Sebastian Dröge + + * gst/rtpmanager/gstrtpjitterbuffer.c: + Revert "rtpjitterbuffer: Avoid deadlock on flush" + This reverts commit 54810bf44f27d9c180730f58f16f6e172c7b0bc8 + Part-of: + +2020-06-09 15:12:13 -0400 Thibault Saunier + + * docs/gst_plugins_cache.json: + docs: Update plugins cache + +2020-06-09 13:09:20 -0700 U. Artie Eoff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: g_queue_clear_full introduced in glib 2.60 + Define g_queue_clear_full if glib < 2.60. + Fixes #747 + Part-of: + +2020-06-08 11:33:16 -0400 Thibault Saunier + + * docs/gst_plugins_cache.json: + * gst/rtpmanager/rtpsession.c: + rtpsession: Make internal-ssrc as show default for doc + +2020-06-08 10:56:02 -0400 Thibault Saunier + + * docs/gst_plugins_cache.json: + docs: Update plugins cache + +2020-06-09 15:21:25 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: don't pull in all -bad plugin, only allow the one we need + Set up our plugin include list for tests in such a way that + we don't pull in *all* plugins from -bad but only the one + used in the splitmuxsink unit test, i.e. the timecode plugin, + so we don't accidentally use other encoders/decoders such as + nvenc/dec for example. + Part-of: + +2020-06-08 17:41:13 -0400 Nicolas Dufresne + + * gst/rtpmanager/rtptimerqueue.c: + rtptimerqueue: Fix leak on timer collision + While the caller should make sure this does not happen, make sure timer + collision are not silently ignored and leaked. + Fixes #726 + Part-of: + +2020-03-27 15:48:32 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Keep JBUF lock while processing timers + Until now, do_expected_timeout() was shortly dropping the JBUF_LOCK in order + to push RTX event event without causing deadlock. As a side effect, some + CPU hung would happen as the timerqueue would get filled while looping over + the due timers. To mitigate this, we were processing the lost timer first and + placing into a queue the remainign to be processed later. + In the gap caused by an unlock, we could endup receiving one of the seqnum + present in the pending timers. In that case, the timer would not be found and + a new one was created. When we then update the expected timer, the seqnum + would already exist and the updated timer would be lost. + In this patch we remove the unlock from do_expected_timeout() and place all + pending RTX event into a queue (instead of pending timer). Then, as soon as + we have selected a timer to wait (or if there is no timer to wait for) we send + all the upstream RTX events. As we no longer unlock, we no longer need to pop + more then one timer from the queue, and we do so with the lock held, which + blocks any new colliding timers from being created. + Part-of: + +2020-06-08 09:33:10 +0200 Guillaume Desmottes + + * tests/check/elements/vp9enc.c: + tests: vp9enc: enforce I420 format + Test was not enforcing a video format on videotestsrc. I420 was picked + as it was the first format in GST_VIDEO_FORMATS_ALL which will no longer + be true (gst-plugins-base!689). + Part-of: + +2020-05-30 08:55:19 +0200 Edward Hervey + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Avoid deadlock on flush + When a GST_EVENT_FLUSH_START reaches the jitterbuffer, there is a chance that + our task is currently blocking waiting for a timer. + There was two problems: + * That wait wasn't checking for flushing situations + * The flushing handling wasn't waking up that conditional (to check whether it + should abort) + Part-of: + +2020-06-06 00:42:25 +0200 Mathieu Duponchelle + + * ext/aalib/gstaasink.c: + * ext/aalib/gstaatv.c: + * ext/dv/gstdvdec.c: + * ext/flac/gstflacenc.c: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + * ext/jack/gstjackaudiosink.c: + * ext/jpeg/gstjpegdec.c: + * ext/lame/gstlamemp3enc.c: + * ext/libcaca/gstcacasink.c: + * ext/libcaca/gstcacatv.c: + * ext/shout2/gstshout2.c: + * ext/speex/gstspeexenc.c: + * ext/twolame/gsttwolamemp2enc.c: + * ext/vpx/gstvpxdec.c: + * ext/vpx/gstvpxenc.c: + * ext/wavpack/gstwavpackenc.c: + * gst/alpha/gstalpha.c: + * gst/audiofx/audioamplify.c: + * gst/audiofx/audiochebband.c: + * gst/audiofx/audiocheblimit.c: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiowsincband.c: + * gst/audiofx/audiowsinclimit.c: + * gst/deinterlace/gstdeinterlace.c: + * gst/effectv/gstop.c: + * gst/effectv/gstradioac.c: + * gst/effectv/gstripple.c: + * gst/flv/gstflvmux.c: + * gst/isomp4/gstqtmux.c: + * gst/multifile/gstmultifilesink.c: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtsp/gstrtspsrc.c: + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmptealpha.c: + * gst/videobox/gstvideobox.c: + * gst/videofilter/gstvideoflip.c: + * gst/videofilter/gstvideomedian.c: + * gst/videomixer/videomixer2.c: + * sys/v4l2/gstv4l2object.c: + plugins: uddate gst_type_mark_as_plugin_api() calls + +2020-06-05 11:49:17 +0300 Sebastian Dröge + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Initialize uninitialized variable correctly + `last_out` would be used uninitialized if the element has no `set-active` + signal. Initialize it to -1 as that's what the "default" value is + further below. + CID 1455443 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/727 + Part-of: + +2015-11-26 17:52:29 +0100 Mikhail Fludkov + + * ext/vpx/gstvp9enc.c: + * ext/vpx/gstvpxenc.c: + * ext/vpx/gstvpxenc.h: + * tests/check/elements/vp8enc.c: + * tests/check/elements/vp9enc.c: + vpxenc: Add new bit-per-pixel property to select a better "default" bitrate + As part of this also change the default bitrate value to 0. The default + value was 256000 previously. In reality, if the property was not set the + bitrate value would be scaled according to the resolution which is not + very intuitive behavior. It is better to use 0 for this purpose. Now + together with newly introduced property "bits-per-pixel" 0 means to + assign the bitrate according to resolution/framerate. + The default bitrates are now + - 1.2Mbps for VP8 720p@30fps + - 0.8Mbps for VP9 720p@30fps + and scaled accordingly for different resolutions/framerates. + Previously the default bitrate was also not scaled according to the + framerate but only took the resolution into account. + This also fixes the side effect of setting bitrate to 0. Previously + encoder would not produce any data at all. + Addition from Sebastian Dröge to assume + 30fps if no framerate is given in the caps instead of not calculating + any bitrate at all. + Part-of: + +2020-06-03 18:35:58 -0400 Thibault Saunier + + * docs/meson.build: + doc: Require hotdoc >= 0.11.0 + +2020-06-02 14:58:47 -0400 Thibault Saunier + + * gst/rtpmanager/gstrtpjitterbuffer.c: + doc: Fix wrong link to GString in rtpjitterbuffer + +2020-05-27 16:01:22 +0300 Sebastian Dröge + + * docs/gst_plugins_cache.json: + docs: Update gst_plugins_cache.json + +2020-05-30 01:29:03 +0200 Mathieu Duponchelle + + * ext/aalib/gstaasink.c: + * ext/aalib/gstaatv.c: + * ext/dv/gstdvdec.c: + * ext/flac/gstflacenc.c: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + * ext/jack/gstjackaudiosink.c: + * ext/jpeg/gstjpegdec.c: + * ext/lame/gstlamemp3enc.c: + * ext/libcaca/gstcacasink.c: + * ext/libcaca/gstcacatv.c: + * ext/shout2/gstshout2.c: + * ext/speex/gstspeexenc.c: + * ext/twolame/gsttwolamemp2enc.c: + * ext/vpx/gstvpxdec.c: + * ext/vpx/gstvpxenc.c: + * ext/wavpack/gstwavpackenc.c: + * gst/alpha/gstalpha.c: + * gst/audiofx/audioamplify.c: + * gst/audiofx/audiochebband.c: + * gst/audiofx/audiocheblimit.c: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiowsincband.c: + * gst/audiofx/audiowsinclimit.c: + * gst/deinterlace/gstdeinterlace.c: + * gst/effectv/gstop.c: + * gst/effectv/gstradioac.c: + * gst/effectv/gstripple.c: + * gst/flv/gstflvmux.c: + * gst/isomp4/gstqtmux.c: + * gst/multifile/gstmultifilesink.c: + * gst/rtp/gstrtpdvpay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpilbcdepay.c: + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtsp/gstrtspsrc.c: + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmptealpha.c: + * gst/videobox/gstvideobox.c: + * gst/videofilter/gstvideoflip.c: + * gst/videofilter/gstvideomedian.c: + * gst/videomixer/videomixer2.c: + * sys/v4l2/gstv4l2object.c: + plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin types + +2018-02-28 15:46:51 +0100 Stian Selnes + + * ext/vpx/gstvpxdec.c: + * tests/check/elements/vp8dec.c: + vpxdec: Check that output width and height != 0 + For VP8 it's possible to signal width or height to be 0, but it does + not make sense to do so. For VP9 it's impossible. Hence, we most + likely have a corrupt stream. Trying to negotiate caps downstream with + either width or height as 0 will fail with something like + gst_video_decoder_negotiate_default: assertion 'GST_VIDEO_INFO_WIDTH (&state->info) != 0' failed + Part-of: + +2020-05-29 00:45:03 +0900 Seungha Yang + + * ext/speex/gstspeexdec.c: + * ext/speex/gstspeexenc.c: + speex: Fix crash on Windows caused by cross-CRT issue + Use speex_header_free() to free memory which was allocated by + library. Cross-CRT issue should not happen on 1.17 Cerbero build + but might happen custom build or so. + Part-of: + +2020-05-27 22:33:31 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Use the correct type for storing the max-rtcp-rtp-time-diff property + It's an integer property and rtpbin also expects an integer. Passing it + as a GstClockTime (guint64) to g_object_set() will cause problems, and + on big endian MIPS apparently causes crashes. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/737 + Part-of: + +2020-05-27 12:42:38 +0100 Tim-Philipp Müller + + * tests/check/meson.build: + tests: fix meson test env setup to make sure we use the right gst-plugin-scanner + If core is built as a subproject (e.g. as in gst-build), make sure to use + the gst-plugin-scanner from the built subproject. Without this, gstreamer + might accidentally use the gst-plugin-scanner from the install prefix if + that exists, which in turn might drag in gst library versions we didn't + mean to drag in. Those gst library versions might then be older than + what our current build needs, and might cause our newly-built plugins + to get blacklisted in the test registry because they rely on a symbol + that the wrongly-pulled in gst lib doesn't have. + This should fix running of unit tests in gst-build when invoking + meson test or ninja test from outside the devenv for the case where + there is an older or different-version gst-plugin-scanner installed + in the install prefix. + In case no gst-plugin-scanner is installed in the install prefix, this + will fix "GStreamer-WARNING: External plugin loader failed. This most + likely means that the plugin loader helper binary was not found or + could not be run. You might need to set the GST_PLUGIN_SCANNER + environment variable if your setup is unusual." warnings when running + the unit tests. + In the case where we find GStreamer core via pkg-config we use + a newly-added pkg-config var "pluginscannerdir" to get the right + directory. This has the benefit of working transparently for both + installed and uninstalled pkg-config files/setups. + Part-of: + +2020-05-25 20:11:31 -0400 Thibault Saunier + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Error out when failling to receive message response + And let it rety twice. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/717 + Part-of: + +2020-05-21 17:12:55 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videoenc.c: + v4l2: videodec: Fix broken template caps + The profiles and levels were applied to the common caps instead of the copy. + That had the side effect of setting profiles/level from one CODEC onto + another. Leaving to encoder not being registered or not-negotiated errors. + Part-of: + +2020-05-21 17:09:39 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2codec.c: + * sys/v4l2/gstv4l2codec.h: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2: codec: Fix GValue leak + The levels and profiles probe function returned a dynamically allocated GValue + that was leaked. Simplify this by using a stack allocated GValue and a boolean + return value. + Part-of: + +2020-05-21 16:39:53 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2codec.c: + v4l2codec: Remove uneeded factorisation + There is only one user of that function and the split only increase + complexicity. + Part-of: + +2020-05-20 17:30:59 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2src.c: + v4l2src: Ignore non-increasing sequence number + With older kernel, older driver or just broken drivers, the sequence number + may not be increasing. This simply ignore the sequence in this case. This + would otherwise miss-leading large amount of lost frame being reported. + Fixes #729 + Part-of: + +2020-05-18 13:17:14 +1000 Matthew Waters + + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtoverlay.h: + * tests/examples/qt/qmloverlay/main.cpp: + qtoverlay: add the root item as a property + Part-of: + +2020-05-20 13:17:13 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.c: + flvdemux: Send gap events if one of the streams falls behind the other by more than 3s + Same mechanism and threshold as in other demuxers. + Part-of: + +2020-05-20 12:53:56 +0300 Sebastian Dröge + + * gst/flv/gstflvdemux.h: + flvdemux: Remove unused audio_linked/video_linked booleans + Part-of: + +2020-05-20 10:46:45 +0200 Edward Hervey + + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvdemux.h: + flvdemux: Answer bitrate queries from upstream + If upstream (such as queue2 in urisourcebin) asks for our bitrate, check if we + have stored audio/video bitrates, and use them. + Part-of: + +2020-05-20 10:45:16 +0200 Edward Hervey + + * gst/flv/gstflvdemux.c: + flvdemux: Handle empty metadata strings + g_utf8_validate() errors out on empty string. But empty strings are valid, + so only check if they're not + Part-of: + +2020-05-20 10:44:19 +0200 Edward Hervey + + * gst/flv/gstflvdemux.c: + flvdemux: Set ACCEPT_TEMPLATE flag on sinkpad + A demuxer can accept any caps matching its sinkpad template caps + Part-of: + +2020-05-15 19:20:45 +0300 Raul Tambre + + * ext/qt/qtglrenderer.cc: + qtglrenderer.cc: Fix compiling + 46bfb7d247aef880c15300dad63eb2bbf6dc4928 fixed a format warning without checking if it actually compiled. + toUtf8() returns QByteArray so we need to assign it to a temporary variable to be able to get the raw string data from it. + Part-of: + +2020-05-15 06:07:25 +0000 Raul Tambre + + * ext/qt/qtglrenderer.cc: + qtglrenderer.cc: Fix -Wformat-security warning + Part-of: + +2020-05-12 04:35:37 +0530 Nirbheek Chauhan + + * ext/qt/meson.build: + * ext/taglib/meson.build: + * meson.build: + * sys/osxvideo/meson.build: + meson: Pass native: false to add_languages() + This is needed for cross-compiling without a build machine compiler + available. The option was added in 0.54, but we only need this in + Cerbero and it doesn't break older versions so it should be ok. + Part-of: + +2020-05-12 04:33:43 +0530 Nirbheek Chauhan + + * ext/qt/meson.build: + * ext/taglib/meson.build: + * meson.build: + meson: Make C++ compiler detection not be automagic + It is now controlled by the qt5 and/or taglib options. We won't + silently fail to build taglib now. + Part-of: + +2020-05-12 04:32:01 +0530 Nirbheek Chauhan + + * ext/gtk/meson.build: + * ext/qt/meson.build: + * meson.build: + * tests/examples/gtk/meson.build: + meson: Fix gstgl checks for qt and gtk + Also rename from build_ to have_, which is more accurate. + Part-of: + +2020-05-12 04:30:13 +0530 Nirbheek Chauhan + + * ext/qt/meson.build: + * tests/examples/qt/meson.build: + * tests/examples/qt/qmloverlay/meson.build: + * tests/examples/qt/qmlsink-dynamically-added/meson.build: + * tests/examples/qt/qmlsink/meson.build: + * tests/examples/qt/qmlsrc/meson.build: + meson: Revamp qt5qml plugin and example build code + Stricter and simpler. For example, now we properly error out when + gstreamer-gl-1.0 was not found when the qt5 plugin is enabled or when + a C++ compiler is not enabled. + Part-of: + +2020-05-09 03:09:03 +1000 Jan Schmidt + + * gst/deinterlace/yadif.c: + deinterlace: Split out NULL checks in yadif + Separate out explicit NULL checks for fields we depend on so + that coverity can hopefully verify dependencies better. + Part-of: + +2020-05-09 03:07:33 +1000 Jan Schmidt + + * gst/deinterlace/tvtime/greedy.c: + deinterlace: Handle NV12/NV21 for the greedyl mode. + Don't fall back on the default interpolate_scanline function, which + blindly tries to copy from the next field, which can be NULL in + mixed progressive/interlaced streams + Part-of: + +2020-05-05 16:59:56 +0300 Vivia Nikolaidou + + * gst/deinterlace/yadif.c: + deinterlace: Support packed formats for YADIF + Part-of: + +2020-05-06 11:04:18 +0300 Vivia Nikolaidou + + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: Call the planar functions for the Y plane of nv12/nv21 + In some algorithms (like yadif), the Y plane has to be handled different + than the UV plane. Therefore, the planar_y functions are now called for + the Y plane, and the nv12/nv21 functions are handling only the UV/VU + planes respectively. + Part-of: + +2020-01-03 02:34:59 +1100 Jan Schmidt + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlace.h: + * gst/deinterlace/meson.build: + * gst/deinterlace/yadif.c: + * gst/deinterlace/yadif.h: + deinterlace: Add C implementation of YADIF + Import the YADIF deinterlacer from ffmpeg and modify + it to match the simple deinterlace scanlines structure. + Part-of: + +2020-01-03 02:33:25 +1100 Jan Schmidt + + * gst/deinterlace/gstdeinterlacemethod.c: + * gst/deinterlace/gstdeinterlacemethod.h: + deinterlace: Allow for 5 fields for interpolation + Add an extra field to the simple deinterlace implementation, + so that methods can potentially use 5 fields - the current + field, and 2 before and 2 after. + Part-of: + +2020-05-07 01:17:25 +1000 Jan Schmidt + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Force renegotiation when changing mode + Switching the deinterlacing mode on-the-fly from disabled to + auto used to work, but was broken by commit #1f21747c some + years ago. + Force re-negotiation with downstream when the mode or + fields properties are changed, otherwise deinterlace + never switches out of the passthrough mode. + Part-of: + +2020-04-23 15:32:58 +0800 nian.yan + + * ext/jpeg/gstjpegenc.c: + jpegenc: remove meta copy in jpegenc + GstVideoEncoder takes care of the Meta copy, so there is no need in + jpegenc + Fixes http://gstreamer-devel.966125.n4.nabble.com/jpegenc-copy-GstMeta-twice-tt4693981.html + Part-of: + +2020-05-05 17:47:28 +0300 Sebastian Dröge + + * gst/imagefreeze/gstimagefreeze.c: + * gst/imagefreeze/gstimagefreeze.h: + imagefreeze: Handle flushing correctly + First of all get rid of the atomic seeking boolean, which was only ever + set and never read. Replace it with a flushing boolean that is used in + the loop function to distinguish no buffer because of flushing and no + buffer because of an error as otherwise we could end up in a + GST_FLOW_ERROR case during flushing. + Also only reset the state of imagefreeze in flush-stop when all + processing is stopped instead of doing it as part of flush-start. + And last, get a reference to the imagefreeze buffer in the loop function + in the very beginning and work from that as otherwise it could in theory + be replaced or set to NULL in the meantime as we release and re-take the + mutex a couple of times during the loop function. + Part-of: + +2020-05-06 06:48:24 +0200 Edward Hervey + + * gst/videobox/gstvideobox.c: + videbox: Use MIN instead of CLAMP for uint + an unsigned int is always positive. + CID #206207 + CID #206208 + CID #206209 + CID #206210 + CID #206211 + Part-of: + +2020-05-06 06:35:27 +0200 Edward Hervey + + * gst/avi/gstavidemux.c: + avidemux: Avoid potential double-free + stream->name was being freed (without being NULL-ed) before we were certain it + would be set again. + CID #1456071 + Part-of: + +2020-05-05 17:30:48 +0200 Edward Hervey + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: Don't leak frame in error case + CID #1455494 + Part-of: + +2020-05-05 15:19:49 +0200 Edward Hervey + + * gst/multifile/gstsplitmuxsrc.c: + slitmuxsrc: Properly stop the loop if not part reader is present + Previously this would end up in a refcounting loop of hell. + Part-of: + +2020-03-31 14:32:19 +0300 Vivia Nikolaidou + + * gst/flv/gstflvmux.c: + * gst/flv/gstflvmux.h: + flvmux: Add skip-backwards-streams property + Backwards timestamps confuse librtmp, even if they're only backwards + relative to the other stream. If the timestamp of a stream is going + backwards related to the other stream, this property allows the muxer to + skip a few buffers until it reaches the timestamp of the other stream. + Part-of: + +2020-03-31 14:10:35 +0300 Vivia Nikolaidou + + * gst/flv/gstflvmux.c: + flvmux: Allow requesting streamable pads after header is written + Allows us to request pads after writing header for streamable flv's. + For non-streamable it doesn't make sense to request a new pad after + writing the header, because the headers have been written already and we + can't add the new stream. But for streamable, any clients that connect + after the new pad has been added will be able to see both streams. + Part-of: + +2020-04-27 18:11:32 +1000 Matthew Waters + + * ext/qt/gstqtglutility.cc: + qt/x11: also pass the window for gstgl -> qt context + Removes this warning from Qt: + QGLXContext: Multiple configs for FBConfig ID -1 + QSGContext::initialize: depth buffer support missing, expect rendering errors + Part-of: + +2020-04-27 15:34:15 +1000 Matthew Waters + + * ext/qt/qtglrenderer.cc: + * ext/qt/qtglrenderer.h: + qt: perform surface creation in the main thread + As is required when creating a QWindow instance set out in the Qt + documentation. + Part-of: + +2020-04-22 15:32:31 -0400 Olivier Crête + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: Add 'mp3 ' fourcc that VLC seems to produce now + Part-of: + +2020-04-22 14:09:37 +0300 Sebastian Dröge + + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: Properly free internal packets queue in finalize() + As we override the GLib item with our own structure, we cannot use any + function from GList or GQueue that would try to free the RTPJitterBufferItem. + In this patch, we move away from g_queue_new() which forces using + g_queue_free(). This this function could use g_slice_free() if there is any items + left in the queue. Passing the wrong size to GSLice may cause data corruption + and crash. + A better approach would be to use a proper intrusive linked list + implementation but that's left as an exercise for the next person + running into crashes caused by this. + Be ware that this regression was introduced 6 years ago in the following + commit [0], the call to flush() looked useless, as there was a g_queue_free() + afterward. + Signed-off-by: Nicolas Dufresne + [0] https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/commit/479c7642fd953edf1291a0ed4a3d53618418019c + Part-of: + +2020-04-20 19:43:57 +0900 Seungha Yang + + * tests/check/elements/splitmuxsink.c: + * tests/check/elements/splitmuxsinktimecode.c: + * tests/check/meson.build: + tests: splitmuxsink: Add more timecode based split test + ... and split test cases to run tests in parallel + +2020-04-10 23:52:45 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Enhancement for timecode based split + The calculated threshold for timecode might be varying depending on + "max-size-timecode" and framerate. + For instance, with framerate 29.97 (30000/1001) and + "max-size-timecode=00:02:00;02", every fragment will have identical + number of frames 3598. However, when "max-size-timecode=00:02:00;00", + calculated next keyframe via gst_video_time_code_add_interval() + can be different per fragment, but this is the nature of timecode. + To compensate such timecode drift, we should keep track of expected + timecode of next fragment based on observed timecode. + +2020-04-11 00:35:16 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Post error when requested timecode interval is invalid + In case we cannot rely on max-size-timecode for split decision, + post error instead of crashing + +2020-04-16 16:47:50 +0200 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: don't use RTX packets in rate-calc and reset-logic + The problem was this: + Due to the highly irregular arrival of RTX-packet the max-misorder variable + could be pushed very low. (-10). + If you then at some point get a big in the sequence-numbers (62 in the + test) you end up sending RTX-requests for some of those packets, and then + if the sender answers those requests, you are going to get a bunch of + RTX-packets arriving. (-13 and then 5 more packets in the test) + Now, if max-misorder is pushed very low at this point, these RTX-packets + will trigger the handle_big_gap_buffer() logic, and because they arriving + so neatly in order, (as they would, since they have been requested like + that), the gst_rtp_jitter_buffer_reset() will be called, and two things + will happen: + 1. priv->next_seqnum will be set to the first RTX packet + 2. the 5 RTX-packet will be pushed into the chain() function + However, at this point, these RTX-packets are no longer valid, the + jitterbuffer has already pushed lost-events for these, so they will now + be dropped on the floor, and never make it to the waiting loop-function. + And, since we now have a priv->next_seqnum that will never arrive + in the loop-function, the jitterbuffer is now stalled forever, and will + not push out another buffer. + The proposed fixes: + 1. Don't use RTX in calculation of the packet-rate. + 2. Don't use RTX in large-gap logic, as they are likely to be dropped. + +2020-04-15 12:36:29 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Increase internal bitstream pool size + This patch will now set the maximum of buffers to 32, allowing to grow the + pool for drivers that supports that and will respect the minimum buffers + reported by the driver. This was made to fix a stall with the virtio CODEC + driver. + Fixes #672 + +2020-04-15 17:50:31 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Do split-at-running-time splitting based on the time of the start of the GOP + If the start of the GOP is >= the requested running time, put it into a + new fragment. That is, split-at-running-time would always ensure that a + split happens as early as possible after the given running time. + Previously it was comparing against the current incoming timestamp, + which does not tell us what we actually want to know as it has no direct + relation to the GOP start/end. + +2020-04-15 13:21:05 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Fix off-by-one in running time comparison for split-at-running-time + If we get a keyframe exactly at the requested running time we would only + split on the next keyframe afterwards due to wrong usage of > vs. >=. + +2020-04-09 12:23:44 -0400 Thibault Saunier + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Properly set segments seqnums after seeks + +2020-04-08 19:49:00 +0300 Vivia Nikolaidou + + * gst/flv/gstflvdemux.c: + flvdemux: Don't write an empty string as a tag + To stop warnings like: + GStreamer-WARNING **: 19:47:48.186: Trying to set empty string on + taglist field 'encoder'. Please file a bug. + +2020-04-08 12:34:40 -0400 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: request the maximum number of buffers for USERPTR + This is to match what we now do for DMABuf importation. + +2019-11-20 15:32:29 +0100 Michael Olbrich + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: request the maximum number of buffers for DMABUF + There are often only two buffers queued in the kernel so no new buffers are + requested. + With every qbuf, the kernel receives a new DMABUF for the specified index. + This most likely differs from the last DMABUF and the old cached entry is + released. This results in a lot of map/unmap overhead if the kernel driver + needs a mapping for the buffer. + With a larger queue, it's quite likely, that both old and new DMABUFs are + also mapped for another index. So the map/unmap is skipped, because the + mapping is reference counted. + The corresponding allocated buffers don't contain any actual memory, so + allocating them is quite cheep. So the log message is updated to clarify + this. + +2020-04-08 09:45:17 -0400 Thibault Saunier + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Avoid stack overflow recursing waiting for response + Instead of recursing, simply implement a loop with gotos, the same + way it was done before 812175288769d647ed6388755aed386378d9210c + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/710 + +2020-04-06 16:25:59 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Add property for enforcing the creation of chunks in single-stream files + This is disabled by default as it unnecessarily creates bigger headers + but it is something that is required by some applications and most + notably the Apple ProRes spec. + +2020-04-03 00:16:10 +1100 Jan Schmidt + + * gst/flv/gstflvmux.c: + flvmux: Fix invalid padlist accesses. + Request pads can released at any time, so make sure to hold + the object lock when iterating the element sinkpads list where + that's safe, or to use other safe pad iteration patterns in + other places. + When choosing a best pad, return a reference to the pad to make sure it + stays alive for output in the aggregator srcpad task. + Should fix a spurious valgrind error in the CI flvmux tests and some + other potential problems if the request sink pads are released while + the element is running.. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/714 + +2018-10-22 15:41:56 +0300 Vivia Nikolaidou + + * gst/isomp4/atoms.c: + * gst/isomp4/atoms.h: + * gst/isomp4/fourcc.h: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Add option to create a timecode trak in non-mov flavors + Even if timecode trak is officially unsupported in non-mov flavors, + some software still supports it, e.g. Final Cut Pro X: + https://developer.apple.com/library/archive/technotes/tn2174/_index.html + The user might still expect to see the timecode information in the + non-mov file despite it being officially unsupported , because other + software e.g. QuickTime will create a timecode trak even in mp4 files. + Furthermore, software that supports timecode trak in non-mov flavors + will also display the file duration in "timecode units" instead of real + clock time, which is not necessarily the same for 29.97 fps and friends. + This might confuse users, who see a different duration for the same + framerate and amount of frames depending on whether the container is mp4 + or mov. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/512 + +2020-01-16 09:30:39 +0200 Sebastian Dröge + + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpL24depay.c: + * gst/rtp/gstrtpL8depay.c: + rtpLXXdepay: Set the UNPOSITIONED flag on the audio-info when configuring an unpositioned layout + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/688 + +2020-04-01 13:19:46 +0200 Kristofer Björkström + + * gst/rtp/gstrtpjpegpay.c: + * tests/check/elements/rtpjpeg.c: + * tests/check/meson.build: + rtpjpeg: Use gst_memory_map() instead of gst_buffer_map() + gst_buffer_map () results in memcopying when a GstBuffer contains + more than one GstMemory. + This has quite an impact on performance on systems with limited amount + of resources. With this patch the whole GstBuffer will not be mapped at + once, instead each individual GstMemory will be iterated and mapped + separately. + +2020-04-01 13:17:03 +0200 Kristofer Björkström + + * gst/rtp/gstbuffermemory.c: + * gst/rtp/gstbuffermemory.h: + buffermemory: keep track of buffer size and current offset + Added the possibility to get current offset and the total size of the + buffer. + +2020-04-03 10:29:18 +0200 Havard Graff + + * gst/rtp/gstrtpopuspay.c: + * tests/check/elements/rtpopus.c: + * tests/check/meson.build: + rtpopuspay: make depay ! pay work + There is a use-case for a server to re-payload opus going through it. + Problem was that the payloader requires channels in the caps, but + this is not something the depayloader can parse out of the stream, meaning + caps-negotiation would fail. + Removing the requirement of channels in the template-caps fixes this. + +2020-04-03 16:49:25 +0900 Seungha Yang + + * tests/check/elements/splitmuxsink.c: + * tests/check/elements/splitmuxsrc.c: + * tests/check/meson.build: + tests: Split splitmux test case + Since we are adding more and more tests into splitmux, + we need to split it to avoid CI timeout. + +2020-04-03 13:45:56 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + * tests/check/elements/splitmux.c: + splitmuxsink: Don't send too many force key unit event + splitmuxsink should requst keyframe depending on configured + threshold and previously requested time in order to avoid too many + keyframe request. + +2020-03-20 21:32:36 +1100 Jan Schmidt + + * gst/matroska/matroska-demux.c: + matroska: Check the return value of gst_segment_do_seek() + gst_segment_do_seek() can fail. + +2018-06-08 13:12:01 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Send instant-rate-change event if requested in the SEEK event + Handle an instant rate change seek immediately by reflecting + it downstream as an instant-rate-change event, and do no + further seek handling. + +2018-05-15 18:26:16 +0300 Sebastian Dröge + + * gst/matroska/matroska-demux.c: + matroska-demux: Send instant-rate-change event if requested in the SEEK event + Short-circuit instant rate change events by generating + a downstream instant-rate-change event and doing no further + seek processing. + +2020-03-10 23:16:00 +0900 Seungha Yang + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + matroska: Update for video-hdr struct change + See the change of -base https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/594 + +2020-03-31 15:51:27 -0400 Aaron Boxer + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: make warning messages more meaningful + +2020-03-27 19:24:03 +0100 Nicolas Pernas Maradei + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: rename RTCP thread + RTP session starts a new thread for RTCP and names it + "rtpsession-rtcp-thread" which happens to be longer than the maximum 16B + allowed by pthread_setname_np and causes the naming to fail. + See docs for more details. + This commit simply shortens the thread's name so it can actually be set. + +2020-03-30 22:26:33 +0200 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: create specific API for appending buffers, events etc + To avoid specifying a bunch of mystic variables. + +2020-02-10 17:33:54 +0100 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: various test-improvements + Mainly generalize all the latest tests that have found various stalls + in the jitterbuffer, so that they only consist of a series of packets + with various seqnum/rtptime/rtx combinations, arriving at a specific time. + This means future tests can be more easily written to prove certain + behavior does not cause stalls. + Also fix the warning on windows: + warning C4244: 'initializing': conversion from 'double' to 'gint', possible loss of data + +2020-03-27 14:07:04 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: fix waiting timer/queue code + Changing the types from boolean to guint due to the ++ operand used on + them, and only call JBUF_SIGNAL_QUEUE after settling down, + or else you end up signaling the waiting code in chain() for every buffer + pushed out. + +2020-03-23 19:55:37 +0200 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Error out instead of crashing if reserved-max-duration is 0 or no samples could be created in prefill mode + +2020-03-12 15:16:44 +0200 Sebastian Dröge + + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + gdkpixbufoverlay: Use GST_VIDEO_OVERLAY_COMPOSITION_BLEND_FORMATS for the supported formats + We don't do any blending by ourselves since a while now. + Note that this is a regression in "supported" formats: previously + ARGB64 was supported, for example, but in practice it caused blending to + not take place at all. + +2020-03-24 00:23:24 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxpartreader.c: + * gst/multifile/gstsplitmuxpartreader.h: + * gst/multifile/gstsplitmuxsrc.c: + * gst/multifile/gstsplitmuxsrc.h: + splitmuxsrc: Fix some deadlock conditions and a crash + When switching the splitmuxsrc state back to NULL quickly, it + can encounter deadlocks shutting down the part readers that + are still starting up, or encounter a crash if the splitmuxsrc + cleaned up the parts before the async callback could run. + Taking the state lock to post async-start / async-done messages can + deadlock if the state change function is trying to shut down the + element, so use some finer grained locks for that. + +2020-03-24 00:18:54 +1100 Jan Schmidt + + * tests/check/elements/splitmux.c: + splitmux: Make the unit test faster + The playback test is considerably faster if it runs with the + appsink set to sync=false + +2020-03-25 22:14:36 +0900 Seungha Yang + + * tests/check/elements/splitmux.c: + * tests/check/meson.build: + tests: splitmux: Add test for timecode based split + +2020-03-25 21:20:07 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Split fragment only if queued time is larger than threshold + The queued time includes the duration of the last queued frame + (i.e., new keyframe) so the condition check should not be inclusive. + Note that the new fragment will be cut excluding the last frame + and therefore if the condition is inclusive way, + the fragment might have one frame shorter duration for all keyframe + stream such as jpeg or all-inter video streams. + +2020-03-25 21:01:00 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Don't need to trace next timecode for split decision + Since the commit 94bb76b6b9c48981d3ad42a8c4370b9658db4229, splitmuxsink + will split fragments based on queued time and the threshold of that. + So don't need to store the next timecode for split decision. + +2018-08-08 09:27:19 +0200 Guillaume Desmottes + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2src.h: + v4l2: add alternate interlace mode + When using this mode each frame is split in two fields, each one being + transferred using its own buffer. + This is implemented with the V4L2_FIELD_ALTERNATE field format in v4l2. + This mode is enabled using a caps filter such as + "v4l2src ! video/x-raw\(format:Interlaced\)" + Here are the main changes related to this feature: + - use the INTERLACED caps feature with this mode. + - in this mode both fields of a given frame have the same sequence/offset + so adjust the algorithm checking for lost field/frame accordingly. + - double pool's min number of buffers as each frame requires 2 buffers. + Fix #504 + Co-authored-by: Zeeshan Ali + +2020-02-05 13:03:51 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2: display field when setting or trying format + Ease debugging interlacing pipelines. + +2020-01-30 12:35:02 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2object.h: + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2: pass v4l2object to GST_V4L2_MIN_BUFFERS() + Will be used to double the number of buffers in alternate interlace + mode. + +2020-01-30 12:09:12 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2: use GST_VIDEO_INFO_FIELD_HEIGHT() + Use GST_VIDEO_INFO_FIELD_HEIGHT() instead of GST_VIDEO_INFO_HEIGHT() + when we actually want the field height rather than the frame height. + So far both are equals but that won't longer be the case when + implementing alternate interlace mode. + +2020-03-24 22:08:27 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Mark some split decision related properties as MUTABLE_READY + The change of various criteria for split decision while muxing is on progress + wouldn't work well as expected. + +2020-03-24 13:45:00 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: Take account queued time and max-size-timecode for split decision + Not only the requested keyframe time, the queued size should be + a criterion for the split decision of timecode based mode + (same as max-size-time based split case). + +2020-03-24 12:55:27 +1100 Matthew Waters + + * ext/qt/gstqtoverlay.cc: + qmlgloverlay: fix usage without an qmlglsink in the pipeline + Without a qmlglsink, we need to retrieve the window system display + ourselves rather than relying solely on qmlglsink to have priority on + the choice of display. + +2020-03-23 21:32:04 -0400 Xavier Claessens + + * gst/rtpmanager/rtptwcc.c: + * gst/videocrop/gstvideocrop.c: + * tests/check/elements/rtpbin.c: + * tests/check/elements/rtpsession.c: + Fix usage of C99 + It's 2020, way too early for that, let's stick to C89 for now. + +2020-03-23 16:34:46 +0900 Seungha Yang + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2object.h: + v4l2bufferpool: Use unique name for v4l2bufferpool object + Assign unique sequence number to an object name for better debugging + +2020-03-23 14:02:22 +1100 Matthew Waters + + * ext/qt/qtglrenderer.cc: + qmlgloverlay: don't leak resources freed on a different GL thread + deleting a QOpenGLFrameBufferObject needs to occur on the same thread it + was created on in order to actually free the relevant resources + immediately. Otherwise, they will be queued for deletion and not freed + until the associated QOpenGLContext is destroyed. + +2020-03-20 09:14:01 +1100 Matthew Waters + + * ext/qt/gstqtglutility.cc: + qt: reorganize include defines + +2020-03-19 23:17:21 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtptimerqueue.c: + * gst/rtpmanager/rtptimerqueue.h: + * tests/check/elements/rtptimerqueue.c: + rtptimerqueue: remove ->num from the timer + This concept was only used by the "multi"-lost timer, and since that + one is not around any longer, the "num" concept is superfluous. + +2020-03-19 23:37:26 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: remove the concept of "already-lost" + This is a concept that only applies when a buffer arrives in the chain + function, and it has already been scheduled as part of a "multi"-lost + timer. + However, "multi"-lost timers are now a thing of the past, making this + whole concept superflous, and this buffer is now simply counted as "late", + having already been pushed out (albeit as a lost-event). + +2020-03-19 23:12:04 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: immediately insert a lost-event on multiple lost packets + There is a problem with the code today, where a single timer will + be scheduled for a series of lost packets, and then if the first packet + in that series arrives, it will cause a rescheduling of that timer, going + from a "multi"-timer to a single-timer, causing a lot of the packets + in that timer to be unaccounted for, and creating a situation in where + the jitterbuffer will never again push out another packet. + This patch solves the problem by instead of scheduling those lost packets + as another timer, it instead asks to have that lost-event pushed straight + out. + This very much goes with the intent of the code here: These packets are + so desperately late that no cure exists, and we might as well get the + lost-event out of the way and get on with it. + This change has some interesting knock-on effect being presented in + later commits. It completely removes the concept of "already-lost", so + that is why that test has been disabled in this commit, to be + removed later. + +2020-03-19 23:03:50 +0100 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: rework large-gap tests + Make sure to set the time the buffer is supposed to arrive at, so + as not to trigger an artificial situation. + +2020-03-19 12:17:22 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: refactor lost_timeout code + Split it up in code related to the timer, (do_lost_timeout) and code + to insert a lost-item/event and update private jitterbuffer-variables. + +2019-10-18 17:43:36 +0200 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + * tests/check/elements/rtptimerqueue.c: + * tests/check/meson.build: + test/check: split out rtptimerqueue-tests in a separate file + +2020-02-05 09:56:23 +0100 Dmitriy Purgin + + * ext/qt/qtplugin.pro: + gstqmlgl: Link to opengl32.lib on MinGW + +2020-03-19 23:51:47 +0900 Seungha Yang + + * gst/isomp4/gstqtmux.c: + qtmux: Fix build warning + gstqtmux.c(644): warning C4133: '=': + incompatible types - from 'gboolean (__cdecl *)(GstAggregator *,GstAggregatorPad *,GstEvent *)' + to 'GstFlowReturn (__cdecl *)(GstAggregator *,GstAggregatorPad *,GstEvent *)' + +2020-03-19 23:05:49 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Reset cleanly for reuse + Reset the splitmuxsink completely when changing states so that + it can be reused. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1241 + +2020-02-17 22:37:10 -0600 Zebediah Figura + + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstmpegaudioparse.h: + mpegaudioparse: Use a constant bit rate to convert between time and bytes if possible. + This should result in no worse accuracy than the base parse element, and may + result in better accuracy. In particular, the number of bytes processed at any + given point, as accumulated by baseparse, can be only accurate to + (1 / # of frames) bytes per second, and if we try to seek immediately after + pausing the pipeline to a large offset, this small inaccuracy can propagate to + something noticeable. + The use case that prompted this patch is a 45-minute MPEG-1 layer 3 file, which + has a constant bit rate but no seek tables. Trying to seek the pipeline + immediately after pauisng it, without the ACCURATE flag, to a location 41 + minutes in, yields a location that is, even with , + still audibly incorrect. This patch yields a much closer position, no longer + audibly incorrect, and likely within a frame of the most correct position. + +2020-03-04 22:10:40 +0100 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + qtmux: fix renegotiation check + By the time sink_event is called, the pad's current caps have + already been updated. To address this, implement sink_event_pre_queue, + and check if the pad can be renegotiated there. + Fixes #707 + +2020-03-12 20:34:47 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + * tests/check/elements/splitmux.c: + splitmuxsink: Decouple keyframe request and the decision for fragmentation + Split the decision for keyframe request and fragmentation in order to + ensure periodic keyframe request. + +2020-02-26 18:29:06 +1100 Matthew Waters + + * ext/qt/gstqtglutility.cc: + * ext/qt/gstqtoverlay.cc: + * ext/qt/qtglrenderer.cc: + * ext/qt/qtglrenderer.h: + * ext/qt/qtitem.cc: + * tests/examples/qt/qmloverlay/main.cpp: + * tests/examples/qt/qmloverlay/overlay2.qml: + * tests/examples/qt/qmloverlay/qmloverlay.qrc: + qt: add a qml overlay filter element [part 2] + It takes a qml scene description and renders it using a possible input + stream. + Currently supported on GLX and WGL. + Follow up to (as that MR had an old version of the commit): + - https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/475 + - 4778d7166a02caf793df4f845dc35b6933d87c81: qt: add a qml overlay filter element + +2020-02-26 18:29:06 +1100 Matthew Waters + + * ext/qt/gstplugin.cc: + * ext/qt/gstqtglutility.cc: + * ext/qt/gstqtglutility.h: + * ext/qt/gstqtoverlay.cc: + * ext/qt/gstqtoverlay.h: + * ext/qt/meson.build: + * ext/qt/qtglrenderer.cc: + * ext/qt/qtglrenderer.h: + * tests/examples/qt/meson.build: + * tests/examples/qt/qmloverlay/main.cpp: + * tests/examples/qt/qmloverlay/main.qml: + * tests/examples/qt/qmloverlay/meson.build: + * tests/examples/qt/qmloverlay/overlay.qml: + * tests/examples/qt/qmloverlay/qmloverlay.qrc: + qt: add a qml overlay filter element + It takes a qml scene description and renders it using a possible input + stream. + Currently supported on GLX and WGL. + +2020-02-25 21:47:14 +1100 Matthew Waters + + * ext/qt/gstqsgtexture.cc: + * ext/qt/qtitem.cc: + qt: don't always activate/deactivate our GstGLContext + Techincally it is enough to activate at the beginning and then forget. + +2020-02-04 19:43:52 +1100 Matthew Waters + + * tests/examples/qt/meson.build: + * tests/examples/qt/qmlsink-dynamically-added/.gitignore: + * tests/examples/qt/qmlsink-dynamically-added/main.cpp: + * tests/examples/qt/qmlsink-dynamically-added/main.qml: + * tests/examples/qt/qmlsink-dynamically-added/meson.build: + * tests/examples/qt/qmlsink-dynamically-added/play.pro: + * tests/examples/qt/qmlsink-dynamically-added/qmlsink.qrc: + test/qml: add an dynamically adding qmlglsink element + The example shows how to add qmlglsink to an already running pipeline + with pre-existing OpenGL elements. + +2020-02-04 19:40:45 +1100 Matthew Waters + + * ext/qt/gstqtsink.cc: + qmlglsink: propagate the context up the the application + Allows the application to be notified of the OpenGL context creation. + +2020-02-03 15:59:34 +1100 Matthew Waters + + * ext/qt/qtitem.cc: + qtitem: fix leak of caps + +2020-03-15 19:28:18 +0100 Niels De Graef + + * ext/wavpack/gstwavpackdec.h: + * ext/wavpack/gstwavpackenc.h: + wavpack: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:26:18 +0100 Niels De Graef + + * ext/vpx/gstvp8dec.h: + * ext/vpx/gstvp8enc.h: + * ext/vpx/gstvp9dec.h: + * ext/vpx/gstvp9enc.h: + * ext/vpx/gstvpxdec.h: + * ext/vpx/gstvpxenc.h: + vpx: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:22:00 +0100 Niels De Graef + + * ext/twolame/gsttwolamemp2enc.h: + twolame: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:20:49 +0100 Niels De Graef + + * ext/taglib/gstapev2mux.h: + * ext/taglib/gstid3v2mux.h: + taglib: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:18:39 +0100 Niels De Graef + + * ext/speex/gstspeexdec.h: + * ext/speex/gstspeexenc.h: + speex: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:16:22 +0100 Niels De Graef + + * ext/soup/gstsouphttpclientsink.h: + soup: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:14:17 +0100 Niels De Graef + + * ext/shout2/gstshout2.c: + * ext/shout2/gstshout2.h: + shout2: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:11:52 +0100 Niels De Graef + + * ext/raw1394/gst1394clock.h: + * ext/raw1394/gstdv1394src.c: + * ext/raw1394/gstdv1394src.h: + * ext/raw1394/gsthdv1394src.h: + raw1394: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:06:50 +0100 Niels De Graef + + * ext/qt/gstqtsink.h: + * ext/qt/gstqtsrc.h: + qt: Use G_DECLARE_FINAL_TYPE + +2020-03-15 19:00:18 +0100 Niels De Graef + + * ext/pulse/pulsedeviceprovider.h: + * ext/pulse/pulsesink.h: + * ext/pulse/pulsesrc.h: + pulse: Use G_DECLARE_FINAL_TYPE + +2020-03-15 18:54:33 +0100 Niels De Graef + + * ext/mpg123/gstmpg123audiodec.h: + mpg123: Use G_DECLARE_FINAL_TYPE + +2020-03-15 18:52:57 +0100 Niels De Graef + + * ext/libpng/gstpng.h: + * ext/libpng/gstpngdec.h: + * ext/libpng/gstpngenc.h: + libpng: Use G_DECLARE_FINAL_TYPE + +2020-03-15 18:49:53 +0100 Niels De Graef + + * ext/libcaca/gstcacasink.h: + * ext/libcaca/gstcacatv.h: + libcaca: Use G_DECLARE_FINAL_TYPE + +2020-03-15 18:40:28 +0100 Niels De Graef + + * ext/lame/gstlamemp3enc.h: + lame: Use G_DECLARE_FINAL_TYPE + +2020-03-14 17:52:38 +0100 Niels De Graef + + * ext/jack/gstjackaudiosink.h: + * ext/jack/gstjackaudiosrc.h: + jack: Use G_DECLARE_FINAL_TYPE + +2020-03-14 17:43:50 +0100 Niels De Graef + + * ext/gtk/gstgtkbasesink.h: + * ext/gtk/gstgtkglsink.h: + * ext/gtk/gstgtksink.h: + gtk: Use G_DECLARE_FINAL_TYPE + +2020-03-13 18:47:49 +0100 Niels De Graef + + * ext/gdk_pixbuf/gstgdkpixbufdec.h: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.h: + * ext/gdk_pixbuf/gstgdkpixbufsink.h: + gdk_pixbuf: Use G_DECLARE_FINAL_TYPE + +2020-03-13 18:42:38 +0100 Niels De Graef + + * ext/flac/gstflacdec.h: + * ext/flac/gstflacenc.h: + * ext/flac/gstflactag.h: + flax: Use G_DECLARE_FINAL_TYPE + +2020-03-13 18:39:38 +0100 Niels De Graef + + * ext/dv/gstdvdec.h: + * ext/dv/gstdvdemux.h: + dv: Use G_DECLARE_FINAL_TYPE + +2020-03-12 19:24:57 +0100 Niels De Graef + + * ext/cairo/gstcairooverlay.h: + cairo: Use G_DECLARE_FINAL_TYPE + +2020-03-12 19:20:42 +0100 Niels De Graef + + * ext/aalib/gstaasink.h: + * ext/aalib/gstaatv.h: + aalib: Use G_DECLARE_FINAL_TYPE + +2020-03-12 16:55:44 +0000 Tim-Philipp Müller + + * tests/check/elements/rtp-payloading.c: + tests: rtp-payloading: add minimal vp8/vp9 rtp payloading/depayloading test + +2018-10-19 16:17:17 +0200 Stian Selnes + + * gst/rtp/gstrtpvp8pay.c: + * gst/rtp/gstrtpvp9pay.c: + rtpvp8pay, rtpvp9pay: fix caps leak in set_caps() + +2020-03-12 11:22:56 +0100 Edward Hervey + + * gst/videomixer/videomixer2.c: + videomixer: Don't leak peer caps + +2020-02-11 16:19:15 -0300 Thibault Saunier + + * docs/gst_plugins_cache.json: + * gst/multifile/gstimagesequencesrc.c: + * gst/multifile/gstimagesequencesrc.h: + * gst/multifile/gstmultifile.c: + * gst/multifile/meson.build: + imagesequencesrc: Cleanup and add some features + * Implement the GstURIHandlerInterface + * Rework the locking + * Implement backward seeking handling + * Generate documentation + +2016-04-10 02:25:32 +0000 Fabian Orccon + + * gst/multifile/gstimagesequencesrc.c: + * gst/multifile/gstimagesequencesrc.h: + Add an imagesequencesrc element to stream sequence of images + See: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/121 + +2020-03-05 08:55:44 -0800 Gordon Hart + + * sys/v4l2/gstv4l2src.c: + v4l2src: decrease gst_v4l2src_create log verbosity + Lower the verbosity of the 'sync' log message emitted + each buffer from gst_v4l2src_create down to LOG(6) + from INFO(4). This brings the logging behavior of + v4l2src closer to the GStreamer guidelines, which + recommend the INFO level be reserved for rare or + one-off messages. + +2020-03-10 17:19:46 +0800 yychao + + * gst/isomp4/qtdemux.c: + qtdemux: Add support for AC4 + The caps received from qtdemux for AC-4 content are audio/x-gst-fourcc-ac_4 + Based on patch by: Savinderjit Kaur + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/413 + +2020-03-10 21:07:12 +1100 Matthew Waters + + * gst/imagefreeze/gstimagefreeze.c: + * gst/imagefreeze/gstimagefreeze.h: + imagefreeze: handle reconfigure events on the srcpad + +2020-03-05 22:47:16 +1100 Matthew Waters + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: properly ignore setting caps failures + Ignore the return value of gst_pad_set_caps() so that setcaps will set a + framerate that is usable. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/705 + +2020-03-05 22:45:32 +1100 Matthew Waters + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: don't fail sending sticky events downstream + They will be repropagated anyway. + +2020-03-09 23:31:09 +0100 Markus Ebner + + * gst/videocrop/gstvideocrop.c: + videocrop: Add support for Y41B and Y42B + +2020-03-09 23:25:03 +0100 Markus Ebner + + * gst/videocrop/gstvideocrop.c: + * gst/videocrop/gstvideocrop.h: + videocrop: Add support for Y444 + - Refactored the planar transform method to support all video formats + that are stored planar, independent of the used subsampling + - Added support for Y444 + +2020-03-09 23:23:50 +0100 Markus Ebner + + * gst/videocrop/gstvideocrop.c: + videocrop: Use G_VALUE_INIT to initialize GValues + +2020-02-28 19:35:34 +0200 Sebastian Dröge + + * ext/jpeg/gstjpegdec.c: + jpegdec: Configure JPEG chroma-siting for YUV formats + +2020-02-06 09:23:24 +0100 Ognyan Tonchev + + * gst/rtp/gstbuffermemory.c: + * gst/rtp/gstbuffermemory.h: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/meson.build: + * tests/check/elements/rtph264.c: + rtph26x: Use gst_memory_map() instead of gst_buffer_map() in avc mode + gst_buffer_map () results in memcopying when a GstBuffer contains + more than one GstMemory and when AVC (length-prefixed) alignment is used. + This has quite an impact on performance on systems with limited amount of + resources. With this patch the whole GstBuffer will not be mapped at once, + instead each individual GstMemory will be iterated and mapped separately. + +2019-11-26 15:08:20 +0100 Milian Wolff + + * ext/qt/gstqtgl.h: + qmlgl: ensure Qt defines GLsync to fix compile on some platforms + By explictly including QtGui/qopengl.h we force the code path that + defines GLsync in the Qt-specific way. Without that, some platforms + failed to compile the qmlgl plugin, since neither Qt nor gstreamer + defined GLsync then, leading to e.g.: + ``` + make[4]: Entering directory '/.../gst-plugins-good-1.16.1/ext/qt' + CXX libgstqmlgl_la-qtitem.lo + In file included from gstqtgl.h:32, + from qtitem.h:27, + from qtitem.cc:28: + /.../usr/include/gstreamer-1.0/ + gst/gl/gstglfuncs.h:93:17: error: expected identifier before ‘*’ token + ret (GSTGLAPI *name) args; + ^ + /.../usr/include/gstreamer-1.0/ + gst/gl/glprototypes/sync.h:27:1: note: in expansion of macro + ‘GST_GL_EXT_FUNCTION’ + GST_GL_EXT_FUNCTION (GLsync, FenceSync, + ^~~~~~~~~~~~~~~~~~~ + ``` + +2020-03-02 13:50:55 +0100 Havard Graff + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + rtptwcc: make RTPTWCCManager a GObject + +2020-03-04 11:17:16 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fix stalling when resetting timers + When calling gst_rtp_jitter_buffer_reset you pass in a seqnum. + This is considered the starting-point for a new stream. + However, the old behavior would unref this buffer, basically lying to + the thread that is pushing out buffers saying that it can expect + this buffer, when it would never arrive. The resulting effect being no + more buffer pushed out of the jitterbuffer, and it would buffer + incoming data indefinitely. + By instead inserting the buffer in the gap_packets queue, the _reset() + function will take responsibility for using that as the first buffer + of the new stream. + Fixes #703 + +2020-02-21 02:14:11 +1100 Jan Schmidt + + * gst/multifile/gstsplitmuxpartreader.c: + * gst/multifile/gstsplitmuxpartreader.h: + * gst/multifile/gstsplitmuxsrc.c: + * tests/check/elements/splitmux.c: + splitmux: Avoid negative DTS + In order to concatenate fragments, splitmuxsrc offsets + the start of each fragment PTS to 0 to align it with the + previous file. This means that DTS can go negative for + the first fragment, with really bad results. + Add a fixed offset to outgoing timestamp ranges to + avoid that. + +2020-03-04 03:43:51 +1100 Jan Schmidt + + * gst/isomp4/gstqtmux.c: + qtmux: Remove warning in the log for mono video + Vanilla mono video was generating a spurious warning into the debug log + that's just misleading. Handle mono caps explicitly to avoid the warning. + +2020-01-27 12:29:18 +0530 Guillaume Desmottes + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: add alternate support + In this mode each field is carried using its own buffer. + Allow deinterlace to negotiate caps with the Interlaced feature and + adjust the algorithm fetching lines. + Fix #620 + +2020-02-03 13:08:39 +0530 Guillaume Desmottes + + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: add wrapper to get field lines from history + No semantic change so far, will be used to implement alternate support. + +2020-02-04 16:48:21 +0530 Guillaume Desmottes + + * gst/deinterlace/gstdeinterlacemethod.c: + deinterlace: stop checking line index boundaries + The LINE2() macro already prevents out of bound indexes using CLAMP_HI() + and CLAMP_LOW(). + +2020-01-20 12:30:12 +0530 Guillaume Desmottes + + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/gstdeinterlace.h: + deinterlace: fix video info on output frames + Output frames used to have their interlace mode set to the same one as + the input. This breaks their field and comp heights when deinterlacing + an alternate stream. + +2020-01-14 14:51:07 +0530 Guillaume Desmottes + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: use output caps to compute buffer size + In interlace-mode=alternate the input buffers have half the size of the + output ones as each field has its own buffer. + +2020-02-29 08:10:56 -0500 Jennifer Berringer + + * gst/audioparsers/gstflacparse.c: + flacparse: fix broken reordering of flac metadata + Each FLAC metadata block starts with a flag denoting whether it is the + last metadata block. The existing flacparse code moves any existing + VORBISCOMMENT block to immediately follow the STREAMINFO block without + changing any block's last-metadata-block flag. If no VORBISCOMMENT block + exists, it created one with the last-metadata-block flag set to true. + This results in gstflacdec sometimes giving bad headers to libflac when + trying to play perfectly valid FLAC files depending on the file's + metadata ordering. Depending on the contents of the other metadata + blocks, current versions of libflac may or may not return + FLAC__STREAM_DECODER_ERROR_STATUS_BAD_HEADER when given this broken + metadata. This is most noticeable with files that have a large cover art + image attached where VORBISCOMMENT is the very last metadata block with + no PADDING afterwards. + This patch changes that behavior so that: + 1. For FLAC files that already have a VORBISCOMMENT block, the metadata + order is preserved. + 2. For FLAC files that do not have a VORBISCOMMENT block, the generated + dummy VORBISCOMMENT is placed immediately after STREAMINFO and + inherits the last-metadata-block flag from STREAMINFO. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/484 + +2020-02-27 14:50:51 +0900 Yeongjin Jeong + + * tests/check/elements/flvmux.c: + tests: flvmux: Instead of using the testclock, just send eos event for drain + When using the testclock for determining clock in test, it is sometimes observed + that the clock entry is not registered in time by the aggregator. So deadlock occurs + between the aggregator and the test thread. + +2020-02-28 14:23:51 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Try to infer useful header values for raw audio if the sound sample descriptions contain zero values + +2020-02-28 14:00:51 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Also use the enda atom for determining endianess of in32, fl32 and fl64 formats + Previously it was only used for in24. + +2020-02-28 13:59:42 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Fix up header information for various fixed-format raw audio formats + Sometimes the headers contain useless, wrong or zero values for e.g. the + sample size with these formats. There's only a single valid value for + them so let's set these instead. + +2020-02-28 13:59:06 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Don't print "unhandled type" warnings for various other raw audio fourccs + +2020-02-28 13:57:37 +0200 Sebastian Dröge + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: Add some more raw audio fourccs to the header instead of duplicating them + +2020-02-25 21:14:54 +0530 Nirbheek Chauhan + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Don't use glib format modifiers with sscanf + We do not have a way to know the format modifiers to use with string + functions provided by the system. G_GUINT64_FORMAT and other string + modifiers only work for glib string formatting functions. We cannot + use them for string functions provided by the stdlib. See: + https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description + ``` + ../gst/rtpmanager/gstrtpjitterbuffer.c: In function 'gst_jitter_buffer_sink_parse_caps': + ../gst/rtpmanager/gstrtpjitterbuffer.c:1523:32: error: unknown conversion type character 'l' in format [-Werror=format=] + || sscanf (mediaclk, "direct=%" G_GUINT64_FORMAT, &clock_offset) != 1) + ^~~~~~~~~~ + In file included from /home/nirbheek/cerbero/build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32, + from /home/nirbheek/cerbero/build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32, + from /home/nirbheek/cerbero/build/dist/windows_x86/include/glib-2.0/glib.h:30, + from /home/nirbheek/cerbero/build/dist/windows_x86/include/gstreamer-1.0/gst/gst.h:27, + from /home/nirbheek/cerbero/build/dist/windows_x86/include/gstreamer-1.0/gst/rtp/gstrtpbuffer.h:27, + from ../gst/rtpmanager/gstrtpjitterbuffer.c:108: + /home/nirbheek/cerbero/build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here + #define G_GUINT64_FORMAT "llu" + ^ + ../gst/rtpmanager/gstrtpjitterbuffer.c:1523:32: error: too many arguments for format [-Werror=format-extra-args] + || sscanf (mediaclk, "direct=%" G_GUINT64_FORMAT, &clock_offset) != 1) + ^~~~~~~~~~ + ``` + See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/379 + +2020-02-24 15:25:07 +0200 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + qtmux: Add support for 8k resolutions in prefill mode with ProRes + +2020-02-25 11:06:43 +0200 Sebastian Dröge + + * gst/rtpmanager/rtptimerqueue.c: + rtpjitterbuffer: Include string.h for memcpy() / memset() + Usually something else is pulling it in somehow already, but not on + Windows. + +2020-02-24 13:06:27 +0000 Håvard Graff + + * gst/rtpmanager/rtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: fix crash when no extension-header present for twcc + +2020-02-21 09:34:30 +0100 Johan Bjäreholt + + * gst/matroska/matroska-mux.c: + matroska-mux: Fix incorrect rounding of timestamps + Previously we saved the buffer_timestamp straight into + mux->cluster_time. Since the cluster time saved into the file does not + have as high precision as GstClockTime depending on the timecodescale + the rounding of relative_timestamp was invalid as mux->cluster_time + which it was calculated relative to was not equal to the cluster time + written to the matroska file. + Example of "mkvinfo -v" of how it looks before and after this change in + an scenario where previously timestamps got out of order because of this + issue. + Notice the timestamp of the SimpleBlock right before and right after the + Cluster now being in order. The consequence of this however is that the + cluster timestamp is not necessarily the same as the timestamp of the + first buffer in the cluster however (in case it's rounded up). + Before + | + SimpleBlock (track number 1, 1 frame(s), timecode 126.922s = 00:02:06.922) + | + Frame with size 432 + | + SimpleBlock (track number 2, 1 frame(s), timecode 126.933s = 00:02:06.933) + | + Frame with size 329 + | + SimpleBlock (track number 2, 1 frame(s), timecode 126.955s = 00:02:06.955) + | + Frame with size 333 + |+ Cluster + | + Cluster timecode: 126.954s + | + Cluster previous size: 97344 + | + SimpleBlock (key, track number 1, 1 frame(s), timecode 126.954s = 00:02:06.954) + | + Frame with size 61239 + | + SimpleBlock (track number 2, 1 frame(s), timecode 126.975s = 00:02:06.975) + | + Frame with size 338 + After + | + SimpleBlock (track number 1, 1 frame(s), timecode 135.456s = 00:02:15.456) + | + Frame with size 2260 + | + SimpleBlock (track number 2, 1 frame(s), timecode 135.468s = 00:02:15.468) + | + Frame with size 332 + | + SimpleBlock (track number 2, 1 frame(s), timecode 135.490s = 00:02:15.490) + | + Frame with size 335 + |+ Cluster + | + Cluster timecode: 135.489s + | + Cluster previous size: 158758 + | + SimpleBlock (key, track number 1, 1 frame(s), timecode 135.490s = 00:02:15.490) + | + Frame with size 88070 + | + SimpleBlock (track number 2, 1 frame(s), timecode 135.511s = 00:02:15.511) + | + Frame with size 336 + +2020-02-19 15:59:19 +1100 Jake Barnes + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Fix cookies property + Disable session sharing and cookie jar when cookies property is set. + The cookie jar actually replaces or removes any existing Cookie header + set on the message, so the cookies property was effectively being + ignored. There doesn't appear to be a way to inject the cookies into the + jar without having to specify matching domains etc., so it's not + possible to simulate the old behaviour of unconditionally sending the + cookies with all messages, besides simply disabling the cookie jar. + +2020-02-20 09:06:10 +0100 Stefano Buora + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: remove useless function calls + Comparing gst_rtspsrc_loop_interleaved and gst_rtspsrc_loop_udp, and investigating on timeout issues, it sounds like a piece of code has been originally copied from udp to the interleaved one. The timeout variable is never used inside the interleaved one. No side effect has been seen in the removed function calls. + The debug message removed is pointless as the timeout used is "src->tcp_timeout" that is fixed. + The presence of the two timeout drove my team in investigating if the reference to the tcp_timeout was correct (it is). Hence we removed the misleading reference to the local timeout variable. + +2020-02-20 13:43:13 +1100 Matthew Waters + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: fix typo setting max-dropout/misorder-time + we were setting the max-dropout-time to the value of the + max-misorder-time which by default has a factor of 30 difference in + value. + +2020-02-19 20:27:54 +0900 Seungha Yang + + * gst/isomp4/fourcc.h: + * gst/isomp4/qtdemux.c: + qtdemux: Parse VP Codec Configuration Box + The VP Codec Configuration Box (vpcC) contains vp9 profile and + colorimetry information. Especially the profile information might + be useful for downstream to select capable decoder element. + +2020-02-18 18:36:36 +0900 Yeongjin Jeong + + * tests/check/elements/flvmux.c: + tests: flvmux: Add test for rollover timestamp + The timestamps that exceed uint32 maximum value should be handled to rollover. + +2020-02-18 14:58:00 +0900 Yeongjin Jeong + + * gst/flv/gstflvmux.c: + flvmux: Support rollover in timestamp + For live streams, if we keep the stream for a long time, the timestamp + will be larger than max_uint32. In that case, timestamp should be handled + as a rollover timestamp rather than a backward timestamp. + +2020-02-17 15:03:28 +0100 Havard Graff + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: don't use the timer-object after JBUF_UNLOCK + It could have been freed (rtp_timer_free) in the meantime. + +2019-06-29 18:06:11 +0200 Havard Graff + + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/meson.build: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpstats.c: + * gst/rtpmanager/rtpstats.h: + * gst/rtpmanager/rtptwcc.c: + * gst/rtpmanager/rtptwcc.h: + * tests/check/elements/rtpsession.c: + rtpmanager: Google Transport-Wide Congestion Control RTP Extension + Generating and parsing the RTCP-messages described in: + https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 + +2020-02-14 10:08:05 +0000 Håvard Graff + + * gst/rtpmanager/gstrtpfunnel.c: + * tests/check/elements/rtpfunnel.c: + rtpfunnel: various cleanups + * Organize GstRtpFunnelPad and GstRtpFunnel separately + * Use G_GNUC_UNUSED instead of (void) casts + * Don't call an event "caps" + * Use semicolons after GST_END_TEST (helps gst-indent) + +2020-01-29 23:51:45 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Merge sample tables for raw audio streams with one container sample per audio sample + Instead of having chunks with one sample per raw audio sample, have + chunks with a single sample that contains lots of raw audio samples. If + necessary these are still split again later when reading the stream. + With this we are allocating a lot less memory for the parsed sample + tables and can play files that previously triggered our limit of 200MB + for the sample table. For example, one file here would previously + allocate 3.5GB for the sample table and now only allocates 70KB. + +2020-01-13 11:55:42 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Add a minimum buffer size for raw audio to not output one buffer per frame + Outputting 48000 buffers per second is not a good idea performance-wise. + If a container sample is less than 1024 raw audio frames, combine + multiple samples to get at least 1024 raw audio samples as long as + they're stored contiguous in the file. + For the other direction, if a container sample contains more than 4096 + samples there is already code for splitting them up. + Fixes https://bugzilla.gnome.org/show_bug.cgi?id=692750 + +2020-02-11 21:52:41 +0100 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix requested range + When the server replies with a range "now-", it is presumed to + be a "live" stream and we should request a similar range. + This was the case prior to my refactoring to make use of + gst_rtsp_range_to_string in 5f1a732bc7b76a6f1b8aa5f26b6e76fbca0261c7, + this commit restores the behaviour for that case. + +2017-07-13 13:49:07 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtpptdemux.c: + * tests/check/elements/rtpptdemux.c: + * tests/check/meson.build: + rtpptdemux: set payload to caps inside gst_rtp_pt_demux_get_caps + Refactoring to remove duplicate code and add test + +2017-03-16 20:57:54 +0100 Stian Selnes + + * gst/rtpmanager/gstrtpptdemux.c: + rtpptdemux: Fix debug to use GST_DEBUG_OBJECT + +2016-09-14 16:49:26 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: use max-streams on rtpssrcdemux + The proper way of capping on max-streams is to do it in rtpssrcdemux. + This patch uses the newly introduced property on rtpssrcdemux. Previous + behavior would not prevent rtpssrcdemux spawning new pads for every new + ssrc and potentialy causing performance trouble during teardown. + +2017-01-18 14:32:03 +0000 John Bassett + + * gst/rtpmanager/gstrtpssrcdemux.c: + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: Handle RTCP APP packets + Fix crash when processing RTCP APP packets. + +2017-01-12 16:05:59 +0000 John Bassett + + * gst/rtpmanager/gstrtpssrcdemux.c: + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: Bad RTP/RTCP packet is not fatal + When used for processing bundled media streams within rtpbin the rtpssrcdemux element may + receive bad RTP and RTCP packets, these should not be treated as a fatal error. + +2016-09-14 16:41:02 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/gstrtpssrcdemux.h: + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: introduce max-streams property + The property is useful against atacks when the sender changes SSRC for + every RTP packet. The property with the same name introduced in rtpbin + was not enough, because we still can end up with thousands of pads + allocated in rtpssrcdemux. + +2020-02-10 14:22:47 +0100 Havard Graff + + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: fix test warnings + +2020-02-07 10:03:49 +0100 Alexander Lapajne + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Fix for segmentation fault when handling set/get_parameter requests + gstrtspsrc uses a queue, set_get_param_q, to store set param and get + param requests. The requests are put on the queue by calling + get_parameters() and set_parameter(). A thread which executs in + gst_rtspsrc_thread() then pops requests from the queue and processes + them. The crash occured because the queue became empty and a NULL + request object was then used. The reason that the queue became empty + is that it was popped even when the thread was NOT processing a get + parameter or set parameter command. The fix is to make sure that the + queue is ONLY popped when the command being processed is a set + parameter or get parameter command. + +2019-09-27 16:52:06 -0400 Olivier Crête + + * gst/rtpmanager/rtpsource.c: + * tests/check/elements/rtpsession.c: + rtpsession: Add test for packet rate maths + +2019-09-10 19:03:02 +0100 olivier.crete@collabora.com + + * gst/rtpmanager/rtpstats.c: + rtpstats: Base the packet rate average on the packet rate itself + Do this so that the average update speed is in time instead of varying + based on the actual packet arrival rate. + +2019-09-10 18:59:02 +0100 olivier.crete@collabora.com + + * gst/rtpmanager/rtpstats.c: + rtpstats: Don't save the ts & seqnum if the avg is not updated + This makes it update correctly when you have more than one packet per + frame. + +2020-02-05 12:48:45 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2: map GST_VIDEO_FORMAT_BGR15 + The GstVideoFormat to v4l2 conversion was missing for BGR15. + +2020-02-05 12:00:00 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2: fix crash on invalid caps + gst_v4l2_object_set_format_full() was returning FALSE without setting + an error. Caller code (gst_v4l2src_fixate()) was then derefing a + NULL pointer when trying to handle the error. + +2020-01-27 16:00:30 +0200 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Include actual sink element in the fragment-opened/closed messages + If not configuring the sinks via the "location" property this can be + useful to know for which sink the fragment was actually opened/closed, + especially if finalization of the fragments is happening asynchronously. + +2020-01-29 12:05:07 +0100 Juergen Werner + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: fix scaling from RTP-time to NTP-time + The scaling was inverse. + +2020-01-27 23:59:05 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtprtxsend.h: + * tests/check/elements/rtprtx.c: + rtprtxsend: allow generic input caps + When connected to an upstream rtpfunnel element, payload-type, + ssrc and clock-rate will not be present in the received caps. + rtprtxsend can already deal with only the clock rate being + present there, a new property is exposed to allow users to + provide a payload-type -> clock-rate map, this enables the + use of the max-size-time property for bundled streams. + +2020-01-27 15:17:27 -0800 Julien Isorce + + * ext/vpx/gstvpxenc.c: + vp8enc/vp8enc: set 1 for the default value of VP8E_SET_STATIC_THRESHOLD + In Google webrtc, the setting VP8E_SET_STATIC_THRESHOLD is set to 1 + (except when the content is known to be static very often in which + case it is set to 100, i.e. when sharing screen with Google Hangouts). + The cpu usage drops a lot when using 1 for above setting because it + allows the encoder to skip static/low content blocks. The current + 0 default value uses too much cpu and confuses the user regarding + the cpu usage expectations. User expects vp8enc to use low cpu by + default. + Documentation of VP8E_SET_STATIC_THRESHOLD: + https://github.com/webmproject/libvpx/blob/master/vpx/vp8cx.h#L188 + chromium/webrtc: + https://chromium.googlesource.com/external/webrtc/+/b484ec0082948ae086c2ba4142b4d2bf8bc4dd4b/modules/video_coding/codecs/vp8/libvpx_vp8_encoder.cc#822 + Closes #58 + +2020-01-27 17:16:02 -0500 Nicolas Dufresne + + * ext/jpeg/gstjpegdec.c: + jpegdec: Check return value of gst_buffer_map() + Without this check, the element will crash instead of returning an + error. + +2020-01-27 15:52:42 +0200 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Check the correct sink class for the existence of the "location" property + +2020-01-13 11:58:12 +0200 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Always prefer information from v1/v2 sound sample description over sample description entry + ffmpeg is doing the same and various files in the wild have bogus + information in the sample description if the same information is also + duplicated afterwards in the v1/v2 sound sample desription. + Previously we only did this for non-raw audio due to + https://bugzilla.gnome.org/show_bug.cgi?id=374914 + but this specific file is already worked around differently. It still + works after this change. + Also remove ad-hoc GST_READ_DOUBLE_BE re-implementation and move the + switch for legacy audio formats after reading all the sample + descriptions as we want to override the values from there. + +2020-01-13 20:02:58 +0200 Sebastian Dröge + + * gst/avi/gstavimux.c: + * gst/avi/gstavimux.h: + avimux: Add support for >2 raw audio channels + For this case write a WAVEFORMATEXTENSIBLE header and also reorder the + raw audio channels to the AVI channel order if needed. + +2020-01-13 20:07:01 +0200 Sebastian Dröge + + * gst/wavenc/gstwavenc.c: + wavenc: Fix writing of the channel mask with >2 channels + The channel position is an enum but the conversion code assumed it's a + mask. Convert accordingly. + +2020-01-10 16:30:33 +0100 Kristofer Björkström + + * gst/rtp/gstrtph265pay.c: + * tests/check/elements/rtph265.c: + rtph265pay: TID for NALU type 48 was always set to 7 + A typo bug: | instead of & resulted in TID alwasy being set to 7 + for the aggregated NALU of type 48 + +2020-01-10 14:54:26 +0200 Sebastian Dröge + + * gst/imagefreeze/gstimagefreeze.c: + * gst/imagefreeze/gstimagefreeze.h: + imagefreeze: Add support for replacing the output buffer + By default imagefreeze will still reject new buffers after the first one + and immediately return GST_FLOW_EOS but the new allow-replace property + allows to change this. + Whenever updating the buffer we now also keep track of the configured + caps of the buffer and from the source pad task negotiate correctly + based on the potentially updated caps. + Only the very first time negotiation of a framerate with downstream is + performed, afterwards only the caps themselves apart from the framerate + are updated. + +2020-01-09 18:43:02 +0000 Alicia Boya García + + * gst/isomp4/qtdemux.c: + qtdemux: Fix race on pad reconnection + Elements emitting frames through several srcpads should use a + flow combiner to aggregate the chain returns and therefore only return + GST_FLOW_NOT_LINKED to upstream when all the downstream pads have + received GST_FLOW_NOT_LINKED. + In addition to that, in order to handle pads being relinked downstream, + the flow combiner should be reset in response to RECONFIGURE events. + This ensures that a both srcpads process a chain operation before a + GST_FLOW_NOT_LINKED can be propagated upstream (which would usually stop + the pipeline). + Otherwise, in a configuration with two srcpads, only one linked at a + time, after the relink the element could chain data through the now + unlinked pad and the flow combiner would resolve as GST_FLOW_NOT_LINKED + (stopping the pipeline) just because the now linked pad has not been + chained yet to update the flow combiner. + This patch adds handling of RECONFIGURE events to qtdemux. Also, since + this event handling causes the flow combiner to be used from a thread + other than the qtdemux streaming thread, usages of the flow combiner + has been guarded by the object lock. + +2020-01-07 01:20:24 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Fix assertion failure on set_property() + GValue might have null object. + (gst-inspect-1.0:10304): GStreamer-CRITICAL ... + gst_object_ref_sink: assertion 'object != NULL' failed + +2020-01-03 15:16:02 +0100 Daniel Molkentin + + * gst/videocrop/gstvideocrop.c: + videocrop: allow properties to be animated by GstController + +2019-12-24 08:24:51 -0500 Aaron Boxer + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: improved handling of control concatenation with base + Also, `control_url` variable has been renamed to `control_path`, + as it is actually a path. + +2019-12-06 12:34:15 -0500 Aaron Boxer + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: append aggregate control string to base URL before query string + Appending control string to end of query changes meaning of query string + Fixes #650 + +2019-12-28 23:01:19 +0000 Eric Marks + + * ext/aalib/gstaasink.c: + * ext/aalib/gstaatv.c: + * ext/aalib/gstaatv.h: + * ext/aalib/meson.build: + * ext/libcaca/gstcacasink.c: + * ext/libcaca/gstcacatv.c: + * ext/libcaca/gstcacatv.h: + * ext/libcaca/meson.build: + aasink & cacasink: add filter aatv & cacatv + Add transform filter capabilities to aasink and cacasink in the form of new elements aatv and cacatv. + +2019-06-06 11:03:34 +0200 Niels De Graef + + * gst/alpha/gstalpha.h: + * gst/alpha/gstalphacolor.h: + alpha: Cleanup using G_DECLARE_FINAL_TYPE + We started depending on GLib 2.44, so we can clean up all the GObject + boilerplate macros. + +2019-12-18 16:07:18 +0100 Stéphane Cerveau + + * ext/shout2/gstshout2.c: + * gst/multipart/multipartmux.c: + * sys/ximage/gstximagesrc.c: + good: use of g_value_dup_string + Use helper method to get string from GValue. + +2019-12-19 23:48:09 +0100 Havard Graff + + * gst/rtpmanager/gstrtpbin.c: + * tests/check/elements/rtpbin.c: + rtpbin: fix shutdown crash in rtpbin + The key is to make sure the jitterbuffer is set to NULL *before* the + ptdemux. + The race that existed would basically happen when ptdemux had reached + READY, and the jitterbuffer would then push a buffer, triggering a new + pad with a new payloadtype being added and ghosted to the rtpbin itself. + However, the srcpad of the ptdemux would now be inactive, and all the + sticky-event pushed on it would be swallowed, not allowing any to reach + the ghost-pad. Then the buffer in-flight would come to the ghostpad, + and we would assert that a buffer arrived before the necessary + events. + By simply re-ordering the state-changes, we ensure that there will be + no buffer racing into the ptdemux while its state is being changed, + and the problem disappears completely. + Notice also that there is not point in disconnecting the signals on the + ptdemux before this point, since we need the push-thread to settle + down before we can do this in a non-racy way. + +2019-09-12 14:22:10 -0600 Aaron Boxer + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: avoid seek DISCONT when only rate changes in same direction + Not setting DISCONT avoids a noticable delay when seeking + with only rate changing, in the same direction as current + rate. + +2019-12-10 18:13:11 -0500 Olivier Crête + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: Remove deprecated GTimeVal + GTimeVal won't work past 2038 + +2019-12-10 17:13:45 -0500 Olivier Crête + + * sys/osxaudio/gstosxcoreaudiohal.c: + osxaudio: Remove deprecated GTimeVal + +2019-12-18 12:19:27 +0200 Sebastian Dröge + + * gst/avi/gstavimux.c: + avimux: Add support for S24LE and S32LE raw audio + avidemux already handles this correctly. + +2019-12-16 21:07:08 +0200 Sebastian Dröge + + * gst/avi/gstavimux.c: + avimux: Allow muxing v210 video into AVI + avidemux already handles this. + +2019-12-16 18:43:44 +0200 Vivia Nikolaidou + + * gst/flv/gstflvdemux.c: + flvdemux: Don't replace video codec data when we receive a PAR + Receiving a pixel-aspect-ratio should trigger a caps change, but not + replace the existing video codec tag + +2019-12-12 20:20:35 +0100 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + qtmux: protect access to GstElement.sinkpads + +2019-12-03 15:30:06 +0100 Mathieu Duponchelle + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + * tests/check/elements/qtmux.c: + qtmux: port to GstAggregator + +2019-12-16 13:03:51 +0100 Joakim Johansson + + * gst/rtsp/gstrtspsrc.c: + gstrtspsrc: Add missing lock on free set_get_param_q + Otherwise is it possible to get a crash in gst_rtspsrc_set_parameter. + +2019-12-12 18:53:00 +0200 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Increment fragment_id even if no fragment location was provided + Applications might handle locations and generally configuration of the + sink by themselves instead of having splitmuxsink set the location on + the sink. Nonetheless it makes sense to increment the fragment_id that + is passed to the signal so that applications know which fragment is + requested. + +2019-12-12 10:59:35 +0100 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Use the last DTS for the metadata timestamp + This avoids creating a timestamp regression during a stream. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/429 + +2019-12-11 17:30:50 +0100 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: send GAP events for lagging audio and video streams too + The logic is taken straight from matroskademux, see + 77403d0afee635f2de6c2e53a23e1f50ad0d00fa + +2019-12-10 23:48:35 +0900 Seungha Yang + + * gst/flv/gstflvmux.c: + * meson.build: + flvmux: Use thread-safe gmtime_r if available + gmtime on *nix is not thread-safe. + +2019-12-05 14:58:40 +0000 Stéphane Cerveau + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + splitmuxsink: provides a start-index property + Allow to change the fragment-id start index. + +2019-12-03 11:36:07 +0100 Philipp Zabel + + * ext/qt/meson.build: + qmlglsink: fix build on EGL platform without X11 headers + If Mesa is built without X11 headers, building against Mesa EGL headers + requires a dependency on egl.pc, to define MESA_EGL_NO_X11_HEADERS. + This fixes a build error when compiling ext/qt/gstqtglutility.cc: + In file included from /usr/include/EGL/egl.h:39, + from /usr/include/gstreamer-1.0/gst/gl/egl/gstegl.h:44, + from ../gst-plugins-good-1.16.1/ext/qt/gstqtglutility.cc:43: + /usr/include/EGL/eglplatform.h:124:10: fatal error: X11/Xlib.h: No such file or directory + +2019-12-04 01:03:49 +0000 Tim-Philipp Müller + + * gst/rtp/gstrtpjpegdepay.c: + rtpjpegdepay: outputs framed jpeg + Add parsed=true to output caps, as we always output + whole frames, timestamped and all. Means also that + the output can be decoded by avdec_mjpeg wihout + plugging an extra parser (which has no rank). + +2019-12-03 13:47:22 +0100 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Correct metadata handling in file and stream mode + In file mode, only push one onMetaData at the start of the stream. + In stream mode, always push complete onMetaData. They get replaced, not + merged. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/418 + +2019-12-03 13:46:09 +0100 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Don't calculate duration in streamable mode + There's no header to rewrite, so the duration is left unused. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/418 + +2016-11-30 15:55:01 +0100 Havard Graff + + * gst/rtp/gstrtpL16depay.c: + rtpL16depay: don't crash if data is not modulo channels*width + +2019-12-02 19:00:45 +0000 Tim-Philipp Müller + + * meson.build: + * pkgconfig/gstreamer-plugins-good-uninstalled.pc.in: + * pkgconfig/meson.build: + pkgconfig: remove gst-plugins-good-1.0-uninstalled.pc + This was never installed and it was only used by the uninstalled + autotools dev environment to locate the -good plugins for use + in unit tests in gstreamer modules higher up the stack. + It is no longer needed now that we no longer have an autotools build. + +2017-10-10 15:45:28 +0200 Håvard Graff + + * pkgconfig/meson.build: + meson.build: use join_paths() on prefix + So that "/" are correct on Windows. + +2017-06-30 09:48:58 +0200 Havard Graff + + * gst/rtp/gstrtpopuspay.c: + rtpopuspay: use baseclass allocator for buffers + That way we get some of the meta -> rtp-extension goodies. + +2019-11-29 20:46:26 +0900 Seungha Yang + + * ext/vpx/gstvp9dec.c: + vp9dec: Fix broken 4:4:4 8bits decoding + VPX_IMG_FMT_I444 pixel format with sRGB colorspace means + GBR data. + Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/651 + +2019-10-18 17:45:43 +0200 Havard Graff + + * tests/check/elements/rtpsession.c: + rtpsession: add test for requesting FIR after having requested PLI + +2019-11-26 15:00:18 +0100 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: make test more stable + +2019-11-29 14:23:49 +0100 Havard Graff + + * gst/rtpmanager/gstrtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: add locking for clear-pt-map + ...or it will segfault from time to time... + +2018-05-31 10:29:43 +0200 Linus Svensson + + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-mux.h: + * gst/matroska/matroska-read-common.c: + matroskamux: Add property to set DateUTC + Add a property that makes it possible for an application to set the + DateUTC header field in matroska files. This is useful for live feeds, + where the DateUTC header can be set to a UTC timestamp, matching the + beginning of the file. + Needs gstreamer!323 + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/481 + +2018-05-31 11:20:36 +0200 Linus Svensson + + * gst/matroska/ebml-ids.h: + * gst/matroska/ebml-read.c: + * gst/matroska/ebml-write.c: + * gst/matroska/matroska-mux.c: + matroskamux: Use nanosecond precision for DateUTC + DateUTC is specified with nanosecond precision in matroska, make use of + that. + +2018-10-17 02:28:13 +0000 Nicolas Dufresne + + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + v4l2bufferpool: Queue number of allocated buffers to capture + Before we do streamon, we queue all capture buffers by calling + resurrect. When the driver supports CREATE_BUFS, this would lead + to buffers being allocated till the maximum of 32 is reached. + Instead, we now save the number of allocated buffers and queue this + amount. + +2019-11-19 14:23:48 +0100 Jan Alexander Steffens (heftig) + + * gst/matroska/matroska-mux.c: + matroskamux: Pass the right size to gst_collect_pads_add_pad + We were lucky that GstMatroskamuxPad is larger than GstMatroskaPad. + https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/merge_requests/393 + +2019-11-18 13:27:42 -0500 Nicolas Dufresne + + * sys/v4l2/gstv4l2object.c: + v4l2object: Workaround bad TRY_FMT colorimetry implementation + libv4l2 reset the colorpace to 0 and does not do any request to the + driver. This yields an invalid colorspace which currently cause a + negotiation failure. This workaround by ignoring bad values during the + TRY_FMT step. + +2019-11-04 17:18:30 +0800 aogun + + * gst/audioparsers/gstaacparse.c: + aacparse: fix wrong offset of adts channel + +2019-10-07 12:45:00 +0900 Seungha Yang + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Don't take lock during posting message + An application might try to access splitmuxsink from sync message handler + by g_object_{get,set} which takes lock also. In general, we don't + take lock around message handler. + +2019-09-12 15:21:24 -0400 Scott Kanowitz + + * ext/jpeg/gstjpegdec.c: + jpegdec: Fix incorrect logic in EOI tag detection + This change fixes the reversed logic in the EOI tag detection + code. + +2019-08-26 08:03:24 +0200 Niels De Graef + + * ext/cairo/gstcairooverlay.c: + * ext/raw1394/gstdv1394src.c: + * ext/shout2/gstshout2.c: + * gst/rtp/rtpstorage.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtsp/gstrtpdec.c: + * gst/rtsp/gstrtspsrc.c: + * gst/udp/gstdynudpsink.c: + * gst/udp/gstmultiudpsink.c: + * sys/v4l2/tuner.c: + * sys/v4l2/tunerchannel.c: + Don't pass default GLib marshallers for signals + By passing `NULL` to `g_signal_new` instead of a marshaller, GLib will + actually internally optimize the signal (if the marshaller is available + in GLib itself) by also setting the valist marshaller. This makes the + signal emission a bit more performant than the regular marshalling, + which still needs to box into `GValue` and call libffi in case of a + generic marshaller. + Note that for custom marshallers, one would use + `g_signal_set_va_marshaller()` with the valist marshaller instead. + +2019-11-14 17:33:08 -0500 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Check the exit condition after executing timers + The do_expected_timeout() function may release the JBUF_LOCK, so we need + to check if nothing wanted the timer thread to exit after this call. + The side effect was that we may endup going back into waiting for a timer + which will cause arbitrary delay on tear down (or deadlock when test + clock is used). + Fixes #653 + +2019-11-14 17:20:51 -0500 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Check exit condition immediately after JBUF_WAIT + JBUF_WAIT_QUEUE drops the JBUF_LOCK, which means the stop condition + for the chain function may have changed (change_state to NULL). Check + this immediately after the wait so that we don't delay shutting down. + +2019-11-12 17:28:22 -0500 Nicolas Dufresne + + * gst/videocrop/gstvideocrop.c: + videocrop: Also update the coordinate when in-place + This update is needed when the output caps is not changed (e.g. we are + moving a viewport around). + Fixes #669 + +2019-11-11 13:19:08 -0500 Nicolas Dufresne + + * gst/videocrop/gstvideocrop.c: + videocrop: Don't always re-run the allocation query + When in-place, running an allocation is not useful since videocrop + is not implicated in the allocation. So only force the allocation + query for the case it was in passthrough. This is needed since the + change in the crop region will likely pull us out of this mode. For the + case we where neither in passthrough or in-place, the allocation query + is already ran by the baseclass, so nothing special is needed. + This fixes performance issues when changing the crop region per frame. + This was reproduced using videocrop2-test. + +2019-11-11 13:18:52 -0500 Nicolas Dufresne + + * gst/videocrop/gstvideocrop.c: + videocrop: Cleanup spurious assignment + These are just writing the same thing a second time. + +2018-11-07 09:00:02 +0100 Michael Olbrich + + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegdec.h: + jpegdec: don't overwrite the last valid line + If the the height is not a multiple of the macro block size then the memory + of the last line is reused for all extra lines. This is no problem if the + last line is duplicated properly. However, if the extra lines are not + initialized properly during encoding, then the last visible line is + overwritten with undefined data. + Use a extra buffer to avoid this problem. + +2019-11-07 12:28:58 +0100 Stéphane Cerveau + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: add fakesink support + fakesink does not support "location" property and was generating + a warning. + +2018-12-12 19:07:39 +0300 Sergey Nazaryev + + * gst/udp/gstmultiudpsink.c: + multiudpsink: don't lose scope_id + +2019-11-05 21:41:55 +0530 Nirbheek Chauhan + + * ext/vpx/meson.build: + vpx: Error out if enabled and no features found + Seee: https://gitlab.freedesktop.org/gstreamer/cerbero/issues/200 + +2019-05-25 21:19:21 +0200 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2object: update match_buffer_layout() debug messages + It's no longer used only to try importing buffers. + +2019-05-23 10:49:39 +0200 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2object: try matching buffer layout from downstream + Ask v4l2 to produce buffers matching the buffer layout requested + downstream. + +2019-05-21 10:31:46 +0200 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2object: factor out gst_v4l2_object_match_buffer_layout() + No semantic change. + +2019-10-20 12:17:25 +0200 Havard Graff + + * gst/rtpmanager/rtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: make sure not to drop packets based on skew + One of the jitterbuffers functions is to try and make sense of weird + network behavior. + It is quite unhelpful for the jitterbuffer to start dropping packets + itself when what you are trying to achieve is better network resilience. + In the case of a skew, this could often mean the sender has restarted + in some fashion, and then dropping the very first buffer of this "new" + stream could often mean missing valuable information, like in the case + of video and I-frames. + This patch simply reverts back to the old behavior, prior to https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/commit/8d955fc32b552b2db933c67f3cfa31d987f36b81 + and includes the simplest test I could write to demonstrate the behavior, + where a single packet arrives "perfectly", then a 50ms gap happens, + and then two more packets arrive in perfect order after that. + # Conflicts: + # tests/check/elements/rtpjitterbuffer.c + +2019-04-17 12:40:22 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2transform.c: + v4l2transform: use alignments from upstream when importing on sink + Try configuring the v4l2 output with the alignments from upstream when + importing its buffers. This allows us to support importing with + non-standard strides and/or heights if supported by the driver. + +2019-04-17 12:25:14 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2object: add support for vertical padding when importing buffers + We were already supporting horizontal padding by setting bytesperline to + the buffer stride but not vertical one. + We are now updating the format height with the padded height and crop to + the actual video resolution if needed. + +2019-04-17 11:46:10 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2object: fix debug message if driver rejects stride + The 'want' and 'got' strides were inversed. + +2019-04-15 11:43:41 +0530 Guillaume Desmottes + + * sys/v4l2/gstv4l2object.c: + v4l2: improve logs when importing buffers + Log strides and offsets from upstream. + Also fix a typo. + +2019-10-29 14:05:48 +0000 James Cowgill + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: ensure pool exists before orphaning it + In commit e2ff87732d0b ("v4l2videodec: support orphaning") support for + orphaning the capture buffer pool was added when the format is + renegotiated. However, the commit forgot to check that a pool existed + before doing this. This is needed because it's possible for the format + to be renegotiated before a capture pool is allocated, which would + result in trying to orphan a NULL pool and lead to a NULL pointer + dereference. + Fix this by checking a pool exists first. If the pool doesn't exist, + there are no buffers to be reclaimed, so skip the allocation query in + that case. + +2019-10-25 22:03:18 +1100 Matthew Waters + + * ext/qt/qtwindow.cc: + qmlglsrc: read from the back buffer when use-default-fbo = TRUE + glReadBuffer(GL_COLOR_ATTACHMENT0) on the default framebuffer (0) is + invalid GL API usage and would result in a GL error being thrown. + +2019-10-25 21:47:01 +1100 Matthew Waters + + * ext/qt/gstqtsrc.cc: + qmlglsrc: fix vertical flip matrix + Some time ago libgstgl defined the majorness of matrices it uses. + The majorness used by qmlglsrc was incompatible with the libgstgl. + +2019-07-30 12:07:18 +0200 Patricia Muscalu + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Fix memory leak while pushing fragmented data + The memory leak occurs in the case when the buffer has been + added to the fragment_buffers array of the current pad and + never been sent because of the push failure of the previous + buffers: moof or mdat header or fragmented buffer(s). + +2019-10-11 14:20:15 +0200 Edward Hervey + + * gst/debugutils/cpureport.c: + * gst/debugutils/cpureport.h: + * gst/debugutils/progressreport.c: + * gst/debugutils/progressreport.h: + * gst/flv/gstflvmux.c: + * gst/isomp4/atoms.c: + * gst/isomp4/qtdemux.c: + * gst/matroska/matroska-mux.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/udp/gstmultiudpsink.c: + * sys/v4l2/gstv4l2src.c: + good: Avoid usage of deprecated API + GTimeval and related functions are now deprecated in glib. + Replacement APIs have been present since 2.26 + +2019-07-15 07:46:56 +0200 Javier Celaya + + * sys/osxaudio/meson.build: + osxaudio: misspelled dependency + When building osxaudio, the required 'AudioToolbox' dependency is + misspelled as 'AudioToolBox', which crashes the build with error: + ld: framework not found AudioToolBox + +2019-06-09 00:43:00 +0100 Tim-Philipp Müller + + * .gitignore: + * .gitmodules: + * Makefile.am: + * README: + * autogen.sh: + * common: + * configure.ac: + * docs/.gitignore: + * ext/Makefile.am: + * ext/aalib/Makefile.am: + * ext/cairo/Makefile.am: + * ext/dv/Makefile.am: + * ext/flac/Makefile.am: + * ext/gdk_pixbuf/Makefile.am: + * ext/gtk/Makefile.am: + * ext/jack/.gitignore: + * ext/jack/Makefile.am: + * ext/jpeg/Makefile.am: + * ext/lame/Makefile.am: + * ext/libcaca/Makefile.am: + * ext/libpng/Makefile.am: + * ext/mpg123/Makefile.am: + * ext/pulse/Makefile.am: + * ext/qt/.gitignore: + * ext/qt/Makefile.am: + * ext/raw1394/.gitignore: + * ext/raw1394/Makefile.am: + * ext/shout2/Makefile.am: + * ext/soup/Makefile.am: + * ext/speex/Makefile.am: + * ext/taglib/.gitignore: + * ext/taglib/Makefile.am: + * ext/twolame/Makefile.am: + * ext/vpx/Makefile.am: + * ext/wavpack/Makefile.am: + * gst/Makefile.am: + * gst/alpha/Makefile.am: + * gst/apetag/Makefile.am: + * gst/audiofx/.gitignore: + * gst/audiofx/Makefile.am: + * gst/audioparsers/Makefile.am: + * gst/auparse/.gitignore: + * gst/auparse/Makefile.am: + * gst/autodetect/Makefile.am: + * gst/avi/.gitignore: + * gst/avi/Makefile.am: + * gst/cutter/Makefile.am: + * gst/debugutils/Makefile.am: + * gst/deinterlace/Makefile.am: + * gst/dtmf/Makefile.am: + * gst/effectv/Makefile.am: + * gst/equalizer/.gitignore: + * gst/equalizer/Makefile.am: + * gst/flv/Makefile.am: + * gst/flx/Makefile.am: + * gst/goom/.gitignore: + * gst/goom/Makefile.am: + * gst/goom2k1/.gitignore: + * gst/goom2k1/Makefile.am: + * gst/icydemux/Makefile.am: + * gst/id3demux/Makefile.am: + * gst/imagefreeze/Makefile.am: + * gst/interleave/Makefile.am: + * gst/isomp4/Makefile.am: + * gst/law/Makefile.am: + * gst/level/.gitignore: + * gst/level/Makefile.am: + * gst/matroska/Makefile.am: + * gst/monoscope/.gitignore: + * gst/monoscope/Makefile.am: + * gst/multifile/Makefile.am: + * gst/multipart/Makefile.am: + * gst/replaygain/Makefile.am: + * gst/rtp/Makefile.am: + * gst/rtpmanager/Makefile.am: + * gst/rtsp/.gitignore: + * gst/rtsp/Makefile.am: + * gst/shapewipe/Makefile.am: + * gst/smpte/Makefile.am: + * gst/spectrum/.gitignore: + * gst/spectrum/Makefile.am: + * gst/udp/Makefile.am: + * gst/videobox/Makefile.am: + * gst/videocrop/Makefile.am: + * gst/videofilter/.gitignore: + * gst/videofilter/Makefile.am: + * gst/videomixer/Makefile.am: + * gst/wavenc/Makefile.am: + * gst/wavparse/.gitignore: + * gst/wavparse/Makefile.am: + * gst/y4m/Makefile.am: + * m4/.gitignore: + * m4/Makefile.am: + * m4/README: + * m4/a52.m4: + * m4/aalib.m4: + * m4/as-ffmpeg.m4: + * m4/as-liblame.m4: + * m4/as-slurp-ffmpeg.m4: + * m4/check-libheader.m4: + * m4/freetype2.m4: + * m4/glib.m4: + * m4/gst-alsa.m4: + * m4/gst-artsc.m4: + * m4/gst-fionread.m4: + * m4/gst-ivorbis.m4: + * m4/gst-matroska.m4: + * m4/gst-sdl.m4: + * m4/gst-shout2.m4: + * m4/gst-sid.m4: + * m4/gtk.m4: + * m4/libfame.m4: + * m4/ogg.m4: + * m4/vorbis.m4: + * pkgconfig/.gitignore: + * pkgconfig/Makefile.am: + * po/.gitignore: + * po/Makevars: + * po/POTFILES: + * sys/Makefile.am: + * sys/directsound/Makefile.am: + * sys/oss/.gitignore: + * sys/oss/Makefile.am: + * sys/oss4/Makefile.am: + * sys/osxaudio/Makefile.am: + * sys/osxvideo/Makefile.am: + * sys/v4l2/Makefile.am: + * sys/waveform/Makefile.am: + * sys/ximage/Makefile.am: + * tests/Makefile.am: + * tests/check/.gitignore: + * tests/check/Makefile.am: + * tests/check/elements/.gitignore: + * tests/check/generic/.gitignore: + * tests/check/pipelines/.gitignore: + * tests/examples/Makefile.am: + * tests/examples/audiofx/.gitignore: + * tests/examples/audiofx/Makefile.am: + * tests/examples/cairo/.gitignore: + * tests/examples/cairo/Makefile.am: + * tests/examples/equalizer/.gitignore: + * tests/examples/equalizer/Makefile.am: + * tests/examples/gtk/.gitignore: + * tests/examples/gtk/Makefile.am: + * tests/examples/jack/Makefile.am: + * tests/examples/level/.gitignore: + * tests/examples/level/Makefile.am: + * tests/examples/qt/qmlsink/.gitignore: + * tests/examples/qt/qmlsrc/.gitignore: + * tests/examples/rtp/.gitignore: + * tests/examples/rtp/Makefile.am: + * tests/examples/rtsp/Makefile.am: + * tests/examples/shapewipe/.gitignore: + * tests/examples/shapewipe/Makefile.am: + * tests/examples/spectrum/.gitignore: + * tests/examples/spectrum/Makefile.am: + * tests/examples/v4l2/.gitignore: + * tests/examples/v4l2/Makefile.am: + * tests/files/Makefile.am: + * tests/icles/.gitignore: + * tests/icles/Makefile.am: + Remove autotools build system + +2019-10-13 12:46:58 +0100 Tim-Philipp Müller + + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: fix wrong type cast + Follow-up to commit 1b752c0f !361 + +2019-09-25 12:36:32 +0000 HuQian + + * sys/v4l2/gstv4l2object.c: + is a typo here? gstv4l2object.c + +2019-10-11 12:27:12 +0000 Kevin Song + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Check stop in flush() to avoid race condition. + Backward playback will drain and flush every frame. Stop playback + when backward playback have race condition between exit thread and + streaming thread flush. Add one check to avoid it. + Fixes #639 + +2019-10-11 10:33:20 +0800 Fuwei Tang + + * sys/v4l2/gstv4l2videoenc.c: + v4l2videoenc: fix type conversion errors + +2019-09-02 08:27:35 -0400 Aaron Boxer + + * NEWS: + * docs/gst_plugins_cache.json: + * ext/dv/gstdvdemux.c: + * ext/flac/gstflactag.c: + * ext/gdk_pixbuf/gstgdkpixbufdec.c: + * ext/gtk/gstgtkbasesink.c: + * ext/jack/gstjackaudioclient.c: + * ext/jpeg/Makefile.am: + * ext/pulse/pulsesink.c: + * ext/qt/qtwindow.cc: + * ext/raw1394/gstdv1394src.h: + * ext/taglib/gstid3v2mux.cc: + * ext/wavpack/gstwavpackenc.c: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audiofxbasefirfilter.c: + * gst/audiofx/audiofxbasefirfilter.h: + * gst/audiofx/gstscaletempo.c: + * gst/audiofx/gstscaletempoplugin.c: + * gst/autodetect/gstautodetect.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavimux.c: + * gst/debugutils/progressreport.c: + * gst/debugutils/rndbuffersize.c: + * gst/deinterlace/gstdeinterlace.c: + * gst/deinterlace/tvtime/sse.h: + * gst/deinterlace/tvtime/tomsmocomp/SearchLoopBottom.inc: + * gst/deinterlace/tvtime/tomsmocomp/StrangeBob.inc: + * gst/deinterlace/tvtime/tomsmocomp/WierdBob.inc: + * gst/deinterlace/tvtime/vfir.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/effectv/gstedge.c: + * gst/effectv/gstquark.c: + * gst/flv/gstflvdemux.c: + * gst/flv/gstindex.c: + * gst/interleave/deinterleave.c: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux_lang.c: + * gst/level/gstlevel.c: + * gst/matroska/ebml-write.c: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-parse.c: + * gst/matroska/matroska-read-common.c: + * gst/monoscope/monoscope.c: + * gst/multifile/gstmultifilesrc.c: + * gst/multifile/gstsplitmuxpartreader.c: + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsrc.c: + * gst/multifile/patternspec.c: + * gst/replaygain/replaygain.h: + * gst/rtp/README: + * gst/rtp/gstrtpdvdepay.c: + * gst/rtp/gstrtpg726pay.c: + * gst/rtp/gstrtpgstpay.c: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph263pay.c: + * gst/rtp/gstrtph263ppay.c: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265depay.c: + * gst/rtp/gstrtpjpegdepay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpmp4adepay.c: + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtptheoradepay.c: + * gst/rtp/gstrtpulpfecenc.c: + * gst/rtp/gstrtpvorbisdepay.c: + * gst/rtp/gstrtpvrawdepay.c: + * gst/rtp/rtpstorage.c: + * gst/rtp/rtpulpfeccommon.c: + * gst/rtp/rtpulpfeccommon.h: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpptdemux.h: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsession.h: + * gst/rtpmanager/rtpsource.c: + * gst/rtsp/README: + * gst/rtsp/gstrtspsrc.c: + * gst/spectrum/gstspectrum.h: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstudpsrc.c: + * gst/videobox/gstvideobox.c: + * gst/videocrop/gstvideocrop.c: + * gst/videofilter/gstvideoflip.c: + * gst/videomixer/README: + * gst/videomixer/videomixer2.c: + * gst/wavenc/gstwavenc.c: + * gst/wavparse/gstwavparse.c: + * hooks/pre-commit.hook: + * m4/aalib.m4: + * m4/freetype2.m4: + * m4/glib.m4: + * m4/gst-fionread.m4: + * m4/gst-matroska.m4: + * m4/gst-sdl.m4: + * m4/gst-shout2.m4: + * m4/gtk.m4: + * m4/libfame.m4: + * m4/ogg.m4: + * m4/vorbis.m4: + * sys/oss4/oss4-audio.c: + * sys/oss4/oss4-soundcard.h: + * sys/osxaudio/gstosxcoreaudio.c: + * sys/osxvideo/osxvideosink.m: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2allocator.c: + * sys/v4l2/gstv4l2bufferpool.c: + * sys/v4l2/gstv4l2bufferpool.h: + * sys/v4l2/gstv4l2object.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + * sys/v4l2/v4l2_calls.c: + * sys/waveform/gstwaveformsink.c: + * sys/ximage/gstximagesrc.c: + * sys/ximage/ximageutil.h: + * tests/check/elements/jpegdec.c: + * tests/check/elements/level.c: + * tests/check/elements/qtmux.c: + * tests/check/elements/rgvolume.c: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtpbin.c: + * tests/check/elements/rtpjitterbuffer.c: + * tests/check/elements/rtpred.c: + * tests/check/elements/rtprtx.c: + * tests/check/elements/rtpsession.c: + * tests/check/elements/rtpstorage.c: + * tests/check/elements/splitmux.c: + * tests/check/pipelines/simple-launch-lines.c: + * tests/examples/cairo/cairo_overlay.c: + * tests/examples/gtk/glliveshader.c: + * tests/examples/rtp/client-rtpaux.c: + * tests/examples/v4l2/camctrl.c: + documentation: fix a number of typos + +2019-10-04 20:31:56 +0000 Simon Arnling Bååth + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + gstrtpjitterbuffer: Custom messages when dropping packets + This commit adds custom element messages for when gstrtpjitterbuffer + drops an incoming rtp packets due to for example arriving too late. + Applications can listen to these messages on the bus which enables + actions to be taken when packets are dropped due to for example high + network jitter. + Two properties has been added, one to enable posting drop messages and + one to set a minimum time between each message to enable throttling the + posting of messages as high drop rates. + +2019-09-03 16:46:30 -0400 Thibault Saunier + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: Specify REDIRECT information in error message + There are in the wild (mp4) streams that basically contain no tracks + but do have a redirect info[0], in which case, we won't be able + to expose any pad (there are no tracks) so we can't post anything but + an error on the bus, as: + - it can't send EOS downstream, it has no pad, + - posting an EOS message will be useless as PAUSED state can't be + reached and there is no sink in the pipeline meaning GstBin will + simply ignore it + The approach here is to to add details to the ERROR message with a + `redirect-location` field which elements like playbin handle and use right + away. + [0]: http://movietrailers.apple.com/movies/paramount/terminator-dark-fate/terminator-dark-fate-trailer-2_480p.mov + +2019-09-26 18:39:48 -0400 Olivier Crête + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Cancel timers instead of just unlocking loop thread + When the queue is full (and adding more packets would risk a seqnum + roll-over), the best approach is to just start pushing out packets + from the other side. Just pushing out the packets results in the + timers being left hanging with old seqnums, so it's safer to just + execute them immediately in this case. It does limit the timer space + to the time it takes to receiver about 32k packets, but without + extended sequence number, this is the best RTP can do. + This also results in the test no longer needed to have timeouts or + timers as pushing packets in drives everything. + Fixes #619 + +2019-09-27 14:04:28 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Optimize offset update + As we are applying the same offset over all timers, there timer + ordering won't change, so we can safely skip time-reordering. + +2019-09-27 16:21:22 -0400 Nicolas Dufresne + + * gst/rtpmanager/rtptimerqueue.c: + rtptimerqueue: Optimize reschedule optations + This basically add ability to choose between inserting from head, tail + or in-place in order to try and minimize the distance to walk through in + the timer queue. This removes an overhead we had seen on high drop rate. + +2019-09-27 14:04:03 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Fix a typo in comment + +2019-07-02 15:52:25 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Don't use stats timer on the timers queue + The timer passed to update_timers may be from the stats timer. At the + moment, we could endup rescheduling (reusing) that timer onto the normal + timer queue, unschedul it as if it was from the normal timer queue or + duplicate it into the stats timer queue again. This was protected before + as the with the fact the stats timer didn't have a valid idx. + +2019-06-21 14:08:26 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Update timers on ts-offset changes + As the offset is already applied now, we need to update and reschedule + all timers each time the offset is changed. I'm not sure who expect this + to be retro-actively applied, but there was a unit test for it. + +2019-06-20 15:59:48 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: No need to wake the timer thread on head changes + If the jitterbuffer head change, there is no need to systematically + wakeup the timer thread. The timer thread will be waken up on if + an earlier timeout has been pushed. This prevent some more spurious + wakeup when the system is loaded. As a side effect, cranking the clock + may set the clock at an earlier position. + +2019-06-18 19:07:29 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtptimerqueue.h: + rtpjittterbuffer: Port timers array to RtpTimerQueue + In this patch we now make use of the new RtpTimerQueue instead of the + old GArray. This required a lot of changes all over the place, some of + the important changes are that `timer->timeout` is no longer a PTS but + the actual timeout. This was required to get the RtpTimerQueue sorting + right. The applied offset is saved as `timer->offset`, this allow + retreiving back the PTS when needed. + The clockid updates only happens once per incoming packet. If the + currently schedule timer is before the earliest timer in the queue, we + no longer wakeup the thread. This way, if other timers get setup in the + meantime, this will reduce the number of wakup. + The timer loop code has been mostly rewritten, though the behaviour of + running the lost timers first has been kept (even though there is no + test to show what would be the side effect of doing this differently). + Fixes #608 + +2019-06-14 14:29:36 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjittterbuffer: Port from TimerQueue to RtpTimerQueue + +2019-06-13 17:08:31 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtptimerqueue.h: + rtpjitterbuffer: Port use the new RtpTimer structure + First iteration toward porting to the new timer queue. + +2019-06-12 09:59:31 -0400 Nicolas Dufresne + + * gst/rtpmanager/Makefile.am: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/meson.build: + * gst/rtpmanager/rtptimerqueue.c: + * gst/rtpmanager/rtptimerqueue.h: + * tests/check/Makefile.am: + * tests/check/elements/rtpjitterbuffer.c: + * tests/check/meson.build: + rtptimerqueue: Consolidate a data structure for timers + Implement a single timer queue for all timers. The goal is to always use + ordered queues for storing timers. This way, extracting timers for + execution becomes O(1). This also allow separating the clock wait + scheduling from the timer itself and ensure that we only wake up the + timer thread when strictly needed. + The knew data structure is still O(n) on insertions and reschedule, + but we now use proximity optimization so that normal cases should be + really fast. The GList structure is also embeded intot he RtpTimer + structure to reduce the number of allocations. + +2019-06-10 16:46:05 -0400 Nicolas Dufresne + + * tests/check/elements/rtpjitterbuffer.c: + tests: jitterbuffer: Demacroify some helpers + There is no reason for these to be macros anymore. This makes the + test helper much more readable. + +2019-06-06 14:44:27 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: Move item structure outside of the element + This moves the RtpJitterBufferStructure type, alloc, free into + rtpjitterbuffer.c/h implementation. jitterbuffer.c strictly rely on + the fact this structure is compatible with GList, and so it make more + sense to keep encapsulate it. Also, anything that could possibly + reduce the amount of code in the element is a win. + In order to support that move, a function pointer to free the data + was added. This also allow making the free function option when + flushing the jitterbuffer. + +2019-06-06 13:09:29 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Constify timer pointers where possible + This helps understanding which function modify the Timerdata + and which one does not. This is not always obvious from thelper + name considering recalculate_timer() does not. + +2019-09-27 08:46:22 +0200 Philipp Zabel + + * sys/v4l2/Makefile.am: + * sys/v4l2/gstv4l2mpeg2codec.c: + * sys/v4l2/gstv4l2mpeg2codec.h: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/meson.build: + v4l2: Add MPEG-2 profile and level support + Add support for V4L2 MPEG-2 decoders reporting supported profiles and + levels. + +2019-09-23 14:34:20 +0200 Philipp Zabel + + * sys/v4l2/gstv4l2object.c: + v4l2object: add support for ABGR, xBGR, RGBA, and RGBx formats + Map them to the new V4L2_PIX_FMT_{BGRA32,BGRX32,RGBA32,RGBX32} pixel + formats. + +2019-09-23 14:10:15 +0200 Philipp Zabel + + * sys/v4l2/ext/v4l2-controls.h: + * sys/v4l2/ext/videodev2.h: + v4l2: update kernel headers to latest from media tree + Update to the latest installed headers (output of make headers_install) + from the media tree, keeping the slight modifications to the includes. + This includes typo fixes in enum v4l2_mpeg_video_multi_slice_mode, + MPEG-2 level and profile enums, new FWHT and H.264 Qp controls, new + RGB(A) formats, and new continuous bytestream and dynamic resolution + format flags. + +2017-12-19 18:23:16 +0100 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpbin.h: + rtpbin: add request-jitterbuffer signal + This can be used to pass the threadsharing jitterbuffer from + gst-plugins-rs for example. + +2019-09-23 18:46:16 +1000 Matthew Waters + + * gst/isomp4/qtdemux.c: + build: fix werror build with newer gcc + In file included from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gst.h:55, + from ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/tag/tag.h:25, + from ../gst/isomp4/qtdemux.c:56: + In function ‘qtdemux_inspect_transformation_matrix’, + inlined from ‘qtdemux_parse_trak’ at ../gst/isomp4/qtdemux.c:10676:5, + inlined from ‘qtdemux_parse_tree’ at ../gst/isomp4/qtdemux.c:14210:5: + ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:645:5: error: ‘%s’ directive argument is null [-Werror=format-overflow=] + 645 | gst_debug_log ((cat), (level), __FILE__, GST_FUNCTION, __LINE__, \ + | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 646 | (GObject *) (object), __VA_ARGS__); \ + | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ../../../../dist/linux_x86_64/include/gstreamer-1.0/gst/gstinfo.h:1062:35: note: in expansion of macro ‘GST_CAT_LEVEL_LOG’ + 1062 | #define GST_DEBUG_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_DEBUG, obj, __VA_ARGS__) + | ^~~~~~~~~~~~~~~~~ + ../gst/isomp4/qtdemux.c:10294:5: note: in expansion of macro ‘GST_DEBUG_OBJECT’ + 10294 | GST_DEBUG_OBJECT (qtdemux, "Transformation matrix rotation %s", + | ^~~~~~~~~~~~~~~~ + ../gst/isomp4/qtdemux.c: In function ‘qtdemux_parse_tree’: + ../gst/isomp4/qtdemux.c:10294:64: note: format string is defined here + 10294 | GST_DEBUG_OBJECT (qtdemux, "Transformation matrix rotation %s", + | ^~ + +2019-09-18 18:31:27 +0300 Sebastian Dröge + + * gst/isomp4/atoms.c: + qtmux: Use the new helper functions for mapping the colr atom values to colorimetry + +2019-09-18 18:29:27 +0300 Sebastian Dröge + + * gst/isomp4/qtdemux.c: + qtdemux: Use the new helper functions for mapping the colr atom values to colorimetry + +2019-09-10 22:44:20 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + docs: update plugin cache + +2019-09-10 22:43:49 +0200 Mathieu Duponchelle + + * gst/smpte/barboxwipes.c: + smpte: don't register transition types twice + +2019-09-08 20:43:17 -0400 Doug Nazar + + * gst/alpha/gstalpha.c: + alpha: Fix one_over_kc calculation + On arm/aarch64, converting from float directly to unsigned int uses + a different opcode and negative numbers result in 0. Cast to + signed int first. + +2019-07-31 16:17:36 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + * tests/check/elements/splitmux.c: + splitmux: Add muxer-pad-map property + Add a property which explicitly maps splitmuxsink pads to the + muxer pads they should connect to, overriding the implicit logic + that tries to match pads but yields arbitrary names. + +2019-07-26 02:21:59 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: In async mode, retain previous muxer pad names. + When running in async-finalize mode, request new pads from the muxer + using the same names as old pads, instead of letting the muxer assign + new ones based on the pad template name. + +2019-07-26 02:13:31 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Mark split-* signals as action signals. Doc fixes. + Add the G_SIGNAL_ACTION flag to the split-* signals on splitmuxsink, + and make some improvements to their docstrings + +2019-08-29 22:11:02 +0900 Seungha Yang + + * gst/isomp4/gstqtmux.c: + qtmux: Fix incompatible type warning with MSVC + gstqtmux.c(5582): warning C4133: 'function': + incompatible types - from 'GstVideoMultiviewFlags *' to 'guint *' + +2019-09-02 16:33:05 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix git diff indentation + +2019-08-30 22:42:58 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: normalize variable to boolean + +2019-08-29 21:29:34 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: clip output segment on accurate seeks + The output segment is only used in ONVIF mode. + The previous behaviour was to output a segment computed from + the Range response sent by the server. + In ONVIF mode, servers will start serving from the appropriate + synchronization point (keyframe), and the Range in response will + start at that position. + This means rtspsrc can now perform truly accurate seeks in that + mode, by clipping the output segment to the values requested in + the seek. The decoder will then discard out of segment buffers + and playback will start without artefacts at the exact requested + position, similar to the behaviour of a demuxer when an accurate + seek is requested. + +2019-08-30 14:00:26 +1000 Matthew Waters + + * ext/vpx/gstvpxenc.c: + vpx: fix macos werror build + ../ext/vpx/gstvpxenc.c:1723:49: error: format specifies type 'long' but the argument has type 'vpx_codec_pts_t' (aka 'long long') [-Werror,-Wformat] + ", gst frame pts: %" G_GINT64_FORMAT, pkt->data.frame.pts, pts); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1065:96: note: expanded from macro 'GST_TRACE_OBJECT' + #define GST_TRACE_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, obj, __VA_ARGS__) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG' + (GObject *) (object), __VA_ARGS__); \ + ^~~~~~~~~~~ + ../ext/vpx/gstvpxenc.c:1723:70: error: format specifies type 'long' but the argument has type 'vpx_codec_pts_t' (aka 'long long') [-Werror,-Wformat] + ", gst frame pts: %" G_GINT64_FORMAT, pkt->data.frame.pts, pts); + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:1065:96: note: expanded from macro 'GST_TRACE_OBJECT' + #define GST_TRACE_OBJECT(obj,...) GST_CAT_LEVEL_LOG (GST_CAT_DEFAULT, GST_LEVEL_TRACE, obj, __VA_ARGS__) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~ + /Library/Frameworks/GStreamer.framework/Versions/1.0/include/gstreamer-1.0/gst/gstinfo.h:646:31: note: expanded from macro 'GST_CAT_LEVEL_LOG' + (GObject *) (object), __VA_ARGS__); \ + ^~~~~~~~~~~ + +2019-08-30 13:37:59 +1000 Matthew Waters + + * sys/osxvideo/cocoawindow.m: + osxvideosink: call superclass in reshape + Fixes macos werror build + ../sys/osxvideo/cocoawindow.m:437:1: error: method possibly missing a [super reshape] call [-Werror,-Wobjc-missing-super-calls] + } + ^ + +2019-08-23 18:56:01 +0200 Mathieu Duponchelle + + * ext/flac/gstflacdec.c: + * ext/flac/gstflacenc.c: + * ext/lame/gstlamemp3enc.c: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesrc.c: + * ext/speex/gstspeexdec.c: + * ext/speex/gstspeexenc.c: + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/wavpack/gstwavpackdec.c: + * ext/wavpack/gstwavpackenc.c: + * gst/audiofx/audiofirfilter.c: + * gst/audiofx/audioiirfilter.c: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux.c: + * gst/shapewipe/gstshapewipe.c: + docstrings: port ulinks to markdown links + +2019-08-10 12:33:46 +0100 Tim-Philipp Müller + + * gst/replaygain/gstrganalysis.c: + * gst/replaygain/gstrglimiter.c: + * gst/replaygain/gstrgvolume.c: + replaygain: fix up doc links to defunct replaygain.org website + Fixes #624 + +2019-08-22 00:18:51 +0900 Seungha Yang + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Fix incompatible type build warning + gstsouphttpsrc.c(2191): warning C4133: + '=': incompatible types - from 'guint (__cdecl *)(GType)' to 'GstURIType (__cdecl *)(GType)' + +2019-08-19 11:07:56 +0100 Tim-Philipp Müller + + * ext/vpx/gstvpxdec.c: + * ext/vpx/meson.build: + vpx: bump libvpx requirement to 1.5.0 + Was released in Nov 2015. + +2019-08-19 11:03:00 +0100 Tim-Philipp Müller + + * ext/vpx/meson.build: + vpx: avoid confusing meson configure output when checking for vpx versions + Used to print: + |Run-time dependency vpx found: YES 1.7.0 + |Message: libvpx provides VP8 encoder interface (vpx_codec_vp8_cx_algo) + |Message: libvpx provides VP8 decoder interface (vpx_codec_vp8_dx_algo) + |Message: libvpx provides VP9 encoder interface (vpx_codec_vp9_cx_algo) + |Message: libvpx provides VP9 decoder interface (vpx_codec_vp9_dx_algo) + |Dependency vpx found: YES (cached) + |Dependency vpx found: NO found '1.7.0' but need: '>=1.8.0' + |Run-time dependency vpx found: NO (tried pkgconfig and cmake) + We can check the version of the found dep in a way that + doesn't produce this confusing output. + +2019-08-19 07:30:17 +0000 Amr Mahdi + + * gst/wavparse/gstwavparse.c: + wavparse: Fix push mode ignoring audio with a size smaller than segment buffer + In push mode (streaming), if the audio size is smaller than segment buffer size, it would be ignored. + This happens because when the plugin receives an EOS signal while a single audio chunk that is less than the segment buffer size is buffered, it does not + flush this chunk. The fix is to flush the data chunk when it receives an EOS signal and has a single (first) chunk buffered. + How to reproduce: + 1. Run gst-launch with tcp source + ``` + gst-launch-1.0 tcpserversrc port=3000 ! wavparse ignore-length=0 ! audioconvert ! filesink location=bug.wav + ``` + 2. Send a wav file with unspecified data chunk length (0). Attached a test file + ``` + cat test.wav | nc localhost 3000 + ``` + 3. Compare the length of the source file and output file + ``` + ls -l test.wav bug.wav + -rw-rw-r-- 1 amr amr 0 Aug 15 11:07 bug.wav + -rwxrwxr-x 1 amr amr 3564 Aug 15 11:06 test.wav + ``` + The expected length of the result of the gst-lauch pipeline should be the same as the test file minus the headers (44), which is ```3564 - 44 = 3520``` but the actual output length is ```0``` + After the fix: + ``` + ls -l test.wav fix.wav + -rw-rw-r-- 1 amr amr 3520 Aug 15 11:09 fix.wav + -rwxrwxr-x 1 amr amr 3564 Aug 15 11:06 test.wav + ``` + +2019-08-12 18:56:34 +0300 Sebastian Dröge + + * gst/rtp/gstrtpvp8depay.c: + * gst/rtp/gstrtpvp8depay.h: + rtpvp8depay: Add property for waiting until the next keyframe after packet loss + If VP8 is not encoded with error resilience enabled then any packet loss + causes very bad artefacts when decoding and waiting for the next + keyframe instead improves user experience considerably. + +2019-08-06 22:27:40 -0400 Nicolas Dufresne + + * sys/v4l2/ext/types-compat.h: + v4l2: Fix type compatibility issue with glibc 2.30 + From now on, we will use linux/types.h on Linux, and use typedef of the + various flavour of BSD. + Fixes #635 + +2019-08-07 18:29:25 -0400 Mathieu Duponchelle + + * tests/check/gst-plugins-good.supp: + valgrind: suppress Cond error coming from gnutls + taken from https://salsa.debian.org/debian/flatpak/commit/fb4a8dda211c4bc036781f2b0d706266e95ce068 + +2019-07-10 22:07:05 +0300 Mart Raudsepp + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroska: Provide audio lead-in for some lossy formats + Various audio formats require an audio lead-in to decode it properly. + Most parsers would take care of it, but when a container like matroska is + involved, the demuxer handles the seeking and without its own lead-in + handling would never even pass the lead-in data to the parser. + This commit provides an initial implementation of that for audio/mpeg, + audio/x-ac3 and audio/x-eac3 by calculating the worst case lead-in time + needed from known samplerate, potential lead-in frames need and the + maximum blocksize possible for the format (as we don't parse that out + exactly in matroskademux) and seeking that much earlier in case of + accurate seeks. This is especially important for NLE use-cases with GES. + If accurate seeking to a position that happens to have a video keyframe, + it'll go back to the previous keyframe than needed, but with typical + video files that's the best we can do anyway without falling back to + scanning the clusters, as typically only keyframes are indexed in + Cueing Data. + If the media doesn't have a CUE, then we bisect for the cluster to seek + to with the same modified time as well in case of accurate seeking, + ensuring sufficient lead-in. This code path is typically hit only with + (suboptimal) audio-only matroska files, e.g. when created with ffmpeg, + which doesn't add a CUE for audio-only mkv muxing. + +2019-03-11 15:15:12 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for invalid packets in buffer list + Upstream elements can send all kinds of data in a buffer list, so cover + the case of an invalid RTP packet mixed with valid RTP packets. + +2019-03-11 15:12:03 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for multiplexed RTP and RTCP + RTP and RTCP packets can be muxed together on the same channel (see + RFC5761) and can arrive in the same buffer list. + The GStreamer rtpsession element support RFC5761, so add a test to cover + this case for buffer lists too. + +2019-03-11 15:09:27 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for different timestamps in buffer list + Buffers with different timestamps (e.g. packets belonging to different + frames) can arrive together in the same buffer list, + Add a test to cover this case. + +2019-03-12 15:24:26 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add function to check timestamp + +2019-04-02 18:02:19 +0200 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test about reordered or duplicated seqnums + +2019-04-02 17:52:54 +0200 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for lange jump in seqnums with recovery + +2019-04-02 17:50:35 +0200 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for large jump in sequence numbers + +2019-04-02 17:47:27 +0200 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for wrapping sequence numbers + +2019-03-11 15:07:08 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for permissible gap in sequence numbers + +2019-03-11 15:03:31 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for the case of failed probation + When a new source fails to pass the probation period (i.e. new packets + have non-consecutive sequence numbers), then no buffer shall be pushed + downstream. Add a test to validate this case. + +2019-03-12 15:23:16 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add function to check sequence number + +2019-04-03 14:46:35 +0200 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add test to verify that receiving stats are correct + Add a test to verify that stats about received packets are correct when + using buffer lists in the rtpsession receive path. + Split get_session_source_stats() in two to be able to get stats from + a GstRtpSession object directly. + +2019-02-27 16:17:57 +0100 Antonio Ospite + + * tests/check/elements/rtpbin_buffer_list.c: + test: rtpbin_buffer_list: add a test for buffer lists on the recv path + +2019-02-27 17:03:44 +0100 Antonio Ospite + + * gst/rtpmanager/gstrtpsession.c: + rtpsession: add support for buffer lists on the recv path + The send path in rtpsession processes the buffer list along the way, + sharing info and stats between packets in the same list, because it + assumes that all packets in a buffer list are from the same frame. + However, in the receiving path packets can arrive in all sorts of + arrangements: + - different sources, + - different frames (different timestamps), + - different types (multiplexed RTP and RTCP, invalid RTP packets). + so a more general approach should be used to correctly support buffer + lists in the receive path. + It turns out that it's simpler and more robust to process buffers + individually inside the rtpsession element even if they come in a buffer + list, and then reassemble a new buffer list when pushing the buffers + downstream. + This avoids complicating the existing code to make all functions + buffer-list-aware with the risk of introducing regressions, + To support buffer lists in the receive path and reduce the "push + overhead" in the pipeline, a new private field named processed_list is + added to GstRtpSessionPrivate, it is set in the chain_list handler and + used in the process_rtp callback; this is to achieve the following: + - iterate over the incoming buffer list; + - process the packets one by one; + - add the valid ones to a new buffer list; + - push the new buffer list downstream. + The processed_list field is reset before pushing a buffer list to be on + the safe side in case a single buffer was to be pushed by upstream + at some later point. + NOTE: + The proposed modifications do not change the behavior of the send path. + The process_rtp callback is called in rtpsource.c by the push_rtp + callback (via source_push_rtp) only when the source is not internal. + So even though push_rtp is also called in the send path, it won't end up + using process_rtp in this case because the source would be internal in + the send path. + The reasoning from above may suggest a future refactoring: push_rtp + might be split to better differentiate the send and receive path. + +2019-08-07 10:01:34 -0400 Doug Nazar + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-parse.c: + matroska: Handle interlaced field order + +2019-08-07 12:09:46 +0000 Amr Mahdi + + * gst/wavparse/gstwavparse.c: + wavparse: Fix ignoring of last chunk in push mode + In push mode (streaming), if the last audio payload chunk is less than the segment rate buffer size, it would be ignored since the plugin waits until it has at least segment rate bufer size of audio. + The fix is to introduce a flushing flag that indicates that no more audio will be available so that the plugin can recognize this condition and flush the data is has even if it is less + than the desired segment rate buffer size. + +2019-08-06 16:27:37 +0200 Robert Tiemann + + * ext/soup/gstsouphttpsrc.c: + souphttpsrc: Log any error returned by soup_session_send() + +2019-08-07 11:42:21 +0900 luke.lin + + * gst/isomp4/qtdemux.c: + qtdemux: enlarge the maximal atom size + For 8K content, frame size is over 25MB, and cause the negotiation failure. + Enlarge the limitation of QTDEMUX_MAX_ATOM_SIZE to 32MB. + +2019-07-27 04:05:01 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: expose and implement is-live property + This is useful to support the ONVIF case: when is-live is set to + FALSE and onvif-rate-control is no, the client can control the + rate of delivery and arrange for the server to block and still + keep sending when unblocked, without requiring back and forth + PAUSE / PLAY requests. This enables, amongst other things, fast + frame stepping on the client side. + When is-live is FALSE, we don't use a manager at all. This case + was actually already pretty well handled by the current code. The + standard manager, rtpbin, is simply no longer needed in this case. + Applications can instantiate a downloadbuffer after rtspsrc if + needed. + +2019-07-27 04:03:44 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: reset_time when flush stopping + +2019-07-12 22:33:08 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: expose and implement onvif-mode property + Refactor the code for parsing and generating the Range, taking + advantage of existing API in GstRtspTimeRange. + Only use the TCP protocol in that mode, as per the specification. + Generate an accurate segment when in that mode, and signal to the + depayloader that it should not generate its own segment, through + the "onvif-mode" field in the caps, see + + for more information. + Translate trickmode seek flags to their ONVIF representation + Expose an onvif-rate-control property + +2019-07-01 20:38:20 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: improve handling of rate in seeks + +2019-07-31 21:55:16 +0200 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpfunnel.c: + rtpfunnel: forward correct segment when switching pad + Forwarding a single segment event from the pad that first gets + chained is incorrect: when that first event was sent by an element + such as x264enc, with its offset start, we end pushing out of segment + buffers for the other pad(s). + Instead, everytime the active pad changes, forward the appropriate + segment event. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1028 + +2019-08-05 19:35:36 +0300 Sebastian Dröge + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Use new GstRTSPMessage API to set message body from a buffer directly + +2019-04-04 13:17:34 +0200 Antonio Ospite + + * gst/rtpmanager/rtpsource.c: + rtpsource: fix receiver source stats to consider previously queued packets + When it is not clear yet if a packet relative to a source should be + pushed, the packet is put into a queue, this happens in two cases: + - the source is still in probation; + - there is a large jump in seqnum, and it is not clear what + the cause is, future packets will help making a guess. + In either case stats about received packets are not updated at all; and + even if they were, when init_seq() is called it resets all receiver + stats, effectively loosing any possible stat about previously received + packets. + Fix this by taking into account the queued packets and update the stats + when calling init_seq(). + +2019-04-09 10:46:39 +0200 Antonio Ospite + + * gst/rtpmanager/rtpsource.c: + rtpsource: clarify meaning of the octets-sent and octets-received stats + The octets-send and octets-received stats count the payload bytes + excluding RTP and lower level headers, clarify that in the + documentation. + +2019-04-04 13:16:36 +0200 Antonio Ospite + + * gst/rtpmanager/rtpsource.c: + rtpsource: expose field bytes_received in RTPSourceStats + Since commit c971d1a9a (rtpsource: refactor bitrate estimation, + 2010-03-02) bytes_received filed in RTPSourceStats is set but then never + used again, expose it so that it can be used by user code to verify how + many bytes have been received. + +2019-06-21 17:46:36 +0200 Antonio Ospite + + * gst/rtpmanager/rtpsession.c: + * gst/rtpmanager/rtpsource.c: + * gst/rtpmanager/rtpstats.h: + rtpmanager: consider UDP and IP headers in bandwidth calculation + According to RFC3550 lower-level headers should be considered for + bandwidth calculation. + See https://tools.ietf.org/html/rfc3550#section-6.2 paragraph 4: + Bandwidth calculations for control and data traffic include + lower-layer transport and network protocols (e.g., UDP and IP) since + that is what the resource reservation system would need to know. + Fix the source data to accommodate that. + Assume UDPv4 over IP for now, this is a simplification but it's good + enough for now. + While at it define a constant and use that instead of a magic number. + NOTE: this change basically reverts the logic of commit 529f443a6 + (rtpsource: use payload size to estimate bitrate, 2010-03-02) + +2019-08-01 15:02:23 +0900 Seungha Yang + + * gst/isomp4/qtdemux.c: + qtdemux: Use empty-array safe way to cleanup GPtrArray + Fix assertion fail + GLib-CRITICAL **: g_ptr_array_remove_range: assertion 'index_ < rarray->len' failed + +2019-08-01 14:28:04 +0000 Marc Leeman + + * gst/rtp/gstrtpmp4vpay.c: + * gst/rtp/gstrtpmp4vpay.h: + rtpmp4vpay: config-interval -1 send at idr + adjust/port from rtph264pay and allow sending the configuration data at + every IDR + The payloader was stripping the configuration data when the + config-interval was set to 0. The code was written in such a way !(a > + 0) that it stripped the config when it was set at -1 (send config_data + as soon as possible). + This resulted in some MPEG4 streams where no GOP/VOP-I was detected to + be sent out without configuration. + +2019-07-27 14:21:34 -0400 Doug Nazar + + * gst/matroska/matroska-demux.c: + matroskademux: Ignore crc32 element while peeking at cluster. + +2019-07-25 21:21:26 +0530 Guillaume Desmottes + + * ext/gtk/gstgtkglsink.c: + * ext/gtk/gstgtkglsink.h: + gtkglsink: fix crash when widget is resized after element destruction + Prevent _size_changed_cb() to be called after gtkglsink has been finalized. + Fix #632 + +2019-07-26 02:45:51 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: fix reverse playback EOS conditions + In reverse playback, we don't want to rely on the position of the current + keyframe to decide a stream is EOS: the last GOP we push will start with + a keyframe, which position is likely to be outside of the segment. + Instead, let the normal seek_to_previous_keyframe mechanism do its job, + it works just fine. + +2019-07-23 01:42:02 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: fix key unit seek corner case + If a key unit seek is performed with a time position that matches + the offset of a keyframe, but not its actual PTS, we need to + adjust the segment nevertheless. + For example consider the following case: + * stream starts with a keyframe at 0 nanosecond, lasting 40 milliseconds + * user does a key unit seek at 20 milliseconds + * we don't adjust the segment as the time position is "over" a keyframe + * we push a segment that starts at 20 milliseconds + * we push a buffer with PTS == 0 + * an element downstream (eg rtponviftimestamp) tries to calculate the + stream time of the buffer, fails to do so and drops it + +2019-07-25 15:08:54 +0300 Sebastian Dröge + + * ext/jpeg/gstjpegdec.c: + jpegdec: Don't dereference NULL input state if we have no caps in TIME segments + Simply assume that the JPEG frame is not going to be interlaced instead + of crashing. + +2019-07-22 10:28:50 +0200 Knut Andre Tidemann + + * gst/rtp/gstrtpopuspay.c: + rtp: opuspay: fix memory leak in gst_rtp_opus_pay_setcaps. + The src caps were never dereferenced, causing a memory leak. + +2019-07-12 20:51:44 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + * gst/isomp4/qtdemux.h: + qtdemux: implement support for trickmode interval + When the seek event contains a (newly-added) trickmode interval, + and TRICKMODE_KEY_UNITS was requested, only let through keyframes + separated with the required interval + +2019-07-17 19:12:19 +0530 Nirbheek Chauhan + + * docs/meson.build: + meson: Don't generate doc cache when no plugins are enabled + Fixes gst-build with -Dauto-features=disabled + +2019-07-15 23:24:05 +0900 Seungha Yang + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + matroska: Port to color_{primaries,transfer,matrix}_to_iso + ... and remove duplicated code. + +2019-05-25 22:08:05 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsink.h: + * tests/check/elements/splitmux.c: + splitmuxsink: add the ability to mux auxilliary video streams + The primary video stream is used to select fragment cut points + at keyframe boundaries. Auxilliary video streams may be + broken up at any packet - so fragments may not start with a keyframe + for those streams. + +2019-06-11 23:17:30 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Add video_%d pad template. + splitmuxsrc actually supports multiple video pads. Make that clear, + especially since it was already creating pads named "video_0" etc. + +2019-07-09 23:12:45 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: fix conditions for end of segment in reverse playback + The time_position field of the stream is offset by the media_start + of its QtDemuxSegment compared to the start of the GstSegment of + the demuxer, take it into account when making comparisons. + +2019-07-09 23:06:12 +0900 Seungha Yang + + * gst/matroska/matroska-demux.c: + matroskademux: Fix mismatched transfer characteristic + TransferCharacteristics(18) should be ARIB STD-B67 (HLG) + See https://www.webmproject.org/docs/container/#TransferCharacteristics + Also map more color primaries indexes which have been handled by matroska-mux. + +2019-07-09 19:49:57 +0900 Seungha Yang + + * sys/v4l2/gstv4l2transform.c: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videoenc.c: + v4l2: Remove misleading comments + gst_pad_template_new() does not take ownership of the caps + +2019-01-23 18:27:06 -0500 Olivier Crête + + * tests/check/elements/rtpsession.c: + rtp session: Add test for collision loopback detection + Ignore further collisions if the remote SSRC change with ours, it's + probably because someone is sending us back the packets we send out. + +2019-01-23 18:14:23 -0500 Olivier Crête + + * tests/check/elements/rtpsession.c: + rtpsession tests: Add test for third-party collision detection + Add tests to validate the code that ignores the same packets coming + from 2 different sources (an third-party collision). + +2019-01-23 17:19:15 -0500 Olivier Crête + + * tests/check/elements/rtpsession.c: + rtpsession: Add test for collision on incoming packets + Make sure that the collision is properly detected on incoming packets. + +2019-01-23 17:09:27 -0500 Olivier Crête + + * tests/check/elements/rtpsession.c: + rtpsession test: Verify that on-ssrc-collision message is emitted + +2019-01-23 16:58:22 -0500 Olivier Crête + + * gst/rtpmanager/rtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: Also send conflict event when sending packet + If the conflict is detected when sending a packet, then also send an + upstream event to tell the source to reconfigure itself. + Also ignore the collision if we see more than one collision from the same + remote source to avoid problems on loops. + +2019-04-15 16:32:03 -0700 Song Bing + + * sys/v4l2/gstv4l2transform.c: + v4l2transform: set right buffer count. + Set right buffer count to avoid one buffer. + +2019-06-27 19:47:41 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtph265pay.h: + * tests/check/elements/rtph265.c: + rtph265pay: Also immediately send packet if it is a suffix NAL + Immediately send packet if it contains any suffix NAL, this is required + in case they come after the VCL nal to not have to wait until the next frame. + +2019-06-27 19:46:01 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Don't drop second byte of NAL header + At least keep 2 bytes per NAL even if the second one is 0, the + second byte of the NAL header could very well be 0. + +2019-06-26 16:42:44 -0400 Olivier Crête + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + rtph26xpay: Avoid print when there is no bundle at end of packet + +2019-06-26 16:25:01 -0400 Olivier Crête + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtph264.c: + * tests/check/elements/rtph265.c: + rtph26xpay: Wait until there is a VCL or suffix NAL to send + With unit tests. + +2019-06-19 17:16:03 -0400 Olivier Crête + + * tests/check/elements/rtph265.c: + rtph265pay test: Add unit tests for aggregation + +2019-06-18 19:07:38 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtph265pay.h: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtph265.c: + rtph265pay: Implement Aggregation packets + Align with rtph264pay + +2019-06-18 15:03:09 -0400 Olivier Crête + + * tests/check/elements/rtph264.c: + rtph264pay test: Add unit tests for aggregation + +2019-06-18 13:45:15 -0400 Olivier Crête + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + rtph264pay: Report latency when in maximal aggregation mode + +2019-06-17 11:31:53 -0400 Olivier Crête + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + * tests/check/elements/rtph264.c: + rtph264pay: Default to not adding latency when aggregating + Send the bundle as soon as there is one VCL unit in the packet at + the end of an incoming buffer. + The DELTA_UNIT flag is not reliable, so ignore it. + +2019-06-14 16:54:23 -0400 Olivier Crête + + * tests/check/elements/rtp-payloading.c: + rtp-payloading test: Fix working to 1.0 buffers instead of groups + +2019-06-13 18:07:35 -0400 Olivier Crête + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph265pay.c: + rtph265pay: Replace fragmentation while-loop with for-loop + Align with rtph264pay + +2019-06-13 17:42:05 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Rename payload_len to max_fragment_size + Align to rtph264pay + +2019-06-13 17:30:08 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Clean up _payload_nal + Move determining whether we need to fragment at all into the + fragmenter. + Align with rtph264pay + +2019-06-13 17:23:26 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Extract sending fragments into _payload_nal_fragment + Align with rtph264pay + +2019-06-13 16:22:57 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Extract sending a single packet into _payload_nal_single + Align with rtph264pay + +2019-06-13 16:14:31 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Define and use FU_A_TYPE_ID + Align with rtph264pay + +2019-06-13 16:08:37 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Use snake_case variables + Align with rtph264pay + +2019-06-13 16:04:39 -0400 Olivier Crête + + * gst/rtp/gstrtph265pay.c: + rtph265pay: Clean up whitespace and syntax + Align with rtph264pay + +2018-07-03 19:39:25 +0200 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + * gst/rtp/gstrtph264pay.h: + * tests/check/elements/rtp-payloading.c: + * tests/check/elements/rtph264.c: + rtph264pay: Support STAP-A bundling + Add a new property "do-aggregate"* to the H.264 RTP payloader which + enables STAP-A aggregation as per [RFC-6184][1]. With aggregation enabled, + packets are bundled instead of sent immediately, up until the MTU size. + Bundles also end at access unit boundaries or when packets have to be + fragmented. + *: The property-name is kept generic since it might apply more widely, + e.g. STAP-B or MTAP. + [1]: https://tools.ietf.org/html/rfc6184#section-5.7 + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/434 + +2018-11-05 17:15:39 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Fix delta-unit/discont handling when injecting SPS/PPS + Apply the wanted delta-unit and discont to the first packet; following + packets for this frame are always delta units and not discont. + +2018-11-05 19:03:45 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Replace fragmentation while-loop with for-loop + +2018-11-05 18:57:38 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Calculate the right max_fragments + +2018-11-05 18:36:35 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Rename payload_len to max_fragment_size + +2018-11-05 18:34:40 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Clean up _payload_nal_fragment + +2018-11-05 18:06:19 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Clean up _payload_nal + Move determining whether we need to fragment at all into the fragmenter. + +2018-11-05 18:04:13 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Clean up _payload_nal_single + +2018-11-05 17:55:23 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Extract sending fragments into _payload_nal_fragment + +2018-11-05 17:49:52 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Extract sending a single packet into _payload_nal_single + +2018-11-05 17:10:03 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Define and use FU_A_TYPE_ID + +2018-11-05 17:07:06 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Use snake_case variables + +2018-11-05 17:04:14 +0100 Jan Alexander Steffens (heftig) + + * gst/rtp/gstrtph264pay.c: + rtph264pay: Clean up whitespace and syntax + +2019-06-06 16:05:31 -0400 Olivier Crête + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + rtpjitterbuffer: Unlock output if the queue is full + +2019-06-29 23:17:28 -0600 Thomas Bluemel + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Ignore unsolicited rtx packets. + If an rtx packet arrives that hasn't been requested (it might + have been requested from prior to a reset), ignore it so that + it doesn't inadvertently trigger a clock skew. + +2019-06-29 23:16:44 -0600 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Add unit test for unsolicited rtx affecting skew + +2019-06-13 15:45:28 -0600 Thomas Bluemel + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.c: + * gst/rtpmanager/rtpjitterbuffer.h: + * tests/check/elements/rtpbin.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Only calculate skew or reset if no gap. + In the case of reordered packets, calculating skew would cause + pts values to be off. Only calculate skew when packets come + in as expected. Also, late RTX packets should not trigger + clock skew adjustments. + Fixes #612 + +2019-07-02 21:21:05 +0300 Mart Raudsepp + + * gst/isomp4/qtdemux.c: + qtdemux: Provide a 30 frames lead-in for MP3 + mpegaudioparse suggests MP3 needs 10 or 30 frames of lead-in (depending on + mpegaudioversion, which we don't know here), thus provide at least 30 frames + lead-in for such cases as a followup to commit cbfa4531ee5ef. + +2019-05-24 10:31:39 -0400 Olivier Crête + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: max-dropout-time gets cast to int32 + So any value over MAXINT32 gets considered as negative and is silently ignored. + +2019-07-02 13:00:32 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: do_seek can never be called with a NULL event + +2019-07-01 22:38:41 +0200 Mathieu Duponchelle + + * gst/isomp4/qtdemux.c: + qtdemux: only adjust segment time when adjusting segment start + We ended up setting segment.time to segment.position when doing + reverse playback, which is obviously wrong. + +2019-07-01 13:54:13 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: unref the event in element seek handler + +2019-06-29 00:25:26 +0200 Mathieu Duponchelle + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: handle seek event on the element + Without this, the user has to wait for rtspsrc to have sent a PLAY + request and exposed its pads before seeking it. + +2019-06-26 18:03:29 -0400 Nicolas Dufresne + + * gst/udp/gstmultiudpsink.c: + multiudpsink: Add missing socket.h include + Without this include, macro like SO_BINDTODEVICE is not visible and + associated feature gets out-compiled. This also affects the support for + SO_SNDBUF. + +2019-06-24 17:35:15 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Clear new_tags if sending metadata in header + This avoids sending an additional metadata object right after the + headers. + +2018-06-13 14:55:29 -0700 Song Bing + + * sys/v4l2/gstv4l2videodec.c: + v4l2videodec: Fix drain() function return type + Return right type for drain() function. + +2019-06-24 14:28:39 +0300 Mart Raudsepp + + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstsbcparse.c: + * gst/audioparsers/gstwavpackparse.c: + audioparsers: add back segment clipping to parsers that have lost it + The pre_push_frame default clipping behaviour was introduced in 2010 + with commit 30be03004e82 and modified with commit 4163969a2422 in 2011, + when most parsers didn't implement a pre_push_frame yet. Not having it + meant that clipping was done by default. Those that did implement a + pre_push_frame (flacparse and mpegaudioparse) at the time, had the flag + adjusted as part of the 2011 refactor work. + All other parsers got a pre_push_frame vfunc implementation only in + 2013, but seem to have forgot to keep the clipping behaviour, as + was done automatically when a pre_push_frame implementation doesn't + exist for the parser. aacparse lost it with commit 91d4abcea in + July 2013; the others in Dec 2013 as part of AUDIO_CODEC tag posting + in commits 6f89b430e, d2ab5199b, 29f2cae12, 753d3c23a and 292780574. + +2019-06-24 09:42:31 +0000 Tim-Philipp Müller + + * sys/v4l2/gstv4l2codec.c: + v4l2: fix compiler warning due to c99-ism + +2019-06-19 14:28:28 +0200 Jan Alexander Steffens (heftig) + + * tests/check/elements/flvmux.c: + test: flvmux: Test changing caps with one sinkpad + These tests segfault without the preceding crash fix. + +2019-06-19 14:08:06 +0200 Jan Alexander Steffens (heftig) + + * tests/check/elements/flvmux.c: + test: flvmux: Use gst_harness_sink_push_many + And check its return value. + +2019-06-19 12:31:46 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Simplify an if-else chain + Merge the identical branches and turn the condition around to make it + easier to read. + +2019-06-19 12:28:22 +0200 Jan Alexander Steffens (heftig) + + * gst/flv/gstflvmux.c: + flvmux: Avoid crash when changing caps without both streams + mux->video_pad and mux->audio_pad can be NULL if the corresponding pad + has not been requested. + +2019-06-12 15:57:48 +0300 Sebastian Dröge + + * gst/rtp/gstrtpgstpay.c: + rtpgstpay: Send caps anyway if caps are pending in the adapter but are different from the new ones + Otherwise it can happen that we receive a caps event, then another caps + event and only then buffers. We would then send out the first caps event + in the stream but mark buffers with the caps version of the second caps + event. + +2019-06-12 14:57:24 +0300 Sebastian Dröge + + * gst/rtp/gstrtpgstdepay.c: + * gst/rtp/gstrtpgstdepay.h: + rtpgstdepay: Only store the current caps and drop old caps immediately + Otherwise it can happen that we already collected 7 caps, miss the 8th + caps packet (packet loss) and then re-use the 1st caps for the following + buffers instead of the 8th caps which will likely cause errors further + downstream unless both caps are accidentally the same. + Keeping old caps around does not seem to have any value other than + potentially causing errors. We would always receive new caps whenever + they change (even if they were previous ones) and it's very unlikely + that they happen to be exactly the same as the previous ones. + Also after having received new caps or a buffer with a next caps + version, no buffers with old caps version will arrive anymore. + +2019-06-15 02:00:43 +1000 Jan Schmidt + + * gst/rtpmanager/rtpjitterbuffer.c: + rtpjitterbuffer: Clear clock master before unreffing + Make sure to clear any master clock on the media_clock + before unreffing it to release the timer callback that's + updating the clock and keeping it reffed. + +2019-06-16 11:07:31 +1000 Jan Schmidt + + * gst/matroska/matroska-ids.c: + matroska: Initialise a video_context field to satisfy valgrind + Clear the mastering_display_info_present field explicitly + after reallocating the track context into a video context + to avoid uninitialised warnings in valgrind + +2019-06-14 17:34:31 -0400 Thibault Saunier + + * gst/multifile/gstmultifilesink.c: + docs: Fix link to strings + We can't link to #gchar* this way. + +2019-06-14 00:17:22 +0200 Mathieu Duponchelle + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + jitterbuffer: unset DTS on output buffers + +2019-05-22 21:40:52 +0200 Mathieu Duponchelle + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: set the same seqnum on flush_start / flush_stop + It's currently not made mandatory by aggregator, but it might + eventually be, and is more consistent behaviour + See https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/977 + +2019-06-13 11:55:04 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: late packets shouldn't affect PTS of the following packet + If, say, a rtx-packet arrives really late, this can have a dramatic + effect on the jitterbuffer clock-skew logic, having it being reset + and losing track of the current dts-to-pts calculations, directly affecting + the packets that arrive later. + This is demonstrated in the test, where a RTX packet is pushed in really + late, and without this patch the last packet will have its PTS affected + by this, where as a late RTX packet should be redundant information, and + not affect anything. + +2019-06-12 10:47:39 +0200 Mikhail Fludkov + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fix rtx delay calulation when large packet spacing + +2016-11-24 18:18:01 +0100 Stian Selnes + + * gst/rtpmanager/gstrtpjitterbuffer.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: Fix delay for EXPECTED timers added by gaps + This patch corrects the delay set on EXPECTED timers that are added when + processing gaps. Previously the delay could be too small so that + 'timout + delay' was much less than 'now', causing the following retries + to be scheduled too early. (They were sent earlier than + rtx-retry-timeout after the previous timeout.) + +2018-11-20 16:11:12 +0100 Havard Graff + + * gst/rtpmanager/rtpstats.c: + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: don't try and calculate packet-rate if seqnum are jumping + Turns out that the "big-gap"-logic of the jitterbuffer has been horribly + broken. + For people using lost-events, an RTP-stream with a gap in sequencenumbers, + would produce exactly that many lost-events immediately. + So if your sequence-numbers jumped 20000, you would get 20000 lost-events + in your pipeline... + The test that looks after this logic "test_push_big_gap", basically + incremented the DTS of the buffer equal to the gap that was introduced, + so that in fact this would be more of a "large pause" test, than an + actual gap/discontinuity in the sequencenumbers. + Once the test was modified to not increment DTS (buffer arrival time) with + a similar gap, all sorts of crazy started happening, including adding + thousands of timers, and the logic that should have kicked in, the + "handle_big_gap_buffer"-logic, was not called at all, why? + Because the number max_dropout is calculated using the packet-rate, and + the packet-rate logic would, in this particular test, report that + the new packet rate was over 400000 packets per second!!! + I believe the right fix is to don't try and update the packet-rate if + there is any jumps in the sequence-numbers, and only do these calculations + for nice, sequential streams. + +2019-06-12 11:16:22 +0200 Havard Graff + + * tests/check/elements/rtpjitterbuffer.c: + rtpjitterbuffer: fix unused variables + +2019-06-12 02:42:42 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Protect initial pad configuration with the object lock + gst_splitmux_src_activate_part() configures the pad information + before starting the pad task, but occasionally the changes it makes + to the pad are not seen in the pad task because they're not + protected by the right locking. Use the pad's object lock to + protect those variables. + +2019-06-12 01:42:20 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Restart pad task on a reconfigure + On a reconfigure event, restart streaming on the pad so + that switching tracks in playbin works cleanly + +2019-06-11 18:40:09 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + * gst/multifile/gstsplitmuxsrc.h: + splitmuxsrc: Use an RW lock instead of a mutex to protect the pad list + Fix a deadlock around the pads list by using an RW lock to + allow simultaneous readers. The pad list doesn't really changes + except at startup and shutdown. + +2019-06-11 23:18:24 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsrc.c: + splitmuxsrc: Ignore duplicate seeks + Use the seqnum to ignore duplicated seek events. + +2019-05-29 09:20:07 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Improve debug output + Make the debug output less confusing by not mentioning a src + pad when doing calculations on the sink pad side. + Improve debug around why a GOP is considered overflowing a fragment + +2019-05-29 09:20:07 +1000 Jan Schmidt + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Give internal queues useful names + Makes debug output more useful + +2019-06-05 23:13:33 +0300 Mart Raudsepp + + * gst/isomp4/qtdemux.c: + qtdemux: Provide a 2 frames lead-in for audio decoders + AAC and various other audio codecs need a couple frames of lead-in to + decode it properly. The parser elements like aacparse take care of it + via gst_base_parse_set_frame_rate, but when inside a container, the + demuxer is doing the seek segment handling and never gives lead-in + data downstream. + Handle this similar to going back to a keyframe with video, in the + same place. Without a lead-in, the start of the segment is silence, + when it shouldn't, which becomes especially evident in NLE use cases. + +2019-05-28 20:14:49 +0300 Mart Raudsepp + + * gst/isomp4/qtdemux.c: + qtdemux: remove indent exception and reindent + As the indent disabling isn't playing along for a following fix, + remove the indent disabling and reindent in a way that doesn't + look too stupid. + +2019-03-08 14:43:20 +0000 Philippe Normand + + * sys/v4l2/gstv4l2h264codec.c: + v4l2: Fix H.264 level 3 string representation + The string_to_level function handles "3" so the level_to_string function should + do the same, to prevent caps negotiation issues. + +2019-03-04 11:05:29 +0000 Philippe Normand + + * sys/v4l2/Makefile.am: + * sys/v4l2/gstv4l2.c: + * sys/v4l2/gstv4l2codec.c: + * sys/v4l2/gstv4l2codec.h: + * sys/v4l2/gstv4l2fwhtenc.c: + * sys/v4l2/gstv4l2h263enc.c: + * sys/v4l2/gstv4l2h264codec.c: + * sys/v4l2/gstv4l2h264codec.h: + * sys/v4l2/gstv4l2h264enc.c: + * sys/v4l2/gstv4l2h264enc.h: + * sys/v4l2/gstv4l2h265codec.c: + * sys/v4l2/gstv4l2h265codec.h: + * sys/v4l2/gstv4l2h265enc.c: + * sys/v4l2/gstv4l2h265enc.h: + * sys/v4l2/gstv4l2jpegenc.c: + * sys/v4l2/gstv4l2mpeg4codec.c: + * sys/v4l2/gstv4l2mpeg4codec.h: + * sys/v4l2/gstv4l2mpeg4enc.c: + * sys/v4l2/gstv4l2mpeg4enc.h: + * sys/v4l2/gstv4l2videodec.c: + * sys/v4l2/gstv4l2videodec.h: + * sys/v4l2/gstv4l2videoenc.c: + * sys/v4l2/gstv4l2videoenc.h: + * sys/v4l2/gstv4l2vp8codec.c: + * sys/v4l2/gstv4l2vp8codec.h: + * sys/v4l2/gstv4l2vp8enc.c: + * sys/v4l2/gstv4l2vp8enc.h: + * sys/v4l2/gstv4l2vp9codec.c: + * sys/v4l2/gstv4l2vp9codec.h: + * sys/v4l2/gstv4l2vp9enc.c: + * sys/v4l2/gstv4l2vp9enc.h: + * sys/v4l2/meson.build: + v4l2: Profile and level probing support for encoders and decoders + There used to be some profile/level support in encoders. This code was moved to + GstV4l2Codecs and is now also used for decoders. The caps templates for the + H.264, H.265, MPEG4, VP8 and VP9 encoders and decoders should now reflect the + profiles and levels advertised by the kernel. + +2019-06-03 16:21:12 -0400 Aaron Boxer + + * gst/matroska/matroska-mux.c: + matroskamux: fix typo in property description + +2019-06-04 13:39:00 -0400 Nicolas Dufresne + + * tests/check/gst-plugins-good.supp: + supp: Ignore leaks caused by shout/sethostent + sethostent() seems to be using a global state and we endup with leaks from + that API when called through shout_init(). We had the option to only + ignore the shout case, but the impression is that if we have shout and + another sethostend user, as it's a global state, we may endup with a + different stack trace for the same leak. So in the end, we just ignore + memory allocated by sethostent in general. + +2019-04-30 17:28:25 -0400 Thibault Saunier + + * ext/pulse/pulsedeviceprovider.c: + pulse-device: Hide the alsa device provider if we provide alsa devices + +2019-05-21 15:25:03 -0400 Nicolas Dufresne + + * gst/rtpmanager/gstrtpssrcdemux.c: + * tests/check/elements/rtpssrcdemux.c: + rtpssrcdemux: Avoid taking streamlock out-of-band + In this change we now protect the internal srcpads list using the + stream lock and limit usage of the internal stream lock to + preventing data flowing on the other src pad type while creating + and signalling the new pad. + This fixes a deadlock with RTPBin shutdown lock. These two locks would + end up being taken in two different order, which caused a deadlock. More + generally, we should not rely on a streamlock when handling out-of-band + data, so as a side effect, we should not take a stream lock when + iterating internal links. + +2019-05-27 18:08:54 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2object.c: + v4l2object: Orphan buffer pool on object_stop if supported + Use V4L2 buffer orphaning, on recent kernels so that + the device can be restarted immediately with + a new buffer pool during renogatiation. + +2019-05-30 13:12:31 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: Free orphaned allocator resources when buffers are released + Allocator resources cannot be freed when a buffer pool is orphaned + while its buffers are in use. They should, however, be freed once those + buffers are no longer needed. This patch disposes of any buffers + belonging to an orphaned pool as they are released, and makes sure + that the allocator is cleaned up when the last buffer is returned. + +2019-05-30 11:13:07 +0900 Damian Hobson-Garcia + + * sys/v4l2/gstv4l2bufferpool.c: + v4l2bufferpool: return TRUE when buffer pool orphaning succeeds + When trying to orphan a buffer pool, successfully return and unref + the pool when the pool is either successfully stopped or orphaned. + Indicate failure and leave the pool untouched otherwise. + +2019-05-31 23:04:11 +0200 Niels De Graef + + * configure.ac: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstmultiudpsink.h: + * gst/udp/gstudpsrc.c: + * meson.build: + meson: Bump minimal GLib version to 2.44 + This means we can use some newer features and get rid of some + boilerplate code using the G_DECLARE_* macros. + As discussed on IRC, 2.44 is old enough by now to start depending on it. + +2018-09-05 21:10:51 +0300 Sebastian Dröge + + * gst/isomp4/gstqtmux.c: + * gst/isomp4/gstqtmux.h: + qtmux: Use size of first closed caption buffer in prefill mode + It must be accurate for all samples to work in Final Cut properly, so + the best we can do is to assume that all samples are the same as the + first. Bigger samples are truncated, smaller samples are padded. + +2019-05-29 22:06:58 +0200 Mathieu Duponchelle + + * docs/meson.build: + * ext/lame/gstlamemp3enc.c: + * ext/mpg123/gstmpg123audiodec.c: + * ext/taglib/gstapev2mux.cc: + * ext/taglib/gstid3v2mux.cc: + * ext/twolame/gsttwolamemp2enc.c: + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosrc.c: + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosrc.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/level/gstlevel.c: + * gst/rtp/gstrtpL8depay.c: + * gst/rtp/gstrtpL8pay.c: + * gst/rtp/gstrtpreddec.c: + * gst/rtp/gstrtpredenc.c: + * gst/rtp/gstrtpulpfecdec.c: + * gst/rtp/gstrtpulpfecenc.c: + * gst/spectrum/gstspectrum.c: + * sys/v4l2/gstv4l2object.c: + doc: remove xml from comments + +2019-05-29 11:02:26 +0100 Tim-Philipp Müller + + * docs/gst_plugins_cache.json: + docs: update plugins cache + And add gtk+ and qt plugins + +2019-05-29 10:58:40 +0100 Tim-Philipp Müller + + * ext/dv/meson.build: + * ext/gtk/meson.build: + * ext/qt/meson.build: + * sys/osxaudio/meson.build: + * sys/osxvideo/meson.build: + * sys/waveform/meson.build: + dv, gtk, qt, osxaudio, osxvideo, waveform: add to plugins list + Makes sure the paths for these plugins are included in the + uninstalled plugin paths list. And also for the docs. + Fixes #604 + +2019-04-18 15:31:00 +0300 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-mux.h: + matroskamux: Add new property to offset all streams to start at zero + This takes the timestamp of the earliest stream and offsets it so that + it starts at 0. Some software (VLC, ffmpeg-based) does not properly + handle Matroska files that start at timestamps much bigger than zero. + Closes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/449 + +2019-05-28 14:13:56 +0100 Tim-Philipp Müller + + * gst/rtp/gstrtpmp4gdepay.c: + * gst/rtp/gstrtpmp4gdepay.h: + rtpmp4gdepay: don't spam debug log for broken ADTS-in-RTP AAC + Print warning only once. + +2019-05-22 18:06:04 +0300 Sebastian Dröge + + * gst/multifile/gstsplitmuxsink.c: + splitmuxsink: Only set running time on finalizing sink element when in async-finalize mode + There is only a single sink element in async-finalize mode, and we would + keep the running time from previous fragments set in that case. As we + don't ever set the running time for the very last fragment on EOS, this + would mean that the closing time reported for the very last fragment is + the same as the closing time of the previous fragment. + +2015-03-26 13:08:32 -0400 Nicolas Dufresne + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: Remove uneeded keep-alive hack + The rtsp connection code has been fixed now. + https://bugzilla.gnome.org/show_bug.cgi?id=744209 + +2019-05-26 17:46:06 +0300 Vivia Nikolaidou + + * gst/rtpmanager/gstrtpjitterbuffer.c: + rtpjitterbuffer: Print GstClockTimeDiff as GST_STIME_FORMAT + +2019-05-25 19:45:02 +0200 Mathieu Duponchelle + + * docs/gst_plugins_cache.json: + doc: update plugin cache + +2019-05-25 17:25:02 +0200 Mathieu Duponchelle + + * gst/videomixer/videomixer2.c: + videomixer: the documentation for GstVideoMixer2Pad is not exposed + +2019-05-25 16:56:32 +0200 Mathieu Duponchelle + + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + * ext/soup/gstsouphttpsrc.c: + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp9enc.c: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux.c: + * gst/multifile/gstmultifilesrc.c: + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtsp/gstrtspsrc.c: + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmptealpha.c: + * gst/spectrum/gstspectrum.c: + doc: fix element section documentations + Element sections were not rendered anymore after the hotdoc + port, fixing this revealed a few incorrect links. + +2019-02-19 12:15:19 -0500 Nicolas Dufresne + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Improve RTPStorage action signal documentation + This is a tiny clarification as the storage was loosely named "storage". + This change clarify that the storage is specificaly used for received RTP + packets. This is unlike the storage found in rtprtxsend that stores a + backlog of sent RTP packets. + +2019-05-05 22:16:36 +0900 Seungha Yang + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + matroska: Add BT2020_10, PQ and HLG transfer functions + The direct use of newly added transfer functions + +2019-05-23 12:38:06 +0300 Sebastian Dröge + + * ext/aalib/meson.build: + aasink: Generate pkg-config file for the plugin + +2019-05-22 11:01:17 +0900 Seungha Yang + + * gst/multifile/gstmultifilesink.c: + multifilesink: Fix documentation of max-file-duration property + The max-file-duration property works with max-duration mode + +2019-05-14 17:36:14 -0400 Nicolas Dufresne + + * gst/rtpmanager/rtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: Always keep at least one NACK on early RTCP + We recently added code to remove outdate NACK to avoid using bandwidth + for packet that have no chance of arriving on time. Though, this had a + side effect, which is that it was to get an early RTCP packet with no + feedback into it. This was pretty useless but also had a side effect, + which is that the RTX RTT value would never be updated. So we we stared + having late RTX request due to high RTT, we'd never manage to recover. + This fixes the regression by making sure we keep at least one NACK in + this situation. This is really light on the bandwidth and allow for + quick recover after the RTT have spiked higher then the jitterbuffer + capacity. + +2019-05-16 09:14:19 -0400 Thibault Saunier + + * docs/meson.build: + docs: Stop building the doc cache by default + Fixes https://gitlab.freedesktop.org/gstreamer/gst-docs/issues/36 + +2019-05-13 22:53:59 -0400 Thibault Saunier + + * docs/gst_plugins_cache.json: + docs: Update plugins documentation cache + +2019-04-23 12:28:23 -0400 Thibault Saunier + + * ext/soup/gstsouputils.c: + * gst/goom/flying_stars_fx.c: + * gst/goom/goom_tools.h: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpmux.h: + * sys/v4l2/gstv4l2object.c: + doc: Fix some docstrings + +2018-10-22 11:39:55 +0200 Thibault Saunier + + * Makefile.am: + * configure.ac: + * docs/Makefile.am: + * docs/all_index.md: + * docs/gst_api_version.in: + * docs/gst_plugins_cache.json: + * docs/index.md: + * docs/meson.build: + * docs/plugins/.gitignore: + * docs/plugins/Makefile.am: + * docs/plugins/gst-plugins-good-plugins-docs.sgml: + * docs/plugins/gst-plugins-good-plugins-sections.txt: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/gst-plugins-good-plugins.interfaces: + * docs/plugins/gst-plugins-good-plugins.prerequisites: + * docs/plugins/gst-plugins-good-plugins.signals: + * docs/plugins/gst-plugins-good-plugins.types: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-audioparsers.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-directsound.xml: + * docs/plugins/inspect/plugin-dtmf.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gtk.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-isomp4.xml: + * docs/plugins/inspect/plugin-jack.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-lame.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-monoscope.xml: + * docs/plugins/inspect/plugin-mpg123.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-osxaudio.xml: + * docs/plugins/inspect/plugin-osxvideo.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-qmlgl.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtpmanager.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-twolame.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-vpx.xml: + * docs/plugins/inspect/plugin-waveform.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * docs/random/ChangeLog-0.8: + * docs/random/PORTED_09: + * docs/sitemap.txt: + * docs/version.entities.in: + * ext/aalib/meson.build: + * ext/cairo/meson.build: + * ext/flac/meson.build: + * ext/gdk_pixbuf/meson.build: + * ext/jack/meson.build: + * ext/jpeg/meson.build: + * ext/lame/meson.build: + * ext/libcaca/meson.build: + * ext/libpng/meson.build: + * ext/mpg123/meson.build: + * ext/pulse/meson.build: + * ext/raw1394/meson.build: + * ext/shout2/meson.build: + * ext/soup/meson.build: + * ext/speex/meson.build: + * ext/taglib/meson.build: + * ext/twolame/meson.build: + * ext/vpx/meson.build: + * ext/wavpack/meson.build: + * gst/alpha/meson.build: + * gst/apetag/meson.build: + * gst/audiofx/meson.build: + * gst/audioparsers/meson.build: + * gst/auparse/meson.build: + * gst/autodetect/meson.build: + * gst/avi/meson.build: + * gst/cutter/meson.build: + * gst/debugutils/meson.build: + * gst/deinterlace/meson.build: + * gst/dtmf/meson.build: + * gst/effectv/meson.build: + * gst/equalizer/meson.build: + * gst/flv/meson.build: + * gst/flx/meson.build: + * gst/goom/filters.c: + * gst/goom/meson.build: + * gst/goom2k1/meson.build: + * gst/icydemux/meson.build: + * gst/id3demux/meson.build: + * gst/imagefreeze/meson.build: + * gst/interleave/meson.build: + * gst/isomp4/meson.build: + * gst/law/meson.build: + * gst/law/mulaw-conversion.c: + * gst/level/meson.build: + * gst/matroska/meson.build: + * gst/monoscope/meson.build: + * gst/multifile/meson.build: + * gst/multipart/meson.build: + * gst/replaygain/meson.build: + * gst/rtp/meson.build: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/meson.build: + * gst/rtsp/meson.build: + * gst/shapewipe/meson.build: + * gst/smpte/meson.build: + * gst/spectrum/meson.build: + * gst/udp/meson.build: + * gst/videobox/meson.build: + * gst/videocrop/meson.build: + * gst/videofilter/meson.build: + * gst/videomixer/meson.build: + * gst/wavenc/meson.build: + * gst/wavparse/meson.build: + * gst/y4m/meson.build: + * meson.build: + * meson_options.txt: + * sys/directsound/meson.build: + * sys/oss/meson.build: + * sys/oss4/meson.build: + * sys/v4l2/meson.build: + * sys/ximage/meson.build: + doc: Port documentation to hotdoc + +2018-11-12 08:05:45 -0300 Thibault Saunier + + * gst/isomp4/gstqtmux.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/rtpsession.c: + Mark some properties as DOC_SHOW_DEFAULT + +2018-10-22 11:39:24 +0200 Thibault Saunier + + * ext/aalib/gstaasink.c: + * ext/cairo/gstcairooverlay.c: + * ext/dv/gstdvdec.c: + * ext/dv/gstdvdemux.c: + * ext/flac/gstflacdec.c: + * ext/flac/gstflacenc.c: + * ext/flac/gstflactag.c: + * ext/gdk_pixbuf/gstgdkpixbufoverlay.c: + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + * ext/jack/gstjackaudioclient.c: + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosink.h: + * ext/jack/gstjackaudiosrc.c: + * ext/jpeg/gstjpegdec.c: + * ext/jpeg/gstjpegenc.c: + * ext/jpeg/gstsmokedec.c: + * ext/jpeg/gstsmokeenc.c: + * ext/libcaca/gstcacasink.c: + * ext/libpng/gstpngdec.c: + * ext/libpng/gstpngenc.c: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesrc.c: + * ext/raw1394/gstdv1394src.c: + * ext/raw1394/gsthdv1394src.c: + * ext/shout2/gstshout2.c: + * ext/soup/gstsouphttpclientsink.c: + * ext/soup/gstsouphttpsrc.c: + * ext/speex/gstspeexdec.c: + * ext/speex/gstspeexenc.c: + * ext/vpx/gstvp8dec.c: + * ext/vpx/gstvp8enc.c: + * ext/vpx/gstvp9dec.c: + * ext/vpx/gstvp9enc.c: + * ext/wavpack/gstwavpackdec.c: + * ext/wavpack/gstwavpackenc.c: + * gst/alpha/gstalpha.c: + * gst/alpha/gstalpha.h: + * gst/alpha/gstalphacolor.c: + * gst/apetag/gstapedemux.c: + * gst/audiofx/audioamplify.c: + * gst/audiofx/audiochebband.c: + * gst/audiofx/audiocheblimit.c: + * gst/audiofx/audiodynamic.c: + * gst/audiofx/audioecho.c: + * gst/audiofx/audiofirfilter.c: + * gst/audiofx/audioiirfilter.c: + * gst/audiofx/audioinvert.c: + * gst/audiofx/audiokaraoke.c: + * gst/audiofx/audiopanorama.c: + * gst/audiofx/audiowsincband.c: + * gst/audiofx/audiowsinclimit.c: + * gst/audiofx/gstscaletempo.c: + * gst/audioparsers/gstaacparse.c: + * gst/audioparsers/gstac3parse.c: + * gst/audioparsers/gstamrparse.c: + * gst/audioparsers/gstdcaparse.c: + * gst/audioparsers/gstflacparse.c: + * gst/audioparsers/gstmpegaudioparse.c: + * gst/audioparsers/gstsbcparse.c: + * gst/audioparsers/gstwavpackparse.c: + * gst/auparse/gstauparse.c: + * gst/autodetect/gstautoaudiosink.c: + * gst/autodetect/gstautoaudiosrc.c: + * gst/autodetect/gstautovideosink.c: + * gst/autodetect/gstautovideosrc.c: + * gst/avi/gstavidemux.c: + * gst/avi/gstavimux.c: + * gst/avi/gstavisubtitle.c: + * gst/cutter/gstcutter.c: + * gst/debugutils/breakmydata.c: + * gst/debugutils/gstcapssetter.c: + * gst/debugutils/gstpushfilesrc.c: + * gst/debugutils/gsttaginject.c: + * gst/debugutils/progressreport.c: + * gst/debugutils/rndbuffersize.c: + * gst/deinterlace/gstdeinterlace.c: + * gst/dtmf/gstdtmfsrc.c: + * gst/dtmf/gstrtpdtmfdepay.c: + * gst/dtmf/gstrtpdtmfsrc.c: + * gst/effectv/gstaging.c: + * gst/effectv/gstdice.c: + * gst/effectv/gstedge.c: + * gst/effectv/gstop.c: + * gst/effectv/gstquark.c: + * gst/effectv/gstradioac.c: + * gst/effectv/gstrev.c: + * gst/effectv/gstripple.c: + * gst/effectv/gstshagadelic.c: + * gst/effectv/gststreak.c: + * gst/effectv/gstvertigo.c: + * gst/effectv/gstwarp.c: + * gst/equalizer/gstiirequalizer10bands.c: + * gst/equalizer/gstiirequalizer3bands.c: + * gst/equalizer/gstiirequalizernbands.c: + * gst/flv/gstflvdemux.c: + * gst/flv/gstflvmux.c: + * gst/flv/gstindex.c: + * gst/flx/gstflxdec.c: + * gst/goom/filters.c: + * gst/goom/goom_config.h: + * gst/goom/goom_filters.h: + * gst/goom/goom_plugin_info.h: + * gst/goom/gstgoom.c: + * gst/goom/ifs.c: + * gst/goom/sound_tester.h: + * gst/goom2k1/filters.h: + * gst/goom2k1/goom_core.h: + * gst/goom2k1/gstgoom.c: + * gst/icydemux/gsticydemux.c: + * gst/id3demux/gstid3demux.c: + * gst/imagefreeze/gstimagefreeze.c: + * gst/interleave/deinterleave.c: + * gst/interleave/interleave.c: + * gst/isomp4/gstqtmoovrecover.c: + * gst/isomp4/gstqtmux-doc.c: + * gst/isomp4/gstqtmux.c: + * gst/isomp4/qtdemux.c: + * gst/law/alaw-decode.c: + * gst/law/alaw-encode.c: + * gst/law/mulaw-conversion.c: + * gst/law/mulaw-decode.c: + * gst/law/mulaw-encode.c: + * gst/level/gstlevel.c: + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-parse.c: + * gst/matroska/webm-mux.c: + * gst/monoscope/gstmonoscope.c: + * gst/multifile/gstmultifilesink.c: + * gst/multifile/gstmultifilesrc.c: + * gst/multifile/gstsplitfilesrc.c: + * gst/multifile/gstsplitmuxsink.c: + * gst/multifile/gstsplitmuxsrc.c: + * gst/multipart/multipartdemux.c: + * gst/multipart/multipartmux.c: + * gst/replaygain/gstrganalysis.c: + * gst/replaygain/gstrglimiter.c: + * gst/replaygain/gstrgvolume.c: + * gst/rtp/gstrtpL16depay.c: + * gst/rtp/gstrtpL16pay.c: + * gst/rtp/gstrtpL24depay.c: + * gst/rtp/gstrtpL24pay.c: + * gst/rtp/gstrtpac3depay.c: + * gst/rtp/gstrtpac3pay.c: + * gst/rtp/gstrtpamrdepay.c: + * gst/rtp/gstrtpamrpay.c: + * gst/rtp/gstrtpbvdepay.c: + * gst/rtp/gstrtpbvpay.c: + * gst/rtp/gstrtph261depay.c: + * gst/rtp/gstrtph261pay.c: + * gst/rtp/gstrtph264depay.c: + * gst/rtp/gstrtph265depay.c: + * gst/rtp/gstrtph265pay.c: + * gst/rtp/gstrtpj2kdepay.c: + * gst/rtp/gstrtpj2kpay.c: + * gst/rtp/gstrtpjpegpay.c: + * gst/rtp/gstrtpklvdepay.c: + * gst/rtp/gstrtpklvpay.c: + * gst/rtp/gstrtpstreamdepay.c: + * gst/rtp/gstrtpstreampay.c: + * gst/rtpmanager/gstrtpbin.c: + * gst/rtpmanager/gstrtpdtmfmux.c: + * gst/rtpmanager/gstrtpjitterbuffer.c: + * gst/rtpmanager/gstrtpmux.c: + * gst/rtpmanager/gstrtpptdemux.c: + * gst/rtpmanager/gstrtpptdemux.h: + * gst/rtpmanager/gstrtprtxqueue.c: + * gst/rtpmanager/gstrtprtxreceive.c: + * gst/rtpmanager/gstrtprtxsend.c: + * gst/rtpmanager/gstrtpsession.c: + * gst/rtpmanager/gstrtpssrcdemux.c: + * gst/rtpmanager/rtpsession.c: + * gst/rtsp/gstrtpdec.c: + * gst/shapewipe/gstshapewipe.c: + * gst/smpte/gstsmpte.c: + * gst/smpte/gstsmptealpha.c: + * gst/spectrum/gstspectrum.c: + * gst/udp/gstmultiudpsink.c: + * gst/udp/gstudpsink.c: + * gst/udp/gstudpsrc.c: + * gst/videobox/gstvideobox.c: + * gst/videocrop/gstaspectratiocrop.c: + * gst/videocrop/gstvideocrop.c: + * gst/videofilter/gstgamma.c: + * gst/videofilter/gstvideobalance.c: + * gst/videofilter/gstvideoflip.c: + * gst/videomixer/videomixer2.c: + * gst/wavenc/gstwavenc.c: + * gst/wavparse/gstwavparse.c: + * gst/y4m/gsty4mencode.c: + * sys/directsound/gstdirectsoundsink.c: + * sys/oss/gstosssink.c: + * sys/oss/gstosssrc.c: + * sys/oss4/oss4-sink.c: + * sys/oss4/oss4-source.c: + * sys/osxaudio/gstosxaudiosink.c: + * sys/osxaudio/gstosxaudiosrc.c: + * sys/v4l2/gstv4l2radio.c: + * sys/v4l2/gstv4l2sink.c: + * sys/v4l2/gstv4l2src.c: + * sys/v4l2/tuner.c: + * sys/v4l2/tunerchannel.c: + * sys/v4l2/tunernorm.c: + * sys/waveform/gstwaveformsink.c: + * sys/ximage/gstximagesrc.c: + docs: Port all docstring to gtk-doc markdown + +2019-05-02 22:14:35 -0700 Thiago Santos + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: do not try to send EOS with invalid seqnum + The second udpsrc (rtcp) might not have seen the segment event if it was + not enabled or if rtcp is not available on the server. So if the + application tries to send an EOS event it will try to set an invalid + seqnum to the event. + +2019-04-24 13:54:12 -0400 Nicolas Dufresne + + * gst/rtpmanager/rtpsource.c: + rtpsource: Add more information to probation warning + +2019-04-24 13:47:54 -0400 Nicolas Dufresne + + * gst/rtpmanager/rtpsession.c: + * tests/check/elements/rtpsession.c: + rtpsession: Call on-new-ssrc earlier + Right now, we may call on-new-ssrc after we have processed the first + RTP packet. This prevents properly configuring the source as some + property like "probation" are copied internally for use as a + decreasing counter. For this specific property, it prevents the + application from disabling probation on auxiliary sparse stream. + Probation is harmful on sparse streams since the probation algorithm + assume frequent and contiguous RTP packets. + +2019-02-19 13:34:49 +0900 Seungha Yang + + * gst/matroska/matroska-mux.c: + matroskamux: Write MasteringMetadata and Max{CLL,FALL} + Enable muxing with HDR meta data if upstream provided it + +2019-02-18 23:28:50 +0900 Seungha Yang + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-ids.c: + * gst/matroska/matroska-ids.h: + matroskademux: Add support parsing HDR metadata + Set SMPTE ST 2086 mastering-display-metadata and + content-light-level to caps, if any + +2019-02-19 18:27:23 +0900 Seungha Yang + + * gst/matroska/ebml-write.c: + * gst/matroska/ebml-write.h: + * gst/matroska/matroska-ids.h: + * gst/matroska/matroska-mux.c: + * gst/matroska/matroska-mux.h: + * gst/matroska/matroska-read-common.h: + matroska: Remove white space + +2019-05-01 10:00:51 +0300 Sebastian Dröge + + * gst/rtp/gstrtpvrawdepay.c: + rtprawdepay: Don't get rid of the buffer pool on FLUSH_STOP + We expect there to be a pool as long as the caps are known and + FLUSH_STOP is not resetting the caps. Getting rid of the pool would + cause assertions. + Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/issues/584 + +2019-02-08 10:09:17 +0100 Danny Smith + + * gst/rtpmanager/gstrtpbin.c: + rtpbin: Free storage when freeing session + +2019-04-25 21:52:42 +0300 Sebastian Dröge + + * gst/matroska/matroska-mux.c: + matroskamux: Fix typo in error message + +2019-04-25 11:19:06 +0300 Sebastian Dröge + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: Only set the DISCONT flag on the first buffer after segment start + +2019-04-24 02:38:32 +0900 okuoku + + * ext/jack/gstjackaudiosink.c: + * ext/jack/gstjackaudiosrc.c: + jack: Use jack_free(3) to release ports + Port objects acquired with jack_get_ports() need to be freed with + jack_free(3), not stdlib free(). + On Windows, Jack may be linked against different libc than GStreamer + libraries so free()ing port objects directly might cause crash because + of libc mismatch. + +2019-04-23 10:10:01 +0100 Philippe Normand + + * gst/audiofx/gstscaletempo.c: + scaletempo: Advertise interleaved layout in caps templates + Scaletempo doesn't support non-interleaved layout. Not explicitely stating this + would trigger critical warnings and a caps negotiation failure when scaletempo + is used as playbin audio-filter. + Patch suggested by George Kiagiadakis . + Fixes #591 + +2019-04-21 20:12:28 +0900 Seungha Yang + + * gst/matroska/meson.build: + meson: matroska: Ensure header dependency not only library + Library existence does not guarantee header. + +2018-11-13 13:48:11 +0100 Robert Rosengren + + * gst/udp/gstmultiudpsink.c: + multidupsink: Use gst_net_utils_set_socket_tos for QoS DSCP + Util function in net library exists for setting QoS DSCP on socket, hence + use it to simplify code. + +2019-04-19 10:27:38 +0100 Tim-Philipp Müller + + * README: + * RELEASE: + * configure.ac: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-audioparsers.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dtmf.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gtk.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-isomp4.xml: + * docs/plugins/inspect/plugin-jack.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-lame.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mpg123.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-qmlgl.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtpmanager.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-twolame.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-vpx.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * meson.build: + Back to development + === release 1.16.0 === 2019-04-19 00:23:16 +0100 Tim-Philipp Müller @@ -74859,7 +80494,7 @@ flacparse: Initialize variables. Fixes build on $#@*( macosx -2010-01-11 22:41:57 +0300 +2010-01-11 22:41:57 +0300 ������ ��������� * gst/audioparsers/gstaacparse.c: * gst/audioparsers/gstamrparse.c: @@ -100649,7 +106284,7 @@ mdat atoms. Also keep adapter/offset better in sync with upstream and fix some debug statements. Fixes #587426. -2009-07-06 10:40:31 +0200 Philip Jgenstedt +2009-07-06 10:40:31 +0200 Philip J�genstedt * gst/avi/gstavidemux.c: avidemux: Replace deprecated GST_DISABLE_DEBUG with correct macro. Fixes #587826 diff --git a/NEWS b/NEWS index 817de13720..a4e7232a19 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,30 @@ -GSTREAMER 1.16 RELEASE NOTES +GSTREAMER 1.18 RELEASE NOTES -GStreamer 1.16.0 was originally released on 19 April 2019. +THESE RELEASE NOTES ARE A PLACEHOLDER, PLEASE BEAR WITH US WHILE WE +FINISH WRITING UP THE REAL THING. -See https://gstreamer.freedesktop.org/releases/1.16/ for the latest +GStreamer 1.18.0 has not yet been released. It is scheduled for release +in summer 2020 now. + +1.17.x is the unstable development series that is currently being +developed in the git master branch and which will eventually result in +1.18, and 1.17.1 is the current development release in that series. + +The schedule for the 1.18 development cycle is yet to be confirmed, but +it is expected that feature freeze will be in June/July 2020, followed +by several 1.17 pre-releases and then a new 1.18 stable release in +July/August 2020. + +1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10, +1.8, 1.6, 1.4, 1.2 and 1.0 release series. + +See https://gstreamer.freedesktop.org/releases/1.18/ for the latest version of this document. -_Last updated: Friday 19 April 2019, 00:00 UTC (log)_ +_Last updated: Thursday 18 June 2020, 16:00 UTC (log)_ Introduction @@ -23,1146 +39,133 @@ fixes and other improvements. Highlights -- GStreamer WebRTC stack gained support for data channels for - peer-to-peer communication based on SCTP, BUNDLE support, as well as - support for multiple TURN servers. - -- AV1 video codec support for Matroska and QuickTime/MP4 containers - and more configuration options and supported input formats for the - AOMedia AV1 encoder - -- Support for Closed Captions and other Ancillary Data in video - -- Support for planar (non-interleaved) raw audio - -- GstVideoAggregator, compositor and OpenGL mixer elements are now in - -base - -- New alternate fields interlace mode where each buffer carries a - single field - -- WebM and Matroska ContentEncryption support in the Matroska demuxer - -- new WebKit WPE-based web browser source element - -- Video4Linux: HEVC encoding and decoding, JPEG encoding, and improved - dmabuf import/export - -- Hardware-accelerated Nvidia video decoder gained support for VP8/VP9 - decoding, whilst the encoder gained support for H.265/HEVC encoding. - -- Many improvements to the Intel Media SDK based hardware-accelerated - video decoder and encoder plugin (msdk): dmabuf import/export for - zero-copy integration with other components; VP9 decoding; 10-bit - HEVC encoding; video post-processing (vpp) support including - deinterlacing; and the video decoder now handles dynamic resolution - changes. - -- The ASS/SSA subtitle overlay renderer can now handle multiple - subtitles that overlap in time and will show them on screen - simultaneously - -- The Meson build is now feature-complete (*) and it is now the - recommended build system on all platforms. The Autotools build is - scheduled to be removed in the next cycle. - -- The GStreamer Rust bindings and Rust plugins module are now - officially part of upstream GStreamer. - -- The GStreamer Editing Services gained a gesdemux element that allows - directly playing back serialized edit list with playbin or - (uri)decodebin - -- Many performance improvements +- FIXME Major new features and changes Noteworthy new API -- GstAggregator has a new "min-upstream-latency" property that forces - a minimum aggregate latency for the input branches of an aggregator. - This is useful for dynamic pipelines where branches with a higher - latency might be added later after the pipeline is already up and - running and where a change in the latency would be disruptive. This - only applies to the case where at least one of the input branches is - live though, it won’t force the aggregator into live mode in the - absence of any live inputs. - -- GstBaseSink gained a "processing-deadline" property and - setter/getter API to configure a processing deadline for live - pipelines. The processing deadline is the acceptable amount of time - to process the media in a live pipeline before it reaches the sink. - This is on top of the systemic latency that is normally reported by - the latency query. This defaults to 20ms and should make pipelines - such as v4l2src ! xvimagesink not claim that all frames are late in - the QoS events. Ideally, this should replace the "max-lateness" - property for most applications. - -- RTCP Extended Reports (XR) parsing according to RFC 3611: - Loss/Duplicate RLE, Packet Receipt Times, Receiver Reference Time, - Delay since the last Receiver (DLRR), Statistics Summary, and VoIP - Metrics reports. This only provides the ability to parse such - packets, generation of XR packets is not supported yet and XR - packets are not automatically parsed by rtpbin / rtpsession but must - be actively handled by the application. - -- a new mode for interlaced video was added where each buffer carries - a single field of interlaced video, with buffer flags indicating - whether the field is the top field or bottom field. Top and bottom - fields are expected to alternate in this mode. Caps for this - interlace mode must also carry a format:Interlaced caps feature to - ensure backwards compatibility. - -- The video library has gained support for three new raw pixel - formats: - - - Y410: packed 4:4:4 YUV, 10 bits per channel - - Y210: packed 4:2:2 YUV, 10 bits per channel - - NV12_10LE40: fully-packed 10-bit variant of NV12_10LE32, - i.e. without the padding bits - -- GstRTPSourceMeta is a new meta that can be used to transport - information about the origin of depayloaded or decoded RTP buffers, - e.g. when mixing audio from multiple sources into a single stream. A - new "source-info" property on the RTP depayloader base class - determines whether depayloaders should put this meta on outgoing - buffers. Similarly, the same property on RTP payloaders determines - whether they should use the information from this meta to construct - the CSRCs list on outgoing RTP buffers. - -- gst_sdp_message_from_text() is a convenience constructor to parse - SDPs from a string which is particularly useful for language - bindings. - -Support for Planar (Non-Interleaved) Raw Audio - -Raw audio samples are usually passed around in interleaved form in -GStreamer, which means that if there are multiple audio channels the -samples for each channel are interleaved in memory, e.g. -|LEFT|RIGHT|LEFT|RIGHT|LEFT|RIGHT| for stereo audio. A non-interleaved -or planar arrangement in memory would look like -|LEFT|LEFT|LEFT|RIGHT|RIGHT|RIGHT| instead, possibly with -|LEFT|LEFT|LEFT| and |RIGHT|RIGHT|RIGHT| residing in separate memory -chunks or separated by some padding. - -GStreamer has always had signalling for non-interleaved audio since -version 1.0, but it was never actually properly implemented in any -elements. audioconvert would advertise support for it, but wasn’t -actually able to handle it correctly. - -With this release we now have full support for non-interleaved audio as -well, which means more efficient integration with external APIs that -handle audio this way, but also more efficient processing of certain -operations like interleaving multiple 1-channel streams into a -multi-channel stream which can be done without memory copies now. - -New API to support this has been added to the GStreamer Audio support -library: There is now a new GstAudioMeta which describes how data is -laid out inside the buffer, and buffers with non-interleaved audio must -always carry this meta. To access the non-interleaved audio samples you -must map such buffers with gst_audio_buffer_map() which works much like -gst_buffer_map() or gst_video_frame_map() in that it will populate a -little GstAudioBuffer helper structure passed to it with the number of -samples, the number of planes and pointers to the start of each plane in -memory. This function can also be used to map interleaved audio buffers -in which case there will be only one plane of interleaved samples. - -Of course support for this has also been implemented in the various -audio helper and conversion APIs, base classes, and in elements such as -audioconvert, audioresample, audiotestsrc, audiorate. - -Support for Closed Captions and Other Ancillary Data in Video - -The video support library has gained support for detecting and -extracting Ancillary Data from videos as per the SMPTE S291M -specification, including: - -- a VBI (Vertical Blanking Interval) parser that can detect and - extract Ancillary Data from Vertical Blanking Interval lines of - component signals. This is currently supported for videos in v210 - and UYVY format. - -- a new GstMeta for closed captions: GstVideoCaptionMeta. This - supports the two types of closed captions, CEA-608 and CEA-708, - along with the four different ways they can be transported (other - systems are a superset of those). - -- a VBI (Vertical Blanking Interval) encoder for writing ancillary - data to the Vertical Blanking Interval lines of component signals. - -The new closedcaption plugin in gst-plugins-bad then makes use of all -this new infrastructure and provides the following elements: - -- cccombiner: a closed caption combiner that takes a closed captions - stream and another stream and adds the closed captions as - GstVideoCaptionMeta to the buffers of the other stream. - -- ccextractor: a closed caption extractor which will take - GstVideoCaptionMeta from input buffers and output them as a separate - closed captions stream. - -- ccconverter: a closed caption converter that can convert between - different formats - -- line21encoder, line21decoder: inject/extract line21 closed captions - to/from SD video streams - -- cc708overlay: decodes CEA 608/708 captions and overlays them on - video - -Additionally, the following elements have also gained Closed Caption -support: - -- qtdemux and qtmux support CEA 608/708 Closed Caption tracks - -- mpegvideoparse, h264parse extracts Closed Captions from MPEG-2/H.264 - video streams - -- avviddec, avvidenc, x264enc got support for extracting/injecting - Closed Captions - -- decklinkvideosink can output closed captions and decklinkvideosrc - can extract closed captions - -- playbin and playbin3 learned how to autoplug CEA 608/708 CC overlay - elements - -- the externally maintained ajavideosrc element for AJA capture cards - has support for extracting closed captions - -The rsclosedcaption plugin in the Rust plugins collection includes a -MacCaption (MCC) file parser and encoder. +- FIXME New Elements -- overlaycomposition: New element that allows applications to draw - GstVideoOverlayCompositions on a stream. The element will emit the - "draw" signal for each video buffer, and the application then - generates an overlay for that frame (or not). This is much more - performant than e.g. cairooverlay for many use cases, e.g. because - pixel format conversions can be avoided or the blitting of the - overlay can be delegated to downstream elements (such as - gloverlaycompositor). It’s particularly useful for cases where only - a small section of the video frame should be drawn on. - -- gloverlaycompositor: New OpenGL-based compositor element that - flattens any overlays from GstVideoOverlayCompositionMetas into the - video stream. This element is also always part of glimagesink. - -- glalpha: New element that adds an alpha channel to a video stream. - The values of the alpha channel can either be set to a constant or - can be dynamically calculated via chroma keying. It is similar to - the existing alpha element but based on OpenGL. Calculations are - done in floating point so results may not be identical to the output - of the existing alpha element. - -- rtpfunnel funnels together RTP streams into a single session. Use - cases include multiplexing and bundle. webrtcbin uses it to - implement BUNDLE support. - -- testsrcbin is a source element that provides an audio and/or video - stream and also announces them using the recently-introduced - GstStream API. This is useful for testing elements such as playbin3 - or uridecodebin3 etc. - -- New closed caption elements: cccombiner, ccextractor, ccconverter, - line21encoder, line21decoder and cc708overlay (see above) - -- wpesrc: new source element acting as a Web Browser based on WebKit - WPE - -- Two new OpenCV-based elements: cameracalibrate and cameraundistort - that can communicate to figure out distortion correction parameters - for a camera and correct for the distortion. - -- New sctp plugin based on usrsctp with sctpenc and sctpdec elements. - These elements are used inside webrtcbin for implementing data - channels. +- FIXME New element features and additions -- playbin3, playbin and playsink have gained a new "text-offset" - property to adjust the positioning of the selected subtitle stream - vis-a-vis the audio and video streams. This uses subtitleoverlay’s - new "subtitle-ts-offset" property. GstPlayer has gained matching API - for this, namely gst_player_get_text_video_offset(). - -- playbin3 buffering improvements: in network playback scenarios there - may be multiple inputs to decodebin3, and buffering will be done - before decodebin3 using queue2 or downloadbuffer elements inside - urisourcebin. Since this is before any parsers or demuxers there may - not be any bitrate information available for the various streams, so - it was difficult to configure the buffering there smartly within - global constraints. This was improved now: The queue2 elements - inside urisourcebin will now use the new bitrate query to figure out - a bitrate estimate for the stream if no bitrate was provided by - upstream, and urisourcebin will use the bitrates of the individual - queues to distribute the globally-set "buffer-size" budget in bytes - to the various queues. urisourcebin also gained "low-watermark" and - "high-watermark" properties which will be proxied to the internal - queues, as well as a read-only "statistics" property which allows - querying of the minimum/maximum/average byte and time levels of the - queues inside the urisourcebin in question. - -- splitmuxsink has gained a couple of new features: - - - new "async-finalize" mode: This mode is useful for muxers or - outputs that can take a long time to finalize a file. Instead of - blocking the whole upstream pipeline while the muxer is doing - its stuff, we can unlink it and spawn a new muxer + sink - combination to continue running normally. This requires us to - receive the muxer and sink (if needed) as factories via the new - "muxer-factory" and "sink-factory" properties, optionally - accompanied by their respective properties structures (set via - the new "muxer-properties" and "sink-properties" properties). - There are also new "muxer-added" and "sink-added" signals in - case custom code has to be called for them to configure them. - - - "split-at-running-time" action signal: When called by the user, - this action signal ends the current file (and starts a new one) - as soon as the given running time is reached. If called multiple - times, running times are queued up and processed in the order - they were given. - - - "split-after" action signal to finish outputting the current GOP - to the current file and then start a new file as soon as the GOP - is finished and a new GOP is opened (unlike the existing - "split-now" which immediately finishes the current file and - writes the current GOP into the next newly-started file). - - - "reset-muxer" property: when unset, the muxer is reset using - flush events instead of setting its state to NULL and back. This - means the muxer can keep state across resets, e.g. mpegtsmux - will keep the continuity counter continuous across segments as - required by hlssink2. - -- qtdemux gained PIFF track encryption box support in addition to the - already-existing PIFF sample encryption support, and also allows - applications to select which encryption system to use via a - "drm-preferred-decryption-system-id" context in case there are - multiple options. - -- qtmux: the "start-gap-threshold" property determines now whether an - edit list will be created to account for small gaps or offsets at - the beginning of a stream in case the start timestamps of tracks - don’t line up perfectly. Previously the threshold was hard-coded to - 1% of the (video) frame duration, now it is 0 by default (so edit - list will be created even for small differences), but fully - configurable. - -- rtpjitterbuffer has improved end-of-stream handling - -- rtpmp4vpay will be preferred over rtpmp4gpay for MPEG-4 video in - autoplugging scenarios now - -- rtspsrc now allows applications to send RTSP SET_PARAMETER and - GET_PARAMETER requests using action signals. - -- rtspsrc has a small (100ms) configurable teardown delay by default - to try and make sure an RTSP TEARDOWN request gets sent out when the - source element shuts down. This will block the downward PAUSED to - READY state change for a short time, but can be disabled where it’s - a problem. Some servers only allow a limited number of concurrent - clients, so if no proper TEARDOWN is sent new clients may have - problems connecting to the server for a while. - -- souphttpsrc behaves better with low bitrate streams now. Before it - would increase the read block size too quickly which could lead to - it not reading any data from the socket for a very long time with - low bitrate streams that are output live downstream. This could lead - to servers kicking off the client. - -- filesink: do internal buffering to avoid performance regression with - small writes since we bypass libc buffering by using writev() - instead of fwrite() - -- identity: add "eos-after" property and fix "error-after" property - when the element is reused - -- input-selector: lets context queries pass through, so that - e.g. upstream OpenGL elements can use contexts and displays - advertised by downstream elements - -- queue2: avoid ping-pong between 0% and 100% buffering messages if - upstream is pushing buffers larger than one of its limits, plus - performance optimisations - -- opusdec: new "phase-inversion" property to control phase inversion. - When enabled, this will slightly increase stereo quality, but - produces a stream that when downmixed to mono will suffer audio - distortions. - -- The x265enc HEVC encoder also exposes a "key-int-max" property to - configure the maximum allowed GOP size now. - -- decklinkvideosink has seen stability improvements for long-running - pipelines (potential crash due to overflow of leaked clock refcount) - and clock-slaving improvements when performing flushing seeks - (causing stalls in the output timeline), pausing and/or buffering. - -- srtpdec, srtpenc: add support for MKIs which allow multiple keys to - be used with a single SRTP stream - -- srtpdec, srtpenc: add support for AES-GCM and also add support for - it in gst-rtsp-server and rtspsrc. - -- The srt Secure Reliable Transport plugin has integrated server and - client elements srt{client,server}{src,sink} into one (srtsrc and - srtsink), since SRT connection mode can be changed by uri - parameters. - -- h264parse and h265parse will handle SEI recovery point messages and - mark recovery points as keyframes as well (in addition to IDR - frames) - -- webrtcbin: "add-turn-server" action signal to pass multiple ICE - relays (TURN servers). - -- The removesilence element has received various new features and - properties, such as a "threshold" property, detecting silence only - after minimum silence time/buffers, a "silent" property to control - bus message notifications as well as a "squash" property. - -- AOMedia AV1 decoder gained support for 10/12bit decoding whilst the - AV1 encoder supports more image formats and subsamplings now and - acquired support for rate control and profile related configuration. - -- The Fraunhofer fdkaac plugin can now be built against the 2.0.0 - version API and has improved multichannel support - -- kmssink now supports unpadded 24-bit RGB and can configure mode - setting from video info, which enables display of multi-planar - formats such as I420 or NV12 with modesetting. It has also gained a - number of new properties: The "restore-crtc" property does what it - says on the tin and is enabled by default. "plane-properties" and - "connector-properties" can be used to pass custom properties to the - DRM. - -- waylandsink has a "fullscreen" property now and supports the - XDG-Shell protocol. - -- decklinkvideosink, decklinkvideosrc support selecting between - half/full duplex - -- The vulkan plugin gained support for macOS and iOS via MoltenVK in - addition to the existing support for X11 and Wayland - -- imagefreeze has a new num-buffers property to limit the number of - buffers that are produced and to send an EOS event afterwards - -- webrtcbin has a new, introspectable get-transceiver signal in - addition to the old get-transceivers signal that couldn’t be used - from bindings - -- Support for per-element latency information was added to the latency - tracer +- FIXME Plugin and library moves -- The stereo element was moved from -bad into the existing audiofx - plugin in -good. If you get duplicate type registration warnings - when upgrading, check that you don’t have a stale stereoplugin lying - about somewhere. - -GstVideoAggregator, compositor, and OpenGL mixer elements moved from -bad to -base - -GstVideoAggregator is a new base class for raw video mixers and muxers -and is based on GstAggregator. It provides defined-latency mixing of raw -video inputs and ensures that the pipeline won’t stall even if one of -the input streams stops producing data. - -As part of the move to stabilise the API there were some last-minute API -changes and clean-ups, but those should mostly affect internal elements. -Most notably, the "ignore-eos" pad property was renamed to -"repeat-after-eos" and the conversion code was moved to a -GstVideoAggregatorConvertPad subclass to avoid code duplication, make -things less awkward for subclasses like the OpenGL-based video mixer, -and make the API more consistent with the audio aggregator API. - -It is used by the compositor element, which is a replacement for -‘videomixer’ which did not handle live inputs very well. compositor -should behave much better in that respect and generally behave as one -would expected in most scenarios. - -The compositor element has gained support for per-pad blending mode -operators (SOURCE, OVER, ADD) which determines what operator to use for -blending this pad over the previous ones. This can be used to implement -crossfading and the available operators can be extended in the future as -needed. - -A number of OpenGL-based video mixer elements (glvideomixer, glmixerbin, -glvideomixerelement, glstereomix, glmosaic) which are built on top of -GstVideoAggregator have also been moved from -bad to -base now. These -elements have been merged into the existing OpenGL plugin, so if you get -duplicate type registration warnings when upgrading, check that you -don’t have a stale openglmixers plugin lying about somewhere. +- FIXME Plugin removals The following plugins have been removed from gst-plugins-bad: -- The experimental daala plugin has been removed, since it’s not so - useful now that all effort is focused on AV1 instead, and it had to - be enabled explicitly with --enable-experimental anyway. - -- The spc plugin has been removed. It has been replaced by the gme - plugin. - -- The acmmp3dec and acmenc plugins for Windows have been removed. ACM - is an ancient legacy API and there was no point in keeping the - plugins around for a licensed MP3 decoder now that the MP3 patents - have expired and we have a decoder in -good. We also didn’t ship - these in our cerbero-built Windows packages, so it’s unlikely that - they’ll be missed. +- FIXME Miscellaneous API additions -- GstBitwriter: new generic bit writer API to complement the existing - bit reader - -- gst_buffer_new_wrapped_bytes() creates a wrap buffer from a GBytes - -- gst_caps_set_features_simple() sets a caps feature on all the - structures of a GstCaps - -- New GST_QUERY_BITRATE query: This allows determining from downstream - what the expected bitrate of a stream may be which is useful in - queue2 for setting time based limits when upstream does not provide - timing information. tsdemux, qtdemux and matroskademux have basic - support for this query on their sink pads. - -- elements: there is a new “Hardware” class specifier. Elements - interacting with hardware devices should specify this classifier in - their element factory class metadata. This is useful to advertise as - one might need to put such elements into READY state to test if the - hardware is present in the system for example. - -- protection: Add a new definition for unspecified system protection, - GST_PROTECTION_UNSPECIFIED_SYSTEM_ID - -- take functions for various mini objects that didn’t have them yet: - gst_query_take(), gst_message_take(), gst_tag_list_take(), - gst_buffer_list_take(). Unlike the various _replace() functions - _take() does not increase the reference count but takes ownership of - the mini object passed. - -- clear functions for various mini object types and GstObject which - unrefs the object or mini object (if non-NULL) and sets the variable - pointed to to NULL: gst_clear_structure(), gst_clear_tag_list(), - gst_clear_query(), gst_clear_message(), gst_clear_event(), - gst_clear_caps(), gst_clear_buffer_list(), gst_clear_buffer(), - gst_clear_mini_object(), gst_clear_object() - -- miniobject: new API gst_mini_object_add_parent() and - gst_mini_object_remove_parent() to set parent pointers on mini - objects to ensure correct writability: Every container of - miniobjects now needs to store itself as parent in the child object, - and remove itself again later. A mini object is then only writable - if there is at most one parent, that parent is writable itself, and - the reference count of the mini object is 1. GstBuffer (for - memories), GstBufferList (for buffers), GstSample (for caps, buffer, - bufferlist), and GstVideoOverlayComposition were updated - accordingly. Without this it was possible to have e.g. a buffer list - with a refcount of 2 used in two places at once that both modify the - same buffer with refcount 1 at the same time wrongly thinking it is - writable even though it’s really not. - -- poll: add API to watch for POLLPRI and stop treating POLLPRI as a - read. This is useful to wait for video4linux events which are - signalled via POLLPRI. - -- sample: new API to update the contents of a GstSample and make it - writable: gst_sample_set_buffer(), gst_sample_set_caps(), - gst_sample_set_segment(), gst_sample_set_info(), plus - gst_sample_is_writable() and gst_sample_make_writable(). This makes - it possible to reuse a sample object and avoid unnecessary memory - allocations, for example in appsink. - -- ClockIDs now keep a weak reference to underlying clock to avoid - crashes in basesink in corner cases where a clock goes away while - the ClockID is still in use, plus some new API - (gst_clock_id_get_clock(), gst_clock_id_uses_clock()) to check the - clock a ClockID is linked to. - -- The GstCheck unit test library gained a - fail_unless_equals_clocktime() convenience macro as well as some new - GstHarness API for for proposing meta APIs from the allocation - query: gst_harness_add_propose_allocation_meta(). ASSERT_CRITICAL() - checks in unit tests are now skipped if GStreamer was compiled with - GST_DISABLE_GLIB_CHECKS. - -- gst_audio_buffer_truncate() convenience function to truncate a raw - audio buffer - -- GstDiscoverer has support for caching the results of discovery in - the default cache directory. This can be enabled with the use-cache - property and is disabled by default. - -- GstMeta that are attached to GstBuffers are now always stored in the - order in which they were added. - -- Additional support for signalling ONVIF specific features were - added: the SEEK event can store a trickmode-interval now and support - for the Rate-Control and Frames RTSP headers was added to the RTSP - library. +- FIXME Miscellaneous performance and memory optimisations As always there have been many performance and memory usage improvements -across all components and modules. Some of them (such as dmabuf -import/export) have already been mentioned elsewhere so won’t be -repeated here. +across all components and modules. Some of them have already been +mentioned elsewhere so won’t be repeated here. The following list is only a small snapshot of some of the more interesting optimisations that haven’t been mentioned in other contexts yet: -- The GstVideoEncoder and GstVideoDecoder base classes now release the - STREAM_LOCK when pushing out buffers, which means (multi-threaded) - encoders and decoders can now receive and continue to process input - buffers whilst waiting for downstream elements in the pipeline to - process the buffer that was pushed out. This increases throughput - and reduces processing latency, also and especially for - hardware-accelerated encoder/decoder elements. - -- GstQueueArray has seen a few API additions - (gst_queue_array_peek_nth(), gst_queue_array_set_clear_func(), - gst_queue_array_clear()) so that it can be used in other places like - GstAdapter instead of a GList, which reduces allocations and - improves performance. - -- appsink now reuses the sample object in pull_sample() if possible - -- rtpsession only starts the RTCP thread when it’s actually needed now - -- udpsrc uses a buffer pool now and the GstUdpSrc object structure was - optimised for better cache performance +- FIXME GstPlayer -- API was added to fine-tune the synchronisation offset between - subtitles and video +- FIXME Miscellaneous changes -- As a result of moving to newer FFmpeg APIs, encoder and decoder - elements exposed by the GStreamer FFmpeg wrapper plugin (gst-libav) - may have seen possibly incompatible changes to property names and/or - types, and not all properties exposed might be functional. We are - still reviewing the new properties and aim to minimise breaking - changes at least for the most commonly-used properties, so please - report any issues you run into! +- FIXME OpenGL integration -- The OpenGL mixer elements have been moved from -bad to - gst-plugins-base (see above) - -- The Mesa GBM backend now supports headless mode - -- gloverlaycompositor: New OpenGL-based compositor element that - flattens any overlays from GstVideoOverlayCompositionMetas into the - video stream. - -- glalpha: New element that adds an alpha channel to a video stream. - The values of the alpha channel can either be set to a constant or - can be dynamically calculated via chroma keying. It is similar to - the existing alpha element but based on OpenGL. Calculations are - done in floating point so results may not be identical to the output - of the existing alpha element. - -- glupload: Implement direct dmabuf uploader, the idea being that some - GPUs (like the Vivante series) can actually perform the YUV->RGB - conversion internally, so no custom conversion shaders are needed. - To make use of this feature, we need an additional uploader that can - import DMABUF FDs and also directly pass the pixel format, relying - on the GPU to do the conversion. - -- The OpenGL library no longer restores the OpenGL viewport. This is a - performance optimization to not require performing multiple - expensive glGet*() function calls per frame. This affects any - application or plugin use of the following functions and objects: - - glcolorconvert library object (not the element) - - glviewconvert library object (not the element) - - gst_gl_framebuffer_draw_to_texture() - - custom GstGLWindow implementations +- FIXME Tracing framework and debugging improvements -- There is now a GDB PRETTY PRINTER FOR VARIOUS GSTREAMER TYPES: For - GstObject pointers the type and name is added, e.g. - 0x5555557e4110 [GstDecodeBin|decodebin0]. For GstMiniObject pointers - the object type is added, e.g. 0x7fffe001fc50 [GstBuffer]. For - GstClockTime and GstClockTimeDiff the time is also printed in human - readable form, e.g. 150116219955 [+0:02:30.116219955]. - -- GDB EXTENSION WITH TWO CUSTOM GDB COMMANDS gst-dot AND gst-print: - - - gst-dot creates dot files that a very close to what - GST_DEBUG_BIN_TO_DOT_FILE() produces, but object properties and - buffer contents such as codec-data in caps are not available. - - - gst-print produces high-level information about a GStreamer - object. This is currently limited to pads for GstElements and - events for the pads. The output may look like this: - -- gst_structure_to_string() now serialises the actual value of - pointers when serialising GstStructures instead of claiming they’re - NULL. This makes debug logging in various places less confusing, - because it’s clear now that structure fields actually hold valid - objects. Such object pointer values will never be deserialised - however. +- FIXME Tools -- gst-inspect-1.0 has coloured output now and will automatically use a - pager if the output does not fit on a page. This only works in a - UNIX environment and if the output is not piped, and on Windows 10 - build 16257 or newer. If you don’t like the colours you can disable - them by setting the GST_INSPECT_NO_COLORS=1 environment variable or - passing the --no-color command line option. +- FIXME GStreamer RTSP server -- Improved backlog handling when using TCP interleaved for data - transport. Before there was a fixed maximum size for backlog - messages, which was prone to deadlocks and made it difficult to - control memory usage with the watch backlog. The RTSP server now - limits queued TCP data messages to one per stream, moving queuing of - the data into the pipeline and leaving the RTSP connection - responsive to RTSP messages in both directions, preventing all those - problems. - -- Initial ULP Forward Error Correction support in rtspclientsink and - for RECORD mode in the server. - -- API to explicitly enable retransmission requests (RTX) - -- Lots of multicast-related fixes - -- rtsp-auth: Add support for parsing .htdigest files +- FIXME GStreamer VAAPI -- Support Wayland’s display for context sharing, so the application - can pass its own wl_display in order to be used for the VAAPI - display creation. - -- A lot of work to support new Intel hardware using media-driver as VA - backend. - -- For non-x86 devices, VAAPI display can instantiate, through DRM, - with no PCI bus. This enables the usage of libva-v4l2-request - driver. - -- Added support for XDG-shell protocol as wl_shell replacement which - is currently deprecated. This change add as dependency - wayland-protocol. - -- GstVaapiFilter, GstVaapiWindow, and GstVaapiDecoder classes now - inherit from GstObject, gaining all the GStreamer’s instrumentation - support. - -- The metadata now specifies the plugin as Hardware class. - -- H264 decoder is more stable with problematic streams. - -- In H265 decoder added support for profiles main-422-10 (P010_10LE), - main-444 (AYUV) and main-444-10 (Y410) - -- JPEG decoder handles dynamic resolution changes. - -- More specification adherence in H264 and H265 encoders. +- FIXME GStreamer OMX -- Add support of NV16 format to video encoders input. - -- Video decoders now handle the ALLOCATION query to tell upstream - about the number of buffers they require. Video encoders will also - use this query to adjust their number of allocated buffers - preventing starvation when using dynamic buffer mode. - -- The OMX_PERFORMANCE debug category has been renamed to OMX_API_TRACE - and can now be used to track a widder variety of interactions - between OMX and GStreamer. - -- Video encoders will now detect frame rate only changes and will - inform OMX about it rather than doing a full format reset. - -- Various Zynq UltraScale+ specific improvements: - - Video encoders are now able to import dmabuf from upstream. - - Support for HEVC range extension profiles and more AVC profiles. - - We can now request video encoders to generate an IDR using the - force key unit event. +- FIXME GStreamer Editing Services and NLE -- Added a gesdemux element, it is an auto pluggable element that - allows decoding edit list like files supported by GES - -- Added gessrc which wraps a GESTimeline as a standard source element - (implementing the ges protocol handler) - -- Added basic support for videorate::rate property potentially - allowing changing playback speed - -- Layer priority is now fully automatic and they should be moved with - the new ges_timeline_move_layer method, ges_layer_set_priority is - now deprecated. - -- Added a ges_timeline_element_get_layer_priority so we can simply get - all information about GESTimelineElement position in the timeline - -- GESVideoSource now auto orientates the images if it is defined in a - meta (overridable). - -- Added some PyGObject overrides to make the API more pythonic - -- The threading model has been made more explicit with safe guard to - make sure not thread safe APIs are not used from the wrong threads. - It is also now possible to properly handle in what thread the API - should be used. - -- Optimized GESClip and GESTrackElement creation - -- Added a way to compile out the old, unused and deprecated - GESPitiviFormatter - -- Re implemented the timeline editing API making it faster and making - the code much more maintainable - -- Simplified usage of nlecomposition outside GES by removing quirks in - it API usage and removing the need to treat it specially from an - application perspective. - -- ges-launch-1.0: - - - Added support to add titles to the timeline - - Enhance the help auto generating it from the code - -- Deprecate ges_timeline_load_from_uri as loading the timeline should - be done through a project now - -- MANY leaks have been plugged and the unit testsuite is now “leak - free” +- FIXME GStreamer validate -- Added an action type to verify the checksum of the sink last-sample - -- Added an include keyword to validate scenarios - -- Added the notion of variable in scenarios, with the set-vars keyword - -- Started adding support for “performance” like tests by allowing to - define the number of dropped buffers or the minimum buffer frequency - on a specific pad - -- Added a validateflow plugin which allows defining the data flow to - be seen on a particular pad and verifying that following runs match - the expectations - -- Added support for appsrc based test definition so we can instrument - the data pushed into the pipeline from scenarios - -- Added a mockdecryptor allowing adding tests with on encrypted files, - the element will potentially be instrumented with a validate - scenario - -- gst-validate-launcher: - - - Cleaned up output - - - Changed the default for “muting” tests as user doesn’t expect - hundreds of windows to show up when running the testsuite - - - Fixed the outputted xunit files to be compatible with GitLab - - - Added support to run tests on media files in push mode (using - pushfile://) - - - Added support for running inside gst-build - - - Added support for running ssim tests on rendered files - - - Added a way to simply define tests on pipelines through a simple - .json file - - - Added a python app to easily run python testsuite reusing all - the launcher features - - - Added flatpak knowledge so we can print backtrace even when - running from within flatpak - - - Added a way to automatically generated “known issues” - suppressions lines - - - Added a way to rerun tests to check if they are flaky and added - a way to tolerate tests known to be flaky - - - Add a way to output html log files +- FIXME GStreamer Python Bindings -- add binding for gst_pad_set_caps() - -- pygobject dependency requirement was bumped to >= 3.8 - -- new audiotestsrc, audioplot, and mixer plugin examples, and a - dynamic pipeline example +- FIXME GStreamer C# Bindings -- bindings for the GstWebRTC library +- FIXME GStreamer Rust Bindings -The GStreamer Rust bindings are now officially part of the GStreamer -project and are also maintained in the GStreamer GitLab. - -The releases will generally not be synchronized with the releases of -other GStreamer parts due to dependencies on other projects. - -Also unlike the other GStreamer libraries, the bindings will not commit -to full API stability but instead will follow the approach that is -generally taken by Rust projects, e.g.: - -1) 0.12.X will be completely API compatible with all other 0.12.Y - versions. -2) 0.12.X+1 will contain bugfixes and compatible new feature additions. -3) 0.13.0 will _not_ be backwards compatible with 0.12.X but projects - will be able to stay at 0.12.X without any problems as long as they - don’t need newer features. - -The current stable release is 0.12.2 and the next release series will be -0.13, probably around March 2019. - -At this point the bindings cover most of GStreamer core (except for most -notably GstAllocator and GstMemory), and most parts of the app, audio, -base, check, editing-services, gl, net. pbutils, player, rtsp, -rtsp-server, sdp, video and webrtc libraries. - -Also included is support for creating subclasses of the following types -and writing GStreamer plugins: - -- gst::Element -- gst::Bin and gst::Pipeline -- gst::URIHandler and gst::ChildProxy -- gst::Pad, gst::GhostPad -- gst_base::Aggregator and gst_base::AggregatorPad -- gst_base::BaseSrc and gst_base::BaseSink -- gst_base::BaseTransform - -Changes to 0.12.X since 0.12.0 - -Fixed - -- PTP clock constructor actually creates a PTP instead of NTP clock - -Added - -- Bindings for GStreamer Editing Services -- Bindings for GStreamer Check testing library -- Bindings for the encoding profile API (encodebin) - -- VideoFrame, VideoInfo, AudioInfo, StructureRef implements Send and - Sync now -- VideoFrame has a function to get the raw FFI pointer -- From impls from the Error/Success enums to the combined enums like - FlowReturn -- Bin-to-dot file functions were added to the Bin trait -- gst_base::Adapter implements SendUnique now -- More complete bindings for the gst_video::VideoOverlay interface, - especially - gst_video::is_video_overlay_prepare_window_handle_message() - -Changed - -- All references were updated from GitHub to freedesktop.org GitLab -- Fix various links in the README.md -- Link to the correct location for the documentation -- Remove GitLab badge as that only works with gitlab.com currently - -Changes in git master for 0.13 - -Fixed - -- gst::tag::Album is the album tag now instead of artist sortname - -Added - -- Subclassing infrastructure was moved directly into the bindings, - making the gst-plugin crate deprecated. This involves many API - changes but generally cleans up code and makes it more flexible. - Take a look at the gst-plugins-rs crate for various examples. - -- Bindings for CapsFeatures and Meta -- Bindings for - ParentBufferMeta,VideoMetaandVideoOverlayCompositionMeta` -- Bindings for VideoOverlayComposition and VideoOverlayRectangle -- Bindings for VideoTimeCode - -- UniqueFlowCombiner and UniqueAdapter wrappers that make use of the - Rust compile-time mutability checks and expose more API in a safe - way, and as a side-effect implement Sync and Send now - -- More complete bindings for Allocation Query -- pbutils functions for codec descriptions -- TagList::iter() for iterating over all tags while getting a single - value per tag. The old ::iter_tag_list() function was renamed to - ::iter_generic() and still provides access to each value for a tag -- Bus::iter() and Bus::iter_timed() iterators around the corresponding - ::pop\*() functions - -- serde serialization of Value can also handle Buffer now - -- Extensive comments to all examples with explanations -- Transmuxing example showing how to use typefind, multiqueue and - dynamic pads -- basic-tutorial-12 was ported and added - -Changed - -- Rust 1.31 is the minimum supported Rust version now -- Update to latest gir code generator and glib bindings - -- Functions returning e.g. gst::FlowReturn or other “combined” enums - were changed to return split enums like - Result to allow usage of the - standard Rust error handling. - -- MiniObject subclasses are now newtype wrappers around the underlying - GstRc wrapper. This does not change the API in any breaking - way for the current usages, but allows MiniObjects to also be - implemented in other crates and makes sure rustdoc places the - documentation in the right places. - -- BinExt extension trait was renamed to GstBinExt to prevent conflicts - with gtk::Bin if both are imported - -- Buffer::from_slice() can’t possible return None - -- Various clippy warnings +- FIXME GStreamer Rust Plugins -Like the GStreamer Rust bindings, the Rust plugins are now officially -part of the GStreamer project and are also maintained in the GStreamer -GitLab. - -In the 0.3.x versions this contained infrastructure for writing -GStreamer plugins in Rust, and a set of plugins. - -In git master that infrastructure was moved to the GLib and GStreamer -bindings directly, together with many other improvements that were made -possible by this, so the gst-plugins-rs repository only contains -GStreamer elements now. - -Elements included are: - -- Tutorials plugin: identity, rgb2gray and sinesrc with extensive - comments - -- rsaudioecho, a port of the audiofx element - -- rsfilesrc, rsfilesink - -- rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet - -- threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc - and ts-tcpclientsrc elements that use a fixed number of threads and - share them between instances. For more background about these - elements see Sebastian’s talk “When adding more threads adds more - problems - Thread-sharing between elements in GStreamer” at the - GStreamer Conference 2017. - -- rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries. - Not feature-equivalent with souphttpsrc yet. - -- togglerecord, an element that allows to start/stop recording at any - time and keeps all audio/video streams in sync. - -- mccparse and mccenc, parsers and encoders for the MCC closed caption - file format. - -Changes to 0.3.X since 0.3.0 - -- All references were updated from GitHub to freedesktop.org GitLab -- Fix various links in the README.md -- Link to the correct location for the documentation - -Changes in git master for 0.4 - -- togglerecord: Switch to parking_lot crate for mutexes/condition - variables for lower overhead -- Merge threadshare plugin here -- New closedcaption plugin with mccparse and mccenc elements -- New identity element for the tutorials plugin - -- Register plugins statically in tests instead of relying on the - plugin loader to find the shared library in a specific place - -- Update to the latest API changes in the GLib and GStreamer bindings -- Update to the latest versions of all crates +- FIXME Build and Dependencies -- The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is - now the recommended build system on all platforms and also used by - Cerbero to build GStreamer on all platforms. The Autotools build is - scheduled to be removed in the next cycle. Developers who currently - use gst-uninstalled should move to gst-build. The build option - naming has been cleaned up and made consistent and there are now - feature options to enable/disable plugins and various other features - on a case-by-case basis. (*) with the exception of plugin docs which - will be handled differently in future +- The Autotools build system has finally been removed in favour of the + Meson build system. Developers who currently use gst-uninstalled + should move to gst-build. -- Symbol export in libraries is now controlled via explicit exports - using symbol visibility or export defines where supported, to ensure - consistency across all platforms. This also allows libraries to have - exports that vary based on detected platform features and configure - options as is the case with the GStreamer OpenGL integration library - for example. A few symbols that had been exported by accident in - earlier versions may no longer be exported. These symbols will not - have had declarations in any public header files then though and - would not have been usable. +- API and plugin documentation are no longer built with gtk_doc. The + gtk_doc documentation has been removed in favour of a new unified + documentation module built with hotdoc. The intention is to + distribute the generated documentation in form of tarballs alongside + releases. -- The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on - FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on - ancient API that was removed with the FFmpeg 4.x release. This means - that it is no longer possible to build this module against an older - system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy - instead if you build using autotools, or use gst-libav 1.14.x - instead which targets the FFmpeg 3.x API and _should_ work fine in - combination with a newer GStreamer. It’s difficult for us to support - both old and new FFmpeg APIs at the same time, apologies for any - inconvenience caused. - -- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and - nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The - dynlink interface has been dropped since it’s deprecated in 10.0. - -- The (optional) OpenCV requirement has been bumped to >= 3.0.0 and - the plugin can also be built against OpenCV 4.x now. - -- New sctp plugin based on usrsctp (for WebRTC data channels) +- FIXME Cerbero @@ -1172,221 +175,66 @@ Windows, Android, iOS and macOS. Cerbero has seen a number of improvements: -- Cerbero has been ported to Python 3 and requires Python 3.5 or newer - now - -- Source tarballs are now protected by checksums in the recipes to - guard against download errors and malicious takeover of projects or - websites. In addition, downloads are only allowed via secure - transports now and plain HTTP, FTP and git:// transports are not - allowed anymore. - -- There is now a new fetch-bootstrap command which downloads sources - required for bootstrapping, with an optional --build-tools-only - argument to match the bootstrap --build-tools-only command. - -- The bootstrap, build, package and bundle-source commands gained a - new --offline switch that ensures that only sources from the cache - are used and never downloaded via the network. This is useful in - combination with the fetch and fetch-bootstrap commands that acquire - sources ahead of time before any build steps are executed. This - allows more control over the sources used and when sources are - updated, and is particularly useful for build environments that - don’t have network access. - -- bootstrap --assume-yes will automatically say ‘yes’ to any - interactive prompts during the bootstrap stage, such as those from - apt-get or yum. - -- bootstrap --system-only will only bootstrap the system without build - tools. - -- Manifest support: The build manifest can be used in continuous - integration (CI) systems to fixate the Git revision of certain - projects so that all builds of a pipeline are on the same reference. - This is used in GStreamer’s gitlab CI for example. It can also be - used in order to re-produce a specific build. To set a manifest, you - can set manifest = 'my_manifest.xml' in your configuration file, or - use the --manifest command line option. The command line option will - take precedence over anything specific in the configuration file. - -- The new build-deps command can be used to build only the - dependencies of a recipe, without the recipe itself. - -- new --list-variants command to list available variants - -- variants can now be set on the command line via the -v option as a - comma-separated list. This overrides any variants set in any - configuration files. - -- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware - codec support. See the Enabling Optional Features with Variants - section in the Cerbero documentation for more details how to enable - and use these variants. - -- A new -t / --timestamp command line switch makes commands print - timestamps +- FIXME Platform-specific changes and improvements Android -- toolchain: update compiler to clang and NDKr18. NDK r18 removed the - armv5 target and only has Android platforms that target at least - armv7 so the armv5 target is not useful anymore. - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). data can be NULL for a static - library. Look at this commit for the necessary change in the - examples. - -- various build issues on Android have been fixed. +- FIXME macOS and iOS -- various build issues on iOS have been fixed. - -- the minimum required iOS version is now 9.0. The difference in - adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some - build issues. - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). data can be NULL for a static - library. Look at this commit for the necessary change in the - examples. +- FIXME Windows -- The webrtcdsp element is shipped again as part of the Windows binary - packages, the build system issue has been resolved. +- toolchain upgrade -- ‘Inconsistent DLL linkage’ warnings when building with MSVC have - been fixed - -- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and - nvenc build on Windows now, also with MSVC and using Meson. - -- The ksvideosrc camera capture plugin supports 16-bit grayscale video - now - -- The wasapisrc audio capture element implements loopback recording - from another output device or sink - -- wasapisink recover from low buffer levels in shared mode and some - exclusive mode fixes - -- dshowsrc now implements the GstDeviceMonitor interface +- FIXME Contributors -Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț, -Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni -Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony -Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno, -Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic, -Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter, -Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake, -Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David -Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey, -Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel -Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco -Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg -Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume -Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard -Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh, -Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander -Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson, -Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John -Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra, -Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie, -Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo -Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis -Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang, -Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño), -Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts, -Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle, -Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake, -Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike -Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne, -Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier -Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi, -Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter -Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel, -Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov, -Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio, -Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir -Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan -Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato, -Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu, -Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić, -U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor -Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang -Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier -Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou, -Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali, +- FIXME … and many others who have contributed bug reports, translations, sent suggestions or helped testing. -Stable 1.16 branch +Stable 1.18 branch -After the 1.16.0 release there will be several 1.16.x bug-fix releases +After the 1.18.0 release there will be several 1.18.x bug-fix releases which will contain bug fixes which have been deemed suitable for a stable branch, but no new features or intrusive changes will be added to -a bug-fix release usually. The 1.16.x bug-fix releases will be made from -the git 1.16 branch, which is a stable branch. +a bug-fix release usually. The 1.18.x bug-fix releases will be made from +the git 1.18 branch, which will be a stable branch. -1.16.0 +1.18.0 -1.16.0 was released on 19 April 2019. +1.18.0 has not been released yet. Known Issues -- possibly breaking/incompatible changes to properties of wrapped - FFmpeg decoders and encoders (see above). - -- The way that GIO modules are named has changed due to upstream GLib - natively adding support for loading static GIO modules. This means - that any GStreamer application using gnutls for SSL/TLS on the - Android or iOS platforms (or any other setup using static libraries) - will fail to link looking for the g_io_module_gnutls_load_static() - function. The new function name is now - g_io_gnutls_load(gpointer data). See Android/iOS sections above for - further details. +- FIXME -Schedule for 1.18 +Schedule for 1.20 -Our next major feature release will be 1.18, and 1.17 will be the -unstable development version leading up to the stable 1.18 release. The -development of 1.17/1.18 will happen in the git master branch. +Our next major feature release will be 1.20, and 1.19 will be the +unstable development version leading up to the stable 1.20 release. The +development of 1.19/1.20 will happen in the git master branch. -The plan for the 1.18 development cycle is yet to be confirmed, but it -is possible that the next cycle will be a short one in which case -feature freeze would be perhaps around August 2019 with a new 1.18 -stable release in September. +The plan for the 1.20 development cycle is yet to be confirmed. -1.18 will be backwards-compatible to the stable 1.16, 1.14, 1.12, 1.10, -1.8, 1.6, 1.4, 1.2 and 1.0 release series. +1.20 will be backwards-compatible to the stable 1.18, 1.16, 1.14, 1.12, +1.10, 1.8, 1.6, 1.4, 1.2 and 1.0 release series. ------------------------------------------------------------------------ _These release notes have been prepared by Tim-Philipp Müller with_ -_contributions from Sebastian Dröge, Guillaume Desmottes, Matthew -Waters, _ _Thibault Saunier, and Víctor Manuel Jáquez Leal._ +_contributions from … (FIXME)_ _License: CC BY-SA 4.0_ diff --git a/RELEASE b/RELEASE index 2323209e29..febbb506ef 100644 --- a/RELEASE +++ b/RELEASE @@ -1,18 +1,15 @@ -This is GStreamer gst-plugins-good 1.17.0.1. +This is GStreamer gst-plugins-good 1.17.1. -The GStreamer team is thrilled to announce a new major feature release in the -stable 1.0 API series of your favourite cross-platform multimedia framework! +GStreamer 1.17 is the development branch leading up to the next major +stable version which will be 1.18. -As always, this release is again packed with new features, bug fixes and -other improvements. - -The 1.16 release series adds new features on top of the 1.14 series and is +The 1.17 development series adds new features on top of the 1.16 series and is part of the API and ABI-stable 1.x release series of the GStreamer multimedia framework. Full release notes will one day be found at: - https://gstreamer.freedesktop.org/releases/1.16/ + https://gstreamer.freedesktop.org/releases/1.18/ Binaries for Android, iOS, Mac OS X and Windows will usually be provided shortly after the release. @@ -60,7 +57,7 @@ You can find source releases of gstreamer in the download directory: https://gstreamer.freedesktop.org/src/gstreamer/ The git repository and details how to clone it can be found at -https://cgit.freedesktop.org/gstreamer/gstreamer/ +https://gitlab.freedesktop.org/gstreamer/ ==== Homepage ==== diff --git a/docs/gst_plugins_cache.json b/docs/gst_plugins_cache.json index 792664ccbf..2a060e4e7b 100644 --- a/docs/gst_plugins_cache.json +++ b/docs/gst_plugins_cache.json @@ -345,7 +345,7 @@ "filename": "gst1394", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -1284,7 +1284,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -1447,7 +1447,7 @@ "filename": "gstalaw", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -1663,7 +1663,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -1717,7 +1717,7 @@ "filename": "gstalphacolor", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -1756,7 +1756,7 @@ "filename": "gstapetag", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -3300,7 +3300,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -3652,7 +3652,7 @@ "filename": "gstaudioparsers", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -3690,7 +3690,7 @@ "filename": "gstauparse", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -4034,7 +4034,7 @@ "filename": "gstautodetect", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -4188,7 +4188,7 @@ "filename": "gstavi", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -4614,7 +4614,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -4707,7 +4707,7 @@ "filename": "gstcairo", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -4815,7 +4815,7 @@ "filename": "gstcutter", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -5758,7 +5758,7 @@ "filename": "gstdebug", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -6038,7 +6038,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -6423,7 +6423,7 @@ "filename": "gstdtmf", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -6607,7 +6607,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -7488,7 +7488,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -7837,7 +7837,7 @@ "filename": "gstequalizer", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -8283,7 +8283,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -8392,7 +8392,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.17.0.1 FLV muxer", + "default": "GStreamer 1.17.1 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -8418,7 +8418,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer 1.17.0.1 FLV muxer", + "default": "GStreamer 1.17.1 FLV muxer", "mutable": "null", "readable": true, "type": "gchararray", @@ -8533,7 +8533,7 @@ } } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -8571,7 +8571,7 @@ "filename": "gstflxdec", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9057,7 +9057,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9124,7 +9124,7 @@ "filename": "gstgoom", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9191,7 +9191,7 @@ "filename": "gstgoom2k1", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9721,7 +9721,7 @@ "filename": "gstgtk", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9786,7 +9786,7 @@ "filename": "gsticydemux", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9839,7 +9839,7 @@ "filename": "gstid3demux", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -9905,7 +9905,7 @@ "filename": "gstimagefreeze", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -10035,7 +10035,7 @@ "filename": "gstinterleave", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -12196,7 +12196,7 @@ } } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -12844,7 +12844,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13040,7 +13040,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13246,7 +13246,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13365,7 +13365,7 @@ "filename": "gstlevel", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13815,7 +13815,7 @@ "filename": "gstmatroska", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13853,7 +13853,7 @@ "filename": "gstmonoscope", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -13934,7 +13934,7 @@ "filename": "gstmpg123", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -14097,7 +14097,7 @@ "filename": "gstmulaw", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -15310,7 +15310,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -15441,7 +15441,7 @@ "filename": "gstmultipart", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -15495,7 +15495,7 @@ "filename": "gstnavigationtest", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -16044,7 +16044,7 @@ "filename": "gstoss4", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -16552,7 +16552,7 @@ "filename": "gstossaudio", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -16689,7 +16689,7 @@ "filename": "gstpng", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -17374,7 +17374,7 @@ "filename": "gstpulseaudio", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -17829,7 +17829,7 @@ "filename": "gstqmlgl", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -18125,7 +18125,7 @@ "filename": "gstreplaygain", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -31904,7 +31904,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -35019,7 +35019,7 @@ } } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -35777,7 +35777,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer/1.17.0.1", + "default": "GStreamer/1.17.1", "mutable": "null", "readable": true, "type": "gchararray", @@ -36087,7 +36087,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -36160,7 +36160,7 @@ "filename": "gstshapewipe", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -36549,7 +36549,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -37479,7 +37479,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -38161,7 +38161,7 @@ "construct": false, "construct-only": false, "controllable": false, - "default": "GStreamer souphttpsrc 1.17.0.1 ", + "default": "GStreamer souphttpsrc 1.17.1 ", "mutable": "null", "readable": true, "type": "gchararray", @@ -38198,7 +38198,7 @@ "filename": "gstsoup", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -38342,7 +38342,7 @@ "filename": "gstspectrum", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -38674,7 +38674,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -38746,7 +38746,7 @@ "filename": "gsttaglib", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -39098,7 +39098,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -40725,7 +40725,7 @@ "filename": "gstudp", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -41771,7 +41771,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -41969,7 +41969,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -42149,7 +42149,7 @@ "filename": "gstvideocrop", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -42519,7 +42519,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -42600,7 +42600,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -44307,7 +44307,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -44349,7 +44349,7 @@ "filename": "gstwavenc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -44700,7 +44700,7 @@ ] } }, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -44752,7 +44752,7 @@ "filename": "gstwavparse", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -44971,7 +44971,7 @@ "filename": "gstximagesrc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" @@ -45041,7 +45041,7 @@ "filename": "gsty4menc", "license": "LGPL", "other-types": {}, - "package": "GStreamer Good Plug-ins git", + "package": "GStreamer Good Plug-ins", "source": "gst-plugins-good", "tracers": {}, "url": "Unknown package origin" diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index 576f4f20c1..c6ae438ab5 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -18,7 +18,7 @@ quality code and correct functionality, under our preferred license (LGPL for the plug-in code, LGPL or LGPL-compatible for the supporting library). - + C @@ -32,6 +32,16 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 1.17.1 + master + + 2020-06-19 + + + + 1.16.0 diff --git a/meson.build b/meson.build index 74d3f050a0..83d1246286 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,5 @@ project('gst-plugins-good', 'c', - version : '1.17.0.1', + version : '1.17.1', meson_version : '>= 0.48', default_options : [ 'warning_level=1', 'buildtype=debugoptimized' ])