=== release 1.22.5 ===

2023-07-20 15:22:48 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.5

2023-02-15 17:32:39 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Don't set a referer when updating playlists
	  In the same way we don't for regular playlists in the base class.
	  If there is a referer specified by the app/user, the downloadhelper will set it
	  accordingly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5057>

2023-02-15 18:06:36 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Don't blindly set the main manifest URI as referer
	  There's no guarantee it will *actually* be the URI which refered to what we are
	  downloading. It could be a stream URI or anything else.
	  Instead of putting something wrong, put no (specific) referer as a better choice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5057>

2023-07-11 17:00:57 +0200  Bastien Nocera <hadess@hadess.net>

	* ext/gtk/gtkgstbasewidget.c:
	  gtk: Fix critical caused by pointer movement when stream is getting ready
	  This check fixes a critical warning that can happen when a pointer motion
	  happens and the video doesn't have its width/height information available.
	  GStreamer-Video-CRITICAL **: gst_video_center_rect: assertion 'src->h != 0' failed
	  #0  g_logv (log_domain=0x7ffff705e176 "GStreamer-Video", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1422
	  #1  0x00007ffff7e1a81d in g_log (log_domain=<optimized out>, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0x7ffff7e77a9d "%s: assertion '%s' failed") at ../../../../Projects/jhbuild/glib/glib/gmessages.c:1460
	  #2  0x00007ffff7e1b749 in g_return_if_fail_warning (log_domain=<optimized out>, pretty_function=<optimized out>, expression=<optimized out>) at ../../../../Projects/jhbuild/glib/glib/gmessages.c:2930
	  #3  0x00007ffff701d90b in gst_video_sink_center_rect (src=..., dst=..., result=result@entry=0x7fffffffc6d0, scaling=scaling@entry=1) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-base/gst-libs/gst/video/gstvideosink.c:105
	  #4  0x00007fffe5652dbb in _fit_stream_to_allocated_size (result=0x7fffffffc6d0, allocation=0x7fffffffc6c0, base_widget=0x9396f0) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:326
	  #5  gtk_gst_base_widget_display_size_to_stream_size (base_widget=base_widget@entry=0x9396f0, x=1207.7109375, y=811.84765625, stream_x=stream_x@entry=0x7fffffffc720, stream_y=stream_y@entry=0x7fffffffc728) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:344
	  #6  0x00007fffe5651a4b in gst_gtk_base_sink_navigation_send_event (navigation=0x5ff990, event=0x178a730) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gstgtkbasesink.c:340
	  #7  0x00007fffe5652432 in gtk_gst_base_widget_motion_event (widget=<optimized out>, event=event@entry=0x1f14b60) at ../../../../Projects/jhbuild/gstreamer/subprojects/gst-plugins-good/ext/gtk/gtkgstbasewidget.c:404
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5051>

2023-07-13 16:27:05 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: remove empty sink_query
	  The sink_query() function simply calls the sink_query() function of the parent
	  videoencoder class. Remove the override to simply directly call the parent's
	  function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5036>

2023-07-13 16:16:44 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: replace custom QUERY_CAPS handling with getcaps callback
	  The videoencoder base class uses getcaps() to ask a subclass for the caps in its
	  sink_query_default() implementation.
	  Replace the custom handling of the QUERY_CAPS in the v4l2videoenc with an
	  implementation of getcaps() that returns the caps that are supported by the
	  v4l2videoenc to return these caps in the query.
	  This getcaps() implementation also calls the provided proxy_getcaps(), which
	  sends a caps query to downstream. This fixes the v4l2videoenc element to respect
	  limits of downstream elements in a sink query.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5036>

2023-07-11 21:41:46 +0200  Carlos Rafael Giani <crg7475@mailbox.org>

	* meson.build:
	  gl: Take into account viv-fb vs. viv_fb naming in meson scripts
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

2023-05-16 21:24:44 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqtglutility.cc:
	* ext/qt/meson.build:
	* meson.build:
	  gl: provide a pkg-config/gir file for the viv-fb backend
	  Required to be able to generate coherent bindings for window system
	  specific APIs due to limitations in gobject-introspection.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4959>

2023-07-10 22:45:49 +0900  Seungha Yang <seungha@centricular.com>

	* ext/qt6/qt6glitem.cc:
	  qt6: Set sampler filtering method
	  QQuickItem::smooth property doesn't seem to be propagated to
	  newly created QSGSimpleTextureNode automatically.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2793
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5016>

2023-07-09 17:44:03 +0200  David Craven <david@craven.ch>

	* gst/matroska/matroska-read-common.c:
	  matroska: demux: Strip signal byte from encrypted blocks
	  Removes the signal byte when the frame is unencrypted to
	  be consistent with when the frame is encrypted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5014>

2023-06-26 17:10:33 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Don't wait for src_ch if active
	  If the capture pool is already active, like when handling gaps at the
	  start of a stream, do not setup the decoder to wait for src_ch event.
	  Otherwise the decoder will endup waiting for that at the wrong moment
	  and exit the decoding thread unexpectedly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4996>

2023-06-26 17:08:57 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Move pool setup inside negotiate()
	  Move all the pool configuration inside the negotiate() virtual function.
	  This allow settting up a pool with default format whenever the base
	  class wants to start without input data, like gaps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4996>

2023-07-06 17:44:48 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: correctly register v4l2mpeg2dec
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4992>

2023-07-07 12:33:37 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix critical when tag list is not writable
	  Fix this pipeline where the tag list is not writable:
	  gst-launch-1.0 videotestsrc ! taginject tags="image-orientation=rotate-90" ! videoflip video-direction=auto \
	  ! autovideosink
	  GStreamer-CRITICAL **: 12:34:36.310: gst_tag_list_add: assertion 'gst_tag_list_is_writable (list)' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4990>

2023-07-06 14:27:42 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: handle resolution change when buffers are copied
	  When buffers are copied then GST_V4L2_FLOW_RESOLUTION_CHANGE is returned by
	  gst_v4l2_buffer_pool_process() so do renegotiation here as well.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4985>

2023-07-04 23:11:53 +0900  Seungha Yang <seungha@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix crash when is-live=false
	  The pad's parent (i.e., rtspsrc) can be nullptr since we add pads
	  later.
	  Co-authored-by: Jan Schmidt <jan@centricular.com>
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2751
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4971>

2023-07-04 10:57:01 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	  hlsdemux2: Ensure processed webvtt ends with empty new line
	  Parsers downstream will use empty new lines to detect where an entry
	  ends. Failure to have a newline would cause the entry to be either
	  discarded or (wrongly) concatenated with the next entry
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2752
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4970>

2023-06-21 17:05:47 +0200  Edward Hervey <edward@centricular.com>

	* gst/matroska/matroska-demux.c:
	  matroska-demux: Properly handle early time-based segments
	  Refusing an incoming segment in < GST_MATROSKA_READ_STATE_DATA should only be
	  done if the incoming segment is not in GST_FORMAT_TIME.
	  In GST_FORMAT_TIME, we are just storing the values and returning, so we can
	  invert the order of the checks.
	  Fixes proper segment propagation in matroska/webm DASH use-cases
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-10 15:26:20 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle early SEEKING query
	  No pads are present yet, but we can still answer the query
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-09 17:22:34 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Fix non-accurate seeking
	  If no accurate positioning was required, default to snap to the previous segment
	  for improved responsiveness
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-09 14:54:27 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle return in seek handling
	  Various code path were repeating the same logic, and risk forgetting a lock
	  release.
	  Unify all of them
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-09 14:45:01 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Move API lock usage
	  It is not needed so early
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-08 17:24:18 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle early key-unit seek
	  Is a seek is done on stream-collection post, there are no selected streams
	  yet. Therefore none would be chosen to adjust the key-unit seek.
	  If no streams are selected, fallback to a default stream (i.e. one which has
	  track(s) with GST_STREAM_FLAG_SELECT).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-02-08 12:02:45 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Fix early seeking
	  When seeking is handled by the collection posting thread, there is a possibility
	  that some leftover data will be pushed by the stream thread.
	  Properly detect and reject those early segments (and buffers) by comparing it to
	  the main segment seqnum
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4922>

2023-06-06 11:34:03 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: update orientation tag in auto mode
	  The frames are flipped according to the tag orientation so it's no longer accurate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4796>

2023-06-20 14:56:44 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: opus: set entry as sampled
	  ... otherwise streams with constant size samples defined with a single
	  `sample_size` for all samples in the `stsz` box fall in the category
	  `chunks_are_samples` in `qtdemux_stbl_init`, overriding the actual
	  sample count.
	  `FOURCC_soun` would set this automatically for `compression_id == 0xfffe`,
	  however `compression_id` is read from the Audio Sample Entry box at an offset
	  marked as "pre-defined" in some version of the spec and set to 0 both by
	  GStreamer and FFmpeg for opus streams.
	  Considering the stream `sampled` flag is set explicitely by other fourcc
	  variants, doing so for opus seems consistent.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4908>

2023-06-20 19:10:38 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4907>

=== release 1.22.4 ===

2023-06-20 17:42:25 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.4

2023-06-08 19:12:54 +0200  Jonas Kvinge <jonas@jkvinge.net>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Allow data dash+xml manifest for uri
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4853>

2023-06-13 13:20:16 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/audioparsers/gstflacparse.c:
	  flacparse: Avoid integer overflow in available data check for image tags
	  If the image length as stored in the file is some bogus integer then
	  adding it to the current byte readers position can overflow and wrongly
	  have the check for enough available data succeed.
	  This then later can cause NULL pointer dereferences or out of bounds
	  reads/writes when actually reading the image data.
	  Fixes ZDI-CAN-20775
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2661
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4897>

2023-06-19 15:11:30 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_dump.c:
	* gst/isomp4/qtdemux_dump.h:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: parse Opus and dOps as qtdemux nodes and add size checks
	  This allows checking the nodes conformity and dumping parsed values.
	  Note: Audio Sample Entry version parsing and offset handling is handled as part
	  of `FOURCC_soun` common processing and in `qtdemux_parse_node`.
	  Also, only read `stream_count` and `coupled_count` when
	  `channel_mapping_family` != 0. See:
	  https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>

2023-06-16 10:29:28 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: fix byte order for opus extension and version field type
	  The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
	  § 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
	  [1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>

2023-06-16 10:02:16 +0200  François Laignel <francois@centricular.com>

	* gst/isomp4/atoms.c:
	  qtmux: fix byte order for opus extension
	  The "Encapsulation of Opus in ISO Base Media File Format" [1] specifications,
	  § 4.3.2 Opus Specific Box, indicates that data must be stored as big-endian.
	  In `build_opus_extension`, `gst_byte_writer_put*_le ()` variants were used,
	  causing audio streams conversion to Opus in mp4 to offset samples due to the
	  PreSkip field incorrect value (29ms early in our test cases).
	  [1] https://opus-codec.org/docs/opus_in_isobmff.html#4.3.2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4891>

2023-05-30 15:10:11 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/isomp4/gstqtmux.c:
	* gst/isomp4/qtdemux.c:
	  isomp4: Fix (E)AC-3 channel count handling
	  The muxer used a fixed value of 2 channels because the TR 102 366 spec
	  says they're to be ignored. However, the demuxer still trusted them,
	  resulting in bad caps.
	  Make the muxer fill in the correct channel count anyway (FFmpeg already
	  does) and make the demuxer ignore the value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4773>

2023-04-20 17:31:32 -0400  Daniel Morin <daniel.morin@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2src: fix support for bayer format
	  - Define a new function that identify if the v4l2object is raw based
	  on pixel format
	  - Only consider setting delta flag on buffer if the video is not raw.
	  Sponsored by Living Optics Ltd.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4867>

2023-06-12 19:24:15 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/rtpbin_buffer_list.c:
	  tests: rtpbin_buffer_list: fix possible unaligned read on 32-bit ARM
	  Fixes #2666
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4855>

2023-05-30 17:52:34 +0900  ekwange <ekwange@gmail.com>

	* sys/v4l2/v4l2_calls.c:
	  v4l2: Change to query only up to V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
	  Fix to prevent infinite querying.
	  There are devices that exceed V4L2_CID_PRIVATE_BASE+V4L2_CID_MAX_CTRLS
	  but do not return EINVAL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4851>

2023-06-05 07:29:57 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Cleanup code for next pending command
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4799>

2023-06-05 06:50:55 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Do not try send dropped get/set parameter
	  If the set_get_param_q has been emptied we have to reset the cached
	  pending command to CMD_LOOP as we will not have the request parameters
	  anymore.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4799>

2023-06-06 09:24:37 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: treat MPEG 1 format as MPEG 2
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4787>

2023-05-18 14:23:49 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/meson.build:
	  meson: Support building qml6glsink on win32
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4762>

2023-05-03 21:05:54 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	* meson_options.txt:
	  meson: Add more qt options and eliminate all automagic
	  The qt5 and qt6 plugins will now correctly error out if you enable the
	  option, and you can also now explicitly ensure that wayland, x11,
	  eglfs support is actually functional by enabling the options. It was
	  too easy to build non-functional support for these.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4776>

2023-01-11 01:11:06 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	  meson: Add build_rpath for qt5 plugin on macOS
	  Without this, the plugin cannot be loaded in a devenv because the
	  RPATH is not added to the plugin dylib. This RPATH will be stripped on
	  install, which is what we want.
	  When deploying apps, people are supposed to use `macdeployqt` to
	  create an AppBundle that bundles Qt for you and sets the RPATHs
	  correctly to point to that bundled Qt.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4776>

2023-06-01 16:21:47 +0200  Piotr Brzeziński <piotr@centricular.com>

	* ext/libpng/gstpngdec.c:
	  pngdec: Fix 16bit RGB images display
	  Due to the alpha value being inserted with _BEFORE, we were ending up
	  with ARGB instead of RGBA, thus displaying completely wrong colours.
	  According to libpng's manual, "to add an opaque alpha channel, use filler=0xff
	  or 0xffff and PNG_FILLER_AFTER which will generate RGBA pixels".
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4759>

2023-05-29 17:01:01 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/qtglrenderer.cc:
	  qt/glrenderer: don't attempt to use QWindow from non-Qt main thread
	  Use QObject::deleteLater() to schedule deletion in the main thread.
	  Remove the moveToThread of the QWindow.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4744>

2023-05-24 16:17:46 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* gst/flv/gstflvmux.c:
	  flvmux: use the correct timestamp to calculate wait times
	  Since c0bf793c05cf793aa18a8548cda702625e388115 ("flvmux: Set PTS based on
	  running time") the timestamp of the output buffer is already in running
	  time. So using that for 'srcpad->segment.position' does not work correctly
	  because gst_aggregator_simple_get_next_time() will convert it again with
	  gst_segment_to_running_time().
	  This means that the timestamp returned by
	  gst_aggregator_simple_get_next_time() may be incorrect. For example, if
	  flvmux is added to a already runinng pipeline then the timestamp is too
	  small and gst_aggregator_wait_and_check() returns immediately. As a result,
	  buffers may be muxed in the wrong order.
	  To fix this, use the PTS of the incoming buffer instead of the outgoing
	  buffer. Also add the duration as get_next_time() is supposed to return the
	  timestamp of the next buffer, not the current one.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4734>

2020-08-31 16:38:48 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: be stricter when detecting interlaced video
	  There are broken(?) mjpeg videos that are incorrectly detected as
	  interlaced. This happens because 'info.height > height' (e.g. 1088 > 1080).
	  In the interlaced case info.height is approximately 'height * 2' but not
	  exactly because height is a multiple of DCTSIZE. Make the check more
	  restrictive but take the rounding effect into account.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4717>

2020-08-31 16:12:33 +0200  Michael Olbrich <m.olbrich@pengutronix.de>

	* ext/jpeg/gstjpegdec.c:
	  jpegdec: decode the correct number of lines for interlaced frames
	  For interlaced jpeg, gst_jpeg_dec_decode_direct() is called twice, once for each
	  field. In this case, stride[n] is plane_stride[n] * 2 to ensure that only every
	  other line is written. So the loop must stop at height / num_fields.
	  If the frame is really interlaced then continuing beyound this, is not harmful,
	  because jpeg_read_raw_data() will do nothing and return 0, so am info message is
	  printed.
	  However, if the frame is not actually interlaced, just misdetected as interlaced
	  then there is still data available from the second half of the frame. Now
	  line[0][j] is set to the scratch buffer. If the scratch buffer is not allocated
	  (because the height is a multiple of v_samp[0] * DCTSIZE) then the result is a
	  segfault due to a null-pointer dereference.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4717>

2023-05-05 15:12:46 +0800  YURI FEDOSEEV <yuri.fedoseev@helixleisure.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: support force keyframe event in v4l2 encoder
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4702>

2023-05-19 12:36:19 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4679>

=== release 1.22.3 ===

2023-05-19 09:23:19 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* README.md:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.3

2023-05-06 11:17:43 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: fix some errors in probe_caps_for_fromat
	  1, there is a mistake when print stepwise.max_height, fix it
	  2, modify the calculation of width and height under the step wise
	  condition
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4672>

2023-05-18 11:58:51 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2allocator.c:
	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Fix stalls on empty buffer
	  Drivers may signal end of sequence using an empty buffer and LAST buffer
	  set, or just an empty buffer on certain legacy implementation. When this
	  occured, we'd send GST_V4L2_FLOW_LAST_BUFFER were the code expected
	  GST_FLOW_EOS. Stop abusing GST_FLOW_EOS and port all the code to the new
	  GST_V4L2_FLOW_LAST_BUFFER.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4671>

2023-05-15 19:10:39 +1000  Jan Schmidt <jan@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	  splitmuxsrc: Make PTS contiguous by preference
	  Make splitmuxsrc deal better with stream reordering by
	  making the largest observed PTS contiguous in the
	  next fragment. Previously, it selected DTS, but then
	  aligned that with the segment start of the next fragment,
	  which holds PTS values - leading to glitches in
	  streams that don't have PTS = DTS at the start.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4660>

2023-05-15 11:45:12 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix extraction of CEA608 data from S334-1A packets
	  The index is already incremented by 3 every iteration so multiplying it
	  by 3 additionally on each array access is doing it twice and does not
	  work.
	  This caused invalid files to be created if there's more than one CEA608
	  triplet in a buffer, and out of bounds memory reads.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4645>

2023-05-05 18:27:14 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/osxvideosink.m:
	  osxvideosink: fix deadlock upon closing output window
	  Invoking gst_osx_video_sink_osxwindow_destroy() can currently cause a deadlock
	  because showFrame() keeps trying to get the same lock as well. Moving the lock
	  closer to where it's actually needed seems to be enough to fix the issue for now.
	  Reported-by: Alexande B <abobrikovich@gmail.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4627>

2023-05-11 16:25:11 +0100  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/qtdemux.c:
	* tests/files/editlists.mp4.gz.gz:
	  qtdemux: add unit test for edit list regression
	  File is the mp4 file from #2549 with the mdat atom
	  zeroed out and compressed. We compress twice because
	  apparently compressing 5MB of zeroes effectively in
	  one run is too difficult for gzip.
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4605>

2023-05-05 19:41:34 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/isomp4/qtdemux.c:
	  Revert "qtdemux: fix conditions for end of segment in reverse playback"
	  This reverts commit 9deb3c27acd4161f810cd782f03bcdaccf2643c7.
	  The test case that was described in the associated MR
	  (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/262)
	  remains adequately fixed by a related MR that was merged later
	  (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/275).
	  It introduced incorrect logic that broke edit lists as described in
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4605>

2023-05-09 17:28:49 +0200  François Laignel <francois@centricular.com>

	  rtpmanager/rtsession: data race leading to critical warnings
	  This is a fix for a data race leading to:
	  > GLib-CRITICAL: g_hash_table_foreach:
	  >   assertion 'version == hash_table->version' failed
	  Identified sequence:
	  * `rtp_session_on_timeout` acquires the lock on `session` and proceeds with its
	  processing.
	  * `rtp_session_process_rtcp` is called (debug log : received RTCP packet) and
	  attempts to acquire the lock on `session`, which is still held by
	  `rtp_session_on_timeout`.
	  * as part of an hash table iterator, `rtp_session_on_timeout` transitively
	  invokes `source_caps` which releases the lock on `session` so as to call
	  `session->callbacks.caps`.
	  * Since `rtp_session_process_rtcp` was waiting for the lock to be released, it
	  succeeds in acquiring it and proceeds with `rtp_session_process_rr` which
	  transitively calls `g_hash_table_insert` via `add_source`.
	  * After `source_caps` re-acquires the lock and gives the control flow back to
	  `rtp_session_on_timeout`, the hash table iterator is changed, resulting in the
	  assertion failure.
	  This commits copies `sess->ssrcs[sess->mask_idx]` and iterates on the copy so
	  the iterator is not affected by a concurrent change due to the lock being
	  released in the `source_caps` callback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4585>

2023-05-09 14:37:25 +0100  Philippe Normand <philn@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstrtpdtmfdepay.c:
	  rtpdtmfdepay: Classify as RTP element
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4584>

2023-05-09 14:36:56 +0100  Philippe Normand <philn@igalia.com>

	* docs/gst_plugins_cache.json:
	* gst/dtmf/gstrtpdtmfsrc.c:
	  rtpdtmfsrc: Classify as RTP source
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4584>

2023-05-01 14:01:02 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2deviceprovider.c:
	  v4l2: device provider: Fix GMainLoop leak
	  On very quick start/stop, the mainloop may never be run. As a side
	  effect, our idle stop function is not really being ran, so we can't rely
	  on that to free the main loop. Simply unref the mainloop when the
	  thread have completely stop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4539>

2023-05-03 13:21:23 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: emit no-more-pads after pruning old pads
	  If we don't do that, clients can rely on this signal to see the final pad
	  topology but it won't be the real one as some of them will disappear after
	  emitting that signal. This can happen after injecting a different init segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4557>

2023-05-03 15:42:01 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix setting of method property at construction time
	  Since c2f890ab, element properties are gathered from the parse-launch
	  line and passed at object construction.
	  This caused the following issue to happen in videoflip:
	  * videoflip installed a CONSTRUCT property named method, now deprecated
	  * videoflip now also overrides that property with a video-direction
	  property
	  GObject construction causes method to be set first at construct time,
	  with the user-provided value, then video-direction with the default
	  value.
	  The user-provided value was thus overridden, causing a regression.
	  Fix by not installing the properties as CONSTRUCT, and explicitly
	  implementing constructed() instead in order to ensure that we do still
	  call gst_video_flip_set_method() at least once during construction.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2529
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4551>

2023-05-01 14:14:25 +0200  François Laignel <francois@centricular.com>

	  rtpmanager/rtsession: race conditions leading to critical warnings
	  While testing the [implementation for insertable streams] in `webrtcsink` &
	  `webrtcsrc`, I encountered critical warnings, which turned out to result from
	  two race conditions in `rtpsession`. Both race conditions produce:
	  > GLib-CRITICAL: g_hash_table_foreach:
	  >   assertion 'version == hash_table->version' failed
	  This commit fixes one of the race conditions observed.
	  In its simplest form, the test consists in 2 pipelines and a Signalling server:
	  * pipelines_sink: audiotestsrc ! webrtcsink
	  * pipelines_src: webrtcsrc ! appsrc
	  1. Set `pipelines_sink` to `Playing`.
	  2. The Signalling server delivers the `producer_id`.
	  3. Initialize `pipelines_src` to establish a session with `producer_id`.
	  4. Set `pipelines_src` to `Playing`.
	  5. Wait for a buffer to be received by the `appsrc`.
	  6. Set `pipelines_src` to `Null`.
	  7. Set `pipelines_sink` to `Null`.
	  The race condition happens in the following sequence:
	  * `webrtcsink` runs a task to periodically retrieve statistics from `webrtcbin`.
	  This transitively ends up executing `rtp_session_create_stats`.
	  * `pipelines_sink` is set to `Null`.
	  * In `Paused` to `Ready`, `gst_rtp_session_change_state()` calls
	  `rtp_session_reset()`.
	  * The assertion failure occurs when `rtp_session_reset` is called while
	  `rtp_session_create_stats` is executing.
	  This is because `rtp_session_create_stats` acquires the lock on `session` prior
	  to calling `g_hash_table_foreach`, but `rtp_session_reset` doesn't acquire the
	  lock before calling `g_hash_table_remove_all`.
	  Acquiring the lock in `rtp_session_reset` fixes the issue.
	  [implementing insertable streams support]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4532>

2023-04-26 15:58:23 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: pool: Flush events on capture queue
	  Unfortunately streamoff does not flush the events, and this can cause all
	  sort of issues. Flush events on capture queue. We also return
	  GST_V4L2_FLOW_RESOLUTION_CHANGE in case a resolution change was seen.
	  This allow skipping streamon(capture) on flush, which could lead to a
	  configuration miss-match, or failure if the buffers aren't of the right
	  size.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-21 13:33:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Detect flushes while setting up the capture
	  As we missed the fact we were flushing, we could create and activate
	  that buffer pool, and wait on it, causing a hang. We detect that we
	  are flushing by checking the related pad state.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-21 13:30:43 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Don't copy buffer when flushing
	  Threshold handling can race with flushing operation. This can lead to
	  avoidable buffer copies. Simply check and return the flushing status.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-19 14:19:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Don't forcibly drain on resolution changes
	  Let the driver detects the change and reconfigure the capture side
	  transparently from there. This avoid reallocation of the output buffers,
	  and eliminates the need to stop and restart the capture task. This is
	  only happening if the driver have support for this, otherwise the old
	  behaviour is maintained.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-18 11:42:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Remove the spurious srccaps probe
	  We don't need to probe the srccaps in set_format() anymore, this
	  handled already in the capture thread while setting up the capture
	  queue.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-17 16:10:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Improve few logs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-17 16:07:21 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Only warn of incomplete drain on success
	  We may have hit an error, or just flushing in order to stop the thread,
	  in which case, not having drain everything is expected and not a
	  driver bug.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-17 16:05:35 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Don't assert when orphaning is not needed
	  This may happen when shutting down and should not cause
	  any harm. This removes the associated assert when shutting
	  down the pipeline, notably with CTRL+C.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-14 18:54:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Wait for source change event
	  Stop doing capture buffer allocation based on guesses
	  and wait for the source change event when available.
	  Unlike stateless decoder, the stateful decoder is not aware of
	  the coded resolution, and this may lead to the wrong result
	  even when using TRY_FMT.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-14 22:22:06 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2bufferpool.h:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: object: Move the GstPoll into v4l2object
	  Moves the GstPoll from the buffer pool into v4l2object. This will be
	  needed to poll for events before the pool has been created.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-14 23:38:34 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Fix bogus debug objects pointers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-14 09:53:15 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	* sys/v4l2/gstv4l2videodec.h:
	  v4l2: videodec: Move the capture setup into the processing loop
	  In previous implementation that job was split between handle_frame and
	  the processing loop and it wasn't clear if this mechanism was race
	  free. The capture setup would also be tried for every buffer, which was
	  not necessary.
	  This also simplify the handling of SRC_CH event, dropping the unneeded
	  atomic boolean.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-14 09:51:39 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Ensure object is inactive on failure
	  Sprinkle stop() calls in error case to guaranty that the capture object
	  is inactive on failure. Not doing so could allow some code to be called
	  in unexpected (and possibly undefined) conditions.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4525>

2023-04-27 16:33:25 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  Revert "splitmuxsink: Avoid assertion when WAITING_GOP_COLLECT on reference context"
	  This reverts commit f29c19be5821d26a6b7682d0c69ff31d0815e072. If this is
	  called for the reference context then we would run into an infinite
	  loop, which is not really better than an assertion.
	  By fixing up DTS to never be ahead of the PTS in the previous commit
	  this situation should be impossible to hit now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4515>

2023-04-27 16:29:53 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Catch invalid DTS to avoid running into problems later
	  DTS > PTS makes no sense, so we clamp DTS to the PTS. Also if there's a
	  PTS but no DTS, then assume that PTS=DTS to make sure we're not working
	  with a much older DTS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4515>

2023-04-27 13:00:42 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Fix handling of `*` control path
	  Regression introduced by 7f9d689572843ff9e0b8a92128034a8fc4a14d96.
	  Thanks to Tristan Matthews for reporting this.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4503>

2023-04-17 11:36:55 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* ext/adaptivedemux2/dash/gstmpdclient.c:
	  dash: mpdclient: fix divide by 0 if segment has no duration
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4441>

2023-04-17 09:28:43 +0200  Edward Hervey <edward@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix av1C parsing
	  This is a regression introduced by
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882
	  The av1c codec configuration parsing would always fail due to an off-by-one
	  error, the content of an atom starting at offset 8 (i.e. the 9th byte) and not
	  9 (the 10th byte).
	  Also introduce a break in order to not get stray warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4435>

2023-04-12 12:47:02 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/multifile/gstimagesequencesrc.c:
	* gst/multifile/gstmultifilesrc.c:
	  multifile: error out if no filename was set
	  Fixes #2483
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4429>

2023-04-06 08:55:46 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt/qtwindow.cc:
	  qtwindow: unref caps in destructor
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4418>

2023-04-12 17:18:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Fix use after free of fmtdesc part 2
	  Add missing code in merge commit e890e6e8d8bd
	  ("v4l2: Fix use after free of fmtdesc"). The v4l2object code was
	  missing.
	  Related to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4317
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4426>

2023-04-12 17:18:13 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: Fix use after free of fmtdesc
	  The decoder needs to force another enumeration of the format. For
	  this it was clearing the v4l2object insternal list, leaving a fmtdesc
	  pointer pointing to freed memory. This patch clears the fmtdesc pointer
	  that has just been free. It also makes sure the probe function does not
	  use the cached formats list. The probe function will restore the current
	  fmtdesc pointer based on the currently configured pixelformat.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4426>

2023-03-31 10:32:54 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Prefer acquired caps over anything downstream
	  As we don't have anything smart in the fixation process, we may endup with
	  a format that has a lower bitdepth, even if downstream can handle higher
	  depth. it is notably the case when negotiating with deinterlace, which places
	  is non-passthrough caps before its passthrough one. This makes the generic
	  fixation prefer the formats natively supported by deinterlace element over
	  the HW 10bit format. As some HW can downscale 10bit to 8bit, this can break
	  10bit decoding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4426>

2023-03-31 10:31:07 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2: videodec: Remove leading space in comment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4426>

2023-03-03 18:40:22 +0000  Jan Alexander Steffens (heftig) <heftig@archlinux.org>

	* docs/gst_plugins_cache.json:
	* gst/multifile/gstimagesequencesrc.c:
	  imagesequencesrc: Properly set default location
	  Noticed this because the generic_states test kept segfaulting at random.
	  GLibC 2.37 can crash when NULL is supplied as a format string.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4425>

2023-04-11 17:54:23 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: fix critical when using an unsupported URI
	  adaptivedemux2 only supports http(s), trying to use it with, say,
	  file:// was raising a CRITICAL in libsoup.
	  Fix #2476
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4421>

2023-04-12 00:31:17 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* meson.build:
	  Back to development

=== release 1.22.2 ===

2023-04-11 17:29:28 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* docs/gst_plugins_cache.json:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.22.2

2023-04-04 09:21:47 +0200  Edward Hervey <edward@centricular.com>

	* gst/rtpmanager/rtptwcc.c:
	* tests/check/elements/rtpsession.c:
	  twcc: Better handle duplicate packets
	  The previous code would only check if two packets in a row were duplicates. If
	  not (i.e. a packet is a duplicate of a packet received slightly before) the code
	  would generate completely bogus FCI because it assumes there were no duplicates
	  present in the array.
	  In order to be efficient, just store all received packets and remove the
	  duplicates just before the FCI is generated once the array of observations have
	  been sorted by seqnum.
	  Fixes TWCC usage with moderate to high packet duplication.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4378>

2022-11-04 22:04:21 +0100  Alexande B <abobrikovich@gmail.com>

	* sys/osxvideo/cocoawindow.m:
	  osxvideosink: fix broken aspect ration and frame drawing region
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4346>

2023-04-04 19:23:14 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Skip PTs with caps incompatible to the global caps
	  Otherwise empty caps are created while all following code assumes that
	  the caps will have exactly one structure, and then run into assertions.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4343>

2023-03-28 15:29:46 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
