GStreamer 1.27.x Release Notes

GStreamer 1.27.x is an API/ABI-unstable development series leading up to the stable 1.28 series.

GStreamer 1.28.0 has not been released yet. It will be released in late 2025 or early 2026.

The current stable series is 1.26.

The latest development release towards the upcoming 1.28 stable series is 1.27.50 and was released on 09 December 2025.

1.27.50

The third API/ABI-unstable 1.27.x development snapshot release (1.27.50) was released on 09 December 2025 and marks the
beginning of our feature freeze in preparation of the upcoming 1.28 stable release.

Any newly-added API in the 1.27.x series may still change or be removed again before 1.28 and should be considered unstable
until 1.28 is released.

The 1.27.x release series is for testing and development purposes, and distros should probably not package it.

Highlighted changes in 1.27.50

-   Vulkan Video AV1 decoder
-   webrtcsink: add renegotiation support, and support for va hardware encoders
-   New ST-2038 ancillary data combiner and extractor elements
-   applemedia: VP9 and AV1 hardware-accelerated video decoding support, and 10-bit HEVC encoding
-   fallbacksrc gained support for encoded streams
-   flv: enhanced rtmp H.265 video support, and support for multitrack audio
-   glupload: Implement udmabuf uploader to share buffers between software decoders/sources and GPUs, display engines (wayland),
    and other dma devices
-   video: Add crop, scale, rotate, flip, shear and more GstMeta transformation
-   New task pool GstContext to share a thread pool amongst elements for better resource management and performance, especially
    for video conversion and compositing
-   analytics: New tensordecodebin element to auto-plug compatible tensor decoders based on their caps and many other additions
    and improvements
-   New Deepgram speech-to-text transcription plugin
-   Speech synthesizers: expose new “compress” overflow mode that can speed up audio while preserving pitch
-   Support new Speechmatics speaker identification API
-   ElevenLabs voice cloning element
-   New Qt6 QML qml6 render source element
-   appsink, appsrc: new bindings-friendly “simple” callbacks API
-   New element to calculate perceptual video quality assessment scores using Netflix’s VMAF framework
-   Add new metadata GstStream type and use in decodebin3 for KLV, ID3 PES and ST-2038 ancillary data
-   New MPEG-H audio decoding plugin plus MP4 demuxing support
-   The inter plugin wormhole sink and source elements gained new properties to fine tune the inner elements
-   hlscmafsink can generate I-frame only playlist now
-   New LCEVC H.266 encoder element
-   webrtc: add WHEP server signaller
-   Added “robust MPEG audio”, raw audio (L8, L16, L24), and ancillary metadata RTP payloaders in Rust
-   The Windows IPC plugin gained support for passing generic data in addition to raw audio/video, and various properties
-   New D3D12 interlace and overlay compositor elements
-   GStreamer AMD HIP integration functionality is now available in a helper library
-   Blackmagic Decklink elements gained support for capturing and outputting all types of VANC via GstAncillaryMeta
-   Replaygain R128 gain tags support
-   aws: URI handler for S3 URIs; dropped registration of rusotos3src and rusotos3sink
-   quinn: Support sharing of QUIC/WebTransport connection/session
-   validate: New plugin with a check-last-frame-qrcode action
-   clocksync: new “rate” property and “resync” action signal
-   debug logging: Add convenience macros around GstLogContext for logging things only once
-   Countless bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   Add gst_check_version() utility function for checking the current version at runtime
-   Add gst_call_async() and gst_object_call_async() variants
-   Add GstCpuId API to detect CPU features
-   aggregator: Prevent start time selection before reaching PLAYING
-   compositor, videoaggregator, videoconvertscale: add support for task pool context which allows applications to provide a
    task pool shared between all elements in pipelines for better resource management and performance
-   controller: Add threadsafe gst_timed_value_control_source_list_control_points()
-   context: Add a gst.task.pool GstContext type that can be shared between all elements in pipelines
-   GstClock: Add gst_clock_is_system_monotonic_clock()
-   device-monitor: Start providers in a separate thread + new GST_MESSAGE_DEVICE_MONITOR_STARTED
-   info: Add convenience macros around GstLogContext for logging once
-   info: Print thread ID instead of GThread handle on Windows/Linux/FreeBSD and pthread_t* elsewhere
-   object: Add gst_object_get_toplevel() to get the toplevel object
-   pad: add more accessors for GstPadProbeInfo fields / accessor for GstMapInfo data field
-   pad: make gst_pad_forward not O(n²) (backported into 1.26)
-   plugin: convert plugin loading mutex to recursive mutex
-   memory: Various API cleanups, deprecations and additions for consistency (and bindings)
-   streams: Add GST_STREAM_TYPE_METADATA for metadata streams (backported into 1.26)
-   streamcollection: Fix race condition between disconnecting notify proxy and notifications (backported into 1.26)
-   tags: add GST_TAG_TRACK_GAIN_R128 and GST_TAG_ALBUM_GAIN_R128: replay gain tags
-   value: Support 0b/0B prefix for bitmasks
-   value: add GstSet, a new unordered, unique container value type (used in tensor caps)

Build improvements, introspection fixes, leak fixes, clean-ups and other smaller improvements:

-   basetransform, basesrc: Fix handling of buffer pool configuration failures (backported into 1.26)
-   controller: Fix get_all() return type annotation (backported into 1.26)
-   factory: Move debug logging to clarify code
-   filesink: fix the build with recent mingw-w64 (backported)
-   info: Added parentheses to ensure proper evaluation of conditions in logging level checks (backported into 1.26)
-   info: Fix test pattern to check for an expected debug log line (backported into 1.26)
-   info: Forbid GST_LEVEL_MEMDUMP for GstLogContext logging
-   info: Force comparison to same types (backported into 1.26)
-   info: GST_CTX_MEMDUMP can invoke undefined behaviour
-   meta: throttle down warning about unregistered meta
-   metafactory: Use same parameter name in header and source file to make g-i happy
-   netclientclock: Fix memory leak in error paths (backported into 1.26)
-   parse: Move g_strfreev() a bit later to avoid use-after-free (backported into 1.26)
-   pipeline: Improve resource cleanup logic for clock objects (backported)
-   structure: Don’t crash if GArray has NULL value (backported into 1.26)
-   utils: Annotate temp array in gst_calculate_linear_regression() as such
-   utils: Fix leak in gst_util_filename_compare (backported into 1.26)
-   value: Add missing for symbol for builds without asserts/checks
-   value: Fix GstAllocationParams string conversion (used in debug logging) on 32-bit architectures (backported into 1.26)
-   vasnprintf: free dynamic tmp buffer on error to prevent memory leak (backported into 1.26)
-   Add G_GNUC_WARN_UNUSED_RESULT to constructors
-   Build fixes for projects that use -Wpedantic and -Wcast-qual
-   Clean up warnings when checks & asserts disabled
-   Clean up warnings when checks & asserts disabled in GstBase
-   Mark callback inout parameters as such
-   Mark functions WARN_UNUSED_RESULT where return is full transfer
-   GstAdapter: Add doc clarification regarding timestamps
-   Some more introspection fixes
-   meson: Add missing devenv values
-   libcheck: use SIGABRT instead of SIGKILL on timeout

Tools:

-   gst-launch-1.0: Do not assume error messages have a src element (backported into 1.26)
-   gst-launch-1.0: Print details of error message (backported into 1.26)
-   gst-inspect-1.0: Pretty print tensor caps

Core elements:

-   clocksync: Add rate property and resync action signal
-   multiqueue: Fix object reference handling in signal callbacks (backported into 1.26)
-   queue: Use GST_PTR_FORMAT everywhere for debug logging

gst-plugins-base

-   appsink, appsrc: Add new bindings-friendly “simple” callbacks API
-   audio-resample: enable SIMD optimisations when building with MSVC
-   audio: add U20_32 and S20_32 audio format
-   audiomixmatrix: Add sparse matrix LUT optimization
-   codec-utils: Add support for FLAC and AC4 in mime codec strings (backported)
-   decodebin3: Add a separate pad template for metadata streams and consider KLV, ID3 PES streams and ST-2038 streams as raw
    formats
-   glupload: Implement udmabuf uploader to share buffers between software decoders/sources and GPUs, display engines (wayland),
    and dma devices
-   giosrc: Fix race changing is-growing property
-   gl: Support DMABuf passthrough with meta:GstVideoOverlayComposition (backported into 1.26)
-   glupload: Set caps format to RGBA also on legacy dmabuf direct upload
-   opengl: Fix importation of padded textures
-   pbutils: Add ID3 metadata to codec descriptions
-   riff: Add channel reorder maps for 3 and 7 channel audio (backported into 1.26)
-   rtpbaseaudiopay: Consider RESYNC flag as discontinuity too (backported into 1.26)
-   rtpbuffer: Don’t mix different buffer / memory mappings when setting extension data
-   sdp: fix usage of gst_buffer_append (backported into 1.26)
-   video: Add crop, scale, rotate, flip, shear and more meta transformation
-   videoaggregatorpad: set thread count from pool max thread count in newly created video convert config
-   videoconverter: converter created with pool and no config should use pool max thread count
-   videoconverter: assume pool max thread count if no config provided
-   videorate: fix assert fail due to invalid buffer duration (backported into 1.26)
-   VideoOverlayCompositionMeta: Fix multiple composition meta usage

Build improvements, introspection fixes, leak fixes, clean-ups and other smaller improvements:

-   allocators: udmabuf: Only build if UDMABUF_CREATE and linux/dma-buf.h exist
-   alsasrc: use new gst_clock_is_system_monotonic_clock()
-   alsadeviceprovider: Fix device name leak (backported into 1.26)
-   audio: Re-order the all formats
-   audio: meta: Fix annotation for matrix on gst_buffer_add_audio_downmix_meta()
-   audioaggregator: Remove unnecessary event unref
-   audio-resampler-neon: Add missing stdint include
-   audiovisualizer: Use break instead of goto for escape logic (backported into 1.26)
-   compositor: Fix critical warning due to late debug category initialization
-   decodebin3: Clear previous collection on input (backported into 1.26)
-   decodebin3: Protect NULL dereference (backported into 1.26)
-   discoverer: Mark gst_discoverer_stream_info_list_free() as transfer full (backported into 1.26)
-   encoding-target: Fix memory leak in gst_encoding_target_save (backported into 1.26)
-   fdmemory: Add is_span implementation
-   fdmemory: Fix size calculation when sharing (backported into 1.26)
-   egl: Don’t crash for supported formats without modifiers
-   egl: fix memory leak in _print_all_dma_formats (backported into 1.26)
-   drmdumb, gldownload: Add KEEP_MAPPED flag to the allocated buffers (backported into 1.26)
-   glbasesrc: Add unlock handling for non-negotiated cases (backported into 1.26)
-   glcolorconvert: Fix memory leak in _create_shader (backported into 1.26)
-   gldisplay: Remove return caused by unnecessary conditional statement
-   glfiltershader: Add missing unlock (backported into 1.26)
-   glimagesink: Fix handling of odd height buffers (backported into 1.26)
-   glstereosplit: Add missing unlock for exceptional case (backported into 1.26)
-   gltestsrc: Fix memory leaks on shader creation failure (backported into 1.26)
-   glupload: dmabuf: Add missing texture target check
-   glutils: Remove logically dead code
-   id3: fix csets memory leak in string_utf8_dup (backported into 1.26)
-   opusdec: Unref intersected caps when empty to avoid leaks (backported into 1.26)
-   parsebin: Free missing plugin details and return failure when plugin is not found (backported into 1.26)
-   pbutils: Fix bit shifting when generate hevc mime codec string (backported into 1.26)
-   pbutils: Don’t throw critical for unknown mime codec (backported into 1.26)
-   playbin2: Remove logically dead code
-   qt: Fix building examples on macOS (backported into 1.26)
-   rtpbasedepayload: Add missing unlocks (backported into 1.26)
-   rtsp: fix memory leaks in gst_rtsp_connection_connect_with_response_usec (backported into 1.26)
-   samiparse: Remove structurally dead code
-   tag: use locale-independent number parsing in vorbistag
-   tcp: Edit README, remove “protocol=none”
-   tcp: drop unused parameter
-   test/profile: Use random profile names for load/save tests.
-   typefindfunctions: Remove logically dead code
-   uridecodebin3: Add null check of play items in purge (backported into 1.26)
-   urisourcebin: Add missing unlock (backported into 1.26)
-   urisourcebin: Fix initial values of min_byte_level and min_time_level variables (backported into 1.26)
-   videoaggregator: Don’t post have-context for internally created task pool
-   videoencoder: fix warning of uninitialized buffer (backported into 1.26)
-   videodecoder, videoaggregator: Fix handling of buffer pool configuration failures (backported into 1.26)
-   Add G_GNUC_WARN_UNUSED_RESULT to constructors
-   Annotate unused functions/variables when checks/asserts disabled
-   Can’t compile on FreeBSD because no linux/udmabuf.h exists (regression in main branch)
-   GstAudioBuffer, GstVideoFrame: Clear various fields on unmap
-   Clean up warnings when checks & asserts disabled
-   Documentation fixes
-   Fix build error with glib < 2.68 (backported into 1.26)
-   Mark functions WARN_UNUSED_RESULT where return is full transfer
-   Use new gst_call_async() and gst_object_call_async() functions

Tools:

-   gst-device-monitor-1.0: Print the type of each structure field
-   gst-play-1.0: fix printing of missing plugin details and try to install missing plugins if the distro supports it (partially
    backported into 1.26)
-   gst-play-1.0: Add missing unlock for invalid track type (backported into 1.26)

gst-plugins-good

-   aacparse: support streams which does not have frequent LOAS config (backported into 1.26)
-   cairooverlay: Fix multiple composition meta usage
-   deinterlace, goom: use GstCpuId instead of liborc to decide what SIMD optimisations to enable
-   flv: add support for multitrack audio in muxer and demuxer
-   flv: enhanced rtmp h265 support
-   hlsdemux2: error out instead of aborting on negative stream time (backported into 1.26)
-   hlsdemux2: Keep streams with different names (backported into 1.26)
-   id3metaparse: new element that parses timed ID3 metadata packets such as from MPEG-TS id3 metadata PES
-   mp4mux: Add support for E-AC3
-   mpg123audiodec: Always break the decoding loop and relay downstream flow errors upstream (backported into 1.26)
-   multifile: verify format identifiers in filename template strings (backported into 1.26)
-   osxaudio: Switch from device-id to unique-id everywhere, add a property for the transport type
-   osxaudio: Drop in io_proc on pause instead of removing it to fix potential deadlock
-   osxaudio: Various fixes, incl a potential crash when probing (backported into 1.26)
-   osxaudio: Core Audio deadlock
-   qml6: implement new element qml6glrendersrc
-   qtdemux: add support for MPEG-H Audio
-   qtmux: Fix robust recording estimates (backported into 1.26)
-   replaygain: Use R128 gain tags when available
-   rtpvp9pay: Fix parsing of show-existing-frame (backported into 1.26)
-   rtph263pay: Fix Out-of-bounds access (OVERRUN) (backported into 1.26)
-   rtph264depay: Implement support for MTAP16 / MTAP24
-   qtdemux: fix open/seek perf for GoPro files with SOS track (backported into 1.26)
-   splitmuxsink: accept pads named ‘sink_%u’ on the muxer (backported into 1.26)
-   v4l2: Add support for WVC1 and WMV3 (backported into 1.26)
-   v4l2transform: reconfigure v4l2object only if respective caps changed (backported into 1.26)
-   v4l2allocator: Add KEEP_MAPPED flag to the allocated buffers (backported into 1.26)
-   videobox, videocrop, videoflip: implement new video matrix meta transformation

Build improvements, introspection fixes, leak fixes, clean-ups and other smaller improvements:

-   adaptivedemux2: Fix a crash on rapid state changes, and startup busy waiting (backported into 1.26)
-   adaptivedemux2: Initialize start bitrate for dashdemux2 and hlsdemux2 (backported into 1.26)
-   audio: Re-order the all formats
-   audiodeinterlave, audiointerleave: add support for new U20_32 and S20_32 audio formats
-   audioparsers: Various memory and buffer handling fixes
-   flvmux: optimize strlen calls and add FLV spec compliance
-   isoff: fix fall through warnings
-   matroskamux, flvmux: Properly check if pads are EOS in find_best_pad (backported into 1.26)
-   matroskamux: Fix thread-safety issues when requesting new pads (backported into 1.26)
-   multifile: use new gst_call_async() and gst_object_call_async() variants
-   osxaudio: Remove unnecessary if, add comment about GstDevice lifetime (backported into 1.26)
-   qt: Fix building examples on macOS (backported into 1.26)
-   qtdemux: handle unsupported channel layout tags gracefully (backported into 1.26)
-   qtdemux: set channel-mask to 0 for unknown layout tags (backported into 1.26)
-   qtdemux: avoid rounding sample timestamps early
-   qtdemux: Use gst_util_uint64_scale to scale guint64 (backported into 1.26)
-   rtp: Fix usage of uninitialized variable (backported into 1.26)
-   rtpvp9depay: fix wrong event referencing, use same packet lost logic from neighboring vp8depay (backported into 1.26)
-   v4l2: Fix VYUY mapping
-   v4l2: Fix NULL pointer dereference in probe error path (backported into 1.26)
-   v4l2videoenc: Fix codec frame leak on error (backported into 1.26)
-   v4l2videoenc: fix memory leak about output state and caps (backported into 1.26)
-   v4l2videodec: clear source change flag after dequeuing source change event
-   v4l2: Add GstV4l2Error handling in gst_v4l2_get_capabilities (backported into 1.26)
-   v4l2: Extend the iterator range to VIDEO_NUM_DEVICES 256
-   v4l2: Fix memory leak for DRM caps negotiation (backported into 1.26)
-   wavparse: prevent setting empty strings as title tag (backported into 1.26)
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT (backported into 1.26)
-   Cleanup warnings when checks & asserts disabled
-   Mark functions WARN_UNUSED_RESULT where return is full transfer

gst-plugins-bad

-   Add Vulkan Video AV1 decoder
-   Add MPEG-H audio decoder plugin based on the Fraunhofer MPEG-H decoder implementation
-   Add tensordecodebin
-   applemedia: add P010_LE support to support 10-bit HEVC encoding via vtenc_hw
-   ajasink, decklinkvideosrc: Fix some GstAncillaryMeta handling bugs (backported into 1.26)
-   alphacombine: Only reset once both pads are done flushing (backported into 1.26)
-   analytics: Add tensor decoder element for yolo detection and segmentation models
-   analytics: Adding GstAnalyticsTensorMtd
-   analytics: batchmeta: Merge event/buffer/bufferlist into a single field
-   analytics: Implement Intersection-over-Union (IoU)-based tracker element
-   analytics: segmentation and object detection mtd: Implement new matrix meta transformation
-   analyticsoverlay: Add segmentation overlay
-   analyticsoverlay, vulkancompositor, d3d, dwriteoverlay: Fix multiple composition meta usage
-   asio: Implement device monitoring using USB events
-   audio: add support for new U20_32 and S20_32 audio formats
-   audiomixmatrix: Add sparse matrix LUT optimization
-   av1parse: Fix duplicated frames issue in frame splitting (backported into 1.26)
-   cea608mux, mpegtsmux: Properly check if pads are EOS in find_best_pad (backported into 1.26)
-   cc708overlay: Remove element, superseded by cea708overlay from gst-plugins-rs
-   closedcaption: Remove cc708overlay and move closedcaption plugin to section without external dependencies
-   classifiertensordecoder: Add pre-softmax mode
-   cudaconvert: Fix crop meta support
-   d3d12: Add interlace element
-   d3d12: Add overlay compositor element
-   d3d12: Upload/download optimization via staging memory implementation
-   d3d12convert: Fix crop meta support (backported into 1.26)
-   d3d12deinterlace: Fix passthrough handling (backported into 1.26)
-   d3d12overlayblender: Rectangle upload optimization
-   decklinkvideosrc/sink: Add support for outputting all VANC via GstAncillaryMeta
-   deinterlace: Improve pool configuration (backported)
-   dtlsconnection: Increase DTLS MTU to 1200 (backported into 1.26)
-   GstPlay: Fixed wrong initial position update interval configuration (backported into 1.26)
-   h264parse, h265parse, h266parse: Use VUI framerate when upstream framerate is 0/1
-   h266decoder: support vvc1 and vvi1 modes
-   h265parse: Add support for AUD insertion
-   hip: Move core methods to gst-libs library
-   hip: Generate gir files
-   id3tag: Fix resource leak (backported into 1.26)
-   lcevcencoder: Add lcevch266enc element
-   mfcapturedshow: fix for top-down RGB images
-   mxfvanc: Add support for non-closed-caption VANC
-   nvcodec: Ensure interlace is used only when required and supported
-   nvcodec: Add num-slices property to nvh264enc and nvh265enc
-   objectdetectionoverlay: In the presence of tracking Mtd, draw different colors
-   onnx: Port to use the ONNX Runtime C API and remove any C++ usage
-   tsdemux: support demuxing id3 metadata pes
-   tsdemux: Directly forward Opus AUs without opus_control_header (backported into 1.26)
-   tsmux: Write a full Opus channel configuration if no matching Vorbis one is found (backported into 1.26)
-   tsmux: Reset PUSI flag after writing stream packet (backported into 1.26)
-   unixfdsink: add num-clients property and notify on it when the number of clients changes
-   unixfd: Fix case of buffer with big payload (backported into 1.26)
-   unixfd, vs: Add KEEP_MAPPED flag to the allocated buffers to keep dmabufs mapped (backported into 1.26)
-   vmaf: add new element to calculate VMAF scores
-   v4l2object: Add support for colorimetry 1:4:16:3 - SMPTE170M / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC (backported)
-   vtdec: Add vp9 support
-   vtdec: Add support for AV1 hardware decoding
-   vtdec: Fix race condition in decoder draining. Fluster runs were unstable (backported into 1.26)
-   vulkan video: generate dynamically encoders/decoders pad templates at registry
-   wasapi2: Auto-select IAudioClient3 and pick shared-mode period
-   wasapi2: Preserve channel mask from device/mix format
-   waylandsink: Add udmabuf support
-   waylandsink: Add a fullscreen-output property
-   waylandsink: Implement GstVideoCropMeta support
-   waylandsink: handle flush stop event
-   webrtc: ice: Add support for getting the selected candidate pair
-   webrtcbin: Add a close signal
-   webrtcbin: Ensure ice-gathering-state reaches complete
-   webrtcbin: Optional support for async tasks and a potential critical warning fix
-   win32ipc: Rewrite plugin, add generic src/sink, and add various properties
-   x265enc: Calculate latency based on encoder parameters (backported into 1.26)

Build improvements, introspection fixes, leak fixes, clean-ups and other smaller improvements:

-   aja, d3d11ipc, d3d12ipc, cudaipc, win32ipc, unixfd: use new gst_clock_is_system_monotonic_clock()
-   analyticsmeta: Initialize span to avoid undefined behavior (backported into 1.26)
-   analytics: Fix build on MSVC by using libm dependency (backported into 1.26)
-   asiodeviceprovider: Fix deadlock on stop
-   audio: Re-order the all formats
-   avfassetsrc: Prevent access to released CMSampleBuffer
-   avwait: Unify conditions between the different modes (backported into 1.26)
-   codecparsers: fix h264 handling of scaling lists
-   cuda: Fix runtime kernel compile with CUDA 13.0 (backported into 1.26)
-   curlhttpsrc: Various fixes (backported into 1.26)
-   decklinkvideosink: Add some debug output for writing ancillary data
-   decklinkvideosink: Fix frame completion callbacks for firmware 14.3+ (backported)
-   dtsdec: use GstCpuId instead of liborc to decide which SIMD optimisations to enable
-   d3d11converter & d3d12converter: Initialize video_direction (backported into 1.26)
-   d3d12basefilter: Make device access thread-safe
-   d3d12converter: Apply background color even without mipmapping
-   d3d12swapchainsink: Fix flickering after resize
-   dwrite: Fix D3D12 critical warning (backported into 1.26)
-   examples: Vulkan video decoder SDL3 interop test
-   h264parser: fix uint32 to int32 truncation (backported into 1.26)
-   h265parse: Add debug logging for unknown H.265 values
-   hip: Fix loading of HIP libraries on Linux
-   isoff: fix fall through warnings
-   meson: Add missing devenv values
-   meson: Remove “allow_fallback: true” from non essential deps (aja, svtjpegxs)
-   midiparse: Fix a couple of potential out-of-bounds reads (backported into 1.26)
-   mpegtsdemux: add debug logs for various stream handling cases
-   mpegtsdemux: make sure to expose audio GstStream for DTS (backported into 1.26)
-   mpegtsdemux: Use some named constants instead of hard-coded values
-   mpegtsmux ID3 tag handling fixes and cleanup (backported into 1.26)
-   mpegtsmux: Avoid infinite recursion writing PCR packets (backported into 1.26)
-   mpegtsmux: Fix potential deadlock changing pmt-interval (backported into 1.26)
-   mssdemux: Clarify pad name cleanup in _create_pad()
-   mxfmpeg: Add custom Sony picture essence coding UL (backported into 1.26)
-   mxfmux: Create empty edit units for VANC packets without content or gap events
-   mxfmux: Fix memset usage (backported into 1.26)
-   mxfdemux: Fix typo on mxf_ffv1_create_caps (backported into 1.26)
-   nvenc: Fix tests resolution and typo for modern GPUs
-   onnxinference: Read Image.NominalPixelRange and other improvements
-   osxaudio: Various fixes, incl a potential crash when probing (backported into 1.26)
-   ristsink: Fix double free regression (backported into 1.26)
-   scte-section: fix missing cleanup on splice component parse failure (backported into 1.26)
-   scte-section: fix resource leak in splice component parsing (backported into 1.26)
-   tflitevsiinference: Replace renamed API
-   unixfd: Fix pointer casting on 32bit arch
-   uvcgadget: always ensure to switch to fakesink (backported into 1.26)
-   v4l2codecs: Free sub-request on allocation failure (backported into 1.26)
-   va: a couple of non-functional changes
-   va: build and other minor fixes
-   va: encoding minor fixes
-   va: move methods from encoder to display-priv
-   vaav1enc: add upscaledwidth value for SCC encoding
-   vacompositor: Correct scale-method properties (backported into 1.26)
-   vabasedec: Don’t assert when negotiating based on a gap event before the first buffer (backported into 1.26)
-   vaencoder: remove rt_format parameter from _open()
-   vaencoder: refactor in order to split open() in two stages
-   vaencoder and display-priv fixes
-   videoparser: Various memory and buffer handling fixes
-   vkdecoder: fix typo on MAINTENANCE2
-   vkh264enc: remove unused member variable
-   vkh265dec: Fix a typo (backported into 1.26)
-   vkphysical-device-private: add functions that are used repetitively
-   vkvp9dec: fix dpb_size calculation
-   vkvp9dec: fix resolution change NULL pointer dereference
-   vkvideo-private: Replace GstBuffer with GstMemory array for video sessions (backported into 1.26)
-   vulkan: Add missing G_DECLS symbols to gstvkqueue and gstvkcommandqueue (backported into 1.26)
-   vulkan: fix AV1 encode test with TILE_GROUP OBU
-   vulkan: fix bufferRowLength size for vulkan upload/download copy
-   vulkan, analyticsmeta: Various memory handling improvements
-   vulkan: initialize YUVUpdateData before memcpy
-   vulkan: zero-initialize ViewUpdate before use
-   vulkan: decoders handle events
-   vulkanupload: fix return error in raw to buffer method
-   wasapi2: Create background thread with normal priority
-   wayland: Fix using uninitialized value of data.wbuf (backported into 1.26)
-   waylandsink: increase wait time for configure event
-   webrtc: nice: Fix a use-after-free and a mem leak (backported into 1.26)
-   webrtc: Keep a ref of the ICEStream in the TransportStream (backported)
-   wpe2: Check for presence of wpe-platform.h
-   Add G_GNUC_WARN_UNUSED_RESULT to constructors
-   Annotate unused functions/variables when checks/asserts disabled
-   Cleanup warnings when checks & asserts disabled
-   Documentation fixes
-   Fix all compiler warnings on Fedora (backported into 1.26)
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT (backported into 1.26)
-   Fix a few small leaks (backported into 1.26)
-   Mark functions WARN_UNUSED_RESULT where return is full transfer
-   Use new gst_call_async() and gst_object_call_async() variants

gst-plugins-ugly

-   a52dec: use new GstCpuId API instead of liborc to determine what SIMD optimisations to enable
-   rmdemux: Remove unnecessary condition (backported into 1.26)
-   Cleanup warnings when checks & asserts disabled

GStreamer Rust plugins

-   Add ST-2038 ancillary metadata combiner and extractor element (backported)
-   New deepgram speech-to-text transcription plugin
-   analytics splitter/combiner: Remove the separate fields to events and buffer (backported)
-   audiornnoise: copy input metadatas to ouput buffer (backported)
-   aws: Drop registration of rusotos3src and rusotos3sink
-   aws: Support the use of S3 compatible URI
-   awstranscriber2/awstranslate: enrich awstranslate/raw message
-   awstranscriber2, awstranslate: Post error message on connection error
-   awstranscriber2: refactor to match speechmatics transcriber design
-   aws, webrtc, cargo: Remove all constraints on AWS SDK and tune optimizations (backported)
-   cctost2038anc: Support alignment (backported)
-   cea608overlay: Support non-system memory correctly (backported)
-   cea708: Non-relative positioning implementation
-   dav1d: Various fixes to allocation query handling (backported)
-   elevenlabs: implement new voice cloner element
-   fallbacksrc: Add support for encoded outputs
-   fallbacksrc: Fix custom source reuse case (backported)
-   fallbacksrc: Fix sources only being restarted once (backported)
-   fallbacksrc: Post no-more-pads signal for streams-unaware parent (backported)
-   fmp4, mp4: Merge into a single isobmff plugin
-   gifenc: Avoid unnecessary flush/reset on caps change for fields we do not use
-   gif: Update to gif 0.14 (backported)
-   gitignore: add .helix (helix editor configuration dir)
-   gtk4: Add property to control reconfigure on window-resize behavior (backported)
-   gtk4: Fix compile warning (backported)
-   gtk4: Implement cropped imports without viewport (backported)
-   hlscmafsink: Add support for I-frame only playlist
-   hlscmafsink and fmp4mux’s hls_live example: minor improvements
-   inter: add properties to fine tune the inner elements
-   inter: Give the appsrc/appsink a name that has the parent element as prefix (backported)
-   inter/examples: Add an example to show GL context sharing
-   isobmff: Fix EAC3 datarate calculation (backported)
-   isobmff: Fix EAC3 substream writing in EC3SpecificBox (backported)
-   isobmff: Implement GstChildProxy for MP4Mux and FMP4Mux (backported)
-   isobmff: Sync codec support between fragmented and non-fragmented MP4 muxer
-   isobmff: Unify and extend brands selection between fmp4mux and mp4mux
-   isobmff: Update to dash-mpd 0.19 (backported)
-   json, closedcaption: Return FlowError from scan_duration (backported)
-   mcc: Add support for non-caption VANC (backported)
-   ndisrcdemux: fix audio corruption with non-interleaved stride padding (backported)
-   onvifmetadatapay: copy metadata from source buffer (backported)
-   polly: fix overflow budget calculation
-   quinn: Support sharing of QUIC/WebTransport connection/session
-   quinn: Update web-transport-quinn and fix flaky QUIC test (backported)
-   reqwest: add rust-tls-native-roots feature to the reqwest dep (backported)
-   rsvalidate: Add plugin with check-last-frame-qrcode action
-   rtp: Add linear audio (L8, L16, L24) RTP payloaders / depayloaders (backported)
-   rtp: add mparobust / RFC 5219 depayloader
-   rtp: Add SMPTE ST291-1 ancillary metadata RTP payloader and depayloader (backported)
-   rtp: baseaudiopay: Fix marker bit handling (backported)
-   rtp: basepay: reuse last PTS, when possible to work around problems with NVIDIA Jetson AV1 encoder (backported)
-   rtpbin2, threadshare: update code sites marked as candidates for newer APIs
-   rtp: linear_audio: fix expect string in unit test
-   rtpamrpay2: Actually forward the frame quality indicator (backported)
-   rtpamrpay2: Set frame quality indicator flag (backported)
-   rtpsend/recv: fix property type for stats (backported)
-   rtsp: fix AppSrc max-time
-   sccparse: Best-effort decode streams with more byte tuples in the SCC field
-   speech synthesis: various bug fixes and small improvements in synthesizers and textaccumulate
-   speech synthesizers: expose new overflow mode, compress
-   speech elements: misc improvements
-   speechmaticstranscriber: in-depth refactoring
-   speechmatics: expose properties to control speaker identification
-   spotify: bump librespot 0.8.0 (backported)
-   st2038ancdemux: Support alignment (backported)
-   st2038ancmux: Support frame alignment (backported)
-   st2038: Forward frame rate in caps where available (backported)
-   st2038combiner: Some fixes (backported)
-   st2038extractor: Add always-add-st2038-pad property (backported)
-   st2038extractor: Some fixes (backported)
-   synthesizers: remove signalsmith_stretch from default members ..
-   textaccumulate: fix drain_on_speaker_change typo
-   textaccumulate: fix extended-duration-gap getter
-   textaccumulate: forward metas from input buffers
-   threadshare: audiotestsrc: support more Audio formats (backported)
-   threadshare: backpressure: abort pending items on flush start (backported)
-   threadshare: fixes & improvements (backported)
-   threadshare: fix Pad mod diagram (backported)
-   threadshare: latency related improvements and fixes (backported)
-   threadshare: runtime task: execute action in downward transition (backported)
-   threadshare: standalone example update
-   threadshare: udpsink: fix panic recalculating latency from certain executors (backported)
-   threadshare: Update to getifaddrs 0.6 (backported)
-   transcriberbin: fix latency query on custom channel source pads
-   tracers: Fix inability to create new log files (backported)
-   tracers: Fix inverted append logic when writing log files (backported)
-   transcriberbin: add example to demonstrate transcriber switching
-   uriplaylistbin: Ignore all tests for now (backported)
-   uriplaylistbin: Propagate error message source (backported)
-   webrtc: document grant requirement for livekitwebrtcsink auth token (backported)
-   webrtc: add WHEP server signaller
-   webrtc: Support server side offers for WHEP client
-   webrtc: livekit: Drop connection lock after take() (backported)
-   webrtcsink: Correct lock ordering to prevent Lock (A), Lock (B) + Lock(B), Lock(A) deadlock between
    on_remote_description_set() and handle_ice() (backported)
-   webrtcsink: implement renegotiation
-   webrtcsink: support va encoders (backported)
-   webrtcsink: Don’t let recalculate_latency block tokio worker thread (backported)
-   webrtcsrc: Clean up EOS and session handling
-   webrtc: Drop use of async_recursion crate (backported)
-   whepserversink: implement example for external HTTP server
-   whipserversrc: implement example for external HTTP server
-   README: add missing closedcaption elements
-   Document the tags and branches in this repository (backported)
-   Fix some new clippy 1.90 warnings (backported)
-   Fix a couple of new 1.91 clippy warnings (backported)
-   cargo_wrapper: Fix mismatched quotes causing SyntaxError
-   cargo_wrapper: Improve test execution and build infrastructure
-   Update dependencies (backported)
-   Update dependencies (backported)
-   Update dependencies (backported)
-   Update dependencies (backported)
-   Update MSRV to 1.86
-   meson: Add auto_plugin_features option (backported)
-   meson: Add a clippy target
-   meson: Don’t require all gstreamer libraries (backported)
-   meson: Fix .pc files installation and simplify build output handling (backported)
-   meson: Refactor to use auto_plugin_features consistently for all plugins (backported)
-   meson: fix build when GTK is not present (backported)

gst-libav

-   Fix all compiler warnings on Fedora (backported into 1.26)
-   Cleanup warnings when checks & asserts disabled
-   avviddec: Various fixes to allocation query handling (backported into 1.26)

gst-rtsp-server

-   rtsp-client: Add a pre-closed signal
-   examples: Use new gst_object_call_async() API
-   Add G_GNUC_WARN_UNUSED_RESULT to funcs with transfer full returns
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT (backported into 1.26)
-   Mark functions WARN_UNUSED_RESULT where return is full transfer
-   Mark variables that are unused when checks or asserts are disabled

gstreamer-sharp

-   No changes

gst-python

-   Move GES OTIO formatter to a separate Python plugin in gst-python
-   ges: otio: Use valid Python comment syntax
-   Add Gst.MapInfo.get_data() override
-   meson: Remove “allow_fallback: true” from non essential deps
-   meson: python: add GES Python plugin path to meson devenv
-   Fix GDir leak in gst_python_load_directory (backported into 1.26)
-   Fix NotInitialized mechanism for introspected methods
-   Fix cross-compiling (backported into 1.26)
-   Add some typing annotation to overrides (backported into 1.26)
-   More typing fixes
-   Even more typing fixes (backported into 1.26)
-   Override GstPadProbeInfo to get writable objects (backported into 1.26)
-   Override signature cannot contain Gst prefix - again
-   Misc improvements (backported into 1.26)

gst-editing-services

-   controller: Add MT-safe gst_timed_value_control_source_list_control_points()
-   Add ges_error_quark() function for GError domain
-   Move OTIO formatter to a separate Python plugin and converts GStreamer plugin loading mutex to recursive mutex
-   ges: load_python_formatters() crashes during g-ir-scanner
-   Add error reporting to base bin timeline setup (backported into 1.26)
-   Fix asset refcount leak in command-line formatter
-   Separate clip layer move detection from track element freezing
-   timeline: Respect SELECT_ELEMENT_TRACK signal discard decision (backported into 1.26)
-   Add G_GNUC_WARN_UNUSED_RESULT to constructors
-   Add G_GNUC_WARN_UNUSED_RESULT to funcs with transfer full returns
-   Fix a few small leaks (backported into 1.26)
-   Mark functions WARN_UNUSED_RESULT where return is full transfer
-   tests: convert g_assert() to g_assert_*() and mark unused items
-   nlesource: use new gst_object_call_async()

gst-devtools, gst-validate + gst-integration-testsuites

-   debug-viewer: Make 0x prefix optional thread ID regexes (backported into 1.26)
-   devtools: Add G_GNUC_WARN_UNUSED_RESULT to constructors
-   dots-viewer: debounce SVG rendering during initial load
-   dots-viewer: Misc enhancements and fixes
-   dots-viewer: Update static-files dependency (backported into 1.26)
-   validate: ssim: Check all images before reporting errors
-   validate: update links for gitlab issues moved from gst-plugins-{good,bad,base} to monorepo
-   validate: Core improvements for feature management and reverse playback
-   validate: Fix crash during scenario cleanup
-   validate: add missing GST_VALIDATE_API annotation (backported into 1.26)
-   validate: remove unimplemented gst_validate_report_add_message API
-   validate: use meson compile instead of ninja directly (backported into 1.26)
-   vulkan: fix bufferRowLength size for vulkan upload/download copy
-   Add G_GNUC_WARN_UNUSED_RESULT to funcs with transfer full returns
-   Cleanup warnings when checks & asserts disabled
-   Fix issues with G_DISABLE_CHECKS & G_DISABLE_ASSERT (backported into 1.26)
-   Update Rust dependencies (backported into 1.26)
-   Look for glib.supp file in XDG_DATA_DIRS
-   meson: Add missing devenv values

gst-examples

-   Cleanup warnings when checks & asserts disabled
-   Fix signal lookup in GTK player example (backported into 1.26)
-   Update Rust dependencies (backported into 1.26)

gstreamer-docs

-   Python tutorial for dynamic pipelines
-   Python time tutorial
-   Update GstMeta design docs to match the current state
-   Update machine learning and analytics documentation
-   Tutorials: Fix incorrect flow returns on sample pull
-   docs: add windows section to dev environment

Development build environment

-   libnice.wrap: add upstream patch from libnice (backported into 1.26)
-   libnice.wrap: upgrade to 0.1.23
-   libsoup.wrap: Apply upstream fix for GModule deadlock (backported into 1.26)
-   libsoup.wrap: Fix build on older distros such as Ubuntu 18.04
-   libsoup.wrap: remove fallback gio-unix on windows build (backported)
-   pygobject: Update to 3.50.2 with the MSVC build fix
-   webrtc-audio-processing: Fix build with abseil-cpp 202508 (backported)
-   x264.wrap: Add missing [provide] section (backported into 1.26)

Cerbero build tool and packaging changes in 1.27.50

-   Fix extraction on Windows when building on a different drive than C:\, bump pixman and pygobject (backported into 1.26)
-   Add recipe for the LCEVCdec library and build the plugin with it.
-   Add support for Visual Studio 2026 (Insiders) (backported into 1.26)
-   bootstrap-windows: fix setuptools install and allow to run non-interactively
-   EndeavourOS support (backported into 1.26)
-   cerbero: Add rust support for Linux X86 (backported into 1.26)
-   cerbero: Open log files as utf-8 and with error resilience (backported into 1.26)
-   cookbook: List all the dependencies when listed in reverse (backported into 1.26)
-   ci: update macos image to 26-tahoe (backported into 1.26)
-   dragonfire: Update to 0.1.3 to allow imports from ksecdd.sys and ntoskrnl.exe
-   gst-plugins-base: Disable libdrm support temporarily
-   gst-plugins-bad: actually build svtjpegxs plugin on 64-bit Windows (backported into 1.26)
-   gst-plugins-rs: update for MP4 plugins now being merged into a single isobmff plugin
-   gst-plugins-rs: Remove bak files from melding on CI to shrink artifact tarballs
-   gstreamer-vaapi: delete recipe
-   harfbuzz: disable documentation (backported into 1.26)
-   hacks: Fix breakage on Python 3.14 (backported into 1.26)
-   meson: Update to 1.9.0 to enable Xcode 26 compatibility (backported into 1.26)
-   recipes: Fix stray devel files making it into runtime (backported)
-   rust: Update to 1.90
-   rust: Update to 1.91 and rustup to 1.28.2
-   cache: Fix post-merge cache pipelines (backported into 1.26)
-   cargo-c: Update to 0.10.16
-   README: make it clearer how to disable variants
-   Modernize MSI license.rtf formatting (backported into 1.26)

Contributors to 1.27.50

Abd Razak,Muhammad Azizul Hazim, Amy Ko, Andoni Morales Alastruey, anonymix007, Artem Martus, Brad Hards, Brad Reitmeyer, Branko
Subasic, Camilo Celis Guzman, Carlos Bentzen, Carlos Rafael Giani, Chengfa Wang, Christo Joseph, Christoph Reiter, Daniel
Almeida, Daniel Morin, David Maseda Neira, Diego Nieto, Dominique Leroux, DongJoo Kim, Doug Nazar, Edward Hervey, Ekwang Lee,
François Laignel, Gang Zhao, Haejung Hwang, Havard Graff, He Junyan, Hou Qi, Hyunjun Ko, Inbok Kim, Jaehoon Lee, Jakub Adam, Jan
Alexander Steffens (heftig), Jan Schmidt, Jeehyun Lee, Jeffery Wilson, jeongmin kwak, Jerome Colle, Jihoon Lee, Jochen
Henneberg, Jordan Yelloz, Julian Bouzas, Kevin Scott, Kevin Wolf, L. E. Segovia, Linus Svensson, Loïc Le Page, Manuel Torres,
Marek Olejnik, Mark Nauwelaerts, Markus Hofstaetter, Mathieu Duponchelle, Matthew Semeniuk, Matthew Waters, Max Goltzsche,
Mazdak Farzone, Michael Grzeschik, Michael Olbrich, Michiel Westerbeek, Nicholas Jin, Nicolas Dufresne, Nirbheek Chauhan,
Norbert Hańderek, Olivier Crête, Oz Donner, Pablo García, Patricia Muscalu, Patrick Fischer, Paul Fee, Paweł Kotiuk, Peter
Stensson, pfee, Philippe Normand, Piotr Brzeziński, Pratik Pachange, Qian Hu (胡骞), Rafael Caricio, Rares Branici, Razvan
Grigore, Rinat Zeh, Robert Mader, Ross Burton, Ruben Gonzalez, Ruben Sanchez, Sanchayan Maity, Santiago Carot-Nemesio, Santosh
Mahto, Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪), Stéphane Cerveau, stevn, Sven Püschel, Sylvain Garrigues, Taruntej
Kanakamalla, Teus Groenewoud, Thibault Saunier, Tim-Philipp Müller, Tulio Beloqui, Val Packett, Víctor Manuel Jáquez Leal,
Vincent Beng Keat Cheah, Vivia Nikolaidou, Vivienne Watermeier, Wilhelm Bartel, William Wedler, Xavier Claessens, Yun Liu,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.27.50

-   List of Merge Requests applied in 1.27.50
-   List of Issues fixed in 1.27.50

1.27.2

The second API/ABI-unstable 1.27.x development snapshot release (1.27.2) was released on 07 September 2025.

Any newly-added API in the 1.27.x series may still change or be removed again before 1.28 and should be considered unstable
until 1.28 is released.

The 1.27.x release series is for testing and development purposes, and distros should probably not package it.

Highlighted changes in 1.27.2

-   Add more 10bit RGB formats in GStreamer Video, OpenGL and Wayland, as well as in deinterlace and gdkpixbufoverlay
-   analytics: new analytics combiner and splitter elements plus batch meta to batch buffers from one or more streams
-   analyticsoverlay: Add expire-overlay property
-   onnx: Add Verisilicon provider support
-   awstranscriber2: add property for setting show_speaker_labels
-   awstranslate: expose property for turning brevity on
-   speechmatics: expose mask-profanities property
-   textaccumulate: new element for speech synthesis or translation preprocessing
-   tttocea608: expose speaker-prefix property
-   cea708mux: expose “discarded-services” property on sink pads
-   cuda crop meta support
-   hlssink3, hlscmafsink: Support the use of a single media file
-   s302mparse: Add new S302M audio parser
-   webrtc: add WHEP client signaller; sdp and stats-related improvements
-   threadshare: many improvements to the various elements, plus examples and a new benchmark program; relicense to MPL-2.0
-   gtk4paintablesink: Add YCbCr memory texture formats and improve color-state fallbacks
-   OpenGL: Add support for the NV24 pixel format; support changing caps and get_gl_context() in glbasesrc
-   rtspsrc: Send RTSP keepalives also in TCP/interleaved modes
-   nvencoder: interlaced video handling improvements
-   vaav1enc: Enable intrablock copy and palette mode
-   videopool: support parsing dma_drm caps
-   Vulkan VP9 video decode support and many other video encode and decode improvements
-   waylandsink: Parse and set the HDR10 metadata and other color management improvements
-   LCEVC: Add autoplugging decoding support for LCEVC H265 and H266 video streams and LCEVC H.265 encoder
-   GstMiniObject: Add missing take() and steal() functions and convert is_writable() and make_writable() macros to inline
    functions
-   alsa: Improve PCM sink enumeration
-   d3d12: various d3d12swapchainsink enhancements and bug fixes; fisheye image dewarping support
-   wasapi2: add support for dynamic device switching, exclusive mode and format negotiation; device provider and latency
    enhancements
-   windows: Disable all audio device providers except wasapi2
-   dots-viewer: Improve dot file generation and interactivity
-   gst-editing-services: Make framepositioner zorder controllable and expose it
-   Various introspection fixes and bindings updates
-   Cerbero: Update to Android API level 24; add config for number of cargo jobs; ship unixfd plugin
-   Cerbero: Implement library melding for smaller binary sizes of Rust plugins
-   Countless bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements

Possibly breaking behavioural changes

-   Previously it was guaranteed that there is only ever up to one GstTensorMeta per buffer. This is no longer true and code
    working with GstTensorMeta must be able to handle multiple GstTensorMeta now (after this Merge Request).

gstreamer

-   Remove outdated documentation files
-   aggregator: implement start-time-selection=now
-   baseparse: Try harder to fixate caps based on upstream in default negotiation (backported into 1.26)
-   baseparse: don’t clear most sticky events after a FLUSH_STOP event (backported into 1.26)
-   buffer: Add gst_buffer_take and gst_buffer_steal
-   buffer: Add test for _memset() & _memcmp() with various offsets
-   buffer: Find initial memory block without unnecessary mapping
-   buffer: Fix gst_buffer_memcmp() / gst_buffer_memset() using wrong memory index
-   caps: fix nested caps
-   caps: Mark out parameter of gst_structure_get_caps() as transfer none
-   debug: Category init should happen in class_init when possible
-   element: Deprecate gst_element_state_*() API and provide replacement
-   meta: Add GstMetaFactory to dynamically register GstMetaInfo
-   miniobjects: Add missing _take() and _steal() functions
-   miniobjects: Convert is_writable() / make_writable() macros to inline functions
-   value: Consider NULL caps in array a fixed value
-   Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT (backported into 1.26)
-   introspection: Disable miniobject inline functions for gobject-introspection for non-subprojects too (backported into 1.26)
-   Various introspection fixes
-   ptp: Fix a new Rust 1.89 compiler warning on Windows (backported into 1.26)
-   ptp: Fix new compiler warning with Rust 1.89 (backported into 1.26)
-   Build: Disable C5287 warning on MSVC (backported into 1.26)
-   gst-launch-1.0: clean up unused local variable

gst-plugins-base

-   Add more 10bit RGB formats in GStreamer Video, OpenGL and Wayland
-   alsa, oss: Check for element types when reconfiguring
-   alsa: Improve PCM sink enumeration
-   audioconvert: Fix regression when using a mix matrix (backported into 1.26)
-   debug: Category init should happen in class_init when possible
-   decodebin3: Don’t error on an incoming ONVIF metadata stream (backported into 1.26)
-   decodebin3: Update stream tags (backported into 1.26)
-   device-monitor: Use gst_print instead of g_print (backported into 1.26)
-   gl: Add support for the NV24 pixel format
-   gl: detect the correct context_api on MacOS
-   gl/basesrc: support changing caps and add get_gl_context()
-   glcolorconvert:: Revert “should copy metadatas from the incoming buffer”
-   gloverlay: Two small fixes (backported into 1.26)
-   glupload: fix the issue of printing critical log for some cases
-   gstreamer: Misc memory cleanups (backported into 1.26)
-   rtpbasedepayload: Avoid potential use-after free (backported into 1.26)
-   rtspconnection: Add get_url and get_ip return value annotation (backported into 1.26)
-   uridecodebin3: Add missing locking and NULL checks when adding URIs to messages (backported into 1.26)
-   video: dma-drm: Add P016_LE format map (backported into 1.26)
-   video: pool: Fix pool size configuration for DMA DRM
-   videometa: Fix valgrind warning when deserializing video meta (backported into 1.26)
-   videopool: support parsing dma_drm caps
-   videorate: don’t hold the reference to the buffer in drop-only mode (backported into 1.26)
-   videorate: Fix several videorate issues in ges when using time control (setting the rate property)
-   Remove outdated documentation files
-   gst-device-monitor-1.0: Fix device monitor criticals, and also accept utf8 in launch lines (backported into 1.26)
-   gst-device-monitor-1.0: Add shell quoting for launch lines (backported into 1.26)
-   gst-device-monitor-1.0: Add quoting for powershell and cmd (backported into 1.26)

gst-plugins-good

-   deinterlace, gdkpixbufoverlay: Add more 10bit RGB formats
-   adaptivedemux2: fix crash due to log (backported into 1.26)
-   alsa, oss: Check for element types when reconfiguring
-   hlsdemux2: Fix parsing of byterange and init map directives (backported into 1.26)
-   rtspsrc: Send RTSP keepalives in TCP/interleaved modes
-   soup: Disable range requests when talking to Python’s http.server (backported into 1.26)
-   v4l2: Fix memory leak for dynamic resolution change (backported into 1.26)
-   v4l2videodec: Add protection when acquiring drm caps
-   v4l2videodec: Need to replace acquired_caps on set_format success (backported into 1.26)
-   windows: Disable all audio device providers except wasapi2 (directsoundsink deviceprovider)
-   Debug category init should happen in class_init when possible
-   Remove outdated documentation files

gst-plugins-bad

-   Add autoplugging decoding support for LCEVC H265 and H266 video streams
-   Add more 10bit RGB formats in GStreamer Video, OpenGL and Wayland
-   analytics: Add GstAnalyticsBatchMeta for batches of buffers from one or more streams
-   analytics: Add unit test for copying GstAnalyticsRelationMeta
-   analytics: Include new batch meta in the single-include header
-   analytics: always add GstTensorMeta (backported into 1.26)
-   analyticsmeta: Remove incorrect check
-   analyticsoverlay: Add expire-overlay property
-   av1parse: Set CLL and MDI caps
-   av1parse: Set mastering-display-info into the final caps
-   av1parser: Don’t error out on “currently” undefined seq-level indices (backported into 1.26)
-   avtp: Use the DTS as the AVTP base time … and other small improvements
-   avtp: crf: Setup socket during state change to ensure we handle failure (backported into 1.26)
-   cccombiner: Crash fixes (backported into 1.26)
-   cuda: Add support for crop meta
-   curlsmtpsink: adapt to date formatting issue (backported into 1.26)
-   d3d12: Add support for dewarping fisheye images
-   d3d12screencapturedevice: Avoid false device removal on monitor reconfiguration (backported into 1.26)
-   d3d12swapchainsink: Add last-rendered-sample action signal
-   d3d12swapchainsink: Fix force-aspect-ratio change in playing state
-   d3d12swapchainsink: Update uv-remap signal to support background color
-   decklinkvideosrc: fix decklinkvideosrc becomes unrecoverable if it fails to start streaming (backported into 1.26)
-   debug: Category init should happen in class_init when possible
-   dtls: Use ECDSA private key for default certificate
-   gstreamer: Misc memory cleanups (backported into 1.26)
-   h265parse: Parse and attach LCEVC metadata to buffers if present
-   h266parse: Parse SEI registered user data and attach LCEVC metadata to buffers if present
-   hlsdemux2: Fix parsing of byterange and init map directives (backported into 1.26)
-   inter: Move intertest example to tests/examples/inter
-   lcevcdec improvements
-   lcevcdec: Set LCEVCdec min version to 4.0.1 and fix build
-   lcevcdecodebin: Update the base decoder when setting base-decoder property
-   lcevcencoder: Add lcevch265enc element
-   lcevcencoder: Add ldconfig and install steps to the readme
-   meson: d3d12: Add support for MinGW DirectXMath package (backported into 1.26)
-   mpegtsmux: Caps event fails with stream type change error
-   nvcodec: Add emit-frame-stats signal
-   nvdsdewarp: Output resize support and performance optimizations
-   nvencoder: Always allow interlaced stream
-   objectdetectionoverlay: Print tracking id
-   onnx: Add Verisilicon provider
-   rtmp2src: various fixes to make it play back AWS medialive streams (backported into 1.26)
-   ssdtensordecoder: Use tensor ids from the registry
-   tensor decoders: Use utility function and other cleanups
-   tensor: Clarify meaning of the dimensions array in the docs
-   tensordecoder: rename facedetector element
-   tensormeta: Fix the api to check the tensor type
-   tests: add vulkan av1 encode support
-   tests: fix queues for vulkan h26x encoders
-   tests: vkh26xenc: use vkvideoencodebase
-   tflite: Add support for VSI delegate
-   transcoder: Various fixes
-   unixfd: fix and improve the example pipelines in the documentation
-   va: Re-negotiate after FLUSH (backported into 1.26)
-   vaXXXenc: calculate latency with corrected framerate (backported into 1.26)
-   vaXXXenc: fix potential race condition (backported into 1.26)
-   vaav1enc: Enable intrablock copy and palette mode
-   vkdownload: implement decide_allocation DownloadMethod
-   vkimagebufferpool: don’t use independent profile flag for some usage
-   vkimagebufferpool: fix regression from !9492
-   vkimagebufferpool: support video profile independent images
-   vkphysicaldevice: enable sampler ycbcr conversion, synchronization2 and timeline semaphore features (backported into 1.26)
-   vkphysicaldevice: silence validation for features
-   vkupload: fix the refactored frame copy
-   vkvideoutils-private: make it private
-   vkvideoutils: fix typo in vp9 profile map
-   vtenc: Fix negotiation failure with profile=main-422-10 (backported into 1.26)
-   Vulkan Video: VP9 decode support
-   vulkan: Refactor common library in the video parts
-   vulkan: enable video maintenance2 for inline session parameters
-   vulkan: fix validation layer complains
-   vulkan: fixes previous mistakes
-   vulkan: video encode and decoder cleanups
-   vulkanh24xdec: couple of fixes (backported into 1.26)
-   vulkanh264enc: calculate latency with corrected framerate
-   vulkanh26xdec: fix discont state handling (backported into 1.26)
-   vulkan: enable vulkan tests in validate on the CI
-   wasapi2: Add support for dynamic device switch
-   wasapi2: Add support for exclusive mode and format negotiation
-   wasapi2: Device provider enhancements
-   wasapi2: Fix default render device probing
-   wasapi2: Handle device init error on acquire()
-   wasapi2: Pass correct data flow value to GetDefaultAudioEndpoint()
-   wasapi2sink: Do not push too large preroll buffer to endpoint
-   wayland: display: Scale whitepoint the same as the primaries
-   wayland: window: Name the color management queue
-   waylandsink: Parse and set the HDR10 metadata
-   waylandsink: add some error handler for event dispatch (backported into 1.26)
-   webrtc: Misc sdp and stats-related improvements
-   windows: Disable all audio device providers except wasapi2
-   x265enc: Fix duplicate SEI at startup IDR frame problem
-   zbar: tests: Handle symbol-bytes as not null-terminated (backported into 1.26)
-   Remove outdated documentation files

gst-plugins-ugly

-   Remove outdated documentation files

GStreamer Rust plugins

-   Add rtpbin2 examples (backported into 1.26)
-   analytics: Add new analyticscombiner / analyticssplitter elements
-   analyticscombiner: Use NULL caps instead of EMPTY caps in the array for streams with no caps (backported into 1.26)
-   aws: Ensure task stopping on paused-to-ready state change (backported into 1.26)
-   awspolly: some improvements ported over from 11labs synthesizer
-   awstranscriber2: add property for setting show_speaker_labels
-   awstranscriber2,awstranslate: Handle multiple stream-start event (backported into 1.26)
-   awstranslate: expose property for turning brevity on
-   cea708mux: expose “discarded-services” property on sink pads
-   cea708mux: fix clipping function (backported into 1.26)
-   ceaX08overlay: support ANY caps features (backported into 1.26)
-   dav1ddec: Use video decoder base class latency reporting API (backported into 1.26)
-   elevenlabssynthesizer: improve gap handling in non-clip overflow modes
-   fallbacksrc: Don’t panic during retries if the element was shut down in parallel (backported into 1.26)
-   fallbacksrc: Don’t restart source if the element is just being shut down (backported into 1.26)
-   fallbacksrc: Fix some custom source deadlocks (backported into 1.26)
-   Fix various new clippy 1.89 warnings (backported into 1.26)
-   gtk4: Add 10/12/16bit SW decoder formats (backported into 1.26)
-   gtk4: Try importing dmabufs withouth DMA_DRM caps (backported into 1.26)
-   hlsmultivariantsink: Fix master playlist version (backported into 1.26)
-   hlssink3/hlscmafsink: Support the use of a single media file
-   mccparse: Convert “U” to the correct byte representation (backported into 1.26)
-   mpegtslivesrc: Remove leftover debug message (backported into 1.26)
-   net/webrtc: Drop the use of a separate tls-utils crate (backported into 1.26)
-   net/webrtc: Fix tokio-rustls dependency and leftover tls-utils (backported into 1.26)
-   net/webrtc: Fix tokio-rustls using aws_lc_rs by default
-   mp4: Skip tests using x264enc if it does not exist (backported into 1.26)
-   net/webrtc/whep: add WHEP client signaller
-   reqwest: switch to rustls (backported into 1.26)
-   rtpbin2: Fix handling of unknown PTs and don’t warn about incomplete RTP caps to allow for bundling (backported into 1.26)
-   rtpbin2: Improve rtcp-mux support (backported into 1.26)
-   rtpgccbwe: avoid clamp() panic when min_bitrate > max_bitrate (backported into 1.26)
-   rtpmp4apay2: fix payload size prefix (backported into 1.26)
-   rtpmp4gdepay2: allow only constantduration with neither constantsize nor sizelength set (backported into 1.26)
-   rtprecv: Drop state lock before chaining RTCP packets from the RTP chain function (backported into 1.26)
-   rtprecv: fix race condition on first buffer (backported into 1.26)
-   rtprecv optimize src pad scheduling
-   rtpsend: Don’t configure a zero min RTCP interval for senders (backported into 1.26)
-   rtp: threadshare: fix some property ranges (backported into 1.26)
-   rtp: Update to rtcp-types 0.2 (backported into 1.26)
-   s302mparse: Add new S302M audio parser
-   speechmatics: expose mask-profanities property
-   speechmatics: Specify rustls as an explicit dependency (backported into 1.26)
-   spotify: update to librespot 0.7 (backported into 1.26)
-   text: implement new textaccumulate element
-   textaccumulate: misc fixes
-   threadshare: add a blocking adapter element (backported into 1.26)
-   threadshare: Also enable windows Win32_Networking_WinSock feature (backported into 1.26)
-   threadshare: always use block_on_or_add_subtask (backported into 1.26)
-   threadshare: audiotestsrc: fix setting samples-per-buffer… (backported into 1.26)
-   threadshare: blocking_adapter: fix Since marker in docs (backported into 1.26)
-   threadshare: Enable windows Win32_Networking feature (backported into 1.26)
-   threadshare: examples: add a new benchmark program
-   threadshare: fix flush for ts-queue ts-proxy & ts-intersrc (backported into 1.26)
-   threadshare: fix regression in ts-proxysrc (backported into 1.26)
-   threadshare: fix resources not available when preparing asynchronously (backported into 1.26)
-   threadshare: fix ts-inter test one_to_one_up_first (backported into 1.26)
-   threadshare: have Task log its obj (backported into 1.26)
-   threadshare: improvements to some elements (backported into 1.26)
-   threadshare: intersink: return from blocking tasks when stopping (backported into 1.26)
-   threadshare: inter: update doc example (backported into 1.26)
-   threadshare: queue & proxy: fix race condition stopping (backported into 1.26)
-   threadshare: runtime/pad: lower log level pushing Buffer to flushing pad (backported into 1.26)
-   threadshare: re-licensing to MPL-2.0
-   threadshare: separate blocking & throttling schedulers (backported into 1.26)
-   threadshare: src elements: don’t pause the task in downward state transitions
-   threadshare: standalone examples: improvements & a deadlock fix
-   threadshare: standalone examples: log stats on EOS
-   threadshare: ts-audiotestsrc fixes (backported into 1.26)
-   threadshare: ts-intersrc: handle dynamic inter-ctx changes
-   threadshare: Bump up getiffaddrs to 0.1.5 and revert “threadshare: udp: avoid getifaddrs in android” (backported into 1.26)
-   threadshare: update examples (backported into 1.26)
-   threadshare: Update to getifaddrs 0.5 (backported into 1.26)
-   threadshare: Fix macOS build post getifaddrs 0.5 update (backported into 1.26)
-   tracers: pipeline-snapshot: reduce WebSocket connection log level (backported into 1.26)
-   tracers: queue-levels: add support for threadshare DataQueue related elements (backported into 1.26)
-   tracers: Update to etherparse 0.19 (backported into 1.26)
-   transcriberbin: Fix handling of upstream latency query (backported into 1.26)
-   transcriberbin: Fix some deadlocks (backported into 1.26)
-   tttocea608: expose speaker-prefix property
-   tttocea{6,7}08: Disallow pango markup from input caps (backported into 1.26)
-   video/gtk4: Add YCbCr memory texture formats
-   video/gtk4: Improve color-state fallbacks for unknown values
-   webrtc: android example: fix media handling initialization sequence
-   webrtc: Migrate to warp 0.4 and switch to tokio-rustls (backported into 1.26)
-   webrtc-api: Set default bundle policy to max-bundle
-   webrtc/signalling: Fix setting of host address (backported into 1.26)
-   webrtcsink: Move videorate before videoconvert and videoscale (backported into 1.26)
-   webrtcsrc: Clean up EOS and session handling
-   WHIP client: emit shutdown after DELETE request
-   Update Cargo.lock
-   Update Cargo.lock
-   Update dependencies (backported into 1.26)
-   Update dependencies (backported into 1.26)
-   Update dependencies
-   Update to async-tungstenite 0.30
-   README: Don’t suggest running cargo cinstall after cargo cbuild (backported into 1.26)
-   cargo_wrapper: Fix depfile generation and stale dependency handling
-   cargo_wrapper: Fix mismatched quotes causing SyntaxError
-   deny: Update
-   meson: Isolate built plugins from cargo target directory (backported into 1.26)

gst-libav

-   Remove outdated documentation files

gst-rtsp-server

-   rtspclientsink: error out on RTCP timeout
-   Remove outdated documentation files
-   Tests: Switch to fixtures to ensure pool shutdown (backported into 1.26)

gstreamer-sharp

-   Remove outdated documentation files
-   Update C# bindings for new 1.28 API

gst-python

-   Handle buffer PTS/DTS/duration/offset/offset-end as unsigned long long (backported into 1.26)
-   Meson: add convenience target gst-python-extensions to build the Python extension modules
-   Various introspection fixes

gst-editing-services

-   docs: fix enum value extraction for enums with gaps
-   framepositioner: Make zorder controllable and expose it
-   Fix several videorate issue when using time control (setting the rate property)
-   Fix various memory leaks (backported into 1.26)
-   Make sure to zero-initialize the GValue before G_VALUE_COLLECT_INIT (backported into 1.26)
-   Some minor validate fixes

gst-devtools, gst-validate + gst-integration-testsuites

-   devtools: Fix memory leak and use of incorrect context (backported into 1.26)
-   dots-viewer: Improve dot file generation and interactivity
-   h265parse: Parse and attach LCEVC metadata to buffers if present
-   validate: http-actions: Replace GUri with GstURI for GLib 2.64 compatibility (backported into 1.26)
-   validate: ges: Fix race condition in deeply nested timeline test
-   videorate: ges: Fix several videorate issue when using time control (setting the rate property)
-   Update various Rust dependencies (backported into 1.26)

gst-examples

-   Update various Rust dependencies (backported into 1.26)

gstreamer-docs

-   docs: Fix negotiation documentation

Development build environment

-   ci: Don’t forward default variables to downstream cerbero pipeline (backported into 1.26)
-   ci: Fix gst-full breakage due to a typo (backported into 1.26)
-   ci: Fix the abi-check image building
-   ci: Update the kernel version we use with fluster
-   ci: Update to Rust 1.89 and cargo-c 0.10.15
-   ci: Work around PowerShell broken argument parsing (backported into 1.26)
-   ci: add rtsp-server valgrind job
-   debug: Category init should happen in class_init when possible
-   framepositioner: Make zorder controllable and expose it
-   gitattributes: Mark dots-viewer dist files as binary
-   glib: update to 2.82.5 and backport shebangs patch (backported into 1.26)
-   gl/basesrc: support changing caps and add get_gl_context()
-   gst-env: only-environment: only dump added and updated vars (backported into 1.26)
-   gst-full: Fix detection of duplicate plugin entries (backported into 1.26)
-   ignore: Exclude build artifacts and minified files from ripgrep
-   win-pkgconfig: Bump to 0.29.2
-   svtjpegxs: Update wrap file
-   Can’t build recent GStreamer on GN/Linux because gobject-introspection subproject insists on searching for privative
    compiler
-   gobject-introspection: Fix introspection failing on Linux with subproject GLib (backported into 1.26)
-   python: Fix compatibility of pygobject patch with 3.42
-   Fix build on windows due to proxy-libintl not being invoked, reduce build size on windows by disabling plugins (backported
    into 1.26)

Cerbero build tool and packaging changes in 1.27.2

-   Library update preliminaries for visionOS (backported into 1.26)
-   android: Update API level to 24 (version 7)
-   build: Fix passing multiple steps (backported into 1.26)
-   build: disable LTO on MSVC
-   cache: Fix detection of build tools prefix when using a cache (backported into 1.26)
-   ci: Update windows image
-   cmake: Do not rely on the CERBERO_PREFIX environment variable (backported into 1.26)
-   config: Add property for setting specifically the number of Cargo jobs
-   config: Also apply Cargo properties to the build tools configuration
-   curl: specify OPENSSL_INCLUDE_DIR directly
-   enums: Add is_mobile, is_apple and is_apple_mobile helpers (backported into 1.26)
-   ffmpeg: enable filters needed by avvideocompare (backported into 1.26)
-   git: Normalize all file endings to LF (backported into 1.26)
-   glib-networking: Add missing pkg-config file
-   gst-plugins-bad: Add unixfd to recipe
-   gst-plugins-rs: Fixes for Rust + MSVC build
-   gst-plugins-rs: Implement library melding for smaller binary sizes of Rust plugins
-   gst-plugins-rs: Update version to 0.15.0-alpha.1
-   libxml2: update to 2.14.5
-   msvc: Add static libraries following the Meson convention
-   osx: Update pkgbuild compression algorithms (backported into 1.26)
-   package: Dump cerbero and recipe versions into datadir (backported into 1.26)
-   package: fix –tarball –compress-method=none (backported into 1.26)
-   packaging: Assorted fixes in preparation for deploying split symbols
-   rust: Update to Rust 1.89 and cargo-c 0.10.15
-   tar: Refactor in preparation for xcframework support (backported into 1.26)
-   wavpack: Fix CMake 4.1+ MSVC build breakage

Contributors to 1.27.2

Adrian Perez de Castro, Amotz Terem, Andrey Khamukhin, Daniel Morin, Derek Foreman, Doug Nazar, Elliot Chen, François Laignel,
Haihua Hu, Havard Graff, Hou Qi, Ian Napier, Jan Alexander Steffens (heftig), Jan Schmidt, Jaslo Ziska, Jonathan Lui, Jordan
Petridis, Julian Bouzas, L. E. Segovia, Marc-André Lureau, Mathieu Duponchelle, Matthew Waters, Marko Kohtala, Monty C, Nicolas
Dufresne, Nirbheek Chauhan, Ola Fornander, Olivier Crête, Philippe Normand, Piotr Brzeziński, Qian Hu (胡骞), Raghavendra Rao,
Rick Ye, Robert Mader, Ruben Gonzalez, Sanchayan Maity, Sebastian Dröge, Seungha Yang, Slava Sokolovsky, Stéphane Cerveau,
Taruntej Kanakamalla, Thibault Saunier, Tim-Philipp Müller, Tomasz Mikolajczyk, Víctor Manuel Jáquez Leal, Vivia Nikolaidou,
Vivian Lee, Vivienne Watermeier, Xavier Claessens,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.27.2

-   List of Merge Requests applied in 1.27.2
-   List of Issues fixed in 1.27.2

1.27.1

The first API/ABI-unstable 1.27.x development snapshot release (1.27.1) was released on 8 July 2025.

Any newly-added API in the 1.27.x series may still change or be removed again before 1.28 and should be considered unstable
until 1.28 is released.

The 1.27.x release series is for testing and development purposes, and distros should probably not package it.

Highlighted changes in 1.27.1

-   Add AMD HIP plugin
-   Add Vulkan H.264 encoder and add 10-bit support to Vulkan H.265 decoder
-   Add LiteRT inference element
-   Aggregator: expose current-level-* properties on sink pads
-   Analytics: add general classifier tensor-decoder, facedetector, and more convenience API
-   alsa: Support enumerating virtual PCM sinks
-   d3d12: Add d3d12remap element
-   Wayland: Add basic colorimetrie support
-   Webkit: New wpe2 plugin making use of the “WPE Platform API”
-   MPEG-TS demuxer: Add property to disable skew corrections
-   qml6gloverlay: support directly passing a QQuickItem for QML the render tree
-   unifxfdsink: Add a property to allow copying to make sink usable with more upstream elements
-   videorate: Revive “new-pref” property for better control in case of caps changes
-   wasapi2: Port to IMMDevice based device selection
-   GstReferenceTimestampMeta can carry additional per-timestamp information now
-   Added GstLogContext API that allows to fix log spam in several components
-   New tracer hook to track when buffers are queued/dequeued in buffer pools
-   gst-inspect-1.0: Prints type info for caps fields now
-   Pipeline graph dot files now contain information about active tracers
-   Python bindings: add Gst.Float wrapper, Gst.ValueArray.append_value(), analytics API improvements
-   cerbero packages: ship vvdec and curl plugins; ship wasapi2 on MingW builds
-   Removed the gstreamer-vaapi module which has now been superseded by the va plugin
-   Countless bug fixes, build fixes, memory leak fixes, and other stability and reliability improvements

gstreamer

-   aggregator: add sub_latency_min to pad queue size
-   aggregator: expose current-level-* properties on sink pads
-   baseparse: Add disable-clip property
-   buffer: Add optional info structure to GstReferenceTimestampMeta
-   core changes needed for tensor negotiation
-   core: gstvalue: fix ANY/EMPTY caps (features) hash
-   general: Stop checking G_HAVE_GNUC_VARARGS now that we require on c99
-   Add information about active tracers in dot files
-   gst: info: Add a GstLogContext API
-   gstmessage: Debug error message is nullable
-   gstvalue: add hashing
-   gstvalue: fix gst_value_is_subset_array_array()
-   meta: Add g_return_val_if_fail() for NULL valid_tags in gst_meta_api_type_tags_contain_only()
-   tracer: Add a hook to track when buffers are queued/dequeued in pools
-   tracer: Make it compile when tracer hooks are disabled
-   Fix log spam in several components
-   Misc changes to avoid build failures with fedora 42
-   meson: rename meson_options.txt to meson.options
-   tests: More valgrind and test fixes
-   gst-inspect-1.0: Added type info for caps fields

gst-plugins-base

-   Fix log spam in several components using the new log context API
-   alsa: Support enumerating virtual PCM sinks
-   appsink, appsrc: Only notify drop property and not in/out
-   appsink, appsrc: Add some more stats
-   decodebin, pbutils: use new GstLogContext API
-   discoverer: Make gst_discoverer_info_from_variant nullable
-   discoverer: Enhance debug logging
-   elements: use set_static_metadata when it’s allowed
-   general: Stop checking G_HAVE_GNUC_VARARGS now that we require on c99
-   gl/window: add support for configuring whether a backing surface is needed
-   gl/x11: need to check display type
-   gl: Fix support for dmabuf using a DRM format that we can’t emulate with shaders
-   gl: cocoa: Add navigation event support
-   gldmabufferpool: disable “free cache” workaround in GstGLBufferPool
-   gldownload: improve logging of gl-dmabuf pool usage
-   glupload: Promote fixate caps results print to info
-   glvideomixer, compositor: fix mouse event handling to return wether upstream handled the events or not.
-   glwindow_cocoa: fix window not closing (w/o user window handle)
-   opengl: VA / glimagesink broke in some cases (regression)
-   opengl: Fix DRM format and modifier negotiation regressions
-   orc: Update pregenerated files
-   unifxfdsink: Add an property to allow copying
-   unixfdsrc: fix allocating FD memory with nonzero offsets
-   video formats: Add DRM equivalents for 10/12/16 bit SW-decoders formats
-   video: Add 10bit 422 NV16_10LE40 format
-   videorate, imagefreeze: add support for JPEG XS
-   videorate: Revive ‘new-pref’ property
-   webrtcbin: Include all accepted media formats in SDP answers
-   gst-device-monitor-1.0: Deinitialize GStreamer before exiting
-   GStreamer with OpenGL creates an empty “OpenGL Renderer” window on Wayland
-   meson: rename meson_options.txt to meson.options
-   tests: More valgrind and test fixes

gst-plugins-good

-   gldownload: improve logging of gl-dmabuf pool usage
-   imagefreeze: Handle EOS from send_event()
-   matroskademux: Add support for relative position cues
-   orc: Update pregenerated files
-   qml6gloverlay: support directly passing a QQuickItem for QML the render tree
-   rtph265depay: output profile, tier, level in output caps
-   rtpjpeg: fix copying of quant data if it spans memory segments
-   v4l2object: Make extra-controls property mutable in playing state
-   v4l2object: Provide padding requirements during propose allocation
-   video: Add 10bit 422 NV16_10LE40 format
-   videorate, imagefreeze: add support for JPEG XS
-   y4m: move y4mdec to good to have a single y4m plugin
-   Fix build with -DGST_REMOVE_DEPRECATED
-   Name buffer pools for new buffer pool enqueue/dequeue tracer
-   meson: rename meson_options.txt to meson.options
-   elements: use set_static_metadata when it’s allowed
-   tests: More valgrind and test fixes

gst-plugins-bad

-   Fix build with -DGST_REMOVE_DEPRECATED
-   Misc changes to avoid build failures with fedora 42
-   analytics: Add transform function to copy the tensor meta
-   analytics: Fix docs of gst_tensor_check_type()
-   analytics: Fix transfer annotations of gst_tensor_check_type()
-   analytics: add a convenient API to retrieve tensor
-   analytics: add more convenient API to retrieve tensor
-   analytics: classifier tensor decoder
-   analytics: Move IoU calculation to gstanalytics lib
-   analyticsoverlay: add filled-box mode
-   cuda: Lower debug log level on nvrtc compilation failure
-   curl: Fix wrong format specifier for macOS
-   curl: Recover missing comment
-   d3d12: Add d3d12remap element
-   d3d12screencapturesrc: Fix OS handle leaks/random crash in WGC mode
-   d3d12swapchainsink: Add uv-remap and redraw action signal
-   elements: use set_static_metadata when it’s allowed
-   general: Stop checking G_HAVE_GNUC_VARARGS now that we require on c99
-   h264parse: Drop NAL units that can’t be parsed using AU alignment
-   h264parse: Forward LCEVC caps
-   h265parser: Make gst_h265_parser_link_slice_hdr public
-   hip: Add AMD HIP plugin
-   hip: Add missing #ifdef
-   hip: stream and event integration
-   motioncells: fix typo in header comment
-   mpegtsdemux: Add property to disable skew corrections
-   mpegtsmux: Read prog-map[PMT_ORDER_<PID>] for PMT order key
-   nice: Don’t modify struct borrowed by signal
-   nvjpegenc: Add autogpu mode element
-   onnx: Cleanup the session creation
-   onnx: Use system installed Eigen to avoid hash mismatch failure
-   onnx: produce tensor caps
-   opengl: Fix DRM format and modifier negotiation regressions
-   orc: Update pregenerated files
-   parser: fix spelling of GstAV1SegmentationParams
-   tensordecoder: facedetector: Detect tensor output from the inference of Ultra Light Face Detection
-   test: analytics: add more test on tracking mtd
-   tfliteinference: Add LiteRT inference element
-   tfliteinference: initialize means and stddevs arrays appropriately
-   unifxfdsink: Add an property to allow copying
-   unixfdsrc: fix allocating FD memory with nonzero offsets
-   v4l2codecs: Fix typos in the documentation
-   v4l2codecs: Use prop_offset in gst_v4l2_decoder_install_properties
-   va: remove unused headers
-   video: Add 10bit 422 NV16_10LE40 format
-   videorate: Revive ‘new-pref’ property
-   vkerror: add invalid_video_std_parameters message
-   vkh264enc: add Vulkan H264 encoder
-   vkh265dec: add 10 bits support
-   vkvideoencodeh26x: don’t leak queues and ensure we call teardown() for each test
-   vtenc: Use strlcpy instead of strncpy
-   vulkan: use VK_EXT_debug_utils if available
-   vulkan: Fix drawing too many triangles in fullscreenquad
-   waylandsink: some property handling fixes
-   webrtc: Fix compatibility with LiveKit
-   webrtc: Fix hangup when duplicate sctp association IDs chosen
-   vulkanupload: refactor frame copy
-   wasapi2: Log buffer QPC position and status flags
-   wasapi2: Port to IMMDevice based device selection
-   wayland: Add basic colorimetrie support
-   wayland: Add support for local protocols
-   wayland: Remove custom format mapping
-   waylandsink: Add force-aspect-ratio property
-   waylandsink: some property handling fixes
-   webrtc: Partial revert of !8698
-   webrtc: stats: Fill data-channel transport stats and increase spec compliance for ICE candidate stats
-   webrtc: stats: Improve spec compliance for ICE candidate stats
-   webrtc: Fix compatibility with LiveKit
-   webrtcbin: Include all accepted media formats in SDP answers
-   webrtcbin: Make mid optional in offers and answers
-   webrtcdsp: Respect disabled feature option
-   wpe2: New WPE plugin making use of the “WPE Platform API”
-   svtjpegxs: print message for architectures unsupported by SVT-JPEG-XS
-   x265enc: Add bitrate tags to the output
-   y4m: move y4mdec to good to have a single y4m plugin
-   Name buffer pools for new buffer pool enqueue/dequeue tracer
-   meson: rename meson_options.txt to meson.options
-   tests: More valgrind and test fixes

gst-plugins-ugly

-   Name buffer pools for new buffer pool enqueue/dequeue tracer
-   meson: rename meson_options.txt to meson.options

GStreamer Rust plugins

Changes compared to the current stable release (1.26.3) which both track gst-plugins-rs main branch for the time being:

-   aws: s3hlssink: Write to S3 on OutputStream flush
-   gopbuffer: Push GOPs in order of time on EOS
-   gtk4: Promote set_caps debug log to info
-   hlssink3: Use closed fragment location in playlist generation
-   livekit: add room-timeout
-   mp4mux: add TAI timestamp muxing
-   rtpbin2: fix race condition on serialized Queries
-   rtpbin2: sync: fix race condition
-   rtprecv: fix SSRC collision event sent in wrong direction
-   webrtc: sink: avoid recursive locking of the session
-   webrtc: fix Safari addIceCandidate crash
-   webrtcsink: fix deadlock on error setting remote description
-   webrtcsink: add signal to configure mitigation modes

gst-libav

-   Name buffer pools for new buffer pool enqueue/dequeue tracer
-   meson: rename meson_options.txt to meson.options

gst-rtsp-server

-   meson: rename meson_options.txt to meson.options

gstreamer-vaapi

-   Remove gstreamer-vaapi module which has now been superseded by the va plugin

gstreamer-sharp

-   meson: rename meson_options.txt to meson.options

gst-python

-   analytics: Add python API to iterate over specific Mtd types.
-   analytics: Add python API to get relation path
-   analytics: Add API iter_direct_related to GstAnalyticsMeta
-   Add Gst.Float wrapper
-   Override Gst.ValueArray.append_value()
-   meson: rename meson_options.txt to meson.options

gst-editing-services

-   Enhance debug logging
-   Handle add_control_binding failures
-   meson: rename meson_options.txt to meson.options

gst-devtools, gst-validate + gst-integration-testsuites

-   devtools: dots-viewer: Add a button to download the SVG file
-   devtools: dots-viewer: sort static files
-   elements: use set_static_metadata when it’s allowed
-   validate: Do not list test files that are not autogenerated in .testlist
-   validate: Minor launcher improvements
-   validate: baseclasses: Reset Test.extra_logfiles when copying to start an iteration
-   validate: launcher: Downgrade non-critical log messages from ERROR to INFO
-   validate: Add a set of tests for checking if videooverlaycomposition reaches the sink
-   meson: rename meson_options.txt to meson.options

gstreamer-docs

-   android tutorials: Update provided projects to Gradle 8.11 and API level 24

Development build environment

-   Add devcontainer manifest for our CI image!
-   Some subproject fixes on Windows
-   general: Stop checking G_HAVE_GNUC_VARARGS now that we require on c99
-   meson: rename meson_options.txt to meson.options
-   cairo: update wrap to 1.18.4
-   ffmpeg: update wrap to 7.1.1
-   librsvg: Add wrap
-   svtjpegxs: Add wrap
-   wayland-protocols: Update wrap
-   webrtc-audio-processing: Add patches to wrap to fix compilation with gcc 15

Cerbero build tool and packaging changes in 1.27.1

-   Add override_build_tools property
-   Add vvdec recipe and build/ship vvdec plugin
-   Fix gensdkshell command
-   Fix librsvg recipe FatalError for usupported RUST arch/platform
-   Fixes for MinGW builds with Meson master
-   Local source
-   UX: improve error msg
-   a52dec: update to 0.8.0 and port to Meson
-   bootstrap: linux: Install libatomic on RedHat-based distros
-   build-tools: Update bison and flex
-   build: honor library_type for autotools recipes
-   build: use a list instead of a string for configure options
-   cargo-c: Update to 0.10.13
-   cdparanoia: port to Meson
-   cerbero: Add bindgen for Cargo recipes
-   cerbero: Fix bundle-source bugs
-   cerbero: Handle rust variant on Linux for old binutils versions
-   cmake: respect the configured output library type
-   curl: Add missing payloads
-   curl: add curl support
-   curl: fix install step in Windows when target file exists
-   dvdread: update to 6.1.3 and switch to Meson
-   expat: update to 2.7.1
-   glib, gobject-introspection: Update for MSVC patches
-   gst-devtools, bindgen-cli: Fix install_name_tool relocation error
-   gst-plugins-bad: Ship wasapi2 plugin in MinGW build as well
-   gst-plugins-rs: Force preset LIBCLANG_PATH for bindgen
-   gst-plugins-rs: Update recipe to simplify inheriting
-   libdvdnav: Fix missing build type
-   libdvdnav: Update to 6.1.1 and port to Meson
-   libdvdread: Fix incomplete MSVC compatibility
-   librsvg: Update to 2.60.0
-   libxml2: update to 2.14.2
-   meson: check if Rust variant to configure rustc bin
-   osxrelocator: Add .so to the allowed dylib extensions
-   pixman: update to 0.46.0
-   rust: Update to Rust 1.88 and cargo-c 0.10.14
-   rustup: Implement installer status caching, inplace target installs and upgrades
-   rustup: Work around broken symlink support in CI
-   spandsp: Fix signature compatibility with MSVC x86
-   spandsp: port to Meson
-   svt-av1: fix compatibility with CMake 4
-   y4m: update recipes for the fusion of both plugins

Contributors to 1.27.1

Adrian Perez de Castro, Aleix Pol, Alexander Slobodeniuk, Alicia Boya García, Alyssa Ross, Andoni Morales Alastruey, Andrew
Yooeun Chun, Arnout Engelen, Artem Martus, Arun Raghavan, Ben Butterworth, Biswapriyo Nath, Brad Hards, Branko Subasic, Carlos
Bentzen, Carlos Rafael Giani, César Alejandro Torrealba Vázquez, Changyong Ahn, Daniel Morin, David Maseda Neira, David Monge,
David Smitmanis, Denis Shimizu, Detlev Casanova, Diego Nieto, Dongyun Seo, Doug Nazar, Devon Sookhoo, Edward Hervey, Eli Mallon,
Elliot Chen, Enock Gomes Neto, Enrique Ocaña González, Eric, F. Duncanh, François Laignel, Gang Zhao, Glyn Davies, Guillaume
Desmottes, Gustav Fahlen, He Junyan, Hou Qi, Jakub Adam, James Cowgill, Jan Alexander Steffens (heftig), Jan Schmidt, Jan
Tojnar, Jan Vermaete, Jerome Colle, Jochen Henneberg, Johan Sternerup, Jordan Petridis, Jordan Yelloz, Jorge Zapata, Julian
Bouzas, L. E. Segovia, Loïc Le Page, Marc Leeman, Marek Olejnik, Mathieu Duponchelle, Matteo Bruni, Matthew Waters, Michael
Grzeschik, Michael Olbrich, Nicolas Dufresne, Nirbheek Chauhan, Ognyan Tonchev, Olivier Blin, Olivier Crête, Pablo García,
Philippe Normand, Piotr Brzeziński, Pratik Pachange, Qian Hu (胡骞), Raghavendra Rao, Razvan Grigore, Robert Ayrapetyan, Robert
Mader, Ruben Gonzalez, Santosh Mahto, Sebastian Dröge, Seungha Yang, Shengqi Yu (喻盛琪), Stefan Andersson, Stéphane Cerveau,
Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Tim-Philipp Müller, Vasiliy Doylov, Víctor Manuel Jáquez Leal, Vineet
Suryan, Wim Taymans, Xavier Claessens,

… and many others who have contributed bug reports, translations, sent suggestions or helped testing. Thank you all!

List of merge requests and issues fixed in 1.27.1

-   List of Merge Requests applied in 1.27.1
-   List of Issues fixed in 1.27.1

Schedule for 1.28

Our next major feature release will be 1.28, and 1.27.x is the unstable development series leading up to the stable 1.28
release. The development of 1.27/1.28 will happen in the git main branch of the GStreamer mono repository.

The schedule for 1.28 is yet to be decided, but we’re targetting late 2025.

1.28 will be backwards-compatible to the stable 1.26, 1.24, 1.22, 1.20, 1.18, 1.16, 1.14, 1.12, 1.10, 1.8, 1.6, 1.4, 1.2 and 1.0
release series.

--------------------------------------------------------------------------------------------------------------------------------

These release notes have been prepared by Tim-Philipp Müller.

License: CC BY-SA 4.0
