=== release 1.23.1 ===

2024-02-06 16:37:19 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-good.doap:
	* meson.build:
	  Release 1.23.1

2024-02-05 09:27:54 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson_options.txt:
	  meson_options.txt: fix meson warning about default bool values being a string

2024-02-02 23:04:29 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	  meson: Print a useful error message when qt windowing is not found
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6040>

2023-08-24 15:18:05 +0900  Hou Qi <qi.hou@nxp.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2/m3u8: use GstClockTimeDiff to do timestamp comparison
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5234>

2023-12-13 20:43:14 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/dboolhuff.LICENSE:
	* gst/rtp/dboolhuff.c:
	* gst/rtp/dboolhuff.h:
	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/meson.build:
	  rtpvp8pay: Use GstBitReader instead of dboolhuff implementation from libvpx
	  All compressed frame header values that are read as part of the
	  payloader are encoded as bits with 50:50 probability, and as such are
	  just the plain bits as they are.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5810>

2023-08-22 16:11:06 -0400  Daniel Morin <daniel.morin@collabora.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: update rtsp url on redirect
	  - If a redirect took place on a GET when rtsp is tunneled we update the
	  rtsp url too.
	  - log source and final destination on redirect
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5222>

2024-01-29 16:10:21 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Lower verbosity of some often happenning warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6011>

2024-01-29 16:10:06 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Lower verbosity of some often happenning warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6011>

2024-01-28 11:15:01 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  meson: bump Meson requirement to >= 1.1 for all modules
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6002>

2024-01-25 20:13:51 +0100  Jonas Kvinge <jonas@jkvinge.net>

	* ext/taglib/meson.build:
	  meson: Set cpp_std to c++17 for TagLib
	  TagLib uses C++17 as of version 2.0.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5995>

2024-01-02 16:18:05 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* ext/vpx/gstvpxenc.c:
	  vpxenc: fix warning about decreasing PTS on first frame
	  The fields used to track this state should be initialized when
	  codec->inited is FALSE on set_format, not TRUE
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3200
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5876>

2024-01-17 15:59:15 +0100  Jonas K Danielsson <jonas.danielsson@spiideo.com>

	* gst/multifile/gstsplitutils.c:
	  splitmuxsrc: Use natural ordering to find files
	  Today when using the `splitmuxsrc` on a collection of files named as:
	  ```
	  item0.mkv
	  item1.mkv
	  item2.mkv
	  [...]
	  item10.mkv
	  item11.mkv
	  [...]
	  ```
	  You will get a continuous stream made in the order of:
	  ```
	  item0.mkv -> item1.mkv -> item10.mkv -> item11.mkv -> [...]
	  ```
	  You can fix this by having smarter names of the items:
	  ```
	  item000.mkv
	  item001.mkv
	  item002.mkv
	  [...]
	  item010.mkv
	  item011.mkv
	  [...]
	  ```
	  Will get you:
	  ```
	  item000.mkv -> item001.mkv -> item003.mkv -> item004.mkv -> [...]
	  ```
	  But, we could also "fix" the former case by using natural ordering when
	  comparing the files in gstsplitutils.c.
	  Fixes #2523
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4491>

2024-01-22 17:01:19 -0500  Dan Searles <Dan.Searles@garmin.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: fix ttl setting for udpsink[1]
	  Fix ttl setting being incorrectly applied to udpsink[0] rather
	  than to udpsink[1].
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5955>

2024-01-22 12:18:25 -0500  Dan Searles <Dan.Searles@garmin.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: set multicast-iface on udpsinks
	  Copy rtspsrc property multicast-iface to its udpsinks to
	  allow messages over those sinks back to the server to work (and
	  prevent 'Network unreachable' warnings).
	  Closes: #3239
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5955>

2024-01-18 16:54:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvdemux.c:
	  flvdemux: don't re-use segment from one stream if the other has buffer earlier
	  Fix first audio buffers being out of segment because the audio stream
	  is starting earlier than the video one which was the first demuxed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5940>

2024-01-18 16:50:20 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvdemux.c:
	  flvdemux: factor out ensure_new_segment()
	  - Use the pad instead of the element for logs, so it's clearer on which
	  pad this segment will be pushed.
	  - One copy was checking for invalid seq num, the other was not.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5940>

2024-01-11 14:29:49 +0900  Hou Qi <qi.hou@nxp.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Fix build warning in rtp_jitter_buffer_append_query()
	  This is to fix build warnings when using [-Wmaybe-uninitialized]
	  ../gst/rtpmanager/rtpjitterbuffer.c:1237:10: warning: 'head' may be used uninitialized [-Wmaybe-uninitialized]
	  1237 |   return head;
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5907>

2024-01-12 12:51:27 +0000  Philippe Normand <philn@igalia.com>

	* ext/vpx/gstvpxdec.c:
	  vpxdec: Use appropriate domain and code for decoding errors
	  STREAM domain and DECODE error is commonly used in other decoders. ENCODE is for
	  encoders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5916>

2024-01-10 19:10:55 -0500  Olivier Crête <olivier.crete@collabora.com>

	* ext/soup/gstsouploader.c:
	  soup: Avoid using GUri before GLib 2.66
	  Let's use gpointer for now
	  Fixes: #3169
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5906>

2024-01-08 11:04:22 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsession.h:
	  rtpsession: Remove some unused fields
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5899>

2023-11-16 11:42:27 +0530  Sanchayan Maity <sanchayan@asymptotic.io>

	* gst/rtpmanager/gstrtphdrext-clientaudiolevel.c:
	  rtphdrext-clientaudiolevel: Fix level value being written by the extension
	  When level value is greater than 127, it was being clamped but this clamped
	  value was not the one being actually used. For level values greater than 127
	  this resulted in an incorrect value being used. As an example, a level value
	  of 187, after and'ed with 0x7F, it would result in 0x3B being reported as the
	  level value.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5893>

2023-12-23 11:03:51 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/vpx/plugin.c:
	  vpx: fix plugin description
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5864>

2023-12-22 12:56:33 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpsession.c:
	  rtpsession: Only warn once if configured latency needs to be known but isn't yet
	  Otherwise we would warn about this once for every single packet until
	  the LATENCY event is received.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5854>

2023-12-25 18:36:44 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvrawdepay.c:
	  rtpvrawdepay: only announce supported formats in sink template
	  For most video formats we currently just assume that they
	  have a depth of 8 bits, whilst advertising that we can
	  handle 8/10/12/16 bit depth.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5866>

2023-12-15 21:52:03 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpvp8pay.c:
	  rtpvp8pay: Also set partition IDs in the packets if meta exists but without temporal_scalability
	  Encoders will add the meta to every single buffer, but we only cannot set
	  partition IDs properly when the meta has temporal_scalability set
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5814>

2023-12-19 13:57:04 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video-format: Fix format order once again
	  RGBA should be before RBGA. Both the Python script and the gstreamer-rs
	  tests agree on that, but somehow this is not caught by the CI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5837>

2023-12-18 11:03:57 +0900  Chao Guo <chao.guo@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: clear old fds in poll when closing v4l2object
	  When reopening a v4l2 device, the v4l2object->poll will include some old fds,
	  which was assigned to this device before. If the pipeline opens multiple v4l2
	  devices, the old fd may been assigned to other v4l2 devices when reopening
	  devices.
	  This will cause the timing of the pipeline become confusing when polling devices,
	  leading functional abnormalities.
	  Therefore, when closing v4l2object, remove the old fds in poll to ensure that the
	  pipeline timing is normal.
	  Signed-off-by: Chao Guo <chao.guo@nxp.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5820>

2023-12-15 15:19:35 -0500  Arun Raghavan <arun@asymptotic.io>

	* gst/rtp/gstrtpchannels.c:
	  rtp: Fix incorrect RTP channel order lookup by name
	  The g_ascii_strcasecmp() logic is inverted, since it returns 0 on equality.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5815>

2023-12-11 10:49:39 +0100  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* docs/gst_plugins_cache.json:
	* ext/gtk/gstgtkglsink.c:
	  gtkglsink: template caps to only 2D & rectangle texture targets
	  Apparently external-oes is not supported by the plugin as texture target,
	  while DMABuf uploading prefers it because it's zero copy.
	  This patch enables DMABuf uploading and rendering by using either 2D or
	  rectangle texture targets.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5795>

2023-12-06 11:24:35 -0600  Olivier Crête <olivier.crete@collabora.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/soup/gstsouploader.c:
	* ext/soup/gstsouploader.h:
	* ext/soup/stub/soup.h:
	  adaptivedemux2: Parse cookies in downloadhelper
	  We need to parse any cookie headers, otherwise we end up
	  sending back attributes likes "Secure" and "httponly" which break
	  some servers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5776>

2023-12-09 13:15:38 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp9pay: Don't include unused dboolhuff.h header
	  It's only used by the VP8 payloader.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5784>

2023-12-06 20:42:32 -0800  Xavier Claessens <xavier.claessens@collabora.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: Consider framerate during caps selection
	  This simplifies the way it picks the closest caps to preference and take into
	  consideration the framerate to avoid picking high resolution at 5fps or so.
	  Simply calculate a "distance" of caps A and B from the preference and put
	  closest first, sorting by framerate first.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5777>

2023-12-05 09:25:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/isomp4/qtdemux_tags.c:
	* meson.build:
	  qtdemux: fix bug report URL
	  Using PACKAGE_BUGREPORT as in other modules.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5762>

2023-11-28 11:43:53 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Do not update `demux->offset` when droping data on EOS
	  The offset is updated right after and we were breaking it by updating it
	  twice.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-11-28 11:28:58 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Do not mark stream as EOS only if all streams are EOS
	  The `GstFlowCombiner` is responsible for tracking the flow of each
	  stream and handle the overal flow return value. Without that, we
	  can end up with the following scenario:
	  - Audio+video stream
	  - Only the video stream is linked downstream
	  - The audio stream goes EOS, video doesn't yet
	  -> We update the Flow in the combiner with OK as all streams are not EOS
	  - Video goes EOS because downstream returned EOS
	  -> `qtdemux` returns `FLOW_OK` forever because the unlinked audio pad
	  has `last_flowret==FLOW_OK`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-11-28 11:27:45 -0300  Thibault Saunier <tsaunier@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Determine EOS based on the stream segment
	  Depending on the stream segment might vary (because of edts for example)
	  leading to EOS being sent at the wrong time (too early for example).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5724>

2023-12-01 14:51:49 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Don't overflow sample index
	  Don't reduce sample index if it is already at 0.
	  Assigning -1 to a guint32 variable causes unexpected behavior.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5743>

2023-12-01 15:05:41 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix reverse playback for pcm audio stream
	  Some raw lpcm or adpcm may have larger sample sizes than the max
	  buffer size value set.
	  Trimming the buffer causes bogus size error on reverse playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5742>

2023-11-22 00:07:57 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Add RBGA format
	  This new format is intended to be used by hardware decoders
	  where VUYA is only supported 4:4:4 decoding surface but
	  stream is encoded with GBR color space, HEVC and VP9 GBR streams
	  for example.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5703>

2023-11-24 15:43:15 +0000  Philippe Normand <philn@igalia.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	  dashdemux2: Fix a couple leaks and a use-after-move
	  The tags and caps were leaked for unknown streams, I'm not sure they'd be valid
	  in that case, but better safe than sorry.
	  The tags ownership is transfered when calling `gst_adaptive_demux_track_new()`
	  so unreffing those afterwards was a mistake.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5714>

2023-06-07 14:38:18 +0200  Robin Gustavsson <robin.gustavsson@spiideo.com>

	* gst/rtp/gstrtpklvdepay.c:
	* tests/check/elements/rtp-payloading.c:
	  rtpklvdepay: Recover after invalid fragmented KLV unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4816>

2023-11-13 15:51:44 +0200  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.h:
	  rtpjitterbuffer: Add new "rfc7273-reference-timestamp-meta-only" property
	  If this property is enabled then the jitterbuffer will do the normal PTS
	  calculations according to the configured mode instead of making use of
	  the RFC7273 media clock.
	  The timestamp calculated from the RFC7273 media clock will only be
	  stored in the reference timestamp meta, if addition of that meta is enabled.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-10-19 20:45:09 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpjitterbuffer.h:
	  rtpjitterbuffer: Add new rfc7273-use-system-clock property
	  When this property is used, it is assumed that the system clock is
	  synced close enough to the media clock used by an RFC7273 stream.
	  As long as both clocks are at most a few seconds from each other this
	  will give the correct results and avoids having to create an actual
	  network clock that has to sync first.
	  If the system clock is actually synchronized to the media clock then
	  everything will behave exactly the same, otherwise the reference
	  timestamp meta will be correct but the buffer timestamps will be off by
	  the difference between the two clocks.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-10-19 20:17:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Improve handling of media clocks
	  Do more checks for clock equality than just checking pointers. The same
	  NTP/PTP clock might be used as pipeline clock but a new instance, so
	  instead also check what clock they are synced to.
	  Also handling setting / resetting of the media clock and pipeline clock
	  correctly by resetting the media clock's state accordingly.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5512>

2023-06-29 15:20:29 +0200  Piotr Brzeziński <piotr@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Ignore raw audio streams when adjusting seek
	  Because we treat raw audio chunks/samples as keyframes, they were interfering
	  with seek time adjustment.
	  Became apparent when the accompanying video stream was I-frame only,
	  for example ProRes.
	  Since raw audio streams can be seeked freely, it's fine to just ignore them here,
	  giving priority to the real keyframes in the video stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4946>

2023-11-14 15:36:34 +0900  Dongyun Seo <dongyun.seo@lge.com>

	* gst/audioparsers/gstdcaparse.c:
	  dcaparse: keep upstream buffer meta
	  Some audio decoders cannot decode DTS stream if there is no
	  valid timestamp. So, keep upstream buffer meta.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5655>

2023-10-21 21:10:55 -0400  Olivier Crête <olivier.crete@collabora.com>

	* gst/rtp/gstrtpopusdepay.c:
	  rtpopusdepay: set resync flag
	  - Set re-sync flag on output buffer when rtp had the marker flag set.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5529>

2023-10-31 16:26:00 +0000  Philippe Normand <philn@igalia.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2-stream: Use gst_clear_object when releasing collection
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5606>

2023-10-09 09:11:47 +0000  Johan Adam Nilsson <johan.adam.nilsson@gmail.com>

	* gst/wavparse/gstwavparse.c:
	  wavparse: fix buffer leak with adtl tag
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3020
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5595>

2023-11-02 01:48:28 +0000  robert <robert.ayrapetyan@gmail.com>

	* sys/ximage/gstximagesrc.c:
	* sys/ximage/meson.build:
	  ximagesrc: fix xnavigation linking issue
	  Fixes #3083
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5589>

2023-11-02 00:03:28 +0900  Seungha Yang <seungha@centricular.com>

	* meson.build:
	  meson: Fix MSVC build with GST_DISABLE_GST_DEBUG
	  MSVC does not understand Wno-unused
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5585>

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

	* docs/gst_plugins_cache.json:
	* ext/mpg123/gstmpg123audiodec.c:
	  mpg123audiodec: Update rank from MARGINAL to PRIMARY
	  This is our primary MP3 decoder after mad got removed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5590>

2023-10-16 20:53:49 +0000  robert <robert.ayrapetyan@gmail.com>

	* sys/ximage/gstximagesrc.c:
	  ximagesrc: fix compile-time warning and XInitThreads()
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5493>

2023-10-24 18:20:34 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/libpng/gstpngenc.c:
	  pngenc: mark output frames as I-frames
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>

2023-10-24 18:12:44 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/libpng/gstpngenc.c:
	* ext/libpng/gstpngenc.h:
	  pngenc: output one frame only in snapshot mode
	  In snapshot mode pngenc should output exactly one frame
	  and then return FLOW_EOS to upstream. If upstream sends
	  more input frames before shutting down, it should keep
	  returning FLOW_EOS but not output any more encoded frames.
	  After a flushing seek it should output frames again though.
	  Fixes #3069.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5546>

2023-05-05 17:01:50 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2object: scale the encoded sizeimage based on maximum resolution
	  The default 2MB ENCODED_BUFFER_SIZE can't support some 4K video playback. We now
	  detect the driver reported maximum resolution and choose an appropriate
	  default bitstream size accordingly. For 4K video these results in around 4MB
	  buffer instead of 2MB.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4549>

2023-10-20 08:14:40 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt6/gstqml6glsrc.cc:
	  qml6glsrc: sync on the streaming thread
	  After rendering a QML scene the qml6glsrc element copies the contents of
	  the scene to a GStreamer buffer. This happens on the Qt render thread.
	  Then it attaches a sync point to the destination buffer. This sync point
	  must be awaited by other threads which use the buffer later on. The
	  current implementation relies on the downstream elements to wait for the
	  sync point. However, there are situation where this does not work. The
	  GstBaseTransform e.g. copies the buffer metadata (which overwrites the
	  sync point without waiting for it) *before* waiting for the sync point.
	  This commit waits for the sync point inside the qml6glsrc element before
	  sending it downstream. The wait command is issued on the streaming
	  thread with the pipeline OpenGL context, i.e. it will synchronize with
	  the GStreamer OpenGL thread.
	  This is a port of the original fix for the qmlglsrc element.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5519>

2022-04-06 12:56:30 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  meson: Bump GLib requirement to >= 2.64
	  This includes fixes to make GstBus watches non-racy.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2126>

2023-10-21 18:22:38 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/flac/gstflacenc.c:
	  flacenc: signal in output caps that the output is framed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5524>

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

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpac3depay.c:
	  rtpac3depay: should output audio/x-ac3 not audio/ac3
	  audio/x-ac3 is the canonical media format in GStreamer.
	  audio/ac3 is sometimes accepted as input (e.g. in rtpac3pay
	  or ac3parse), but shouldn't be output.
	  Fixes #3038.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5472>

2023-10-17 15:24:22 +0200  Matthias Fuchs <matthias1.fuchs@zeiss.com>

	* ext/qt/gstqtsrc.cc:
	  qmlglsrc: sync on the streaming thread
	  After rendering a QML scene the qmlglsrc element copies the contents of
	  the scene to a GStreamer buffer. This happens on the Qt render thread.
	  Then it attaches a sync point to the destination buffer. This sync point
	  must be awaited by other threads which use the buffer later on. The
	  current implementation relies on the downstream elements to wait for the
	  sync point. However, there are situation where this does not work. The
	  GstBaseTransform e.g. copies the buffer metadata (which overwrites the
	  sync point without waiting for it) *before* waiting for the sync point.
	  This commit waits for the sync point inside the qmlglsrc element before
	  sending it downstream. The wait command is issued on the streaming
	  thread with the pipeline OpenGL context, i.e. it will synchronize with
	  the GStreamer OpenGL thread.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5506>

2023-09-03 18:47:24 +0000  Robert Ayrapetyan <robert.ayrapetyan@gmail.com>

	* docs/gst_plugins_cache.json:
	* meson_options.txt:
	* sys/ximage/gst-ximage-navigation.c:
	* sys/ximage/gst-ximage-navigation.h:
	* sys/ximage/gstximagesrc.c:
	* sys/ximage/gstximagesrc.h:
	* sys/ximage/meson.build:
	  ximagesrc: add navigation support
	  Add a basic navigation support:
	  - mouse events (buttons/move)
	  - keyboard events (keys)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5273>

2023-09-27 13:41:33 +0200  Jordan Petridis <jordan@centricular.com>

	* ext/qt6/gstqsg6material.cc:
	  qt6: if def newer symbosl in QRhiTexture
	  version 6.4 added QRhiTexture::RGB10A2 but we depend on an older
	  version of qt in meson, and we can keep compiling with older Qt6
	  versions still.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5475>

2023-10-12 16:05:18 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* gst/multifile/gstimagesequencesrc.c:
	  imagesequencesrc: fix regular image deadlock
	  With one regular image file path provided (without %05d),
	  the element was stuck in a dead loop counting the frames:
	  gst_image_sequence_src_count_frames
	  This allows to display any image file out of the element
	  for a given number of buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5471>

2023-10-12 00:27:11 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/meson.build:
	  build/qt6: properly error/skip build if the qsb tool is not found
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3032
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5459>

2023-09-05 17:56:49 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: unconditionally activate the OUTPUT pool
	  If the v4l2videoenc receives an QUERY_ALLOCATION, it must not propose a
	  currently used pool, because it cannot be sure that the allocation query came
	  from exactly the same upstream element. The QUERY_ALLOCATION will not contain
	  the internal OUTPUT pool.
	  The upstream element (the basesrc) detects that the newly proposed pool differs
	  from the old pool. It deactivates the old pool and switches to the new pool.
	  If there was a format change, a new OUTPUT buffer pool will be allocated in
	  gst_v4l2_object_set_format_full() and the CAPTURE task will be stopped to switch
	  the format. If there hasn't been a format change,
	  gst_v4l2_object_set_format_full() will not be called. The old pool will be kept
	  and reused.
	  Without a format change, the processing task continues running.
	  This leads to the situation that the processing task is running, but the OUTPUT
	  buffer pool (the old pool) is deactivated. Therefore, the encoder is not able to
	  get buffers from the OUTPUT pool and encoding cannot continue.
	  This situation can be triggered by sending a RECONFIGURE event without a format
	  change.
	  Resolve this situation by ensuring that the OUTPUT buffer pool is always
	  activated when frames arrive at the encoder.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-10-10 14:53:08 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: fix activation of internal pool
	  Fix the buffer pool activation if the driver does not support VIDIOC_CREATE_BUFS
	  the same way as it was fixed for the v4l2videodec.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-09-05 17:54:31 +0200  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: rename OUTPUT pool to opool
	  There is a CAPTURE pool in the same function. While the CAPTURE pool is called
	  cpool, using pool for the OUTPUT pool is confusing.
	  Using opool for the OUTPUT pool makes it more obvious, which pool is used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4235>

2023-10-11 14:47:33 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	  flvmux: set the src segment position as running time
	  We were already converting the pad last timestamp to running time but
	  not the segment position.
	  This segment position is used by gst_aggregator_simple_get_next_time()
	  to compute the waiting time when aggregating.
	  Those waiting times were wrong in my live pipeline using the system
	  clock, resulting in the aggregator to never wait at all.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5460>

2023-10-11 09:36:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: Fix tiled formats stride conversion
	  While adding arbitrary tile support, a round up operation was badly
	  converter. This caused the Y component of the stride to be 0. This
	  eventually lead to a crash in glupoad preceded by the following
	  assertion.
	  gst_gl_buffer_allocation_params_new: assertion 'alloc_size > 0' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5458>

2023-10-04 11:09:37 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2: Do not submit_transfer when cancelled
	  There is a race condition where transfer has not been submitted yet while the
	  request is cancelled which leads to the transfer state going back to
	  `DOWNLOAD_REQUEST_STATE_OPEN` and the user of the request to get signalled about
	  its completion (and the task actually happening after it was cancelled) leading
	  to assertions and misbehaviours.
	  To ensure that this race can't happen, we start differentiating between the
	  UNSENT and CANCELLED states as in the normal case, when entering `submit_request`
	  the state is UNSENT and at that point we need to know that it is not because
	  the request has been cancelled.
	  In practice this case lead to an assertion in
	  `gst_adaptive_demux2_stream_begin_download_uri` because in a previous call to
	  `gst_adaptive_demux2_stream_stop_default` we cancelled the previous request and
	  setup a new one while it had not been submitted yet and then got a `on_download_complete`
	  callback called from that previous cancelled request and then we tried to do
	  `download_request_set_uri` on a request that was still `in_use`, leading to
	  something like:
	  ```
	  #0: 0x0000000186655ec8 g_assert (request->in_use == FALSE)assert.c:0
	  #1: 0x00000001127236b8 libgstadaptivedemux2.dylib`download_request_set_uri(request=0x000060000017cc00, uri="https://XXX/chunk-stream1-00002.webm", range_start=0, range_end=-1) at downloadrequest.c:361
	  #2: 0x000000011271cee8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_begin_download_uri(stream=0x00000001330f1800, uri="https://XXX/chunk-stream1-00002.webm", start=0, end=-1) at gstadaptivedemux-stream.c:1447
	  #3: 0x0000000112719898 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment [inlined] gst_adaptive_demux2_stream_download_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:0
	  #4: 0x00000001127197f8 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_load_a_fragment(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:1969
	  #5: 0x000000011271c2a4 libgstadaptivedemux2.dylib`gst_adaptive_demux2_stream_next_download(stream=0x00000001330f1800) at gstadaptivedemux-stream.c:2112
	  ```
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5435>

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

	* docs/gst_plugins_cache.json:
	  doc: Update plugin cache for added DMA_DRM format
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5386>

2023-09-27 13:55:33 +0200  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/deinterlace/gstdeinterlace.c:
	  video-filters: Fix passthrough with ANY caps feature
	  With the support for DRM modifiers, passthrough caps must now include DMA_DRM
	  format, otherwise pipeline using thhese filters unconditionally may fail
	  to negotiate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5386>

2023-09-29 15:47:48 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  docs: Update plugins caches
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5412>

2023-09-28 18:03:31 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Correctly handle up to 255 cue entries
	  The counter was using a signed 8 bit integer, which was overflowing
	  after 127 entries. That was then passed as an unsigned 32 bit integer to
	  libflac, which caused it to be converted to a huge unsigned number.
	  That then caused an invalid memory access inside libflac.
	  As a bonus, signed integer overflow is undefined behaviour.
	  Instead, use an unsigned 8 bit integer. Once this overflows the existing
	  code already catches it and stops adding the cue. While FLAC__metadata_object_cuesheet_insert_track()
	  takes an unsigned 32 bit integer for the track number, FLAC__StreamMetadata_CueSheet_Track is
	  limiting it to an unsigned 8 bit integer.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2921
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5420>

2023-09-28 16:59:14 +0200  Dominique Leroux <dominique@unity3d.com>

	* sys/osxaudio/gstosxaudio.c:
	* sys/osxaudio/gstosxaudiodeviceprovider.c:
	* sys/osxaudio/gstosxaudiodeviceprovider.h:
	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosink.h:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxaudiosrc.h:
	  osxaudio: add individual elements registration for gst-full compatibility
	  Found that osxaudiosink could not be added standalone in gst-full build
	  using
	  -Dgst-full-elements=osxaudio:osxaudiosink because element registration
	  was
	  done at the plugin level. Now src/sink elements and deviceprovider have
	  their
	  individual registration.
	  Copied/adapted from the alsa plugin.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5419>

2023-09-27 15:16:43 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* ext/adaptivedemux2/dash/gstmpd-prelude.h:
	* ext/adaptivedemux2/dash/gstmpdhelper.c:
	* ext/adaptivedemux2/dash/gstmpdhelper.h:
	  mpdhelper: remove useless code
	  The audio/video codec name from mime type should be retrieved from
	  gst_codec_utils_caps_get_mime_codec instead
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5404>

2023-09-27 08:46:35 -0400  Xavier Claessens <xavier.claessens@collabora.com>

	* ext/vpx/gstvp8enc.c:
	* ext/vpx/gstvpxelement.c:
	* gst/rtp/gstrtpvp8pay.c:
	* tests/check/elements/rtpvp8.c:
	* tests/check/elements/vp8enc.c:
	  GstCustomMeta: Use simplified API where possible
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5385>

2023-09-26 16:48:10 +0000  Florian Zwoch <fzwoch@gmail.com>

	* ext/adaptivedemux2/downloadhelper.c:
	  adaptivedemux2: Call GTasks's return functions for blocking tasks
	  Gio/Task states the following:
	  If a GTask has been constructed and its callback set, it is an error to
	  not call g_task_return_*() on it. GLib will warn at runtime if this
	  happens (since 2.76).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5395>

2023-09-27 08:48:03 +0200  Albert Sjölund <alberts@axis.com>

	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: Chain finalize call to parent
	  GstSoupSession finalize does not chain parent finalize,
	  causing it to leak memory, shown under g freeze notify.
	  In finalize method, ensure all branches call to parent
	  finalize.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5398>

2023-09-18 08:40:07 +0200  Daniel Moberg <daniemob@axis.com>

	* docs/gst_plugins_cache.json:
	* gst/rtsp/gstrtspsrc.c:
	* gst/rtsp/gstrtspsrc.h:
	  rtspsrc: Property for adding custom http request headers
	  This commit adds a property which enables adding custom http request headers to
	  the rtspsrc element. Added headers will be appended to http requests
	  made during http tunneling.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5268>

2023-09-15 09:12:25 +0200  Stijn Last <stijn.last@barco.com>

	* gst/deinterlace/tvtime/greedy.c:
	  deinterlace: greedy, improve quality
	  scanlines->m1 = same line of the previous field
	  scanlines->t0 = line above of the current field
	  scanlines->b0 = line below of the current field
	  scanlines->mp = same line of the next field
	  Deinterlacing a field weaved frame:
	  When deinterlacing the top field, the next bottom field is available
	  (part of the same frame). but when deinterlacing the bottom field,
	  the next top field (part of the next frame) is not available and
	  scanlines->mp equals NULL.
	  In this case it's better to use greedy algorithm using the prevous field
	  (twice) rather then linear interpolation of the current field.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5331>

2023-09-22 16:57:28 +0900  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videodec.c:
	  v4l2videodec: Correctly free caps to avoid memory leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5379>

2023-09-21 19:50:31 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Add GBR 16bits formats
	  Adding 16bits planar RGB formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5375>

2023-09-14 01:35:10 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpsource.c:
	  rtpsource: Don't store invalid running times and calculate with it
	  If we end up with GST_CLOCK_TIME_NONE as running time for an RTP packet
	  then this can't be used for bitrate estimation, and also not for
	  constructing the next RTCP SR. Both would end up with completely wrong
	  values, and an RTCP SR with wrong values can easily break
	  synchronization in receivers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5329>

2023-09-19 18:28:47 +0200  Piotr Brzeziński <piotr@centricular.com>

	* ext/qt/qtplugin.pro:
	  qml: Fix leftover reference to gstqsgtexture
	  Made it impossible to build with qmake as per the readme. The file was renamed to gstqsgmaterial a while ago.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5357>

2023-09-19 09:14:31 +0200  Olivier Blin <olivier.blin@softathome.com>

	* ext/pulse/pulsedeviceprovider.c:
	  pulsedeviceprovider: fix incorrect usage of GST_ELEMENT_ERROR
	  The provider is not a GStreamer element.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5349>

2023-09-07 17:23:37 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	  rtpjitterbuffer: Avoid integer overflow in max saveable packets calculation with negative offset
	  The timestamp offset can be negative, and it can be a bigger negative
	  number than the latency introduced by the rtpjitterbuffer so the overall
	  timeout offset can be negative.
	  Using the negative offset for calculating how many packets can still
	  arrive in time when encountering a lost packet in an equidistant stream
	  would then overflow and instead of considering fewer packets lost a lot
	  more packets are considered lost.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5296>

2023-09-05 16:56:44 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2: object: Handle video helper return value
	  gst_video_info_set_interlaced_format() can return an error if the
	  width/height causes integer overflow. Handle this case, so that we can
	  fail cleanly. This has been experienced while testing an in-progress
	  driver.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-05 16:51:24 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Avoid warnings on empty last buffer
	  Some drivers will push an buffer flagged LAST but empty. In decoder
	  case, this results in an "producing too many buffer" warning, even
	  though the result is entirely correct. Detect this case in order to
	  signal EOS earlier and avoid this warning.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-05 16:15:19 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Do not resize compressed buffer
	  Avoid resizing compressed buffer to their maximum size. This fixes a
	  regression that caused valid but very large streams to be generated.
	  Fixes #2953
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5286>

2023-09-10 19:13:28 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* docs/gst_plugins_cache.json:
	  doc: Update cache after template pixel formats changes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5304>

2023-09-06 20:28:39 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstqml6glmixer.cc:
	* tests/examples/qt6/qmlmixer/main.cpp:
	  qml6glmixer: add support for non-RGBA inputs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-09-06 20:28:20 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstqml6gloverlay.cc:
	* tests/examples/qt6/qmloverlay/main.cpp:
	  qml6glovleray: add support for non-RGBA inputs
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-09-04 12:57:26 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/RGBA.frag:
	* ext/qt6/YUV_TRIPLANAR.frag:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqsg6glnode.cc:
	* ext/qt6/gstqsg6glnode.h:
	* ext/qt6/gstqsg6material.cc:
	* ext/qt6/gstqsg6material.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glitem.cc:
	* ext/qt6/resources.qrc:
	* ext/qt6/vertex.vert:
	* tests/examples/qt6/qmlsink/main.cpp:
	  qml6/sink: add support for non-RGBA input
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5290>

2023-08-24 21:29:29 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Fix ordering of video formats in GST_VIDEO_FORMATS_ALL_STR
	  This now follows the algorithm again that is described in the
	  documentation and implemented in gstreamer-rs.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5243>

2023-08-24 11:32:51 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for A420/A422/A444 16-bit formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5233>

2023-08-23 16:33:16 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for 12-bit A420/A422/A444
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5226>

2023-08-21 21:02:01 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: add support for 8-bit A422/A444
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5213>

2023-08-22 01:28:47 +0000  Nicolas Dufresne <nicolas@ndufresne.ca>

	* sys/v4l2/gstv4l2object.c:
	  gstv4l2object: fix TODO comment about HDR configure
	  add following todo list
	  - Missing capture (v4l2src) HDR10 configuration and/or reporting
	  - The API is not capable of HDR to HDR conversion as controls are
	  not specific to queues
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4403>

2023-04-12 08:22:17 +0000  HuQian <qian.hu@mediatek.com>

	* sys/v4l2/gstv4l2object.c:
	  gstv4l2object: passing HDR10 information
	  when playing some codec such as matroska with vp9 codec,
	  demuxer will save information like video_mastering_display_info
	  and video_content_light_level in caps that decoder need,
	  v4l2videodecoder can use it by calling V4L2_CTRL_CLASS_COLORIMETRY
	  ioctl.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4403>

2023-08-22 09:57:14 +0800  Ming Qian <ming.qian@nxp.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2object: clear format lists if source change event is received
	  If decoder notify a source change event when the capture format is
	  changed, not the resolution changed.
	  then gst_v4l2_object_acquire_format will retuen false due to
	  unsupported format.
	  we need to clear the format lists in the source change flow,
	  and reenumerate format list
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5218>

2023-08-21 14:37:23 +0200  Jonas K Danielsson <jonas.danielsson@spiideo.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtp.c:
	* gst/rtp/gstrtpelements.h:
	* gst/rtp/gstrtppassthroughpay.c:
	* gst/rtp/gstrtppassthroughpay.h:
	* gst/rtp/meson.build:
	* tests/check/elements/rtppassthrough.c:
	* tests/check/meson.build:
	  rtp: Add rtppassthroughpay element
	  This elements pass RTP packets along unchanged and appear as a RTP
	  payloader element.
	  This is useful, for example when using the gstreamer-rtsp-server
	  library, in the case where you are receiving RTP packets from a
	  different source and want to serve them over RTSP. Since the
	  gst-rtsp-server library expect the element marked as payX to be a RTP
	  payloader element and assumes certain properties are available.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5204>

2023-07-25 15:14:11 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2allocator.c:
	  v4l2: allocator: Don't close foreign dmabuf
	  Imported dmabuf are not being duped, so they should never be closed. Instead,
	  we ensure their live time by having strong reference on their original
	  buffer. This should fix potential flickering due to dmabuf being closed
	  too early.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5101>

2023-08-03 14:46:56 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Fix hang when splitting buffer
	  Now that we can split GStreamer buffers over multiple v4l2 buffer, we may
	  endup waiting for these buffers to be processed. Avoid waiting for any of
	  the parts being processed. As a side effect, the pool will now try to
	  grow if the number of buffers is not sufficient, and will fail
	  otherwise.
	  This fixes a hang if the very first frame did not fit. In this case, the
	  driver will retrain that buffer until the capture is setup, but
	  GStreamer won't setup the capture until process() function have
	  returned.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5143>

2023-08-16 15:37:51 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* docs/gst_plugins_cache.json:
	* gst/flv/gstflvmux.c:
	* gst/flv/gstflvmux.h:
	  flvmux: add 'enforce-increasing-timestamps' property
	  The hack enforcing strictly increasing timestamps was, according to the
	  code comments, because librtmp was confused with backwards timestamps.
	  rtmp2sink is not using librtmp as rtmpsink did, so this is no longer
	  required.
	  Also changing the timestamps is causing audio glitches when streaming to
	  Youtube.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5212>

2023-07-20 19:13:36 +0200  Jan Alexander Steffens (heftig) <heftig@archlinux.org>

	* ext/qt/meson.build:
	  qt: Unbreak build with qt-egl enabled but viv_fb missing
	  Avoids an error message when the feature is explicitly enabled:
	  ERROR: Feature qt-egl cannot be enabled: gstreamer-gl-viv_fb-1.0 is required
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5083>

2023-08-11 13:24:49 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtp/gstrtpgstdepay.c:
	  rtpgstpay: Enable hdrext aggregation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-07-30 10:48:12 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtpvp8depay.c:
	* gst/rtp/gstrtpvp9depay.c:
	  rtp/vp8depay+vp9depay: Enable hdrext aggregation for VP8 and VP9
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-07-30 09:35:53 +0200  Jochen Henneberg <jh@henneberg-systemdesign.com>

	* gst/rtp/gstrtph264depay.c:
	* gst/rtp/gstrtph265depay.c:
	  rtp/h264depay+h265depay: Enable hdrext aggregation for H264 and H265
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4979>

2023-08-11 11:59:42 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/deinterlace/tvtime/vfir.c:
	  deinterlace: Fix vfir 16-bit orc calculations
	  memcpy works in bytes, but orc works in items, so given that the size
	  arguments is in bytes, we need to divide by the pixel stride.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5172>

2023-08-10 11:38:32 +0300  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/deinterlace/tvtime/greedyh.c:
	  deinterlace: Fix greedyh crash for alternate-field interlacing
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2645
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5172>

2023-08-09 10:56:59 +0200  Stéphane Cerveau <scerveau@igalia.com>

	* gst/isomp4/gstqtmux-doc.c:
	  isomp4: update isml documentation
	  Closing #2893
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5165>

2023-08-07 22:22:14 -0300  L. E. Segovia <amy@centricular.com>

	* ext/vpx/meson.build:
	  subprojects: Add libvpx wrap
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5105>

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

	* docs/gst_plugins_cache.json:
	  video: Add Mediatek 10bit formats
	  These 10bit formats are identical to NV12_16L32S, but 64bytes of data is being
	  prefixed with 16bytes data with four pixels of lower 2bits per byte. For
	  MT2110T, the lower two bits set so each bytes contains a column of 4 pixels,
	  also describe as tiled lower 2 bits. MT2110T has been chosen as a name to match
	  the vendor chosen name. This format is unlikely to exist for other vendors.
	  For MT2110R, the 2 low bits are in raster order.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3444>

2023-08-03 17:46:57 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudiosink.c:
	* sys/osxaudio/gstosxaudiosrc.c:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	  osxaudio: Interpolate clock by counting elapsed time since render calls
	  When advancing the ringbuffer, store the processed CoreAudio sample
	  time, then interpolate the clock in the _get_delay() calls to smooth
	  the clock. CoreAudio's "latency" report is always a constant and
	  otherwise leads to the clock generating a latency-time staircase.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:24 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudiocommon.c:
	* sys/osxaudio/gstosxcoreaudiohal.c:
	  osxaudio: Share debug category in the internal coreaudio object
	  Make the internal coreaudio object output debug to the same
	  debug category by making it shared between code units.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:18 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudioringbuffer.c:
	* sys/osxaudio/gstosxcoreaudio.c:
	* sys/osxaudio/gstosxcoreaudio.h:
	* sys/osxaudio/gstosxcoreaudiohal.c:
	  osxaudio: Attempt to configure the segment size in CoreAudio
	  Set the BufferFrame size in CoreAudio so it will deliver data
	  in ringbuffer segment units when recording. Otherwise, CoreAudio
	  will provide data in whatever granularity it wants, with no
	  relationship to the requested latency-time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-07-26 00:21:08 +1000  Jan Schmidt <jan@centricular.com>

	* sys/osxaudio/gstosxaudiosrc.c:
	  osxaudiosrc: Set sample timestamps
	  Set the timestamp on output buffers based on the incoming sample
	  times from Core Audio
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5140>

2023-08-05 17:45:17 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/soup/gstsouphttpsrc.c:
	  soup: use GST_PARAM_DOC_SHOW_DEFAULT for libsoup2-specific properties
	  Otherwise the value in the gst_plugins_cache.json will vary depending
	  on the libsoup version picked up at runtime.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/flv/gstflvmux.c:
	  flvmux: use version template in metadata creator properties
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/shout2/gstshout2.c:
	  shout2send: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-05 17:27:31 +0100  Tim-Philipp Müller <tim@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst-libs/gst/glib-compat-private.h:
	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: use version template in user-agent property
	  Avoids documentation churn when the version changes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5090>

2023-08-07 14:18:21 +0800  Wang Chuan <ouchuanm@outlook.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  gstadaptivedemux: fix memory leak
	  GstQuery leaks when using invalid url
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5154>

2023-08-04 18:26:35 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	  qmlgl: Can't use frame info if we don't have a frame
	  Fixes segfault accessing vinfo in: GST_VIDEO_FRAME_N_PLANES (&this->v_frame)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5148>

2023-08-04 15:11:05 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/qt/meson.build:
	* ext/qt6/meson.build:
	  meson: Fix searching of qt5/qt6 tools with qmake
	  If the pkg-config files are broken, we want to ensure that qmake is
	  used. This can easily happen on macOS with the official Qt binaries.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5147>

2023-08-04 13:02:21 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	* ext/qt/qtitem.cc:
	  qml: handle multiple items with different input formats
	  Issue was that Qt was caching multiple different shadersbased on a static
	  variable location.  This static variable location was the same no matter
	  the input video format and so if an item had an input video format of
	  RGB and another of RGBA, they would eventually end up using the same
	  GL shader leading to incorrect colours.
	  Fix by providing different static variable locations for each of the
	  different shaders that will be produced.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5145>

2023-07-20 17:04:22 -0400  Charlie Blevins <charlie.blevins@flocksafety.com>

	* gst/rtpmanager/gstrtpjitterbuffer.c:
	* tests/check/elements/rtpjitterbuffer.c:
	  rtpjitterbuffer: Allow earlier reference-timestamp-meta
	  Allow reference-timestamp-meta to be added earlier if an RTCP sender
	  report is sent before the first RTP packet.
	  Fixes #2843
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5084>

2023-08-02 21:17:26 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/gstqsgmaterial.cc:
	  qml/gl: fix array definition
	  Some implementations require the [N] to suffixed to the variable name.
	  Error message example: 'syntax error: Array size must appear after
	  variable name'
	  Follow up with https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5123
	  of https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5119
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5137>

2023-07-25 12:19:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Keep processing bitstream buffer
	  Bitstream buffers may no fit a single v4l2 buffer, following spec
	  recommendation, keep processing the buffer until all the data has been
	  queued.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100>

2023-07-25 12:19:22 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2: bufferpool: Fix buffer resize asserstion
	  When we fill a bitstream buffer the buffer might be too small to hold
	  the entire frame. Only resize to the filled size, preventing the
	  following assertion to happen.
	  gst_buffer_resize_range: assertion 'bufmax >= bufoffs + offset + size' failed
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5100>

2023-07-20 21:12:55 +1000  Matthew Waters <matthew@centricular.com>

	* docs/gst_plugins_cache.json:
	* ext/qt/gstqsgmaterial.cc:
	* ext/qt/gstqsgmaterial.h:
	* ext/qt/gstqsgtexture.cc:
	* ext/qt/gstqtoverlay.cc:
	* ext/qt/gstqtsink.cc:
	* ext/qt/meson.build:
	* ext/qt/qtitem.cc:
	* ext/qt/qtwindow.cc:
	* tests/examples/qt/qmloverlay/main.cpp:
	* tests/examples/qt/qmlsink/main.cpp:
	  qml: add support for non-RGBA formats as input format
	  Currently supported are RGBA, BGRA and YV12
	  Output is still RGBA textures
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5119>

2023-07-27 12:05:07 +0200  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Remove API lock
	  The various fields this was protecting were for the legacy design.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5113>

2023-07-12 12:37:34 +0200  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix premature EOS when some files are played in push mode
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2771
	  This EOS branch exists so that if a seek with a stop is made, qtdemux
	  stops accepting bytes from the sink after the entire requested playback
	  range is demuxed, as otherwise we could keep download content that is
	  not being used.
	  This patch fixes two flaws that were present in that EOS check:
	  1) A comparison was made between track time and movie time without conversion.
	  This made the check trigger early in files with edit lists. This patch fixes
	  this by converting the track PTS to movie PTS (stream time) for the check.
	  2) To avoid sending a EOS prematurely when the segment stop is within a GOP and
	  B-frames are present, the check for EOS should only be done for keyframes. I
	  gather this was already the intention with the existing code, but because it
	  used `stream->on_keyframe` instead of the local variable `keyframe` the old
	  code was checking if the *previous* frame was a keyframe.
	  It's interesting to note that these two flaws in the old code mask each other
	  in most cases: the track PTS will have reached the movie end PTS, but EOS would
	  only be sent if the previous frame was a keyframe. A simple case where they
	  wouldn't mask each other, reproducing the bug, is a sequence of 3 frame GOPs
	  with structure I-B-P.
	  The following validateflow tests have been added to future-proof the
	  fix:
	  * validate.test.mp4.qtdemux_ibpibp_non_frag_pull.default
	  * validate.test.mp4.qtdemux_ibpibp_non_frag_push.default
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5021>

2023-07-25 15:15:58 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	  videoflip: fix concurrent access when modifying the tag list
	  We were checking if the tag list is writable, but it may actually be
	  shared through the same event (tee upstream or multiple consumers).
	  Fix a bug where multiple branches have a videoflip element checking the
	  taglist. The first one was changing the orientation back to rotate-0
	  which was resetting the other instances.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5097>

2023-07-21 12:48:08 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: attach cbcs crypt info at the right moment
	  Before it was always added but that can cause issues when the stream begins
	  unencrypted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5085>

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/5049>

2023-07-05 18:46:25 -0600  Olivier Crête <olivier.crete@collabora.com>

	* scripts/gen-changelog.py:
	  gst-omx: Retire the whole package
	  The OpenMAX standard is long dead and even the Raspberry Pi OS
	  no longer supports it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4976>

2023-07-14 08:28:10 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/soup/meson.build:
	* meson_options.txt:
	  meson: Ensure that soup plugin is built on Windows
	  The libpsl subproject wasn't building successfully and CI didn't
	  notice because:
	  1. The plugin wasn't explicitly enabled
	  2. Even when the plugin is explicitly enabled, the dep is not required
	  at build time when not building a static plugin
	  So fix all of these issues.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5038>

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/5034>

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/5034>

2023-07-12 09:27:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* tests/check/meson.build:
	  meson: Always use forward slashes in defines with paths
	  Fixes the following build failure on MSYS2:
	  ```
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c: In function 'test_seeking':
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: error: incomplete universal character name \U
	  107 |   g_object_set (G_OBJECT (src), "location", TESTFILE, NULL);
	  |                                                     ^
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\A'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\s'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\g'
	  ../subprojects/gstreamer/tests/check/elements/filesrc.c:107:53: warning: unknown escape sequence: '\c'
	  ```
	  Due to: `-DTESTFILE=\"C:\\Users\\Administrator\[...]`
	  https://gitlab.freedesktop.org/nirbheek/gstreamer/-/jobs/45317733
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5018>

2023-01-31 15:52:42 +0100  Michael Tretter <m.tretter@pengutronix.de>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: always allocate CAPTURE buffer from our pool
	  The videoencoder base class always uses the negotiated allocator for allocating
	  coded buffers and ignores the negotiated buffer pool. Therefore, the
	  v4l2videoenc always has to copy buffers from the pool into the allocated
	  output buffers.
	  This breaks downstream elements that want to import the CAPTURE buffers of the
	  v4l2videoenc, since the v4l2videoenc copies the exported CAPTURE buffers and
	  sends the copies downstream.
	  Always use the CAPTURE buffer pool for acquiring CAPTURE buffers instead of
	  allocating the buffers in the base class.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4230>

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/5020>

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/5020>

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/5004>

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/4997>

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/4590>

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/4590>

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/4977>

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/4987>

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/4980>

2023-07-05 19:55:17 +0300  Sebastian Dröge <sebastian@centricular.com>

	* docs/gst_plugins_cache.json:
	  video: Move NV12_10LE40_4L4 before the BE variant on LE platforms
	  This keeps the sorting rules for the format list intact.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4974>

2021-05-26 12:37:21 +0200  Philipp Zabel <p.zabel@pengutronix.de>

	* ext/qt/qtglrenderer.cc:
	* ext/qt6/qt6glrenderer.cc:
	  qtglrenderer.cc: Add missing QCoreApplication and QEventLoop includes
	  This fixes a build error if Qt was build without accessibility support:
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:
	  In member function 'bool GstQuickRenderer::init(GstGLContext*, GError**)':
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:13:
	  error: 'QCoreApplication' was not declared in this scope; did you mean 'QApplication'?
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:31:
	  error: 'app' was not declared in this scope
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:341:37:
	  error: 'QCoreApplication' is not a class, namespace, or enumeration
	  [...]
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:458:5:
	  error: 'QEventLoop' was not declared in this scope; did you mean 'QEvent'?
	  ../../../../../gstreamer/subprojects/gst-plugins-good/ext/qt/qtglrenderer.cc:459:9:
	  error: 'loop' was not declared in this scope
	  If accessibility is enabled, the includes for QCoreApplication and QEventLoop
	  are indirectly pulled via QWidget.
	  Add the required headers as documented in [1] and [2].
	  [1] https://doc.qt.io/qt-5/qcoreapplication.html
	  [2] https://doc.qt.io/qt-5/qeventloop.html
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4815>

2023-06-28 15:51:15 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/libpng/gstpngenc.c:
	* ext/libpng/gstpngenc.h:
	  pngenc: Allocate a single GstMemory per frame
	  Previously, we would create a new GstMemory per write operation
	  and then append them to the GstBuffer. This would cause a reallocation
	  every 16 Memories which is an issue since the png encoder will usually
	  do write in a pattern of 4, 8 and 8k bytes repeating until the frame
	  is done.
	  Instead allocate a single GstMemory and keep writting it into it
	  with a manual index. Much like the jpegenc does.
	  Doing some basic testing With a testsrc snow pattern at 4k and 8k
	  the same pipeline would take ~3.30s to encode a 4k frame and ~23s
	  for an 8k. At 4k 0.70s/33% is taken by memory allocations, while at
	  8k its ~10.5s/45%.
	  With this patch, at 4k the pipeline takes ~2.40s and at 8k only 9.60s
	  making this 28% and 58% faster accordingly on my laptop, and
	  allocation runtime is dropped to subsecond times.
	  Here's the test pipeline used, increase num-buffers in image freeze
	  to gather more samples.
	  ```
	  gst-launch-1.0 videotestsrc num-buffers=1 pattern=snow ! imagefreeze num-buffers=1 ! \
	  video/x-raw,width=7680,height=4320 ! pngenc ! fakesink
	  ```
	  Close #2717
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4944>

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/4965>

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/4963>

2023-06-23 13:11:49 +0700  Arnaud Rebillout <elboulangero@gmail.com>

	  examples: gtk: Add example to illustrate usage of accept-certificate with souphttpsrc
	  The aim of this example is to show how to make use of the accept-certificate
	  signal from a GTK GUI, and prompt user in case of invalid certificate.
	  There are two subtleties to be aware of:
	  1. the signal is emitted from the GStreamer streaming thread, therefore the
	  caller can't modify the GUI straight away, instead they must do it from the
	  main thread (eg. by using g_idle_add())
	  2. in case of a redirection, then a TLS failure, the caller won't know
	  about the redirection. Actually, it's possible to be notified of the
	  redirection by watching "message:element" and inspecting http-headers,
	  but even in that case, the signal will be received *after* the signal
	  "accept-certificate" (even though the redirection happened *before*).
	  This second point is tricky. It's not uncommon to have servers that redirect
	  http requests to https. So errors of the type "HTTP -> HTTPS -> TLS error"
	  happen, and if the caller doesn't care about redirection, they might prompt
	  users with a message such as "TLS error for URL http://...", which wouldn't make
	  much sense.
	  This example shows how to handle that right, by connecting to the signal
	  "message:element", inspecting the http-headers, and in case of redirection,
	  updating the TLS error dialog to indicate that the request was redirected.
	  Here are a few examples of streams that exhibit TLS failure (at the time of
	  this commit, of course):
	  * https://radiolive.sanjavier.es:8443/stream: unknown-ca
	  * https://am981.ddns.net:9005/stream.ogg: unknown-ca
	  * http://stream.diazol.hu:7092/zene.mp3: redir then bad-identity
	  * https://streaming.fabrik.fm/izwi/echocast/audio/index.m3u8: unknown-ca
	  (this one is a HLS stream)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4925>

2023-03-16 22:32:11 +0700  Arnaud Rebillout <elboulangero@gmail.com>

	* docs/gst_plugins_cache.json:
	* ext/soup/gstsouphttpsrc.c:
	  souphttpsrc: forward accept-certificate signal from libsoup-3
	  With libsoup 2.x, it was possible to know when there was a TLS failure, as
	  libsoup provided the "special http status code" SOUP_STATUS_SSL_FAILED.
	  However these special codes were dropped with libsoup 3.x: now libsoup emits
	  the accept-certificate signal when there's a TLS failure.
	  This commit adds a signal "accept-certificate" to SoupHttpSrc, which is in fact
	  just about forwarding the signal from SoupMessage (which is, itself, forwarded
	  from GTlsConnection). Note that, in case of libsoup 2.x, the signal is never
	  emitted.
	  Fixes: #2379
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4925>

2023-06-27 10:42:21 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtpvp9pay.c:
	* tests/check/elements/rtpvp9.c:
	  rtpvp9pay: Only mark first outgoing packet as non delta-unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-27 10:40:47 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtpvp8pay.c:
	* tests/check/elements/rtpvp8.c:
	  rtpvp8pay: Only mark first outgoing packet as non delta-unit
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-22 11:17:48 +0200  Peter Stensson <petest@axis.com>

	* tests/check/elements/rtph264.c:
	  rtph264pay: Add unit tests verifying delta-unit flag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-22 11:06:02 +0200  Peter Stensson <petest@axis.com>

	* gst/rtp/gstrtph265pay.c:
	* tests/check/elements/rtph265.c:
	  rtph265pay: Only mark first NAL as non delta-unit
	  When the input buffer contained multiple NAL's the second one would keep
	  the non delta-unit flag for a key frame.
	  The delta-unit flag will now be set per NAL when preparing the buffer
	  list to payload.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4937>

2023-06-16 21:53:11 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpbin.c:
	* gst/rtpmanager/gstrtpbin.h:
	* gst/rtpmanager/gstrtpsession.c:
	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsession.h:
	  rtpsession: expose timeout-inactive-sources property
	  In some situations it is not desirable to time out when no data is
	  received any longer, users can opt in to this behavior via a new
	  property.
	  The property is also exposed on rtpbin and sdpdemux
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4880>

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

	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2object.h:
	  v4l2: Fix support for left and top padding
	  In the current implementation, we support for most pixel format left
	  and top padding by changing the offset in the video meta. Though, to
	  align driver bytesused to the offset, we recalculate the offset, which
	  removed the modification we did before.
	  Instead, save the plane size, and truncate the driver reported bytesused
	  to the expected size, which ensures that the offsets still match. This
	  should also fix issues were the buffer size ended up bigger then the
	  pool size due to driver introduced padding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4920>

2023-05-25 20:39:03 +0200  Matthieu Volat <mazhe@alkumuna.eu>

	* sys/oss/gstossaudio.c:
	* sys/oss/gstossaudioelement.c:
	* sys/oss/gstossaudioelements.h:
	* sys/oss/gstossdeviceprovider.c:
	* sys/oss/gstossdeviceprovider.h:
	* sys/oss/meson.build:
	  oss: add a GstDeviceProvider plugin
	  Based on Alsa's GstDeviceProvider structure, relies on sndstat
	  file for OSS device enumeration but uses already existing utils
	  to query caps and names.
	  Reviewed and thanks to @slomo
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4879>

2023-05-25 14:41:58 +0800  Elliot Chen <elliot.chen@nxp.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	  dashdemux2: fix some mpeg-ts issue with no audio output
	  For dashdemux2, one stream will create one track.
	  Maybe there are multiple tracks in one stream such as
	  some mpeg-ts streams, need add the function to check
	  and create the other tracks if needed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4706>

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/3914>

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/3914>

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/3914>

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/3914>

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/3914>

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/3914>

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/3914>

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/4903>

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/4894>

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/4875>

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/4875>

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/4875>

2023-02-05 21:55:52 -0500  Daniel Morin <daniel.morin@collabora.com>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2src: adding support for bayer 10,12,14,16
	  - Adding bayer 10,12,14,16 bits components with 16 bits storage. These
	  changes only adds capabilities. Capability format string is a complete
	  description of the frame and pixels layout. Only mapping LE bayer
	  formats as v4l2 only define LE bayer formats.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4852>

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

	* docs/gst_plugins_cache.json:
	  doc: Update plugin cache
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447>

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

	* sys/v4l2/ext/v4l2-common.h:
	* sys/v4l2/ext/v4l2-controls.h:
	* sys/v4l2/ext/videodev2.h:
	  v4l2: Sync headers to current media_stage
	  commit d78b9d6671decdaedb539635b1d0a34f8f5934f8
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3447>

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/4848>

2023-04-04 14:58:33 +0100  Mark Hymers <mark@livingoptics.com>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	  matroska: Add support for more pixel formats
	  - Add support for GRAY16_LE (using ffmpeg fourcc mapping)
	  - Update documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824>

2023-02-28 15:45:30 -0500  Daniel Morin <daniel.morin@collabora.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	  matroska: Add new pixels format support
	  - Add support for GRAY10_BE32
	  - Add support for RGBA64_LE and BGRA64_LE
	  Sponsored by Living Optics
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4824>

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/4842>

2023-04-29 16:20:13 +0100  Tim-Philipp Müller <tim@centricular.com>

	* gst/matroska/matroska-demux.c:
	* tests/check/elements/matroskademux.c:
	  matroska-demux: fix accumulated base offset in segment seeks
	  When doing a segment seek, the base offset in the new segment
	  would be increased by segment.position which is basically the
	  timestamp of the last packet. This does not include the duration
	  of the last packet though, so might be slightly shorter than the
	  actual duration of the clip or the requested segment.
	  Increase the base offset by the segment duration instead when
	  accumulating segments, which is more correct as it doesn't cut
	  off the last frame and makes the effective loop segment duration
	  consistent with the actual duration returned from a duration
	  query.
	  In case a segment stop was specified it's also possible that
	  some data was sent beyond the stop that's necessary for decoding
	  so the base offset increment should be based on that then and
	  not on the timestamp of the last buffer pushed out.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4604>

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/4790>

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/4811>

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/4792>

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/4792>

2023-05-08 16:55:26 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix critical message on cenc sample grouping parsing
	  Inside qtdemux_parse_sbgp there is already a check to ensure the fragment group
	  properties are not null but it is being hit in some examples and it is better to
	  directly avoid the critical.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4576>

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/4778>

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/4770>

2023-05-30 15:31:47 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt/meson.build:
	  build/android: remove all references to gnustl
	  Not needed anymore with NDK R25.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4747>

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/4739>

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/4742>

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/4756>

2023-03-07 14:05:54 +0100  Stéphane Cerveau <scerveau@igalia.com>

	* gst/multifile/meson.build:
	* tests/meson.build:
	  gstreamer-full: add full static support
	  Allow a project to use gstreamer-full as a static library
	  and link to create a binary without dependencies.
	  Introduce the option 'gst-full-target-type' to
	  select the build type, dynamic(default) or static.
	  In gstreamer-full/static build configuration gstreamer (gst.c)
	  needs the symbol gst_init_static_plugins which is defined
	  in gstreamer-full.
	  All the tests and examples are linking with gstreamer but the
	  symbol gst_init_static_plugins is only defined in the gstreamer-full
	  library. gstreamer-full can not be built first as it needs to know what plugins
	  will be built.
	  One option would be to build all the examples and tests after
	  gstreamer-full as the tools.
	  Disable tools build in subprojects too as it will be built at the end of
	  build process.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4128>

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

	* ext/qt6/qt6glrenderer.cc:
	  qt6/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/4728>

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/4728>

2023-05-18 10:25:44 +0900  Hyung Song <hyung.song@lge.com>

	* gst/audioparsers/gstaacparse.c:
	  aacparse: parse GASpecificConfig for channels
	  Some media have valid channel information in GASpecificConfig which is
	  not yet implemented in gstaacparse. Parse data according to ISO/IEC
	  14496-3 just enough to get channels.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4720>

2023-05-29 15:26:35 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	* tests/check/elements/flvmux.c:
	  flvmux: push metadata on caps change
	  The metdata contains tags but also caps dependent info such as the
	  resolution and the framerate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

2023-05-29 15:23:11 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	* gst/flv/gstflvmux.h:
	  flvmux: rename 'new_tags' to 'new_metadata'
	  The metadata contains more than just tags: resolution, framerate, etc.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

2023-05-29 15:21:27 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/flv/gstflvmux.c:
	  flvmux: add some logs when input is changing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4730>

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/4701>

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/4696>

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/4696>

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/4663>

2023-05-19 15:50:11 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>

	* docs/gst_plugins_cache.json:
	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* gst/alpha/gstalpha.c:
	* gst/multifile/gstimagesequencesrc.c:
	  doc: Fix newline char between authors
	  Found running `gst-inspect-1.0 -a |& grep -v ":" | grep @`
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4682>

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/4669>

2023-02-16 16:16:47 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	  qtdemux: Add support for SpeedHQ video codec
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3982>

2023-05-12 13:49:20 +1000  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glmixer.cc:
	* ext/qt6/gstqml6glmixer.h:
	* ext/qt6/gstqml6gloverlay.cc:
	* ext/qt6/gstqml6glsink.cc:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/meson.build:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmlmixer/main.cpp:
	* tests/examples/qt6/qmlmixer/main.qml:
	* tests/examples/qt6/qmlmixer/meson.build:
	* tests/examples/qt6/qmlmixer/mixer.qml:
	* tests/examples/qt6/qmlmixer/qmlmixer.qrc:
	  qml6: add a mixer element
	  Can take multiple input streams and a qml scene and layout the input
	  videos inside the qml scene.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4609>

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/4562>

2023-05-17 22:58:46 +0200  Ruben Gonzalez <rgonzalez@fluendo.com>

	* README.md:
	  README.md: fix current version
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4662>

2023-04-27 13:54:58 +0800  Hou Qi <qi.hou@nxp.com>

	* sys/v4l2/gstv4l2videoenc.c:
	  v4l2videoenc: fix set format failure when needs reset encoder
	  In cases that encoder needs to reset format, there is race while draining.
	  v4l2videoenc finish() sends CMD_STOP command to driver, and desire to return
	  GST_FLOW_OK. But at this time, encoder CAPTURE may have dequeued the last
	  buffer and got eos. finish() return value changes to be GST_FLOW_EOS which
	  causes set format fail. So there is no need to check return value for finish()
	  when set format.
	  Also need to flush encoder after draining to make sure flush is finished.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4495>

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/4634>

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/4637>

2023-05-12 13:27:19 +0300  Sebastian Dröge <sebastian@centricular.com>

	* ext/pulse/pulsesink.c:
	* ext/pulse/pulsesink.h:
	* ext/pulse/pulsesrc.h:
	  pulse: Change bitfield booleans to normal gbooleans
	  Assigning TRUE (1) to a signed 1 bit integer will cause truncation
	  from 1 to -1 because the only non-zero value that can be stored is -1
	  due to how two's-complement works.
	  As this is a proper GObject let's not bother with all this and simply
	  use a normal gboolean instead.
	  ../subprojects/gst-plugins-good/ext/pulse/pulsesink.c:1490:19: warning: implicit truncation from 'int' to a one-bit
	  wide bit-field changes value from 1 to -1 [-Wsingle-bit-bitfield-constant-conversion]
	  pbuf->in_commit = TRUE;
	  ^ ~~~~
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4617>

2023-05-12 13:12:04 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtpmanager/rtpjitterbuffer.c:
	  rtpjitterbuffer: Fix uninitialized variable compiler warning
	  It could indeed be used uninitialized, but only if one of the
	  g_return_val_if_fail() caused an early return.
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c: In function ‘rtp_jitter_buffer_append_query’:
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c:1234:10: warning: ‘head’ may be used uninitialized
	  [-Wmaybe-uninitialized]
	  1234 |   return head;
	  |          ^~~~
	  ../subprojects/gst-plugins-good/gst/rtpmanager/rtpjitterbuffer.c:1232:12: note: ‘head’ was declared here
	  1232 |   gboolean head;
	  |            ^~~~
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4616>

2023-05-11 20:01:45 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/osxvideosink.m:
	  macos: Set activation policy in osxvideosink and glimagesink
	  Upon creating a window, glimagesink and osxvideosink now set the policy to
	  NSApplicationActivationPolicyRegular, which lets us show an icon in the Dock
	  for convenience and appear in the top menu bar like other apps.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4573>

2023-05-10 22:35:27 +0200  Piotr Brzeziński <piotr@centricular.com>

	* sys/osxvideo/cocoawindow.h:
	* sys/osxvideo/cocoawindow.m:
	* sys/osxvideo/osxvideosink.h:
	* sys/osxvideo/osxvideosink.m:
	  macos: Remove old NSApp workaround related code
	  This is no longer needed since the introduction of `gst_macos_main()` in 1.22.
	  Before that existed, we had a patch for GLib in Cerbero, which did work but made it
	  impossible to update GLib at all. The code being removed was a fail-safe in case of
	  running without said patch being applied. It's no longer needed, since for macOS
	  we just wrap our GStreamer with an NSApplication using `gst_macos_main()`.
	  Warnings will be displayed if no NSApp/NSRunLoop is found wherever needed,
	  pointing the user towards using the new API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4366>

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/4560>

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/4560>

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/4559>

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/4555>

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/4582>

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/4582>

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/4537>

2023-05-04 18:58:13 +0100  Tim-Philipp Müller <tim@centricular.com>

	* ext/jack/gstjackaudioclient.c:
	  jack: tone down log ERRORs in case no JACK server is running
	  jackaudiosink and jackaudiosrc have a rank and might be plugged
	  as part of auto-plugging inside playbin and playsink or the
	  autoaudiosink/autoaudiosrc elements, so we don't really want to
	  spew ERROR log messages in that case, which is consistent with
	  what alsasink and pulseaudiosink do.
	  This is less noticable on Linux because pulseaudiosink has a
	  higher and alsasink which has the same rank comes before jack
	  in the alphabet.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4545>

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/4536>

2023-05-04 02:41:09 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp8pay.h:
	* gst/rtp/gstrtpvp9pay.c:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp8pay: rtpvp9pay: access picture_id property atomically
	  Atomically set and get the picture_id. This changeset only atomically gets
	  the picture-id when such property is queried on the element, on every other
	  place where it is accessed internally it is accessed directly.
	  This is because there is no MT scenario where we would be modifying this value
	  and reading it internally in parallel.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-03 20:53:41 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp9pay.c:
	* tests/check/elements/rtpvp8.c:
	  rtpvp8pay, rtpvp9pay: increment PictureID on FLUSH_START
	  In recent versions of Chrome (M106) a change on their jitter buffer means that
	  they are very susceptible to PictureID discontinuities.
	  Then avoid at all cost resetting the PictureID. Moreover, according to
	  the RFCs for VP8 and VP9 payloads; the PictureID can start off at any
	  random value. So there is no logical problem of incrementing it here
	  rather than resetting it, as long as it is a different PictureID.
	  WebRTC's recent corruption issue:
	  https://bugs.chromium.org/p/webrtc/issues/detail?id=15101
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-03 00:34:55 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp8pay, rtpvp9pay: expose picture-id as a property
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-02 22:21:34 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* tests/check/elements/rtpvp9.c:
	  rtpvp9pay: tests: remove unused struct and argument on test
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-05-02 21:45:48 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* docs/gst_plugins_cache.json:
	* gst/rtp/gstrtpvp9pay.c:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp9pay: add picture-id-offset property
	  Bring the VP9 payloader in sync in this regard to the VP8 payloader
	  Allowing setting the picture id to a known value is useful when testing.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:36:45 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp9pay.c:
	  rtpvp9pay: minor refactor of PictureID logic
	  This brings the logic inline with the vp8pay
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:25:57 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	  rtpvp8pay: avoid reseting PictureID if NO_PICTURE_ID mode is set
	  There is no logical change here, as `& (1 << nbits) - 1` would produce also 0
	  when NO_PICTURE_ID mode is choosen. However, this avoid computing a random
	  integer that is actually unused.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

2023-04-25 15:11:10 +0900  Camilo Celis Guzman <camilo@pexip.com>

	* gst/rtp/gstrtpvp8pay.c:
	* gst/rtp/gstrtpvp8pay.h:
	* gst/rtp/gstrtpvp9pay.h:
	  rtpvp8pay, rtpvp9pay: use GType like name for PictureIDMode
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>

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/4535>

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/4521>

2023-03-29 15:34:36 +0200  Carlos Rafael Giani <crg7475@mailbox.org>

	* tests/check/elements/qtdemux.c:
	  qtdemux: Only set appsink sync property and check for async state changes
	  By keeping async to TRUE, a deadlock is avoided where the appsink is
	  filled with data after a flushing seek but before its PAUSED->PLAYING
	  state change finishes. If that happens, the appsink is stuck, because
	  its internal condition variable waits for the appsink to have more room
	  for data. The basesink's preroll lock is held during this, and it also
	  tries to acquire that lock during the state change -> deadlock.
	  By keeping async to TRUE, this flood of data does not happen.
	  Also, setting the max-buffers property to 1 is unnecessary - the test
	  runner will anyway detect excess memory usage if it happens.
	  Other property adjustments turned out to just be redundant.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-03-03 12:10:38 +0100  Carlos Rafael Giani <crg7475@mailbox.org>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	* gst/isomp4/qtdemux_tags.c:
	* tests/check/elements/qtdemux.c:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-itunes.m4a:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-nero-with-itunsmpb.m4a:
	* tests/files/sine-1kHztone-48kHzrate-mono-s32le-200000samples-nero-without-itunsmpb.m4a:
	  qtdemux: Add audio clipping meta when playing gapless m4a content
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-02-27 20:36:20 +0100  Carlos Rafael Giani <crg7475@mailbox.org>

	* gst/isomp4/qtdemux_tags.c:
	  qtdemux: use qtdemux debug category instead of default in qtdemux_tags.c
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>

2023-04-28 16:06:24 +0100  Tim-Philipp Müller <tim@centricular.com>

	* REQUIREMENTS:
	* docs/gst_plugins_cache.json:
	* ext/amrnb/GstAmrnbEnc.prs:
	* ext/amrnb/README:
	* ext/amrnb/amrnb.c:
	* ext/amrnb/amrnbdec.c:
	* ext/amrnb/amrnbdec.h:
	* ext/amrnb/amrnbenc.c:
	* ext/amrnb/amrnbenc.h:
	* ext/amrnb/meson.build:
	* ext/amrwbdec/README:
	* ext/amrwbdec/amrwb.c:
	* ext/amrwbdec/amrwbdec.c:
	* ext/amrwbdec/amrwbdec.h:
	* ext/amrwbdec/meson.build:
	* ext/meson.build:
	* meson_options.txt:
	* tests/check/elements/amrnbenc.c:
	* tests/check/meson.build:
	  amrnb, amrwbdec: move AMR-NB and AMR-WB plugins to -good
	  Fedora ships these libraries as part of the main distribution now,
	  and they are decades old anyway so don't implement any of the newer
	  features.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4512>

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/4528>

2023-05-02 11:32:01 +0200  Xabier Rodriguez Calvar <calvaris@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix segfault in cenc sample grouping
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4523>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

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/4437>

2023-04-21 09:58:36 +0800  jeri.li <jeri.li@mediatek.com>

	* sys/v4l2/gstv4l2bufferpool.c:
	  v4l2bufferpool: add lock as atomic operation for seek
	  When seek flush, gst v4l2 buffer pool flush is not atomic which will
	  lead double enqueue buffer (qbuf) issue, and v4l2 buffer pool qbuf is
	  also not atomic which will lead no free buffer found in the pool.
	  1. add lock for calculate enqueue number in streamon function
	  2. add lock for v4l2 capture end streamoff in pool flush function
	  3. lock the whole funciton of v4l2 buffer pool qbuf, then the buffer
	  pool index and qbuf operation are atomic
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4465>

2023-04-27 22:12:15 +0800  Haihua Hu <jared.hu@nxp.com>

	* sys/v4l2/gstv4l2src.c:
	  v4l2src: fix cannot reuse current caps when fixate caps in negotiation
	  when regotiation happens, v4l2src will check if it can reuse current caps,
	  but we need check if current caps is subset of all query caps from downstream
	  instead of check it with query caps one by one.
	  Assuming that the current caps is not the subset of first caps from query caps,
	  it will go to try fmt. when try fmt success, v4l2src will make pending_set_fmt
	  to TRUE and going to reset.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4500>

2023-04-28 12:51:08 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjack.c:
	  jack: return TRUE during init when failing to dlopen
	  If we return FALSE, that means the plugin won't be tried again,
	  even if jack is available afterwards.
	  Followup to 689dbd1fbe43f293d7a46d5fa0fe1ddcfbea50d6
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4507>

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/4498>

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/4498>

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/4497>

2022-12-09 11:16:21 +0100  Sebastian Szczepaniak <s.szczepaniak@metrological.com>

	* gst/isomp4/fourcc.h:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_types.c:
	  qtdemux: Add support for cenc sample grouping
	  Co-authored-by: Xabier Rodriguez Calvar <calvaris@igalia.com>
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3551>

2023-03-19 15:35:29 -0300  Thibault Saunier <tsaunier@igalia.com>

	* docs/meson.build:
	  doc: Avoid shelling out to hotdoc to generate plugins config files
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4479>

2023-04-20 16:31:04 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	  videoflip: check that stream actually changed when resetting
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 14:19:29 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	* tests/check/elements/videoflip.c:
	  videoflip: reset orientation if not present in a tag update
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 14:06:19 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* gst/videofilter/gstvideoflip.h:
	* tests/check/elements/videoflip.c:
	  videoflip: handle tag list scopes
	  STREAM taglist can now overrides the orientation from the GLOBAL
	  taglist, but not the other way around.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-10 13:01:14 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/videofilter/gstvideoflip.c:
	* tests/check/elements/videoflip.c:
	  videoflip: reset orientation on new stream
	  Fix the following use:
	  - upstream sends a video with a rotation tag, say 90°
	  - upstream switches to another video without rotation
	  - the second video was still rotated by videoflip
	  Fix this by resetting the orientation when receiving STREAM_START.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-04-13 11:37:13 +0200  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* tests/check/elements/videoflip.c:
	  videoflip: add test rotating from tags
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4377>

2023-03-29 19:50:19 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjack.c:
	* ext/jack/gstjack.h:
	* ext/jack/gstjackaudioclient.c:
	* ext/jack/gstjackaudioclient.h:
	* ext/jack/gstjackaudiosink.c:
	* ext/jack/gstjackaudiosink.h:
	* ext/jack/gstjackaudiosrc.c:
	* ext/jack/gstjackaudiosrc.h:
	* ext/jack/gstjackloader.c:
	* ext/jack/gstjackloader.h:
	* ext/jack/meson.build:
	* tests/examples/jack/meson.build:
	  jack: Dynamically load libjack at runtime instead of linking
	  In order to provide build and provide the jack plugin with the prebuilt
	  binaries of gstreamer we distribute with releases, we can not depend
	  on an external dependency nor can we ship plugins linking to libraries
	  we don't provide.
	  We can also not provide jack ourselves, as it would likely cause a
	  mismatch with the jack daemon on the host.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4350>

2023-04-18 15:28:30 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* sys/v4l2/meson.build:
	  meson: Add a wrap file for libgudev
	  And allow fallback to it.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4447>

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/4436>

2021-12-23 18:23:57 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/deinterlace/gstdeinterlacemethod.c:
	* gst/deinterlace/gstdeinterlacemethod.h:
	* gst/deinterlace/tvtime-dist.c:
	* gst/deinterlace/tvtime-dist.h:
	* gst/deinterlace/tvtime.orc:
	* gst/deinterlace/tvtime/linear.c:
	* gst/deinterlace/tvtime/vfir.c:
	* gst/deinterlace/tvtime/weave.c:
	* gst/deinterlace/tvtime/weavebff.c:
	* gst/deinterlace/tvtime/weavetff.c:
	* gst/deinterlace/yadif.c:
	  deinterlace: Add support for high bitdepth planar YUV formats
	  Add C implementation for high bitdepth planar YUV formats
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1476>

2021-12-22 19:49:35 +0900  Seungha Yang <seungha@centricular.com>

	* gst/deinterlace/yadif.c:
	  deinterlace: yadif: Prettify indentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1476>

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/4433>

2023-04-13 00:55:46 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/rtpmanager/gstrtpmux.c:
	  docs: mark GstRTPMux as plugin API
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4408>

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/4411>

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/4317>

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/4317>

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/4317>

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/4109>

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/4404>

2022-11-22 23:06:02 +0900  Seungha Yang <seungha@centricular.com>

	* docs/gst_plugins_cache.json:
	* gst/udp/gstudp.c:
	* gst/udp/gstudpnetutils.c:
	* gst/udp/gstudpnetutils.h:
	* gst/udp/gstudpsink.c:
	* gst/udp/gstudpsrc.c:
	* gst/udp/gstudpsrc.h:
	* tests/check/elements/udpsrc.c:
	  udpsrc: Add support for IGMPv3 SSM
	  Adding "multicast-source" property to support Source Specific Muliticast
	  RFC 4604. The source can be multiple address with '+' (for positive
	  filter) or '-' (negative filter) prefix, or URI query can be used.
	  Note that negative filter is not implemented yet and it will be
	  ignored
	  Example:
	  gst-launch-1.0 uridecodebin \
	  uri=udp://{ADDRESS}:PORT?multicast-source=+SOURCE0+SOURCE1
	  Inspired by:
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2620
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3485>

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/4396>

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/4393>

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/4328>

2023-04-05 19:36:15 +0300  Jordan Petridis <jordan@centricular.com>

	* ext/jack/gstjackaudiosink.c:
	* ext/jack/gstjackaudiosrc.c:
	* ext/jack/meson.build:
	  jack: remove version guards from the code
	  We already require >= 1.9.7 in meson and thus we can remove
	  the older codepath.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4348>

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/3336>

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/4339>

2023-04-04 23:58:36 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  adaptivedemux: Don't parse URI unnecessarily
	  Short-circuit parsing and recreating the playlist URI if
	  no HLS directives are going to be applied to it.
	  Fixes problems playing some streams (YouTube) that have
	  unneeded escaped characters in the URI and then complain
	  when GStreamer removes the escaping
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4335>

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

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2object: Add support for YVU420M format
	  This is a multi-planar format with planes non contiguous in memory. It
	  is intended to be used only in drivers and applications that support the
	  multi-planar API.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4287>

2023-03-23 16:40:54 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtpjpegdepay.c:
	  rtpjpegdepay: fix logic error when checking if an EOI is present
	  We wouldn't add the missing EOI marker if the frame ended with
	  either 0xFF NN or 0xNN D9.
	  Fixes #2407
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4256>

2023-03-20 16:35:45 +0100  Piotr Brzeziński <piotr@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix seek adjustment with SNAP_AFTER flag
	  With GST_SEEK_FLAG_SNAP_AFTER present, the previous version would
	  adjust seek time based on the keyframe farthest away from desired_time.
	  This was incorrect, because we always want the *earliest* suitable keyframe
	  to seek to, not the last one.
	  With this fix, in case of the SNAP_AFTER, we now look for the closest keyframe
	  that can be found after desired_time. Behaviour for SNAP_BEFORE should remain
	  unchanged.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4183>

2023-01-31 16:02:03 +0100  Michael Tretter <m.tretter@pengutronix.de>

	* docs/gst_plugins_cache.json:
	* sys/v4l2/gstv4l2object.c:
	  v4l2object: mark jpeg as parsed
	  Assuming that V4L2 CAPTURE devices always use one buffer per JPEG image, we can
	  always mark JPEGs provided by a V4L2 element as parsed.
	  The V4L2 elements require that JPEG images sent to V4L2 OUTPUT devices must
	  always be parsed.
	  This is necessary to link a V4L2 CAPTURE device with a V4L2 OUTPUT device
	  without explicitly marking the stream as parsed or adding a jpegparse into the
	  pipeline.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4229>

2023-03-20 11:20:30 +0100  Edward Hervey <edward@centricular.com>

	* gst/rtp/gstrtph264pay.c:
	* gst/rtp/gstrtph265pay.c:
	  plugins: Fix wrong enum usage
	  gcc 13 now detects conflicting enum usages. Fix the various cases where it was wrong
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4225>

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/3972>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.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/3972>

2023-03-17 17:13:39 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/matroska/matroska-read-common.c:
	  matroskademux: Make gst_byte_reader_get_data() usage less confusing
	  This is effectively the same behaviour but retrieving 0 bytes of data is
	  confusing to read.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210>

2023-03-17 16:48:51 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/flac/gstflacenc.c:
	  flacenc: Fix mapping of GStreamer image tag type to FLAC image tag type
	  These enums are not compatible so just casting them does not work.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210>

2023-03-17 16:32:45 +0200  Sebastian Dröge <sebastian@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* sys/oss/gstossaudio.c:
	* sys/oss/gstosshelper.c:
	  plugins: Fix various trivial clang compiler warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210>

2023-03-16 20:54:14 +0100  Enrique Ocaña González <eocanha@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix crash on MSE-style flush
	  The flowcombiner and active_streams shouldn't be cleared in the
	  mse-bytestream variant, only in the mss-fragmented one. Otherwise the
	  soft reset leaves qtdemux in a state where it still believes that it has
	  streams, but they've been cleared. In that case, a null pointer
	  dereference happens and the app crashes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4199>

2023-03-15 18:52:48 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/flac/gstflacdec.c:
	* ext/gtk/gstgtkbasesink.c:
	* ext/jpeg/gstjpegdec.c:
	* ext/pulse/pulsesink.c:
	* ext/pulse/pulsesrc.c:
	* ext/pulse/pulseutil.c:
	* ext/wavpack/gstwavpackcommon.c:
	* gst/alpha/gstalpha.c:
	* gst/apetag/gstapedemux.c:
	* gst/audiofx/audioamplify.c:
	* gst/audiofx/gstscaletempo.c:
	* gst/audioparsers/gstac3parse.c:
	* gst/audioparsers/gstwavpackparse.c:
	* gst/avi/gstavidemux.c:
	* gst/avi/gstavimux.c:
	* gst/deinterlace/gstdeinterlace.c:
	* gst/flv/gstflvdemux.c:
	* gst/goom/mmx.c:
	* gst/imagefreeze/gstimagefreeze.c:
	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux_tags.c:
	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-mux.c:
	* gst/rtp/dboolhuff.c:
	* gst/rtp/gstrtph263depay.c:
	* gst/rtp/gstrtpmparobustdepay.c:
	* gst/rtp/gstrtpsv3vdepay.c:
	* gst/rtsp/gstrtspsrc.c:
	* gst/videofilter/gstvideotemplate.c:
	* gst/wavenc/gstwavenc.c:
	* sys/oss4/oss4-sink.c:
	* sys/v4l2/gstv4l2object.c:
	* sys/v4l2/gstv4l2transform.c:
	* sys/v4l2/v4l2_calls.c:
	* tests/check/elements/dtmf.c:
	* tests/check/elements/rtpvp8.c:
	* tests/check/elements/rtpvp9.c:
	* tests/check/elements/videocrop.c:
	* tests/check/elements/videofilter.c:
	* tests/check/elements/vp8enc.c:
	  gst-plugins-good: re-indent with GNU indent 2.2.12
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182>

2023-03-10 13:10:16 -0500  Arun Raghavan <arun@asymptotic.io>

	* docs/gst_plugins_cache.json:
	* gst/matroska/matroska-mux.c:
	  matroskamux: Set rate/channels in Opus template caps
	  For some reason these were missed, and if caps didn't have them, we would emit
	  an invalid Matroska file with a 0 value for Sampling Frequency or channels.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4151>

2023-03-10 12:06:08 -0500  Arun Raghavan <arun@asymptotic.io>

	* gst/rtp/gstrtpopusdepay.c:
	  rtpopusdepay: Assume 48 kHz if sprop-maxcapturerate is missing
	  This matches 7587, section 6.1:
	  >   sprop-maxcapturerate:  a hint about the maximum input sampling rate
	  >      [...]
	  >      bandwidths (Table 1).  By default, the sender is assumed to have
	  >      no limitations, i.e., 48000.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2354
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4151>

2023-03-09 15:08:19 +0200  Itamar Marom <imarom@trigoretail.com>

	* gst/multifile/gstsplitmuxsink.c:
	  splitmuxsink: Fix docs support version
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4138>

2023-03-06 19:56:08 +0000  Matt Feury <mattfeury@gmail.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Consider "451: Parameter Not Understood" when handling broken control urls
	  similar to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3854
	  it seems that some implementations return this when
	  the server does not implement URL handling correctly
	  this fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2334
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4123>

2023-03-03 23:15:42 +0900  Seungha Yang <seungha@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	  adaptivedemux2: Fix MSVC build error
	  downloadrequest.c(497): error C4013: 'atoi' undefined; assuming extern returning int
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4107>

2023-03-02 18:05:08 +0100  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Add MSE-style flush
	  The abort() method of SourceBuffer in Media Source Extensions is
	  expected to flush the demuxer and discard the current fragment,
	  if any. The configuration of tracks, if any, should be preserved.
	  qtdemux has different behavior for flush events depending on the
	  context.
	  This patch activates the intended behaviour only for streams of the
	  VARIANT_MSE_BYTESTREAM type, conformant to the ISO BMFF Bytestream
	  specification[1]. This flush behaviour is the same as the one
	  already in use for adaptivedemux sources.
	  [1] https://www.w3.org/TR/mse-byte-stream-format-isobmff/
	  https://bugzilla.gnome.org/show_bug.cgi?id=795424
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4101>

2023-02-22 17:18:11 +0800  Shengqi Yu <shengqi.yu@mediatek.com>

	* gst/matroska/matroska-demux.c:
	* gst/matroska/matroska-parse.c:
	  matroskademux: Consider TrackUID==0 a warning and not handle it as error
	  some special files whose trackUID is 0 can be played on the other
	  player. But it cannot be played in GStreamer, because trackUID 0 will be
	  treated as an error in matroskademux.
	  So, it makes sense to only consider trackUID==0 a warning and not handle
	  it as error
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1821
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4036>

2021-09-15 10:21:19 -0400  Scott Kanowitz <skanowitz@echo360.com>

	* gst/rtpmanager/gstrtpsession.c:
	  rtpsession: fix a race condition during the EOS event in gstrtpsession.c
	  This patch prevents a possible race condition from taking place between the EOS event handling and rtcp send
	  function/thread.
	  The condition starts by getting the GST_EVENT_EOS event on the send_rtp_sink pad, which causes two core things
	  to happen -- the event gets pushed down to the send_rtp_src pad and all sessions get marked "bye" prior to
	  completion of the event handler. In another thread the rtp_session_on_timeout function gets called after an
	  expiration of gst_clock_id_wait in the rtcp_thread function. This results in a call to the
	  ess->callbacks.send_rtcp(), which is configured as a function pointer to gst_rtp_session_send_rtcp via the
	  RTPSessionCallbacks structure passed to rtp_session_set_callbacks in the gst_rtp_session_init function.
	  In the race condition, the call to gst_rtp_session_send_rtcp can have the all_sources_bye boolean set to true
	  while GST_PAD_IS_EOS(rtpsession->send_rtp_sink) evaluates to false. This is the result of gst_rtp_session_send_rtcp
	  running before the send_rtp_sink's GST_EVENT_EOS handler completes. The exact point at which this condition occurs
	  is if there's a context switch to the rtcp_thread right after the call to rtp_session_mark_all_bye in the
	  GET_EVENT_EOS handler, but before the handler returns.
	  Normally, this would not be an issue because the rtcp_thread continues to run and indirectly call
	  gst_rtp_session_send_rtcp. However, the call to rtp_source_reset sets the sent_bye boolean to false, which ends up
	  causing rtp_session_are_all_sources_bye to return false. This gets passed to gst_rtp_session_send_rtcp and the EOS
	  event never gets sent.
	  The race condition results in the EOS event never getting passed to the rtcp_src pad, which prevents the bin and
	  pipeline from ever completing with EOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3798>

2023-02-23 11:18:44 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Use the correct vfunc for the `push-backchannel-sample` action signal
	  Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/446
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4050>

2023-02-22 22:18:48 +0900  Seungha Yang <seungha@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Fix assertion on caps update
	  GstQTMuxPad.configured_caps should be protected since it's
	  updated from streaming thread and accessed in aggregate thread
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4042>

2023-02-22 11:52:21 +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/ky.po:
	* po/lt.po:
	* po/lv.po:
	* po/mt.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:
	* po/zh_HK.po:
	* po/zh_TW.po:
	  gst-plugins-good: update translations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4040>

2023-02-16 21:31:59 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/dash/gstmpdclient.c:
	  dashdemux2: mpdclient: Debug all restrictions when selecting rep
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2023-01-29 20:00:45 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* docs/gst_plugins_cache.json:
	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstdashdemux.h:
	  dashdemux2: Add start-bitrate property
	  Similarly to hlsdemux2 that has this property, also add it to dashdemux2
	  so users can use it to choose first alternate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2022-11-13 18:12:51 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstmpdclient.c:
	* ext/adaptivedemux2/dash/gstmpdclient.h:
	* tests/check/elements/dash_mpd.c:
	  dashdemux2: Improve initial representation selection
	  Do not always start with lowest quality possible. Use properties set
	  by user to select best allowed initial representation at startup too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3894>

2023-02-05 16:21:57 +0100  Rafał Dzięgiel <rafostar.github@gmail.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Make start-bitrate property work without connection-speed
	  Makes "start-bitrate" work without setting "connection-speed" property. Having
	  another property set as a requirement for this one to work is unexpected.
	  This commit allows to request some initial bitrate for first segment, then
	  go into adaptive streaming for the rest of media playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3895>

2020-06-16 15:18:37 +0900  Hosang Lee <hosang10.lee@lge.com>

	* tests/check/elements/qtdemux.c:
	* tests/files/mss-fragment.m4f:
	  tests: qtdemux: add test for MSS fragment wrong data offset compensation
	  A data offset with an offset smaller than the moof length is wrong
	  in smooth streaming streams. The samples will not be located and
	  eventually playback will error out. So compensate assuming data
	  is in mdat following moof.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

2023-01-27 02:17:47 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/qtdemux.c:
	* tests/check/elements/qtdemux.h:
	* tests/files/qtdemux-test-BBB_32k_1.mp4:
	* tests/files/qtdemux-test-BBB_32k_init.mp4:
	* tests/files/qtdemux-test-audio-init.mp4:
	* tests/files/qtdemux-test-audio-seg1.m4f:
	  tests: qtdemux: use binary files for samples
	  Instead of hexdumping it in a 360k header file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

2020-06-16 15:18:37 +0900  Hosang Lee <hosang10.lee@lge.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: compensate wrong data offset for MSS fragments
	  A data offset with an offset smaller than the moof length is wrong
	  in smooth streaming streams.
	  The samples will not be located and eventually playback will
	  error out. So compensate assuming data is in mdat following moof.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3840>

2022-12-13 22:04:58 +0900  Seungha Yang <seungha@centricular.com>

	* gst/multifile/gstsplitmuxsrc.c:
	  splitmuxsrc: Proxy latency query to part reader
	  splitmuxsrc can respond to the latency query
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3566>

2023-02-13 12:47:31 -0800  Khem Raj <raj.khem@gmail.com>

	* sys/v4l2/gstv4l2object.h:
	  v4l2: Define ioctl_req_t for posix/linux case
	  this is an issue seen with musl based linux distros e.g. alpine [1]
	  musl is not going to change this since it breaks ABI/API interfaces
	  Newer compilers are stringent ( e.g. clang16 ) which can now detect
	  signature mismatches in function pointers too, existing code warned but
	  did not error with older clang
	  Fixes
	  gstv4l2object.c:544:23: error: incompatible function pointer types assigning to 'gint (*)(gint, ioctl_req_t, ...)' (aka 'int (*)(int, unsigned long, ...)') from 'int (int, int, ...)' [-Wincompatible-function-pointer-types]
	  v4l2object->ioctl = ioctl;
	  ^ ~~~~~
	  [1] https://gitlab.alpinelinux.org/alpine/aports/-/issues/7580
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3950>

2023-02-10 15:43:45 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Handle moov atom length=0 case by reading until the end
	  Previously it would fail to demux the file by trying to read G_MAXUINT64
	  bytes.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3934>

2023-02-10 15:35:15 +0200  Vivia Nikolaidou <vivia@ahiru.eu>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Fix guint vs gsize type confusion
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3934>

2023-02-03 11:25:29 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Use track ID for debugging
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890>

2023-02-03 11:23:50 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Split track id from event stream-id
	  The id is used for naming of the various objects and debugging. We don't
	  want/need it to be obfuscated with the massive upstream id.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890>

2023-02-02 16:48:05 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/gstqtmux.c:
	  qtmux: Implement writing of `av1C` version 1 box
	  Version 0 is ancient and not specified in any documents. Take it
	  directly from the `codec_data` if presents or otherwise try to construct
	  a reasonably looking `av1C` box.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882>

2023-02-02 16:28:47 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Drop av1C version 0 parsing and implement version 1 parsing
	  The av1C box is optional so dropping parsing does not break anything
	  fundamentally, and there seems to be no historical record how version 0
	  even looks like while the comments and the parsing disagreed with each
	  other.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882>

2022-11-14 10:49:02 +0100  Patricia Muscalu <patricia@axis.com>

	* gst/rtp/gstrtph264pay.c:
	* tests/check/elements/rtph264.c:
	  rtph264pay: Don't insert SPS/PPS before the second image slice
	  Only the first slice, for which fist_mb_in_slice is set to 0,
	  should trigger insertion of SPS and PPS buffers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3402>

2023-02-01 12:09:52 +0100  Enrique Ocaña González <eocanha@igalia.com>

	* gst/isomp4/qtdemux.c:
	* gst/isomp4/qtdemux.h:
	  qtdemux: Don't emit GstSegment correcting start time when in MSE mode
	  When using qtdemux in a pipeline that should only work as a pure demuxer (not
	  for actual playback), qtdemux shouldn't emit new GstSegments to correct
	  the start time (jump to the future) to ensure that the user experiences no
	  playback delay. By doing so, it's generating the wrong segments when an append
	  of data from the past happens. When that happens, downstream elements such as
	  parsers (eg: aacparse) may clip those buffers laying before the GstSegment and
	  create problems on the GStreamer client app (eg: WebKit).
	  Getting buffers clipped out because of the wrong GstSegments started becoming
	  a problen when this commit was introduced:
	  ab6e49e9cc audioparsers: add back segment clipping to parsers that have lost it
	  This clipping makes test DASH shaka 35 from MVT tests[1] to fail in
	  WebKitGTK/WPE (at least) and can potentially cause a number of other problems
	  in the WebKit Media Source Extensions (MSE) code.
	  Note that this new behaviour of not emitting new GstSegments only makes sense
	  when qtdemux is being used as a pure demuxer and not as part of a regular
	  pipeline. This is why the variant field has been added. When equal to
	  VARIANT_MSE_BYTESTREAM, it will make qtdemux behave differently in push mode,
	  taking decisions that meet the expectations for an MSE-like processing mode.
	  This kind of tweaks have been done in the past for MSS streams, for instance.
	  That code has been refactored to use VARIANT_MSS_FRAGMENTED now, instead of
	  its own dedicated boolean flag.
	  Co-authored by: Alicia Boya García <ntrrgc@gmail.com>
	  ...who suggested to use "variant: mse-bytestream" in the caps to identify that
	  mode, as proposed in her unmerged patch:
	  https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/467
	  [1] https://github.com/rdkcentral/mvt
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3867>

2023-01-25 11:07:43 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Remove enable-llhls property
	  This was only used for testing purposes
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 10:52:10 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Don't leak PDT datetime
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 10:08:50 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/mss/gstmssdemux.c:
	  adaptivedemux2: Don't leak taglist
	  Clarify the ownership in the documentation
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-25 07:46:22 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Don't leak track tags
	  The tags are fully transfered to this function
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-06 00:14:27 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	  adaptivedemux2: Log request duration in debug output
	  When completing, log how long a HTTP request took into the debug output.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:49:14 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Improve live playlist update intervals
	  The live playlists should be updated at a defined interval. The problem is that
	  this interval was used *after* the playlist was finally received and processed,
	  which resulted in a gradual shift happening in playlist updates.
	  Instead store and use the time at which playlists were requested to determine
	  when the next one should be downloaded.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Fix playlist reload interval when unchanged
	  When falling back to using the regular last segment, use that duration as the
	  identical-playlist reload interval (and not the playlist target duration which
	  could be much larger)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:40:40 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix position searching
	  The scanning is done in a reverse order, the proper full checks to do are
	  therefore:
	  * If the position is beyond half a "segment duration", it's in the following
	  segment
	  * If the position is within the first half of a segment, it's in that one
	  * If the segment is the first one and the position is within half a duration
	  backwards, we consider the position as being within that first segment
	  Also handle the case where a "partial only" segment doesn't have a reliable
	  duration, and therefore use the playlist target duration instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Handle all cases for starting segment calculation
	  The implementation wouldn't work with regular HLS streams (i.e. the final
	  fallback).
	  Now that the implementation uses time to search for the starting
	  segment (instead of just the n-th from the end), we can specify the correct
	  hold_back fallback value from the RFC
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 11:16:14 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix buffering threshold calculation and handling
	  * The checks for smaller values were wrong
	  * Properly initialize the stream default recommended buffering threshold so that
	  a default (10s) value is used until the subclass can provide a proper value
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-04 10:28:40 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Make sure simple media playlist is properly primed
	  By setting/propagating stream time initially
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-30 23:37:23 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  adaptivedemux2: Fix manifest access during seeking query
	  Avoid a deadlock if a downstream seeking query happens while the scheduler
	  thread is holding the manifest lock (for example during a seek back to live).
	  Instead, do a more elaborate fix where the external calls that need access to a
	  'manifest' access a copy that's updated during a manually triggered manifest
	  update callback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-03 21:15:21 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Symbol hygiene cleanup
	  Rename track_dequeue_data_locked() to
	  gst_adaptive_demux_track_dequeue_data_locked(), since it's non-static.
	  Make find_stream_for_track_locked() static since it's only used in the main
	  gstadaptivedemux.c file.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-03 21:03:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	  adaptivedemux2: Fix download error handling more
	  gst_adaptive_demux2_stream_finish_download() will already schedule another
	  fragment download if it can so don't fall through to the retry code that will
	  also try and schedule a download (triggering an assert).
	  Fix the logic in general to retry advancing into the live seek range once.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-02 22:32:13 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2: Immediately request playlist after URI changes
	  When the stream switches to a new playlist / variant while the loader is waiting
	  on a timer to refresh the old playlist, cancel the timer and submit the request
	  for the new URI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 22:13:05 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Re-add support for fallback variant URLs
	  fallback variant URLs get accumulated into a list in the variant now. If there's
	  one available, switch to it after a variant update failure (failure to load the
	  variant 3 times)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 00:51:55 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Demote log message
	  Don't complain loudly about replacing the current pending playlist, just log it
	  at debug level
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 00:51:02 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Wait for playlist load after a switch
	  Check in update_fragment_info() if the playlist we want has actually been loaded
	  yet, and return BUSY if not.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-30 23:39:46 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Handle async playlist loading failures
	  Add failed variant playlists to a list and failover to other variants until
	  there is none left
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 04:40:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Wait for playlist switch during seek.
	  When switching to/from an iframe variant to do seeking, wait for the target
	  playlist to load before handling the seek.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 02:01:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	  hlsdemux2/playlist-loader: Implement more features
	  Implement limited retries on download errors before reporting it, and remember
	  permanent redirects, with LL-HLS directives removed.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 00:45:15 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemuxdemux2: Consider the hold-back when calculating seek range
	  When calculating the seek range for a live stream, use the same hold-back logic
	  as when choosing a starting segment, including low-latency segments if
	  enabled. Permits seeking closer to the live edge when re-synching or catching
	  up.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-27 03:04:36 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Continue reworking code for async playlist updates
	  Everything is working again now except for corner cases:
	  - Failing over to another playlist after a load failure
	  - Remembering playlist redirects and using that URI
	  directly next time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 23:26:03 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Handle more async stream cases
	  Handle BUSY flow returns when making calls from external threads, and inhibit
	  fragment downloads during stream prepare
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-24 01:37:40 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Add llhls-enabled property to streams
	  Tidying: Make the llhls-enabled setting configurable through a stream property
	  instead of set manually after construction.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-24 01:36:52 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Add gst_hls_demux_stream_set_playlist_uri
	  Add a method that configures the new playlist URI for a stream.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2023-01-24 17:03:21 +0100  Edward Hervey <bilboed@bilboed.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-playlist-loader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Add HLS playlist loader
	  Add a helper that asynchronously loads and refreshes the playlist for HLS
	  streams.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 00:33:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivedemux2: Fix for failed download handling
	  When playing at the live edge of a live playlist, and a download fails, we don't
	  expect there to be a next fragment. That case is handled lower down anyway, so
	  don't retry infinitely on spurious http errors at the live edge.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-28 00:41:44 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Drop segment lock on stream_seek error.
	  If stream_seek() fails, make sure to drop the segment lock before bailing out.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-31 23:22:29 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add gst_adaptive_demux2_stream_wait_prepared()
	  Add a method that waits for a stream to signal the prepare_cond after it returns
	  a BUSY flow return.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-27 03:46:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Remove gst_adaptive_demux2_stream_has_selected_tracks
	  Use gst_adaptive_demux2_stream_is_selected_locked() instead, which is identical
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-25 03:39:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Move GST_ADAPTIVE_DEMUX_FLOW_BUSY to adaptivedemux.h
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-15 02:27:27 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  adaptivedemux2: Add start/stop vfuncs
	  Remove the can_start() vfunc, in favour of vfuncs when the stream starts/stops,
	  allowing the sub-class to do custom logic before (or preventing) the stream from
	  starting and stopping.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 02:17:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Remove unused function argument
	  Remove the demux argument from the
	  gst_hls_demux_stream_update_rendition_playlist() method
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 02:07:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	  adaptivedemux2: Add gst_adaptive_demux_get_loop()
	  Add an accessor function for retrieving the demuxer's scheduler thread loop.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 01:35:40 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-period.c:
	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add gst_adaptive_demux_period_add_stream()
	  Make a function for adding a stream to a period, for better encapsulation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-09 00:54:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Add new flow return value for BUSY and PREPARE stream state
	  Neither are used yet, they're just placeholders.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

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

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: support old compilers
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 03:01:14 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Place HLS delivery directives in UTF-8 order.
	  Use new GstURI gst_uri_to_string_with_keys() API to produce the playlist URI
	  with query arguments in UTF-8 order.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 02:59:48 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Avoid assert in _has_next_fragment()
	  gst_hls_demux_stream_has_next_fragment() can be called with a NULL
	  current_segment if we're past the end of the current playlist. In that case,
	  just return FALSE instead of hitting a critical in the playlist code.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-26 01:21:33 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Include skipped segments in MSN calculation
	  When a playlist has skipped segments, increment the MSN to account for them so
	  the remaining segments end up with the right sequence numbers.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-25 03:57:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Use partial segment for playlist update interval
	  When playing LL-HLS playlists in LL-HLS mode, update the playlist more often (on
	  the partial segment interval) or else we end up downloading them in bursts and
	  playing further from the live edge than intended.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-25 01:14:12 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Do a full playlist reload if delta fails
	  If we do a delta playlist request but then can't merge the result with the
	  existing playlist, retry with a full playlist request.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 04:35:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Fill in skipped segments if possible
	  After reloading a playlist using a delta request, use the previous playlist to
	  fill in skipped segments if possible.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 04:35:00 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add gst_hls_media_playlist_sync_skipped_segments()
	  Add a method that transfers over skipped segments from a reference playlist,
	  used to repopulate a delta playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 03:24:38 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Parse EXT-X-SKIP tag
	  Parse the attributes from the EXT-X-SKIP tag
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 01:55:48 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Use skip and blocking playlist delivery directives
	  Detect when we can use a blocking request and delta playlist update requests and
	  add the required delivery directives to the request URI.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 01:23:54 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add gst_hls_media_playlist_get_next_msn_and_part()
	  Add a function that computes the media sequence number and/or part index that
	  are immediately after the end of the playlist, for use in blocking playlist
	  requests
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 01:18:48 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	  hlsdemux2: Use stream llhls_enabled flag
	  Use the stream's copy of the llhls_enabled flag when deciding whether to do
	  preload requests - the value that was cached when the stream started
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-18 00:26:41 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemux.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-stream.h:
	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Split the stream object out
	  Move the stream object to a separate file to split the demux level behaviour
	  from the stream behaviour better.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-17 02:59:37 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Add a timestamp to the playlist
	  Store the timestamp for this playlist. If valid it represents the monotonic time
	  at which the data was retrieved, minus any proxy cache Age field.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-11-17 03:49:12 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2/downloadrequest: add a helper to retrieve the Age header
	  Add a method to look at HTTP response headers and parse and return any Age
	  header, provided by caching proxy servers if the data was provided from a cache.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-27 23:53:51 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Fix missed segment match for partial-only segment
	  Fix a case where the matching code might not select the final partial-only
	  segment because it has too short a duration (while it's still being created)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-27 03:44:29 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: In live, match buffering to the hold back distance
	  When playing a live stream, make the recommended buffering threshold at most the
	  hold-back distance from live. If we start 3 seconds from the live edge, there's
	  no point trying to buffer more - we'll just hit the live edge and have to wait
	  for more data to be available anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-25 01:03:16 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Resync stream time on partial segment boundaries
	  When resyncing stream times in a playlist, support at any partial segment
	  position, not just at full segment boundaries.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 23:32:56 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	  hlsdemux2: Calculate / transfer timing info for preloads
	  When fulfilling data requests, transfer timing information so the stream can
	  calculate data bitrates.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 23:30:59 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2: Add most recent data time and offset helper
	  Add a field to the DownloadRequest that reports the most recent time at which
	  data arrived. Update it in the DownloadHelper.
	  Add a method to retrieve the GST_BUFFER_OFFSET() for the DownloadRequest's data
	  buffer (if any).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 22:12:26 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	  adaptivedemux2: Handle another case in download_request_take_buffer_range
	  Handle the case where we want to get a range from the available data that
	  doesn't start at the first available byte (and discard the bytes before that
	  start offset).
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 22:01:55 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Cancel preload before fetching something else
	  When submitting a request for fragment or header that doesn't match any preload,
	  make sure there's not an ongoing preload for that data type, to avoid parallel
	  downloads using up bandwidth.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:41:21 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	  hlsdemux2: Fix assertion on shutdown
	  After cancelling a DownloadRequest, the download helper may not do so
	  immediately, so we can't assert on the in_use flag. Also, since there's no
	  refcount on the preload hint struct in the download request callback data, make
	  sure no callbacks will be dispatched when we're going to free the preload hint
	  struct.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:28:47 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Implement the stream submit_request() vfunc
	  Implement the submit_request() vfunc for streams and fulfil requests from the
	  preload hint data if possible.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:25:28 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.h:
	  hlsdemux2/preloader: Implement basic request handling
	  Implement fulfilment of HTTP requests from the active preload downloads by
	  finding any preload request that can provide the requested data and feeding
	  bytes from the internal DownloadRequest to the caller provided target
	  DownloadRequest.
	  Doesn't yet calculate timestamps to make the target request have a sensible
	  apparent bitrate.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-14 06:22:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/downloadrequest.h:
	  adaptivedemux2/downloadrequest: Add new methods
	  Add download_request_take_buffer_range() and
	  download_request_get_bytes_available() methods.
	  download_request_take_buffer_range() takes bytes from the front of the request
	  that satisfy the requested start/end byterange, and puts any remaining bytes
	  back into the DownloadRequest
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 21:35:00 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	  adaptivdemux2: Improve a comment about unlocking download requests.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 14:49:35 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-stream.c:
	* ext/adaptivedemux2/gstadaptivedemux-stream.h:
	  adaptivedemux2: Make download mechanism overrideable
	  Make the mechanism by which DownloadRequests are fulfilled overrideable by the
	  subclass, in case it has an internal mechanism it can use (such as blocking
	  preloads in HLS)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:19:57 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.c:
	* ext/adaptivedemux2/hls/gsthlsdemux-preloader.h:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/meson.build:
	  hlsdemux2: Add preloader helper.
	  Add a helper that submits and handles blocking preload requests for future
	  PART/MAP data from live playlists. Add handling in the hlsdemux stream to submit
	  preload requests when hitting the end of the available segments in a live
	  playlist.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:17:59 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add preload equality helper
	  Add a helper function that compares two preload hints for equality based on URI
	  and requested byte range.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-13 05:15:17 +1100  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/downloadhelper.h:
	  adaptivedemux2: Define RFC8673_LAST_BYTE_POS
	  Define the recommended value from RFC8673 for the last byte of an open-ended
	  range request intended to invoke chunked blocking downloads of an incrementally
	  created resource.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-17 02:12:21 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Ignore partial segments when not live
	  Add some checks that LL-HLS support is enabled and that the current playlist is
	  live before proceeding to play any partial segments.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-16 22:05:03 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Print playlist age in debug output
	  Store the timestamp when playlists are updated, and add some debug output to the
	  update_fragment_info that estimates how far from the live edge the fragment
	  currently is
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-13 05:44:24 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Implement LL-HLS flag and part-hold-back/hold-back in live.
	  Add a flag to hlsdemux to enable or disable LL-HLS handling.
	  When LL-HLS is enabled and an LL-HLS playlist is loaded, use the part-hold-back
	  threshold to choose a starting segment.
	  For live streams that aren't LL-HLS, use the provided hold-back attribute, or
	  fall back to landing 3 segments from the end.
	  Make the gst_hls_media_playlist_seek() method able to choose a partial segment
	  within 2 target durations of the end of the playlist when requested.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 05:00:32 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  m3u8demux2: Fix off-by-one and leak.
	  Fix an off-by-one in gst_hls_media_playlist_sync_to_playlist() that would ignore
	  the first fragment in the reference playlist.  The error was harmless, since we
	  expect the reference playlist to be older than the playlist we're
	  synchronising (so the first/oldest segment in the reference playlist will likely
	  not exist in the new playlist), so this is just for correctness.
	  Also fix a segment leak in gst_hls_media_playlist_advance_fragment() when
	  ignoring the partial_only segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:59:09 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Fix segment advance on partial segments.
	  Fix the duration passed to gst_adaptive_demux2_stream_advance_fragment() when
	  advancing from a partial segment.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:58:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Improve some debug output
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 04:56:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add and use gst_hls_media_playlist_find_position()
	  Add a function for synchronising current position with the contents of a
	  playlist that is specifically for that and can handle synchronising to a partial
	  segment.
	  gst_hls_media_playlist_seek() will be used only when performing external seek
	  requests, to find the best segment or partial segment at which to resume
	  playback.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 02:14:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Add debug in find_segment_in_playlist()
	  In m3u8 segment matching, print the PDT that was matched between playlists.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-12 02:11:34 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Fix some m3u8 segment leaks
	  Make sure unref m3u8 segments in some missed paths.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-07 15:02:26 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Allow starting at the partial_only segment
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-07 14:28:38 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Recalculate partial segments in anchor segment
	  When recalculating the partial segment stream times in
	  gst_hls_media_playlist_recalculate_stream_time(), don't miss the anchor segment
	  itself.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-07 14:27:47 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Dump init uri details for segments.
	  When dumping an m3u8 playlist to debug, include information about any
	  initialisation data.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-07 14:26:45 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: Use gst_hls_media_playlist_recalculate_stream_time()
	  Instead of recalculating stream times manually in a playlist, let the playlist
	  do it, so that it fixes up partial segment stream times too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-04 23:20:33 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	  hlsdemux2: LL-HLS improvements
	  Fixes for stream_time recalculation and handling in partial segments.
	  Disallow bitrate switching when in the middle of partial segments - only at a
	  full segment (or right before the first partial segment of a segment).
	  It's possible but more difficult to switch bitrates in the middle of a partial
	  segment group, since they are less likely to have aligned keyframes. In any
	  case, the seek code can't do that right now.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-08-04 05:37:59 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Continue implementing LL-HLS support
	  Somewhat working support for proceeding into the partial segments appearing at
	  the live edge of the playlist.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-07-30 00:47:18 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux-util.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Mark locations where partial segments need handling
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-22 00:15:04 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/gsthlsdemux.c:
	* ext/adaptivedemux2/hls/gsthlsdemux.h:
	  hlsdemux2: Start adding partial_segment handling
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-17 14:51:39 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Note STABLE-RENDITION-ID is not handled
	  Add a comment that STABLE-RENDITION-ID is not yet parsed or used.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-09 01:19:46 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: Calculate stream times for partial segments
	  When calculating stream times for segments, fill in the stream time fields on
	  any attached partial segments
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 23:48:31 +1000  Jan Schmidt <jan@centricular.com>

	* tests/check/elements/hlsdemux_m3u8.c:
	  hlsdemux2: Add unit test for parsing LL-HLS playlist
	  Test parsing of partial segments (EXT-X-PART, EXT-X-PART-INF) and preload
	  hints (EXT-X-PRELOAD)
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-09 00:39:13 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Implement preload hint parsing
	  Load EXT-X-PRELOAD-HINT into a preload_hints array in the media playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 14:33:56 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Implement EXT-X-SERVER-CONTROL parsing
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 01:35:44 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	* ext/adaptivedemux2/hls/m3u8.h:
	  hlsdemux2: Add parsing of partial segments
	  Add partial segments to each media segment, and potentially create a trailing
	  dummy segment if there are partial segments at the end of the playlist
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-06-08 23:08:24 +1000  Jan Schmidt <jan@centricular.com>

	* ext/adaptivedemux2/hls/m3u8.c:
	  hlsdemux2: make helper function for parsing times
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-12-08 08:17:56 +0100  Edward Hervey <edward@centricular.com>

	* ext/adaptivedemux2/gstadaptivedemux-private.h:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	  adaptivedemux2: Global output position is always positive
	  Change to non-signed GstClockTime for tracking
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883>

2022-10-03 15:19:16 -0300  Thibault Saunier <tsaunier@igalia.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/gstadaptivedemux-track.c:
	  adaptivedemux2: Generate proper stream-id taking into account upstream
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3160>

2023-01-24 15:58:24 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6gloverlay.cc:
	* ext/qt6/gstqml6gloverlay.h:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/gstqt6glutility.cc:
	* ext/qt6/gstqt6glutility.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glrenderer.cc:
	* ext/qt6/qt6glrenderer.h:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmloverlay/main.cpp:
	* tests/examples/qt6/qmloverlay/main.qml:
	* tests/examples/qt6/qmloverlay/meson.build:
	* tests/examples/qt6/qmloverlay/overlay.qml:
	* tests/examples/qt6/qmloverlay/overlay2.qml:
	* tests/examples/qt6/qmloverlay/qmloverlay.qrc:
	  qml6: implement qml6gloverlay
	  Based on the Qt5 version of qmlgloverlay.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3845>

2023-01-31 16:44:10 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/rtpmanager/gstrtpptdemux.c:
	  rtpptdemux: set different stream-id on each src pad
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3855>

2023-01-31 15:28:22 +0100  Guillaume Desmottes <guillaume.desmottes@onestream.live>

	* gst/rtpmanager/gstrtpssrcdemux.c:
	  rtpssrcdemux: set different stream-id on each src pad
	  All the RTP src pads were sharing the same stream-id while each actually
	  carry a different stream.
	  This was causing problem for example when funneling the streams together
	  and then trying to split them using 'streamiddemux'.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3855>

2023-01-31 16:56:18 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/rtsp/gstrtspsrc.c:
	  rtspsrc: Also consider "Method Not Valid In This State" error in broken control URL handling workaround
	  Some servers send a 455 error instead of any reasonable error when using
	  a correctly constructed control URL.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3854>

2022-12-22 18:11:19 +1100  Matthew Waters <matthew@centricular.com>

	* ext/qt6/gstplugin.cc:
	* ext/qt6/gstqml6glsrc.cc:
	* ext/qt6/gstqml6glsrc.h:
	* ext/qt6/gstqt6elements.h:
	* ext/qt6/meson.build:
	* ext/qt6/qt6glwindow.cc:
	* ext/qt6/qt6glwindow.h:
	* tests/examples/qt6/meson.build:
	* tests/examples/qt6/qmlsrc/grabqml.pro:
	* tests/examples/qt6/qmlsrc/main.cpp:
	* tests/examples/qt6/qmlsrc/main.qml:
	* tests/examples/qt6/qmlsrc/meson.build:
	* tests/examples/qt6/qmlsrc/qmlsrc.qrc:
	  qt6: add qml6glsrc element
	  Same functionality as qmlglsrc (Qt5) but for Qt6.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3737>

2020-01-02 22:24:36 +0100  Alicia Boya García <aboya@igalia.com>

	* gst/isomp4/qtdemux.c:
	  qtdemux: Use safer clearing functions in dispose()
	  In theory, `dispose()` functions should be idempotent and should be
	  prepared not to crash or cause a double-free if an unref done from
	  inside caused a recursive call to `dispose()` of the same object.
	  https://developer.gnome.org/gobject/stable/howto-gobject-destruction.html
	  This patch modifies the `dispose()` method to honor these constraints.
	  Since the double `dispose()` call won't actually occur in qtdemux (there
	  is no cycle detection mechanism that could invoke it to work that way),
	  this is more of a code cleanup than a user-facing problem fix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3822>

2021-09-23 10:00:45 +0200  Daniel Knobe <daniel-knobe@web.de>

	* docs/gst_plugins_cache.json:
	* gst/imagefreeze/gstimagefreeze.c:
	  imagefreeze: add bayer support
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3807>

2023-01-25 00:52:28 +0000  Pawel Stawicki <stawel+gstreamer@gmail.com>

	* sys/v4l2/gstv4l2object.c:
	  v4l2h264dec: Fix Raspberry Pi4 will not play video in application
	  Ensure object v4l2object->pool will be released by
	  correctly releasing the temporary thread-safety lock
	  Fixes issue #1729
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3786>

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/3708>

2023-01-24 22:50:37 +0100  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtp/gstrtpredenc.c:
	  redenc: fix setting of extension ID for twcc
	  1 was previously hardcoded in, and the bug went under the radar because
	  webrtcsink hardcodes the number too.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3785>

2023-01-08 17:40:11 +0000  Tim-Philipp Müller <tim@centricular.com>

	* tests/check/elements/rtpcollision.c:
	* tests/examples/rpicamsrc/webrtc-unidirectional-h264.c:
	  good: tests: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:38:17 +0000  Tim-Philipp Müller <tim@centricular.com>

	* sys/v4l2/gstv4l2allocator.c:
	* sys/v4l2/gstv4l2bufferpool.c:
	* sys/v4l2/v4l2-utils.c:
	  v4l2: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:36:33 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/xingmux/gstxingmux.c:
	  xingmux: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

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

	* gst/udp/gstmultiudpsink.c:
	  multiudpsink: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:33:50 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtpmanager/gstrtpmux.c:
	* gst/rtpmanager/gstrtpptdemux.c:
	* gst/rtpmanager/gstrtprtxreceive.c:
	* gst/rtpmanager/gstrtprtxsend.c:
	* gst/rtpmanager/rtpjitterbuffer.c:
	* gst/rtpmanager/rtpsession.c:
	* gst/rtpmanager/rtpsource.c:
	* gst/rtpmanager/rtptimerqueue.c:
	  rtpmanager: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:57 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/rtp/gstrtpmparobustdepay.c:
	* gst/rtp/gstrtpreddec.c:
	* gst/rtp/gstrtpredenc.c:
	* gst/rtp/rtpstoragestream.c:
	  rtp: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:29 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/multifile/gstsplitmuxpartreader.c:
	* gst/multifile/gstsplitmuxsink.c:
	* gst/multifile/gstsplitmuxsrc.c:
	  multifile: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:31:03 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/matroska/matroska-read-common.c:
	  matroska: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:27:38 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/flv/gstflvmux.c:
	* gst/flv/gstindex.c:
	* gst/flv/gstmemindex.c:
	  flv: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:27:21 +0000  Tim-Philipp Müller <tim@centricular.com>

	* gst/dtmf/gstdtmfsrc.c:
	* gst/dtmf/gstrtpdtmfsrc.c:
	  dtmf: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:26:17 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/vpx/gstvp8enc.c:
	* ext/vpx/gstvp9enc.c:
	* ext/vpx/gstvpxenc.c:
	  vpx: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:25:46 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/gdk_pixbuf/gstgdkpixbufsink.c:
	  gdkpixbuf: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:25:25 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/pulse/pulsesink.c:
	  pulseaudio: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-08 17:22:46 +0000  Tim-Philipp Müller <tim@centricular.com>

	* ext/adaptivedemux2/dash/gstdashdemux.c:
	* ext/adaptivedemux2/dash/gstmpdadaptationsetnode.c:
	* ext/adaptivedemux2/dash/gstmpdclient.c:
	* ext/adaptivedemux2/dash/gstmpdcontentcomponentnode.c:
	* ext/adaptivedemux2/dash/gstmpdparser.c:
	* ext/adaptivedemux2/dash/gstmpdrepresentationbasenode.c:
	* ext/adaptivedemux2/dash/gstmpdsegmentbasenode.c:
	* ext/adaptivedemux2/dash/gstmpdsegmenturlnode.c:
	* ext/adaptivedemux2/dash/gstmpdurltypenode.c:
	* ext/adaptivedemux2/dash/gstxmlhelper.c:
	* ext/adaptivedemux2/downloadrequest.c:
	* ext/adaptivedemux2/gstadaptivedemux.c:
	* ext/adaptivedemux2/gstadaptivedemuxutils.c:
	* ext/adaptivedemux2/mss/gstmssmanifest.c:
	  adaptivedemux2: drop use of GSlice
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695>

2023-01-23 12:01:00 +0100  David Svensson Fors <davidsf@axis.com>

	* gst/udp/gstudpsrc.c:
	  udpsrc: GstSocketTimestampMessage only for SCM_TIMESTAMPNS
	  Deserialize socket control messages as GstSocketTimestampMessage only
	  if (level, type) is (SOL_SOCKET, SCM_TIMESTAMPNS).
	  Without this patch, messages with types SCM_RIGHTS or SCM_CREDENTIALS
	  could be deserialized as GstSocketTimestampMessage instead of
	  GUnixFDMessage or GUnixCredentialsMessage from gio.
	  Fixes #1736
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3777>

2023-01-09 08:16:36 +0000  Hiero32 <unnoh@tkd.att.ne.jp>

	* docs/gst_plugins_cache.json:
	* gst/debugutils/gsttaginject.c:
	* gst/debugutils/gsttaginject.h:
	  taginject: Add scope property
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3697>

2023-01-23 23:04:53 +0000  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/3775>

=== release 1.22.0 ===

