=== release 1.26.9 ===

2025-12-01 17:27:07 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.9

2025-12-01 17:58:22 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/mxf/mxfmux.c:
	  mxfmux: Fix memset usage
	  This was supposed to clear the local, stack-allocated struct and not set another
	  pointer to NULL in a complicated way.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10255>

2025-11-20 12:42:48 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/unixfd/gstunixfdsrc.c:
	  unixfdsrc: Keep dmabuf mapped
	  The unixfdsrc has as equal use for CPU access and device access. Keeping the CPU
	  address mapping is preferable, with not down side for device access.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10164>

2025-11-20 12:41:10 -0500  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst-libs/gst/va/gstvaallocator.c:
	  va: allocator: Keep dmabuf mapped
	  VA buffers are rarely access from CPU, but if this is someone use case, it is
	  preferable to keep the CPU address mapping around since this isn't cheap to
	  create each time we map/unmap the buffer.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10164>

2025-12-01 13:00:14 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegtsdemux/tsdemux.c:
	  tsdemux: Consider DTS in private streams as audio instead of private
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10251>

2025-11-21 15:48:05 -0500  Dominique Leroux <dominique.p.leroux@gmail.com>

	* sys/applemedia/vtdec.c:
	  vtdec: Fix race condition in decoder draining. Fluster runs were unstable
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10231>

2025-10-15 06:49:03 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/sctp/sctpassociation.c:
	  sctp: Fix GMutex leak
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10141>

2025-10-15 04:35:27 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* sys/applemedia/vtenc.c:
	  vtenc: Fix a leak when setting caps
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10141>

2025-11-21 10:59:14 +0100  Hyunjun Ko <zzoon@igalia.com>

	* gst-libs/gst/vulkan/gstvkvideo-private.c:
	* gst-libs/gst/vulkan/gstvkvideo-private.h:
	  vkvideo-private: Replace GstBuffer with GstMemory array for video sessions
	  GstBuffer has a maximum limit on the number of memories it can hold
	  (GST_BUFFER_MEM_MAX, typically 16). However, Vulkan video sessions
	  can require more memories than this limit - for example, AV1 decoding
	  on ANV requires over 30 memories.
	  This fixes AV1 decoding on ANV and any other scenarios where video
	  sessions require more than 16 memory allocations.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10185>

2025-11-20 14:04:59 +0100  Hyunjun Ko <zzoon@igalia.com>

	* gst-libs/gst/vulkan/gstvkvideo-private.c:
	  vkvideo-private: fix to use correct index for picking a memory type
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10185>

2025-11-21 11:41:41 +0200  Sebastian Dröge <sebastian@centricular.com>

	* sys/aja/gstajasink.cpp:
	  ajasink: Remove parity bits from ancillary meta DID/SDID before passing further
	  The GstAncillaryMeta contains the parity bits but the AJA SDK expects them
	  without.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10171>

2025-11-20 13:48:16 +0100  Hyunjun Ko <zzoon@igalia.com>

	* ext/vulkan/vkh265dec.c:
	  vkh265dec: fix a typo
	  This fixes also H265 decoding with LTR on ANV.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10170>

2024-03-15 23:11:20 +1100  Jan Schmidt <jan@centricular.com>

	* gst/mpegtsmux/tsmux/tsmux.c:
	  mpegtsmux: Avoid infinite recursion writing PCR packets
	  If scheduling a PCR packet from tsmux_packet_out(), or
	  already writing one, don't do the PCR checks that can
	  recurse infinitely and crash.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10150>

2025-11-05 15:37:25 +0100  Jordan Yelloz <jordan.yelloz@collabora.com>

	* gst-libs/gst/play/gstplay.c:
	  gstplay: Fixed wrong initial configuration
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10122>

2025-11-17 10:24:17 +0900  dongjoo.kim <dongjoo.kim@lge.com>

	* gst/mxf/mxfffv1.c:
	  mxfdemux: Fix typo on mxf_ffv1_create_caps
	  In this section, the p value cannot be NULL, so it is dead code.
	  However, if you refer to the code in mxf_ffv1_get_track_wrapping,
	  you can see that you should check desc, not p.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10116>

2025-11-03 11:23:36 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/mpegts/gst-scte-section.c:
	  scte-section: fix missing cleanup and clarify event ownership on parse failure
	  Free only the allocated component when _parse_splice_component() fails,
	  leaving event cleanup to the caller to maintain proper ownership.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10093>

2025-11-12 16:53:32 -0800  Matthew Semeniuk <megaman22342@live.ca>

	* gst-libs/gst/vulkan/gstvkqueue.h:
	  vulkan: add G_DECLS to gstvkqueue
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10085>

2025-11-12 16:53:05 -0800  Matthew Semeniuk <megaman22342@live.ca>

	* gst-libs/gst/vulkan/gstvkcommandpool.h:
	  vulkan: add G_DECLS to gstvkcommandpool
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10085>

2025-06-18 14:25:17 +0900  dongjoo.kim <dongjoo.kim@lge.com>

	* gst/id3tag/id3tag.c:
	  id3tag: Fix resource leak
	  When latin1 is not NULL and latin1[0] is '\0'
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10067>

2025-10-31 16:59:45 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/analytics/gstanalyticsmeta.c:
	  analyticsmeta: Initialize span to avoid undefined behavior
	  Fix uninitialized scalar variable by setting 'span' when max_relation_span is non-negative.
	  Prevents potential issues when accessing adjacency matrix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10060>

2025-11-10 17:30:54 +0000  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.26.8

=== release 1.26.8 ===

2025-11-10 17:22:05 +0000  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.8

2025-11-10 13:21:43 +0100  Kevin Scott <kevin.scott@axis.com>

	* ext/dtls/gstdtlsconnection.c:
	  dtlsconnection: Increase DTLS MTU to 1200
	  Returning 0 defaults the MTU to 256 in OpenSSL, which is too small for some
	  handshake messages. An MTU of 1200 prevents certificate fragmentation
	  and potential message reordering. Chromium does something similar:
	  https://chromium.googlesource.com/external/webrtc/+/06b8f7e/rtc_base/openssl_stream_adapter.cc#259
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10055>

2025-06-16 16:40:07 +0900  dongjoo.kim <dongjoo.kim@lge.com>

	* gst-libs/gst/wayland/gstwllinuxdmabuf.c:
	  wayland: Fix using uninitialized value of data.wbuf
	  There are cases which it goes to "out" without initializing data.wbuf
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10052>

2025-11-04 13:48:12 +0200  Sebastian Dröge <sebastian@centricular.com>

	* gst/timecode/gstavwait.c:
	  avwait: Unify conditions between the different modes
	  And as part of that fix a couple of mode changes while running, e.g.
	  starting recording in video-first mode, then switching to running time mode and
	  only setting an end running time.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10040>

2025-11-05 12:37:42 +0200  Rares Branici <rares.branici@senstar.com>

	* gst-libs/gst/d3d12/gstd3d12converter.cpp:
	  d3d12converter: Initialize video_direction
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10024>

2025-11-05 12:37:01 +0200  Rares Branici <rares.branici@senstar.com>

	* gst-libs/gst/d3d11/gstd3d11converter.cpp:
	  d3d11converter: Initialize video_direction
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10024>

2025-10-31 10:51:48 +0100  Loïc Le Page <llepage@igalia.com>

	* gst-libs/gst/codecparsers/gsth264parser.c:
	* tests/check/libs/h264parser.c:
	  gsth264parser: fix uint32 to int32 truncation
	  The H264 parser is using int32 to compute the framerate numerator and
	  denominator while the SPS block holding the original values used for
	  this computation are stored on uint32. On corner cases it may lead to a
	  truncation of the final values leading to an invalid framerate.
	  This patch is shifting right the numerator and denominator until both
	  values may be stored on int32. It may introduce a small computation
	  error with odd values but negligeable taking into account the huge
	  initial values > max_int32.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9973>

2025-10-31 17:20:31 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* gst-libs/gst/mpegts/gst-scte-section.c:
	  scte-section: fix resource leak in splice component parsing
	  Free the `component` buffer in the error path of `gst_scte_section_parse()`
	  to prevent a memory leak when an error occurs after allocation.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9971>

2025-10-26 16:06:26 +0000  Jan Schmidt <jan@centricular.com>

	* gst/mpegtsmux/gstbasetsmux.c:
	* gst/mpegtsmux/tsmux/tsmuxstream.c:
	  mpegtsmux: Split large non-video PES packets
	  MPEG-TS PES packets have a maximum payload size of 65535 bytes
	  (including the header bytes). For larger incoming payloads,
	  split them into maximum-size PES packets. Video packets are
	  allowed to be unbounded
	  When breaking incoming buffers across PES packet payloads, only
	  the first should carry the incoming PTS/DTS
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9954>

2025-10-26 16:06:26 +0000  Jan Schmidt <jan@centricular.com>

	* gst/mpegtsmux/tsmux/tsmuxstream.c:
	  mpegtsmux: Use some named constants instead of hard-coded values
	  Make some code a bit more readable
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9954>

2025-10-29 14:17:28 +0900  jeongmin kwak <jeongmin.kwak@lge.com>

	* sys/v4l2codecs/gstv4l2decoder.c:
	  v4l2codecs: Free sub-request on allocation failure
	  If gst_vec_deque_pop_head() returns NULL, a new GstV4l2Request is allocated.
	  Free it on MEDIA_IOC_REQUEST_ALLOC failure to avoid memory leak.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9947>

2025-08-09 22:51:03 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2activator.cpp:
	  wasapi2: Tone down activation fail log
	  If there's no endpoint available, that failure is expected error
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9896>

2025-08-05 00:41:34 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2activator.cpp:
	* sys/wasapi2/gstwasapi2activator.h:
	  wasapi2: Handle GetActivateResult failure
	  Even if GetActivateResult() succeeded, activation result can fail.
	  Checks output HRESULT code as well
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9896>

2025-10-25 16:14:49 +0100  He Junyan <junyan.he@intel.com>

	* gst/videoparsers/gstav1parse.c:
	  av1parse: Fix duplicated frames issue in frame splitting
	  This fix a bug where we append two frames into one buffer despite trying to
	  split stream into unique frames.
	  Fixes #4701
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9906>

2025-04-01 14:46:23 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/codecalpha/gstalphacombine.c:
	  alphacombine: Only reset once both pads are done flushing
	  Since reset also removes the blocking pad probe, this meant that the
	  new mechanism only worked if the main pads received flush-stop first.
	  Keep both pad implementation symmetrical and reset once both pads
	  have received the event.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9905>

2025-10-16 14:34:48 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* gst/mpegtsmux/tsmux/tsmux.c:
	  tsmux: Reset PUSI flag after writing stream packet
	  Otherwise we might accidentally set it on a PCR-only packet when we pad
	  the stream on a subsequent write.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9899>

2025-10-16 11:35:57 -0400  Nicolas Dufresne <nicolas.dufresne@collabora.com>

	* gst/rist/gstristsink.c:
	  ristsink: Fix double free regression
	  The rtpext element was leaked in error path and fixed in MR !9756, but the
	  rtpext owner ship is later passed to a bin using gst_bin_add(). Ref-sync the
	  rtpext element so we can unref it in finalize() function without any special
	  cases.
	  Fixes #4707
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9859>

2024-09-21 00:53:11 +0200  Michael Grzeschik <m.grzeschik@pengutronix.de>

	* sys/uvcgadget/gstuvcsink.c:
	  uvcgadget: always ensure to switch to fakesink
	  In the case we transition the uvcsink to toggle between ready and
	  playing we have to ensure to always switch between fakesink and
	  v4l2sink.
	  Using the already linked v4l2sink a second time does curr ntly not work
	  when we restart the stream and therefor switch to streaming again.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9860>

2025-10-15 11:38:29 +0200  David Maseda Neira <david.maseda@cinfo.es>

	* ext/x265/gstx265enc.c:
	  x265enc: Calculate latency based on encoder parameters
	  Estimate latency based on lookahead queue depth + bframes + number of
	  encoding threads.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4697
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9852>

2025-10-14 18:34:39 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.26.7

=== release 1.26.7 ===

2025-10-14 18:25:43 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.7

2025-10-09 08:09:33 +0200  Branko Subasic <branko.subasic@axis.com>

	* gst/mpegtsmux/gstbasetsmux.c:
	  mpegtsmux: Properly check if pads are EOS in find_best_pad
	  In find_best_pad(), when checking if a pad is EOS we use the macro
	  GST_PAD_IS_EOS. But the aggregator pads will not propagate EOS received
	  on it's sinkpads until it has received EOS on all of them. Instead the
	  EOS event is put in the queue, which means that GST_PAD_IS_EOS will
	  return FALSE.
	  This makes find_best_pad() fail to find a best pad when all but one sink
	  pad has received EOS, and have no data left in their queues, and the
	  last one has data. The problem is solved by modifying find_best_pad() to
	  use gst_aggregator_pad_is_eos() instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9821>

2025-10-08 14:05:07 +0200  Branko Subasic <branko.subasic@axis.com>

	* ext/closedcaption/gstcea608mux.c:
	  cea608mux: Properly check if pads are EOS in find_best_pad
	  In find_best_pad(), when checking if a pad is EOS we use the macro
	  GST_PAD_IS_EOS. But the aggregator pads will not propagate EOS received
	  on it's sinkpads until it has received EOS on all of them. Instead the
	  EOS event is put in the queue, which means that GST_PAD_IS_EOS will
	  return FALSE.
	  This makes find_best_pad() fail to find a best pad when all but one sink
	  pad has received EOS, and have no data left in their queues, and the
	  last one has data. The problem is solved by modifying find_best_pad() to
	  use gst_aggregator_pad_is_eos() instead.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9821>

2025-10-07 12:25:07 +0100  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/webrtc/nice/nice.c:
	  webrtc: nice: Fix a use-after-free and a mem leak
	  `new_candidate` was freed too early and `new_addr` wasn't freed in case of early
	  return from the on_candidate_resolved function.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9816>

2025-09-26 16:58:38 +0900  Seungha Yang <seungha@centricular.com>

	* gst-libs/gst/cuda/gstcudanvrtc.cpp:
	  cuda: Fix runtime kernel compile with CUDA 13.0
	  Instead of hardcoded value, checks compute compatibility at runtime
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4655
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9769>

2025-09-22 12:00:32 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegtsdemux/tsdemux.c:
	  tsdemux: Directly forward Opus AUs without `opus_control_header`
	  ffmpeg does the same, assuming that it's raw Opus data.
	  ZLMediaKit is producing MPEG-TS like this and probably nobody ever noticed
	  because ffmpeg allows for this, so let's work around their bugs and handle it
	  the same way as ffmpeg.
	  See https://github.com/ZLMediaKit/ZLMediaKit/issues/4461
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4645
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9765>

2025-09-25 22:42:12 -0400  Doug Nazar <nazard@nazar.ca>

	* ext/lv2/gstlv2utils.c:
	* ext/teletextdec/gstteletextdec.c:
	* gst/rist/gstristsink.c:
	* gst/rist/gstristsrc.c:
	* sys/decklink/gstdecklinkvideosink.cpp:
	* sys/uvcgadget/gstuvcsink.c:
	  gst: Fix a few small leaks
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9761>

2025-09-24 19:37:00 +0900  Seungha Yang <seungha@centricular.com>

	* sys/d3d12/gstd3d12convert.cpp:
	  d3d12convert: Fix crop meta support
	  When in/output caps are identical, even if downstream didn't propose
	  pool, always respond to support crop meta
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9743>

2025-09-23 09:06:09 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst/mpegtsmux/gstbasetsmux.c:
	  tsmux: Write a full Opus channel configuration if no matching Vorbis one is found
	  Instead of simply failing negotiation despite the stream being supported.
	  Without this the following pipeline will fail:
	  audiotestsrc is-live=true ! audio/x-raw,channels=8 ! opusenc ! mpegtsmux ! fakesink
	  opusenc selects the Vorbis channel layout family but a channel-mapping that is
	  not one of the ones supported by the short MPEG-TS Opus channel configurations.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9733>

2025-09-22 10:09:48 +0800  Cheah, Vincent Beng Keat <vincent.beng.keat.cheah@intel.com>

	* sys/va/gstvacompositor.c:
	  vacompositor: Correct scale-method properties
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9726>

2025-09-08 17:50:32 -0400  Doug Nazar <nazard@nazar.ca>

	* ext/closedcaption/gstcea608mux.c:
	* gst/audiomixmatrix/gstaudiomixmatrix.c:
	* gst/debugutils/gsttestsrcbin.c:
	  gst: Don't use g_assert() around production code
	  If G_DISABLE_ASSERT is defined the code will not be compiled.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9721>

2025-09-16 19:00:47 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/isac/meson.build:
	  isac: Suppress warning about -Wno-virtual-dtor on Fedora
	  The absl pkgconfig files on Fedora contain -Wnon-virtual-dtor in
	  Cflags: even though pc files should not contain -W flags. Worse, our
	  plugin is written in C but that's a C++ argument so GCC emits
	  a warning about that.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9715>

2025-09-16 16:38:22 -0700  Xavier Claessens <xclaessens@netflix.com>

	* gst/unixfd/gstunixfd.c:
	* tests/check/elements/unixfd.c:
	  unixfd: Fix case of buffer with big payload
	  In the case a buffer has big meta serialization, for example if it
	  contains a GstBuffer, the payload cannot be sent/received in a single
	  call.
	  Idealy we should serialize metas into a memfd in that case, instead of
	  writing the data on the socket.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9706>

2025-09-16 15:24:22 +0900  Seungha Yang <seungha@centricular.com>

	* sys/d3d12/gstd3d12deinterlace.cpp:
	  d3d12deinterlace: Fix passthrough handling
	  Don't try to convert buffer when passthrough is enabled
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9696>

2025-09-14 13:19:28 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.26.6

=== release 1.26.6 ===

2025-09-14 13:13:58 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.6

2025-09-12 21:35:58 +0900  Seungha Yang <seungha@centricular.com>

	* gst-libs/gst/d3d12/gstd3d12memory-private.h:
	* gst-libs/gst/d3d12/gstd3d12memory.cpp:
	* sys/dwrite/gstdwriterender_d3d12.cpp:
	  dwrite: Fix D3D12 critical warning
	  When using convert + blend mode, the final render target resource
	  is also used as a source resource owned by our fence data storage.
	  As a result, the resource may not be writable if the conversion
	  command has not yet finished. To address this, add a private
	  method that allows setting the fence without a writability check
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9686>

2025-07-23 11:37:15 -0400  Xavier Claessens <xclaessens@netflix.com>

	* tests/check/elements/mpegtsmux.c:
	  mpegtsmux: Caps event fails with stream type change error
	  If mpegtsmux receives the same caps again, it wrongly claims the stream
	  type changed:
	  error: Stream type change from 06 to 8f not supported
	  This adds a unit test that demonstrate the issue in the very hacky way.
	  I have seen this happening with the below pipeline when upstream caps
	  changes. Since the caps filter fixates the caps received by opusenc and
	  mpegtsmux, the stream type cannot change.
	  ...
	  ! audioconvert
	  ! audio/x-raw,format=S16LE,channels=2,rate=48000
	  ! opusenc bitrate=128000
	  ! mpegtsmux
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9678>

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

	* gst/mpegtsmux/gstbasetsmux.c:
	  mpegtsmux: Use 'internal' stream_type to detect codec changes
	  The TsMuxStream internal_stream_type field stores the original
	  'full' stream type (such as Opus), while the stream_type field
	  stores the value that will actually be written into the MPEG-TS
	  packets according to the codec mappings. When checking if
	  input caps are changing stream type, check the original type.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9678>

2025-09-05 08:25:22 +0200  Ola Fornander <ola.fornander@axis.com>

	* ext/curl/gstcurlsmtpsink.c:
	  curlsmtpsink: adapt to date formatting issue
	  In glib 2.73.1, padding for %e in gdatetime was changed from "space"
	  to the Unicode character (U+2007). This violates rfc5322 (Internet
	  Message Format), which states that a message shall be composed of
	  characters in the range of 1 through 127 and interpreted as US-ASCII
	  characters. Hence, when using g_date_time_format, it is necessary to
	  instead write %_e to enforce space padding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9645>

2025-09-02 09:06:20 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/openh264/meson.build:
	  meson: Avoid pulling in gtest for openh264
	  Emits a big warning about wrapdbv1 and the updated wrap fails to build
	  on Windows. We don't need the tests anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9637>

2025-09-01 21:02:22 +0530  Nirbheek Chauhan <nirbheek@centricular.com>

	* ext/analyticsoverlay/meson.build:
	* ext/avtp/meson.build:
	* ext/codec2json/meson.build:
	* ext/iqa/meson.build:
	* ext/mdns/meson.build:
	* ext/openh264/meson.build:
	* ext/openjpeg/meson.build:
	* ext/qroverlay/meson.build:
	* ext/soundtouch/meson.build:
	* gst-libs/gst/webrtc/nice/meson.build:
	* meson.build:
	* sys/tinyalsa/meson.build:
	  meson: Convert all remaining fallback: usages to [provide]
	  Only commonly-used plugin deps like pango, orc, openh264, libvpx,
	  libnice are enabled by default.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1788
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9637>

2025-08-26 20:17:36 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264dec.c:
	* ext/vulkan/vkh265dec.c:
	  vulkanh26xdec: fix discont state handling
	  It fixes a couple tests in fluster for H.265 decoding.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9613>

2025-08-17 15:58:22 -0400  Daniel Morin <daniel.morin@collabora.com>

	* gst-libs/gst/analytics/gsttensormeta.c:
	  analytics: always add GstTensorMeta
	  Always add GstTensorMeta to buffer instead of re-using existing GstTensorMeta
	  when it's already present. The reason for the change is when we have cascaded
	  inference elements overwriting (tflite) or leaking (ONNX) GstTensorMeta when we
	  have cascaded inferences. We didn't create and API to append to GstTensorMeta
	  and I think it's more convenient to have a new GstTensorMeta for each
	  inferences. It's also more clear that a group of tensor was produced by one
	  inference but doesn't limit tensordecoders from using tensors produced by
	  multiple inference. I don't see much value in having all tensors data always
	  inside one GstTensorMeta since appending would mean re-allocation of the tensors
	  array anyway.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9601>

2025-08-19 11:15:29 +0100  Ian Napier <ian@digitaledgesubsea.com>

	* sys/decklink/gstdecklink.h:
	* sys/decklink/gstdecklinkvideosrc.cpp:
	  decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming
	  See #2611
	  When transitioning to PLAYING we call IDeckLinkInput::StartStreams() (via GstDecklinkInput::start_streams). This can
	  fail for various reasons, including if the hardware device is already in use.
	  Previously, we logged StartStreams() failure as an element error but otherwise continued to successfully transition to
	  PLAYING. Now, if StartStreams() returns an error we fail the state change.
	  If StartStreams() fails then a subsequent call to StopStreams(), when transitioning PAUSED to READY, will also fail.
	  Previously, if StopStreams() failed then the state change also failed. Unfortunately this prevented the element from
	  later being disposed, which in turn meant the associated hardware resources was never freed. Consequently, if a
	  decklinkvideosrc failed to transition PAUSED to READY, then the associated hardware device could not subsequently be
	  used by any other decklinkvideosrc.
	  Now, we log an element error if StopStreams() fails but otherwise consider the state change to have succeeded. This
	  means that the element can be disposed and the associated hardware resource released.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9592>

2025-08-15 13:02:57 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264dec.c:
	* ext/vulkan/vkh265dec.c:
	  vulkanh26xdec: fix debug category name
	  This is a regression from merge request !78011
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9562>

2025-08-15 12:06:45 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* ext/vulkan/vkh264dec.c:
	* ext/vulkan/vkh265dec.c:
	  vulkanh26xdec: re-negotiate after FLUSH
	  Vulkan decoders also have the same issue as VA decoders fixed in !9457, where
	  FLUSH event doesn't renegotiate downstream the pipeline.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9562>

2025-08-14 15:55:41 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* tests/check/elements/cccombiner.c:
	  tests: cccombiner: Test durationless buffers
	  Crashes without the previous fix.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559>

2025-07-17 14:40:47 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/closedcaption/gstcccombiner.c:
	  cccombiner: Don't crash when first frame has no duration
	  Aggregate again so the code above can determine the end time or EOS.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559>

2025-07-17 14:29:07 +0200  Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com>

	* ext/closedcaption/gstcccombiner.c:
	  cccombiner: Avoid dividing by zero framerate
	  This was broken in b29262e662b86cd76225894f7504ee505125fa49.
	  The `gst_util_uint64_scale` emitted a critical warning and returned
	  `GST_CLOCK_TIME_NONE`, so beyond removing the warning this fix does not
	  change behavior.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9559>

2025-08-12 21:27:53 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* tests/check/libs/vkimagebufferpool.c:
	  test: vkimagebufferpool: silence validation
	  The validation complained with
	  VUID-VkImageCreateInfo-usage-requiredbitmask]:
	  vkCreateImage(): pCreateInfo->usage is zero.
	  This patch force to use the internal defaults in vkimagebufferpool if no usage
	  is defined.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9546>

2025-08-12 14:24:12 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vulkan/gstvkphysicaldevice.c:
	  vkphysicaldevice: silence validation for features
	  With merge request !9438 the validation layer started to complain with
	  VUID-VkDeviceCreateInfo-pNext-02829
	  This patch fixes this ill-usage of Vulkan API, by removing the feature enabling
	  of sampler ycbcr conversion, since it was promoted since Vulkan 1.1, and in
	  GStreamer is only used in Vulkan Video operations, which are only enabled in
	  Vulkan 1.3+.
	  Also, these features detection and enabling were moved to a function called when
	  filling the physical device data, in order to check the API version of the
	  device driver before adding the enabling of the feature.
	  Finally, the getters were adapted to use the version feature structure if the
	  device driver version matches.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9546>

2025-08-11 22:54:29 +1000  Jan Schmidt <jan@centricular.com>

	* ext/hls/m3u8.c:
	  hlsdemux: Fix parsing of byterange and init map directives
	  Don't reuse the same offset and size variables when reading
	  the byterange out of a MAP directive, as it can overwrite
	  values from a pending BYTERANGE directive for the next
	  fragment URI.
	  Fixes problems where the EXT-X-MAP directive has been written
	  into the playlist between an EXT-X-BYTERANGE and the fragment
	  URI it applies to.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9541>

2025-08-08 17:38:33 +0800  Qian Hu (胡骞) <qian.hu@mediatek.com>

	* gst-libs/gst/wayland/gstwldisplay.c:
	  waylandsink: add some error handler for event dispatch
	  if wl client got last_error, wl_display_dispatch_queue_pending
	  will return -1, may lead to unhandled case, we should quit.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9537>

2025-08-08 07:13:24 +0200  Jan Alexander Steffens (heftig) <heftig@archlinux.org>

	* tests/check/elements/zbar.c:
	  zbar: tests: Handle symbol-bytes as not null-terminated
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4592
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9514>

2025-08-07 19:15:29 +0100  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.26.5

=== release 1.26.5 ===

2025-08-07 19:06:46 +0100  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.5

2025-08-07 13:58:27 +0300  Sebastian Dröge <sebastian@centricular.com>

	* gst-libs/gst/codecparsers/gstav1parser.c:
	  av1parser: Don't error out on "currently" undefined seq-level indices
	  They might very well be defined in the future and that shouldn't affect the
	  parsing in any way. Specifically, ffmpeg with `av1_nvenc` seems to create
	  `GST_AV1_SEQ_LEVEL_7_3` currently and parsing such streams would fail otherwise.
	  Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4589
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9504>

2025-08-01 14:55:12 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vulkan/gstvkphysicaldevice-private.h:
	* gst-libs/gst/vulkan/gstvkphysicaldevice.c:
	  vkphysicaldevice: enable sampler ycbcr, sync2 and timeline semaphore features
	  For the features VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR,
	  VkPhysicalDeviceSynchronization2Features and
	  VkPhisicalDeviceTimelineSemaphoreFeatures
	  The Vulkan specification states:
	  If the `VkPhysicalDeviceXXXFeatures` structure is included in the `pNext`
	  chain of the `VkPhysicalDeviceFeatures2` structure passed to
	  `vkGetPhysicalDeviceFeatures2`, it is filled in to indicate whether each
	  corresponding feature is supported. If the application wishes to use a
	  `VkDevice` with any features described by `VkPhysicalDeviceXXXFeatures`,
	  it **must** add an instance of the structure, with the desired feature members
	  set to `VK_TRUE`, to the `pNext` chain of `VkDeviceCreateInfo` when creating
	  the `VkDevice`.
	  And that was missing in the code.
	  Strangely, that functionality doesn't have a Valid-Usage ID assigned, so it
	  isn't caught by the validation layer.
	  This patch adds the structures in the physical devices to get them and later set
	  them in the device creation.
	  In order to link these features, videomaintenance1, and others to come, without
	  knowing if Vulkan 1.3 features are chained in the device properties structure, a
	  static and inlined function was added in gstvkphysicaldevice-private.h. It was
	  added in a header file to avoid compiler warnings if it's not used because of
	  old Vulkan headers.
	  Also the value dump videomaintenance1 was moved to another function to pack
	  there all these queried features.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9489>

2025-08-01 11:52:17 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* sys/va/gstvaav1enc.c:
	* sys/va/gstvah264enc.c:
	* sys/va/gstvah265enc.c:
	* sys/va/gstvavp8enc.c:
	* sys/va/gstvavp9enc.c:
	  vaXXXenc: fix potential race condition
	  VA encoders, at reconfiguration, have to check if the rate-control was changed
	  by the user, but since user parameters setting are in another thread, the
	  comparison was racy.
	  This patch locks the object to compare the current rate-control with the one set
	  by the user.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9484>

2025-05-29 13:20:59 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* gst-libs/gst/vulkan/gstvkdevice.c:
	  vulkan: ycbcr conversion extension got promoted in 1.1.0
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9482>

2025-08-01 01:03:10 +0900  Seungha Yang <seungha@centricular.com>

	* sys/d3d12/gstd3d12screencapturedevice.cpp:
	  d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration
	  Post device-changed instead of device-removed/device-added when
	  only HMONITOR or display position changed without actual device change.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9481>

2025-07-30 15:50:56 +0400  Marc-André Lureau <marcandre.lureau@redhat.com>

	* gst-libs/gst/d3d12/meson.build:
	* sys/d3d12/meson.build:
	  meson: d3d12: Add support for MinGW DirectXMath package
	  This is a similar issue that was found for d3d11:
	  https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6495
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9473>

2025-07-29 11:42:54 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvavp9dec.c:
	  vavp9dec: Always chain to parent class negotiate vmethod
	  When the base videodecoder class re-attempts a negotiation after flush, the
	  vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
	  situation the input state hasn't changed.
	  By always chaining up we are sure that buffer pool negotiation will always be
	  attempted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-29 11:42:44 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvajpegdec.c:
	  vajpegdec: Always chain to parent class negotiate vmethod
	  When the base videodecoder class re-attempts a negotiation after flush, the
	  vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
	  situation the input state hasn't changed.
	  By always chaining up we are sure that buffer pool negotiation will always be
	  attempted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-29 11:42:33 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvaav1dec.c:
	  vaav1dec: Always chain to parent class negotiate vmethod
	  When the base videodecoder class re-attempts a negotiation after flush, the
	  vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
	  situation the input state hasn't changed.
	  By always chaining up we are sure that buffer pool negotiation will always be
	  attempted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-28 12:52:22 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvabasedec.c:
	  vabasedec: Instrument negotiate function with debug statements
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-28 12:49:36 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvabasedec.c:
	  vabasedec: Always chain to parent class negotiate vmethod
	  When the base videodecoder class re-attempts a negotiation after flush, the
	  vabasedec `need_negotiation` flag isn't necessarily set to TRUE, because in that
	  situation the input state hasn't changed.
	  By always chaining up we are sure that buffer pool negotiation will always be
	  attempted.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-28 12:45:25 +0100  Philippe Normand <philn@igalia.com>

	* sys/va/gstvah264dec.c:
	  vah264dec: Spelling fix in warning debug statement
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-28 12:44:48 +0100  Philippe Normand <philn@igalia.com>

	* gst-libs/gst/codecs/gsth264decoder.c:
	  h264decoder: Spelling fix in warning debug statement
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9461>

2025-07-24 18:16:51 +0200  Víctor Manuel Jáquez Leal <vjaquez@igalia.com>

	* sys/va/gstvaav1enc.c:
	* sys/va/gstvah264enc.c:
	* sys/va/gstvah265enc.c:
	* sys/va/gstvajpegenc.c:
	* sys/va/gstvavp8enc.c:
	* sys/va/gstvavp9enc.c:
	  vaXXXenc: calculate latency with corrected framerate
	  Fixes: #4558
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9447>

2025-06-29 22:52:37 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2ringbuffer.cpp:
	  wasapi2: Fix various MinGW build warnings
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9428>

2025-06-29 20:45:51 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/AsyncOperations.h:
	* sys/wasapi2/gstwasapi2client.cpp:
	* sys/wasapi2/gstwasapi2client.h:
	* sys/wasapi2/gstwasapi2util.cpp:
	* sys/wasapi2/meson.build:
	  waapi2: Remove unused WinRT deps and implementations
	  Removing unused WinRT API based implementations
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9428>

2025-06-29 01:46:44 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2object.cpp:
	* sys/wasapi2/gstwasapi2object.h:
	* sys/wasapi2/gstwasapi2ringbuffer.cpp:
	* sys/wasapi2/gstwasapi2ringbuffer.h:
	* sys/wasapi2/gstwasapi2sink.c:
	* sys/wasapi2/gstwasapi2src.c:
	* sys/wasapi2/meson.build:
	  wasapi2: Port to IMMDevice based device selection
	  Because of a couple of issues reported related to WinRT device
	  enumeration, porting to IMMDevice device id based device selection.
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4311
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3936
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9428>

2025-06-27 21:36:53 +0900  Seungha Yang <seungha@centricular.com>

	* sys/wasapi2/gstwasapi2activator.cpp:
	* sys/wasapi2/gstwasapi2activator.h:
	* sys/wasapi2/gstwasapi2client.cpp:
	* sys/wasapi2/gstwasapi2device.c:
	* sys/wasapi2/gstwasapi2device.cpp:
	* sys/wasapi2/gstwasapi2device.h:
	* sys/wasapi2/gstwasapi2enumerator.cpp:
	* sys/wasapi2/gstwasapi2enumerator.h:
	* sys/wasapi2/gstwasapi2util.cpp:
	* sys/wasapi2/gstwasapi2util.h:
	* sys/wasapi2/meson.build:
	* sys/wasapi2/plugin.cpp:
	  wasapi2: Implement IMMDeviceEnumerator based enumerator
	  ... and merge wasapi2{capture,render}deviceprovider into single
	  wasapi2deviceprovider since we can enumerate input/output audio
	  devices at once using IMMDeviceEnumerator
	  This is a preparation for complete porting to Win32 API
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9428>

2025-06-01 00:02:16 +0900  Seungha Yang <seungha@centricular.com>

	* sys/d3d12/gstd3d12graphicscapture.cpp:
	* sys/d3d12/gstd3d12graphicscapture.h:
	* sys/d3d12/plugin.cpp:
	  d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
	  Multiple DispatcherQueues per thread seems to be causing OS handle leak
	  and random crashes were observed. Instead of creating
	  thread/DispatcherQueue per GstD3D12GraphicsCapture object,
	  reuse only single thread and DispatcherQueue
	  Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4351
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9424>

2025-07-16 15:33:19 +0200  Tim-Philipp Müller <tim@centricular.com>

	* meson.build:
	  Back to development after 1.26.4

=== release 1.26.4 ===

2025-07-16 15:26:21 +0200  Tim-Philipp Müller <tim@centricular.com>

	* NEWS:
	* RELEASE:
	* gst-plugins-bad.doap:
	* meson.build:
	  Release 1.26.4

2025-07-09 02:52:27 -0400  Doug Nazar <nazard@nazar.ca>

	* ext/avtp/gstavtpcrfbase.c:
	* ext/avtp/gstavtpcrfbase.h:
	  avtp: crf: Setup socket during state change to ensure we handle failure
	  Previously the socket would be created in the thread, which take some
	  time to start. As the tests were so short they would usually pass as
	  they don't actually use the socket.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9374>

2025-07-09 02:51:11 -0400  Doug Nazar <nazard@nazar.ca>

	* tests/check/elements/avtpcrfcheck.c:
	* tests/check/elements/avtpcrfsync.c:
	  avtp: crf: tests: Only run tests if packet socket is available
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9374>

2025-07-09 00:47:58 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtmp2/rtmp/rtmpclient.c:
	  rtmp2src: don't send window acknowledgement size commands twice
	  This causes servers such as AWS MediaLive to drop the connection, and
	  the message flow chart as documented in the "spec" always has the
	  server sending it first, and the client replying to it on reception of
	  the Set Peer Bandwidth, which we do since 286a3829b637.
	  Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9372>

2025-07-09 00:44:36 +0200  Mathieu Duponchelle <mathieu@centricular.com>

	* gst/rtmp2/gstrtmp2locationhandler.c:
	  rtmp2src: fix playback of URIs without a playpath
	  ffmpeg manages to play RTMP URLs in the form:
	  ```
	  protocol://servername:port/appname
	  ```
	  and does not require a second component to the path, adapt our code to
[--snip--]
