=== release 1.22.0 ===

2023-01-23 19:29:34 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.22.0

2023-01-23 16:27:50 +0000  Tim-Philipp Müller <tim@centricular.com>

	* po/af.po:
	* po/az.po:
	* po/bg.po:
	* po/ca.po:
	* po/cs.po:
	* po/da.po:
	* po/de.po:
	* po/el.po:
	* po/en_GB.po:
	* po/eo.po:
	* po/es.po:
	* po/eu.po:
	* po/fi.po:
	* po/fr.po:
	* po/fur.po:
	* po/gl.po:
	* po/hr.po:
	* po/hu.po:
	* po/id.po:
	* po/it.po:
	* po/ja.po:
	* po/ka.po:
	* po/lt.po:
	* po/lv.po:
	* po/nb.po:
	* po/nl.po:
	* po/or.po:
	* po/pl.po:
	* po/pt_BR.po:
	* po/ro.po:
	* po/ru.po:
	* po/sk.po:
	* po/sl.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	* po/zh_CN.po:
	  gst-plugins-base: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3773>

2023-01-22 00:52:56 +0100  Ruben Gonzalez <rgonzalez@fluendo.com>

	* ext/gl/gstglvideomixer.c:
	  glvideomixer: Fixing error with mouse navigation events when no pixel-aspect-ratio
	  Handling mouse navigation events in glvideomixer element, if no
	  pixel-aspect-ratio info in the caps, an assertion error is produced
	  inside gst_util_fraction_multiply because default denominator is zero.
	  Error fixed:
	  ```
	  (gst-launch-1.0:102654): GStreamer-CRITICAL **: 00:47:51.598: gst_util_fraction_multiply: assertion 'b_d != 0' failed
	  ```
	  Simple pipeline to reproduce the issue:
	  ```
	  gst-launch-1.0 -v glvideomixer name=mix ! glimagesinkelement  gltestsrc  ! mix.sink_0
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3766>

2023-01-20 09:59:06 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	* gst/playback/gstparsebin.c:
	* gst/playback/gstplaybin3.c:
	* gst/playback/gsturidecodebin3.c:
	* gst/playback/gsturisourcebin.c:
	  playback: New playback elements are no longer experimental
	  The API is not expected to change and it has been used extensively since 1.18.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3761>

2023-01-19 16:35:08 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Remove failing stream from selection
	  If no decoder is present for a given stream, remove it from the requested
	  selection.
	  Fixes #1581 and #1662
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754>

2023-01-19 16:27:57 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3-parse.c:
	  decodebin3: Don't intercept queries if no parsebin present
	  If we don't use a parsebin, we forward the queries as-is from upstream. There is
	  no reconfiguration possible within identity.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754>

2023-01-19 16:25:51 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	* gst/playback/gsturisourcebin.c:
	  decodebin3: Don't insert parsebin if input is already parsed
	  This is a temporary workaround until we find a generic solution to indicate that
	  a stream has already been "parsed".
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3754>

2023-01-09 11:36:38 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* tools/gst-play.c:
	  gst-play: add --no-position
	  It can be useful to reduce or remove the clutter in logs due to those
	  queries when debugging.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3698>

2023-01-18 16:39:03 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/gl/gstglupload.c:
	  gleglimage: Fix GL_OES_EGL_image_external name in debug trace
	  There is a debug log when this extension is missing, but it was
	  reporting the wrong extension name, which was confusing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3748>

2023-01-16 11:43:37 +0100  Michiel Konstapel <github@konstapel.nl>

	* ext/gl/gstglvideomixer.c:
	  glvideomixer: don't clear pad->geometry_change when setting an identical value
	  Closes #1715
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3733>

2023-01-14 16:16:49 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: clear subitem if suburi is set to NULL
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1649
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3730>

2023-01-16 15:55:56 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/gl/gstglcontext.c:
	  gl: Fix crash in cocoa due to race in gst_gl_context_activate()
	  We create a new context in `gst_gl_context_create_thread()` and then
	  activate it on the current thread. Thereafter we assume that the
	  current thread continues to be the active thread for that context and
	  call `gst_gl_context_fill_info()` which asserts that the current
	  thread is the active thread.
	  However, if at the same time a different thread calls
	  `send_message_async()`, it will call into
	  `gst_gl_window_cocoa_send_message_async()` which will schedule the
	  message to be invoked using GCD. That anonymous function will also
	  call `gst_gl_context_activate()`, which creates a race, which can lead
	  to:
	  ```
	  gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed
	  ```
	  Fix it by using `gst_gl_context_thread_add()` to invoke `fill_info()`
	  on the context.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3732>

2023-01-14 16:16:39 +0530  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/gl/cocoa/gstglcaopengllayer.h:
	* gst-libs/gst/gl/cocoa/gstglcaopengllayer.m:
	* gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
	  gl/cocoa: Store a weak reference to the `GstGLWindow` instead of the `GstGLContext`
	  We can't rely on the `GstGLContext` to stay alive and need to keep track
	  of it. For that we keep track of the `GstGLWindow` in a weak reference
	  to avoid a reference cycle, and get the corresponding `GstGLContext`
	  whenever needed.
	  With contributions from Nirbheek Chauhan.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1697
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3729>

=== release 1.21.90 ===

2023-01-13 19:08:48 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.21.90

2023-01-13 16:39:51 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Cleanup on failure
	  This ensures there is a source present/valid *ONLY* in PAUSED and above.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720>

2023-01-13 16:37:03 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Unset locked state
	  Some elements still had it in failure cases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720>

2023-01-13 16:34:45 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Handle state synchronization failures
	  Properly reset and remove the failing urisourcebin if we failed bringing them up
	  to the same state as ourselves.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1708
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3720>

2023-01-12 14:39:20 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst-libs/gst/gl/gstglbasefilter.c:
	  glbasefilter: Copy metas when they only contain they "video" tag
	  Same logic as in `GstVideoFilter`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3716>

2023-01-11 17:30:09 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Fix global group-id handling
	  The goal of the "global" group-id is to fix new inputs that do not come from the
	  same "source" as others. In order to ensure all "current" streams have the same
	  group-id we distribute the first valid group-id to all streams.
	  This commit fixes two issues with that:
	  * When inputs are unlinked they weren't always properly resetted (it would only
	  work if parsebin is used, which is no longer the default in
	  uridecodebin3/playbin3).
	  * When computing the global group-id, take into account unset
	  group-id (i.e. GST_GROUP_ID_INVALID).
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1698
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3712>

2023-01-11 15:41:03 +0000  Tim-Philipp Müller <tim@centricular.com>

	* po/LINGUAS:
	* po/af.po:
	* po/az.po:
	* po/bg.po:
	* po/ca.po:
	* po/cs.po:
	* po/da.po:
	* po/de.po:
	* po/el.po:
	* po/en_GB.po:
	* po/eo.po:
	* po/es.po:
	* po/eu.po:
	* po/fi.po:
	* po/fr.po:
	* po/fur.po:
	* po/gl.po:
	* po/hr.po:
	* po/hu.po:
	* po/id.po:
	* po/it.po:
	* po/ja.po:
	* po/ka.po:
	* po/lt.po:
	* po/lv.po:
	* po/nb.po:
	* po/nl.po:
	* po/or.po:
	* po/pl.po:
	* po/pt_BR.po:
	* po/ro.po:
	* po/ru.po:
	* po/sk.po:
	* po/sl.po:
	* po/sq.po:
	* po/sr.po:
	* po/sv.po:
	* po/tr.po:
	* po/uk.po:
	* po/vi.po:
	* po/zh_CN.po:
	  gst-plugins-base: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>

2023-01-11 14:53:39 +0000  Tim-Philipp Müller <tim@centricular.com>

	* scripts/dist-translations.py:
	* scripts/meson.build:
	  Fix translation pot files when creating dist tarballs
	  Add version as per Translation Project requirements and
	  also add a .pot file without the ABI suffix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3711>

2023-01-10 11:19:12 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: ensure recalculate_group_id() is called with INPUT lock
	  This function uses main_input and current_group_id which are protected
	  by the input lock.
	  Some calls were already safe but not all.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3702>

2022-12-21 15:35:21 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: fix stream leak
	  GstSourcePad owns the GstStream but was not unreffing it when being
	  disposed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3617>

2022-12-21 10:44:40 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: fix dead lock when removing pad
	  gst_element_remove_pad() is triggering a call to
	  gst_decodebin3_input_pad_unlink() which needs the input lock as well,
	  resulting in a dead lock.
	  Fix #1667
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3614>

2023-01-11 12:17:13 +0200  Sebastian Dröge <sebastian@centricular.com>

	* tools/gst-device-monitor.c:
	* tools/gst-discoverer.c:
	* tools/gst-play.c:
	  tools: Use `gst_macos_main()` on macOS
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1673
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3709>

2023-01-10 13:06:37 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/interactive/test-effect-switch.c:
	  tests: interactive: test-effect-switch: use autovideosink
	  Also works on Windows.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3703>

2023-01-09 01:24:57 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tools/gst-play.c:
	  gst-play: fix command line option string formatting
	  Add missing space to translated string.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3696>

2023-01-04 21:37:55 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/meson.build:
	  docs: explicitly declare gir build dependencies
	  As the path to the gir file is passed to hotdoc.generate_doc() and
	  not the build target itself, meson doesn't know about the dependency.
	  In turn, as the CI doesn't build everything before building the
	  documentation target, some gir files might not exist, for instance
	  in the case of gst-rtsp-server, causing the output documentation to
	  be empty.
	  The error occurred silently because hotdoc accepts wildcards for
	  *-sources arguments, thus it won't warn about a missing gir file as
	  it is legitimate for glob matching to resolve to nothing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3686>

2023-01-06 18:09:02 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/typefind/gsttypefindfunctions.c:
	  typefindfunctions: Add missing length check to XML typefinder
	  Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=54811
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3690>

2023-01-06 14:37:31 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/typefind/gsttypefindfunctions.c:
	  typefindfunctions: Reduce XML typefinder minimum data size from 64 to 32 bytes
	  64 bytes makes the typefinder fail on very small XML documents on which
	  it succeeded previously.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3690>

2023-01-05 17:59:41 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/opus/gstopusdec.c:
	  opusdec: Try harder to negotiate the upstream channels/rate preferences
	  It might be possible to fulfill those but not with the first caps
	  structure. Instead of just fixating the first caps structure, check if
	  the preference can be fulfilled by any of the structures as the first
	  step.
	  Without this the following pipeline negotiates to mono after the
	  decoder because opusenc only has a single channel in its first caps
	  structure.
	  gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc \
	  ! queue ! opusdec ! queue ! opusenc ! fakesink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3689>

2023-01-05 17:35:02 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/opus/gstopusenc.c:
	  Revert "opusenc: Reverse channel order in template caps"
	  This reverts commit cdf411e82d7e437e5de138492b6e75e5513686ee. It causes
	  pipelines to unnecessarily negotiate to 8 channels.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1688
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3689>

2023-01-03 18:53:41 -0500  Olivier Crête <olivier.crete@collabora.com>

	* gst-libs/gst/audio/gstaudioutilsprivate.c:
	  audioenc/dec: Avoid adding temporary structure
	  As a minor optimisation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673>

2023-01-03 18:52:05 -0500  Olivier Crête <olivier.crete@collabora.com>

	* gst-libs/gst/audio/gstaudioutilsprivate.c:
	  audioenc/dec: Preserve downstream caps preference in get caps
	  This should fix pipelines such as this one to work as expected
	  ... ! opusenc ! capsfilter caps='audio/x-opus,
	  channels=1; audio/x-opus, channels=2' ! ...
	  The expectation is that the encoder will propose the first structure
	  before the second one to the source.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673>

2022-12-23 16:15:49 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/typefind/gsttypefindfunctions.c:
	  typefindfunctions: Check for the SVG namespace URL in addition to `<svg` and the doctype
	  Finding the SVG namespace URL gives a clear indication that this is
	  actually an SVG file while the `<svg>` tag only gives a likely
	  indication as it's rather short.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1540
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3631>

2022-12-23 17:25:06 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/typefind/gsttypefindfunctions.c:
	  typefindfunctions: Make XML typefinder more strict
	  If a XMLDec is found, check also for its end. Similarly, check for the
	  end of the XML tag we're looking for and make sure that the following
	  characters are valid.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1536
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3632>

2022-12-30 08:44:35 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Fix parsebin handling
	  The goal of !3601 was to make sure we don't end up with non-streams-aware
	  adaptive demuxers. Since we know that parsebin is streams-aware, just remember
	  that and handle them that way.
	  Fixes issues with some scenarios where parsebin might add pads *before* the
	  collection is posted on the bus
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1675
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658>

2022-12-29 16:02:38 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Fix handling of "expected" pads
	  The number of expected pads was:
	  * Defaulting to 1
	  * Or being overriden by GST_MESSAGE_STREAMS_SELECTED
	  This fails if upstream isn't a selectable source and has multiple streams, and
	  would therefore cause failures with multi-stream gapless playback
	  Fixes #1672
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658>

2022-12-29 16:01:07 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Avoid repeatedly calling the blocking probe
	  When skipping an event, we want to unref it and say we handled it. This avoids
	  being repeatedly called for the same (sticky) events.
	  The events will be properly propagated once the pad is linked.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658>

2022-12-29 15:58:24 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Handle multiple pending pad block probes
	  It is quite possible to have the blocking probe called from different streaming
	  threads when all expected pads are present.
	  * Notify all waiters by using g_cond_broadcast instead of g_cond_signal
	  * Properly remove the probe after waiting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3658>

2022-12-29 11:02:10 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/gl/gstglcontext.c:
	  gl: Mark `gst_gl_context_new_wrapped()` return value as `nullable`
	  If a GL context is requested for which no API support is compiled in
	  then `NULL` is returned.
	  Also remove a useless `NULL` check: `g_object_new()` can't possibly
	  return `NULL`, ever.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3656>

2022-12-24 23:41:52 -0500  F. Duncanh <fduncanh@gmail.com>

	* gst-libs/gst/gl/meson.build:
	  plugins-base/tests/check/meson.build: add omitted Wayland dependence
	  SUSE places Wayland include files in /usr/include/wayland, and needs
	  a Cflag added to wayland_client_deps by pkg-config, which is added to
	  gl_winsys_deps: add this as a dependency in gstgl_dep to fix issue.
	  Fixes #1607
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3638>

2022-12-29 03:52:42 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* gst-libs/gst/gl/meson.build:
	  meson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency
	  So we can fetch gl_winsys, gl_platforms, etc directly using
	  gst_gl_dep.get_variable() when building gstreamer as a subproject, or
	  when building gst-plugins-rs's gtk4 plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3654>

2022-12-13 08:58:43 -0500  Xavier Claessens <xavier.claessens@collabora.com>

	* meson.build:
	  Fix API visibility macros
	  This copies the logic from GLib discussed there:
	  https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2936
	  Beside being simpler, it also fix all public symbols being annotated
	  with dllexport when doing a static build, as discovered there:
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3540#note_1678335
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3567>

2022-12-19 11:49:32 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Modify check for streams-aware adaptive demuxers
	  Using the "GstBin" flags to check if an adaptive demuxer is streams-aware isn't
	  a good idea since it prevents using elements which aren't bins.
	  Instead we see if a collection was posted by the demuxer by the time a pad is
	  added.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3601>

2022-12-19 15:22:15 +0100  Philipp Zabel <p.zabel@pengutronix.de>

	* gst/videoconvertscale/gstvideoconvertscale.c:
	  videoconvertscale: fix valid_tags NULL-terminated array of strings
	  The valid_tags array of strings must be NULL-terminated,
	  as it is passed to the g_strv_contains() function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3603>

2022-12-19 14:24:06 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: fix typo in doc
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3602>

2022-12-13 12:23:56 +0100  Thibault Saunier <tsaunier@igalia.com>

	* gst-libs/gst/video/navigation.h:
	  base:navigation: Cleanup navigation key modifiers enum
	  We were exposing the 'ALT' modifier as if we were guaranteeing its
	  accuracy but truth is we were only exposing configuration dependent
	  values.
	  Make the API simpler for now, the same way as Gtk3 was exposing it, and
	  when we have time to guarantee more values by making them take backends
	  configuration into account, we will expose those values in a accurate
	  way.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565>

2022-11-30 04:04:09 +0000  Matthew Waters <matthew@centricular.com>

	* gst-libs/gst/gl/gstglupload.c:
	  glupload: add CAN_ACCEPT_RAW to all dma-buf uploaders
	  Fixes cases where a dma-buf would be uploaded using direct-dma-buf
	  into an external-oes texture (using video/x-raw caps) and then
	  attempting to reconfigure the same source.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3486>

2022-06-03 11:40:35 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* docs/plugins/gst_plugins_cache.json:
	* ext/gl/gstglvideomixer.c:
	  glvideomixer: override sink pad template
	  Allow us to pass the GType of its pad and so
	  improve the documentation when inspecting glvideomixer.
	  Fix #1253
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2527>

2022-12-12 13:43:30 +0000  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/video/video-format.h:
	  video-format: Add macro checking for validity of GstVideoFormatInfo
	  Mostly to maintain consistency with the GST_AUDIO_FORMAT_INFO_IS_VALID_RAW
	  macro.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2800>

2022-07-27 09:39:52 +0100  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/audio/audio-format.c:
	* gst-libs/gst/audio/audio-format.h:
	  audio-format: Add macro checking for validity of GstAudioFormatInfo
	  `gst_audio_format_info_fill_silence()` not properly checking the validity of its
	  input may lead it into an infinite loop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2800>

2022-12-11 17:36:53 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/pango/gsttimeoverlay.c:
	  timeoverlay: fix pad leak
	  Spotted by Jiri Uncovsky.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1336>

2022-12-07 14:49:05 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/pango/gsttextrender.c:
	  textrender: Negotiate caps on a GAP event if none were negotiated yet
	  Otherwise downstream wouldn't have received a segment event either and
	  wouldn't know what to do with the gap event
	  And also forward any pending segment event.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3541>

2022-12-05 02:29:08 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development

=== release 1.21.3 ===

2022-12-05 01:28:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-base.doap:
	* meson.build:
	  Release 1.21.3

2022-12-04 12:25:41 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ChangeLog:
	* docs/random/ChangeLog-0.8:
	  Remove ChangeLog files from git repository
	  This information is tracked fully in the git repository, so
	  no point having the ChangeLog duplicate it, and it interferes
	  with grepping the repository.
	  We are going to create the ChangeLogs on the fly when generating
	  tarballs going forward (with a limited history), since it's still
	  valuable for tarball consumers to be able to easily see a list of
	  recent changes.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>

2022-11-07 00:10:39 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	* scripts/gen-changelog.py:
	  meson: Generate ChangeLog files for release tarballs on dist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3521>

2022-12-02 15:52:56 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Protect against NULL uri/suburi
	  Fixes #1625
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3511>

2022-11-30 09:26:48 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Always store pending buffering messages
	  Fixes #1586
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3487>

2022-11-30 20:48:28 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* ext/opus/gstopusdec.c:
	  opusdec: Use proper guint/guint8 type conversion
	  Do not cast, that might yield wrong results.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

2022-11-30 20:47:11 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* ext/opus/gstopusdec.c:
	  opusdec: Negotiate default to 2 channels
	  In that place, dec->n_channels can still theoretically be 0. Default to
	  2 in that case.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

2022-11-30 20:46:05 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* ext/opus/gstopusenc.c:
	  opusenc: Reverse channel order in template caps
	  We want to make it so that we prefer a higher, not lower, number of
	  channels. Otherwise, this pipeline would convert from 2 to 1 channels:
	  gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc ! queue ! opusdec ! queue ! opusenc ! fakesink
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3494>

2022-11-28 16:05:16 +0000  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/audio/gstaudiodecoder.h:
	  audiodecoder: Make data processing errors non-fatal by default
	  The previous default value of `max-errors` was too small and would potentially trigger the
	  decoder to emit errors too often for most cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>

2022-11-30 10:27:27 +0000  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/video/gstvideodecoder.h:
	  videodecoder: Make data processing errors non-fatal by default
	  The previous default value of `max-errors` was too small and would potentially trigger the
	  decoder to emit errors too often for most cases.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3478>

2022-11-29 14:02:55 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/sdp/gstsdpmessage.c:
	  sdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer()` correctly
	  They are not actually `out` parameters but must be allocated and
	  initialized to a valid SDP message by the caller. Just allocating them
	  without initialization will cause memory corruptions because the
	  functions will try to clear/append to the existing SDP message.
	  As such they should be just marked as `transfer none`.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1605
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3484>

2022-11-28 10:19:20 +0100  Ignacio Casal Quinteiro <qignacio@amazon.com>

	* gst-libs/gst/sdp/gstsdpmessage.c:
	  sdp: use g_strdup instead of strdup
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3475>

2022-11-25 10:01:06 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* ext/gl/gstglimagesink.c:
	  glimagesink: Fix render rect assertion
	  Whenever the surface is resized before the stream is negotiated, we endup
	  with an assertion in libgstvideo.
	  gst_video_center_rect: assertion 'src->h != 0' failed
	  This fixes it, by following the style aready in place, which is to ensure
	  surfaces have a minimum size of 1x1.
	  Fixes #1139
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3467>

2022-11-26 09:23:59 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst-libs/gst/audio/gstaudiofilter.c:
	* gst/audioconvert/gstaudioconvert.c:
	* gst/audioresample/gstaudioresample.c:
	  audioconvert, audioresample, audiofilter: fix divide by 0 for input buffer without caps
	  gst-launch-1.0 audiotestsrc ! udpsink host=127.0.0.1
	  gst-launch-1.0 udpsrc ! audioconvert ! autoaudiosink
	  would crash with a floating point exception when clipping the input
	  buffer owing to a division by zero because no caps event was received.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3469>

2022-08-09 10:26:00 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: propagate about-to-finish for new inputs
	  If the pending next urisourcebin is already draining, make sure we propagate it
	  when activating it.
	  Fixes gapless playback of small entries
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1588
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-08-10 16:52:23 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Remove old fixme
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-08-09 16:31:26 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	* gst/playback/gsturidecodebin3.c:
	  (uri)decodebin3: Ensure group-id consistency
	  Make sure that group-id of a given play item are made consistent from the
	  start (sources) and all the way through the output.
	  This ensures that we can reliably detect that we have switched to the next play
	  item on the output of decodebin3 (and we can therefore properly free/release it)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-08-09 10:42:22 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Fix shutdown procedures in probe
	  When shutting down, we want to remove the urisourcebin blocking probes ... but
	  we also want to propagate a GST_FLOW_FLUSHING upstream (and not
	  GST_FLOW_NOT_LINKED) to make the upstream task gracefully stop instead of
	  posting an error message.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-08-05 16:58:08 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Properly reset when going back to READY
	  Clear the remaining stream-related fields when going from PAUSED to READY, and
	  use when disposing.
	  Fixes various issues when re-using decodebin3/playbin3
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-08-05 10:37:23 +0200  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED
	  When `is_selection_done` is called, it checks that all the requested streams are
	  present in the active stream list ...
	  ... except there could very well be a (about to be removed) stream from the
	  previous selection present.
	  Therefore filter the list of streams we add to the message by the streams which
	  are actually requested.
	  Fixes issues when switching between different stream types (ex: video-only to
	  audio-only).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>

2022-11-21 15:12:26 +0100  Edward Hervey <edward@centricular.com>

	* ext/ogg/gstoggdemux.c:
	  oggdemux: Don't leak pending seek event
	  Make sure any pending seek event is released when going back down to READY.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-21 15:10:35 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstparsebin.c:
	  parsebin: Don't leak parsepad list on shutdown
	  Free it as it is down in other cases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3443>

2022-11-21 18:47:50 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/pango/gsttextrender.c:
	* ext/pango/gsttextrender.h:
	  textrender: Don't pass plaintext as pango markup to Pango
	  Otherwise e.g. & in the text will cause Pango to complain about invalid
	  markup and render the text incorrectly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>

2022-11-21 18:43:54 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/pango/gsttextrender.c:
	  textrender: Don't blindly forward all events
	  Use gst_pad_event_default(), which does the right thing by default.
	  Especially it does not forward text/x-plain caps downstream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3445>

2022-11-16 11:47:54 -0500  Matt Crane <matt@standard.ai>

	* gst-libs/gst/rtp/gstrtpbasedepayload.c:
	  rtpbasedepayload: Drop redundant reference timestamp buffer meta in RTP depayloaders
	  Currently, when rtspsrc property add-reference-timestamp-metadata=true,
	  a downstream rtph264depay element will attach multiple copies of the
	  same GstReferenceTimestampMeta to the depayloaded media buffers. This
	  can have signficant performance impacts further downstream in a pipeline
	  like the following:
	  rtspsrc add-reference-timestamp-metadata=true ! rtph264depay ! h264parse ! ... ! rtph264pay ! ...
	  For example, if there are 10 packet buffers for a frame of RTP H.264
	  video, each of those packet buffers will contain the same reference
	  timestamp meta. The rtph264depay element will then attach all 10
	  metadata to the depayloaded frame. And then later when we payload the
	  frame buffer again for proxying, we now have 10 more buffers each with
	  10 instance of the same metadata. Allocating/deallocating 100+ instances
	  of metadata @ 30fps for multiple streams has a pretty large performance
	  impact.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1578
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3431>

2022-11-16 15:17:24 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/video/video-frame.c:
	  video-frame: Avoid using tile width
	  The tile width in pixel is not always available. Notably for
	  8L128 10bit format, the tile is 8x128 bytes, and the pixel
	  format is fully packed. That means that the tile contains at
	  least 6 pixels per line, but it also hold some bits of the
	  pixel from the same line on the previous or next tile.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424>

2022-11-15 13:50:13 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/gl/egl/gsteglimage.c:
	* gst-libs/gst/gl/gstglcolorconvert.c:
	* gst-libs/gst/gl/gstglmemory.c:
	* gst-libs/gst/gl/gstglutils.c:
	* gst-libs/gst/video/video-format.c:
	* gst-libs/gst/video/video-format.h:
	* gst-libs/gst/video/video-frame.c:
	* gst-libs/gst/video/video-info.c:
	* gst-libs/gst/video/video-tile.h:
	* gst/rawparse/gstrawvideoparse.c:
	  video: Add arbitrary tile dimensions support
	  In current tile representation, only tiles with power of two
	  width and height in bytes are supported. This limitation
	  prevents adding more complex tiles formats.
	  In this patch, we deprecate tile_ws and tile_hs from GstVideoFormatInfo and
	  replace if with an array of GstVideoTileInfo. Each plane tiles are then
	  described with their pixels width/height, line stride and total size.
	  The helper gst_video_format_info_get_tile_sizes() that depends on the
	  deprecated API is also being removed. This can simply be removed as it wasn't
	  in any stable release yet.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3424>

2022-11-18 14:24:30 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst-libs/gst/audio/gstaudioaggregator.c:
	* gst-libs/gst/video/gstvideoaggregator.c:
	  aggregator: Implement force_live API
	  Setting force_live lets aggregator behave as if it had at least one of
	  its sinks connected to a live source, which should let us get rid of the
	  fake live test source hack that is probably present in dozens of
	  applications by now.
	  + Expose API for subclasses to set and get force_live
	  + Expose force-live properties in GstVideoAggregator and GstAudioAggregator
	  + Adds a simple test
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3008>

2022-11-17 15:41:35 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin2.c:
	  decodebin2: Minor debug fix for decodepad
	  decodedad might have their name changed when exposing, causing a race when
	  trying to get their name without taking a lock. Just use GST_PTR_POINTER in
	  debug statements instead
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3428>

2022-11-14 14:18:30 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Remove un-needed define
	  This code hasn't use GValueArray in ages
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-14 14:17:25 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Use a non-buffering multiqueue for non-streamable URI
	  Even though buffering is not required, we need to ensure we are dealing with the
	  interleave (if any) before pushing the elementary streams further downstream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-10 10:27:48 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gsturisourcebin.c:
	  urisourcebin: Minor doc fix
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-10-01 04:38:53 +1000  Jan Schmidt <jan@centricular.com>

	* gst/playback/gsturidecodebin3.c:
	  uridecodebin3: Don't leak EOS event
	  Make sure to unref the EOS event in all code paths
	  when returning GST_PAD_PROBE_HANDLED
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-07-21 16:43:47 +0200  Edward Hervey <edward@centricular.com>

	* docs/plugins/gst_plugins_cache.json:
	* gst/playback/gstplaybin3.c:
	* gst/playback/gsturidecodebin3.c:
	* tools/gst-play.c:
	  playbin3: Move gapless to uridecodebin3
	  This was the intention from the start, just took me a few years *cough* to
	  actually implement it properly.
	  Gapless is handled by re-using as much as possible the same decoders and sinks
	  if present, and only pre-rolling switching at the sources level (with buffering
	  if/when needed).
	  In order to enable "gapless" playback, the "next" uri should be set at any time
	  between the moment the `about-to-finish` signal is emitted and the moment the
	  current play item is done. Previously this could only be done with the signal
	  emission.
	  This new implementation also allows "Instantaneous URI switching". This allows a
	  much faster way of switching playback entries while re-using as many elements as
	  possible. To enable this set `instant-uri` property to TRUE, the default being
	  FALSE.
	  API: instant-uri properties
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-10 07:16:11 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstplaybin3.c:
	  playbin3: Remove unused code
	  This was never used, and if ever it's needed at some point for reference it's
	  available in gstplaybin.c
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-14 09:54:24 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Clear input collection when linked again
	  The previous collection no longer applies to this input
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-14 09:37:28 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Improve collection merging
	  If the collections are the same, don't merge them
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-10 06:58:50 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3-parse.c:
	* gst/playback/gstdecodebin3.c:
	  decodebin3: doc cleanup
	  Remove old/invalid FIXME and cleanup some logs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-10 06:54:21 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Remove unused variable
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2784>

2022-11-10 09:13:35 +0100  Edward Hervey <edward@centricular.com>

	* gst/playback/gstdecodebin3.c:
	  decodebin3: Allow re-using inputs
	  DecodebinInput (and their backing parsebin or identity) are no longer released
	  when the corresponding sinkpad is unlinked, but when it's released.
	  The parsebin element will be resetted:
	  * If incoming caps are incompatible (was the case before)
