|
 |
GStreamer 1.26 Release Notes
GStreamer 1.26.0 was originally released on 11 March 2025.
See https://gstreamer.freedesktop.org/releases/1.26/ for the latest version of this document.
Last updated: Tuesday 11 March 2025, 20:00 UTC (log)
Introduction
The GStreamer team is proud to announce a new major feature release in the
stable 1.x API series of your favourite cross-platform multimedia framework!
As always, this release is again packed with many new features, bug fixes, and other improvements.
Highlights
- H.266 Versatile Video Coding (VVC) codec support
- Low Complexity Enhancement Video Coding (LCEVC) support
- Closed captions: H.264/H.265 extractor/inserter, cea708overlay, cea708mux, tttocea708 and more
- New hlscmafsink, hlssink3, and hlsmultivariantsink; HLS/DASH client and dashsink improvements
- New AWS and Speechmatics transcription, translation and TTS services elements, plus translationbin
- Splitmux lazy loading and dynamic fragment addition support
- Matroska: H.266 video and rotation tag support, defined latency muxing
- MPEG-TS: support for H.266, JPEG XS, AV1, VP9 codecs and SMPTE ST-2038 and ID3 meta; mpegtslivesrc
- ISO MP4: support for H.266, Hap, Lagarith lossless codecs; raw video support; rotation tags
- SMPTE 2038 ancillary data streams support
- JPEG XS image codec support
- Analytics: New TensorMeta; N-to-N relationships; Mtd to carry segmentation masks
- ONVIF metadata extractor and conversion to/from relation metas
- New originalbuffer element that can restore buffers again after transformation steps for analytics
- Improved Python bindings for analytics API
- Lots of Vulkan integration and Vulkan Video decoder/encoder improvements
- OpenGL integration improvements, esp. in glcolorconvert, gldownload, glupload
- Qt5/Qt6 QML GL sinks now support direct DMABuf import from hardware decoders
- CUDA: New compositor, Jetson NVMM memory support, stream-ordered allocator
- NVCODEC AV1 video encoder element, and nvdsdewarp
- New Direct3D12 integration support library
- New d3d12swapchainsink and d3d12deinterlace elements and D3D12 sink/source for zero-copy IPC
- Decklink HDR support (PQ + HLG) and frame scheduling enhancements
- AJA capture source clock handling and signal loss recovery improvements
- RTP and RTSP: New rtpbin sync modes, client-side MIKEY support in rtspsrc
- New Rust rtpbin2, rtprecv, rtpsend, and many new Rust RTP payloaders and depayloaders
- webrtcbin support for basic rollbacks and other improvements
- webrtcsink: support for more encoders, SDP munging, and a built-in web/signalling server
- webrtcsrc/sink: support for uncompressed audio/video and NTP & PTP clock signalling and synchronization
- rtmp2: server authentication improvements incl. Limelight CDN (llnw) authentication
- New Microsoft WebView2 based web browser source element
- The GTK3 plugin has gained support for OpenGL/WGL on Windows
- Many GTK4 paintable sink improvements
- GstPlay: id-based stream selection and message API improvements
- Real-time pipeline visualization in a browser using a new dots tracer and viewer
- New tracers for tracking memory usage, pad push timings, and buffer flow as pcap files
- VA hardware-acclerated H.266/VVC decoder, VP8 and JPEG encoders, VP9/VP8 alpha decodebins
- Video4Linux2 elements support DMA_DRM caps negotiation now
- V4L2 stateless decoders implement inter-frame resolution changes for AV1 and VP9
- Editing services: support for reverse playback and audio channel reordering
- New QUIC-based elements for working with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport
- Apple AAC audio encoder and multi-channel support for the Apple audio decoders
- cerbero: Python bindings and introspection support; improved Windows installer based on WiX5
- Lots of new plugins, features, performance improvements and bug fixes
Major new features and changes
H.266 Versatile Video Coding (VVC) codec support
-
The H.266 / VVC video codec is a successor to H.265 / HEVC and is
standardised in ISO/IEC 23090-3.
-
A new h266parse element was added, along with parsing API, typefinding
support and some codec utility functions in the gst-plugins-base utility
library.
-
A H.266 decoder base class for hardware-accelerated decoders was added
and used to implement a VA-API-based hardware-accelerated H.266 decoder.
-
The FFmpeg H.266 decoder is exposed now (from FFmpeg 7.0 onwards).
-
H.266 / VVC muxing and demuxing support was implemented for MP4, Matroska
and MPEG-TS containers.
-
A VVdeC-based H.266 decoder element was added to the Rust plugins,
based on the Fraunhofer Versatile Video Decoder library.
JPEG XS image codec support
-
JPEG XS is a visually lossless, low-latency, intra-only video
codec for video production workflows, standardised in ISO/IEC 21122.
-
JPEG XS encoder and decoder elements based on the SVT JPEG XS library
were added, including support for muxing JPEG XS into MPEG-TS and
demuxing it. Both interlaced and progressive modes are supported.
Low Complexity Enhancement Video Coding (LCEVC) support
-
LCEVC is a codec that provides an enhancement layer on top of
another codec such as H.264 for example. It is standardised as MPEG-5 Part 2.
-
LCEVC encoder and decoder elements based on V-Nova's SDK libraries
were added, including support in h264parse for extracting the enhancement
layer from H.264 and decoding it via a lcevch264decodebin element.
Closed captions improvements
-
New H.264 and H.265 closed captions extractor and inserter elements.
-
These extractor elements don't actually extract captions from the bitstream,
but rely on parser elements to do that and add them to buffers in form of
caption metas. The problem is that streams might contain B-frames, in which
case the captions in the bitstream will not be in presentation order and
extracting them requires frame-reordering in the same way that a decoder
would do. These new elements will do exactly that and allow you to extract
captions in presentation order without having to decode the stream.
-
The inserter elements do something similar and insert caption SEIs into
the H.264 or H.265 bitstream, taking into account frame ordering.
-
This is useful if one wants to extract, process and re-insert captions
into an existing video bitstream without decoding and re-encoding it
(in which case the decoder and encoder would handle the caption reordering).
-
cdpserviceinject: New element for injecting a CDP service descriptor
into closed caption CDP packets
-
cea708overlay: New element for overlaying CEA608 / CEA708 closed
captions over video streams.
-
The cc708overlay element has been deprecated in favour of the
cea708overlay element from the Rust plugins set.
-
cea608mux gained a "force-live" property to make it always
in live mode and aggregate on timeout regardless of whether any live
sources are linked upstream.
-
cea708mux: New element that allows to mux multiple CEA708 services
into a single stream.
-
cccombiner has two new properties:
-
"input-meta-processing" controls how input closed caption metas are
processed and can be used to e.g. discard closed captions from the input
pad if the matching video buffer already has closed caption on it.
-
"schedule-timeout" to support timing out captions without EOS
-
tttocea708: New element for converting timed-text to CEA708 closed captions
-
Miscellaneous improvements and spec compliance fixes
Speech to Text, Translation and Speech Synthesis
-
awstranscriber2, awstranslate: New elements around the
AWS transcription and translation services.
-
polly: New element around the AWS text-to-speech polly services
-
speechmatics: New transcriber / speech-to-text and translation element
-
translationbin: Helper bin around translation elements, similar to the
already existing transcriberbin for transcriptions.
HLS DASH adaptive streaming improvements
-
The adaptivedemux2 client implementation gained support for file:// URIs
and as such the ability to play HLS and DASH from local files. It also no
longer sends spurious flush events when it loses sync in live streams, as
that is unexpected and will be handled poorly in non-playback scenarios.
Lastly, support for HTTP request retries was added via the "max-retries"
property, along with some exponential backoff logic which can be fine-tuned
via properties.
-
dashsink has received period duration fixes for dynamic MPDs and
some memory leak fixes.
-
hlscmafsink, hlssink3: New single-variant HLS sink elements that
can output CMAF (fMP4) or MPEG-TS fragments.
-
hlsmultivariantsink: New sink element that can output an HLS stream
with multiple variants
splitmuxsrc, splitmuxsink: lazy loading and dynamic fragment addition
-
splitmuxsrc and splitmuxsink were originally designed to handle a small
number of large file fragments, e.g. for situations where one doesn't want
to exceed a certain file size when recording to legacy file systems. It was
also designed for playing back a static set of file fragments that have been
created by an earlier recording session and no longer changes. Over time
people have found more applications and use cases for the splitmux elements
and have been deploying them in different scenarios, exposing the limits of
the current implementation.
-
In this release, splitmuxsink and splitmuxsrc gained new abilities aimed at
improving support for recordings with a large number of files, and for
adding fragments on the fly to allow playback of ongoing recordings:
-
You can now add fragments directly to splitmuxsrc and provide the offset
and duration in the stream:
-
Providing offset and duration means splitmuxsrc doesn't need to scan the
file to measure it and calculate it. That makes for much faster startup.
-
The new "add-fragment" signal can be used to add files to the set
dynamically - allowing to be playing an ongoing recording and adding
files to the playback set as they are finished.
-
splitmuxsrc no longer keeps all files open, but instead only keeps
100 files open by default, configurable with the "num-open-fragments"
property.
-
There is a new "num-lookahead" property on splitmuxsrc to trigger
(re)opening files a certain distance ahead of the play position.
-
splitmuxsink will report fragment offset and fragment duration via
a message on the bus when closing a file. This information can then be
used to add the new fragment to a splitmuxsrc.
MPEG-TS container format improvements
-
The MPEG-TS muxer and demuxer gained support for
-
H.266 / VVC video muxing and demuxing
-
JPEG-XS video muxing and demuxing
-
VP9 video muxing and demuxing (using a custom mapping)
-
AV1 video muxing and demuxing (using a custom mapping, since
the work-in-progress specification effort doesn't seem to be going anywhere
anytime soon)
-
SMPTE ST-2038 ancillary metadata streams (see section above)
-
mpegtsmux gained support for muxing ID3 metadata into the TS stream,
as well as SMPTE 302M audio.
-
It's also possible to disable sending SCTE-35 null (heartbeat) packets
now in mpegtsmux by setting the "scte-35-null-interval" to 0.
-
tsparse now handles 192-byte M2TS packets
-
mpegtslivesrc: New source element that can wrap a live MPEG-TS source
(e.g. SRT or UDP source) and provides a clock based on the PCR.
Matroska container format improvements
ISO MP4 container format improvements
-
can mux and demux H.266 / VVC in MP4 now
-
can demux Hap video now, as well as Lagarith lossless video
and ISO/IEC 23003-5 raw PCM audio.
-
qtdemux handles keyunit-only trick mode also in push mode now
-
support for ISO/IEC 23001-17 raw video in MP4 in qtdemux and
isomp4mux.
-
support for rotation tags in the muxers and demuxers was improved to correctly
handle per-media and per-track rotations, and support for flips was added as well.
SMPTE 2038 ancillary data streams
-
SMPTE 2038 (pdf) is a generic system to put VBI-style
ancillary data into an MPEG-TS container. This could include all kinds of
metadata such as scoreboard data or game clocks, and of course also closed
captions, in this case in form of a distinct stream completely separate
from any video bitstream.
-
A number of new elements in the GStreamer Rust closedcaption plugin
add support for this, along with mappings for it in the MPEG-TS muxer and
demuxer. The new elements are:
-
st2038ancdemux: splits SMPTE ST-2038 ancillary metadata (as received
from tsdemux ) into separate streams per DID/SDID and line/horizontal_offset.
Will add a sometimes pad with details for each ancillary stream. Also has an
always source pad that just outputs all ancillary streams for easy forwarding
or remuxing, in case none of the ancillary streams need to be modified or
dropped.
-
st2038ancmux: muxes SMPTE ST-2038 ancillary metadata streams into a
single stream for muxing into MPEG-TS with mpegtsmux . Combines ancillary
data on the same line if needed, as is required for MPEG-TS muxing. Can
accept individual ancillary metadata streams as inputs and/or the combined
stream from st2038ancdemux .
If the video framerate is known, it can be signalled to the ancillary
data muxer via the output caps by adding a capsfilter behind it, with
e.g. meta/x-st-2038,framerate=30/1 .
This allows the muxer to bundle all packets belonging to the same frame (with
the same timestamp), but that is not required. In case there are multiple
streams with the same DID/SDID that have an ST-2038 packet for the same
frame, it will prioritise the one from more recently created request pads
over those from earlier created request pads (which might contain a
combined stream for example if that's fed first).
-
st2038anctocc: extracts closed captions (CEA-608 and/or CEA-708) from
SMPTE ST-2038 ancillary metadata streams and outputs them on the respective
sometimes source pad (src_cea608 or src_cea708 ). The data is output as
a closed caption stream with caps closedcaption/x-cea-608,format=s334-1a
or closedcaption/x-cea-708,format=cdp for further processing by other
GStreamer closed caption processing elements.
-
cctost2038anc: takes closed captions (CEA-608 and/or CEA-708) as produced
by other GStreamer closed caption processing elements and converts them into
SMPTE ST-2038 ancillary data that can be fed to st2038ancmux and then to
mpegtsmux for splicing/muxing into an MPEG-TS container. The line-number
and horizontal-offset properties should be set to the desired line number
and horizontal offset.
Analytics
-
Added a GstTensorMeta: This meta is designed to carry tensors from the
inference element to the model-specific tensor decoder. This also includes
a basic GstTensor class containing a single tensor. The actual tensor data
is a GstBuffer .
-
Add N_TO_N relationship to GstAnalyticsRelationMeta: This makes it
possible to describe N-to-N relationships. For example, between classes
and regions in an instance segmentation.
-
Add a new analytics Mtd to carry segmentation masks: Being part of the
GstAnalyticsMeta , it can be in relationship with the other Mtd, such as
the classification and object detection bounding boxes.
-
onvifmetadataextractor: New element that can extract ONVIF metadata
from GstMeta s into a separate stream
-
originalbuffer: New plugin with originalbuffersave / originalbufferrestore
elements that allow saving an original buffer, modifying it for analytics,
and then restoring the original buffer content while keeping any additional
metadata that was added.
-
relationmeta: New plugin with elements converting between
GstRelationMeta and ONVIF XML metadata.
-
Improved Python bindings for a more Pythonic interface when iterating
over GstRelationMeta 's mtd
Vulkan integration enhancements
-
Vulkan Integration Improvements:
-
Memory Management: Non-coherent memory is now invalidated when mapping
for read in vkmemory.
-
Color Space Selection: The vkswapper component now chooses the correct
color space based on the format.
-
Vulkan Plugin Compatibility: Support added for cases where glslc is
not available for building Vulkan plugins, along with GLSL compiler support
for glslang.
-
Fullscreen Quad Updates: Improved support for setting NULL input/output
buffers and added checks for unset video info.
-
Vulkan Buffer Pool Enhancements: Buffer pool access flags and usage
configurations have been refined, offering better performance for video
decoding and encoding.
-
Decoder/Encoder Improvements:
-
H264 Decoder: Enhancements to the vkh264dec component for better
support of extended profiles and interlaced content decoding.
-
H265 Decoder fixes: vkh265dec updated for proper handling of VPS/SPS
on demand, along with fixes to PicOrderCntVal.
-
Encoder Performance: Various internal optimizations to the Vulkan encoder,
including removal of redundant references and better management of the DPB view.
-
Vulkan Instance and Device Management:
-
Device Handling: Added new utility functions for managing Vulkan device
instances, including gst_vulkan_instance_create_device_with_index and
gst_vulkan_ensure_element_device .
-
Device Context Management: Updates to manage Vulkan context handling
more effectively within the application.
OpenGL integration enhancements
-
glcolorconvert gained support for more formats and conversions:
- Planar YUV <-> planar YUV conversions
- Converting to and from
v210 in general
-
v210 <-> planar YUV
-
UYVY and YUY2 <-> planar YUV
-
v210 <-> UYVY and YUY2
- Support for
Y444_10 , Y444_16 , I422_10 , I422_12 pixel formats
(both little endian and big endian variants)
-
gldownload can import DMABufs from a downstream pool
-
glupload gained a DRM raw uploader
Qt5 + Qt6 QML integration improvements
-
qmlglsink, qml6glsink now support external-oes textures, which
allows direct DMABuf import from hardware decoders. Both also support NV12
as an input format now.
-
qmlglsink gained support for RGB16 /BGR16 as input format
-
qmlgl6src can now use a downstream buffer pool when available
-
qmlgloverlay make the depth/stencil buffer optional, which reduces
memory bandwidth on Windows.
CUDA / NVCODEC integration and feature additions
-
Added AV1 video encoder nvav1enc
-
CUDA mode nvcuda{CODEC}enc encode elements are renamed to nv{CODEC}enc
and old nv{CODEC}enc implementations are removed
-
Added support for CUDA Stream-Ordered allocator
-
Added cudacompositor element which is equivalent to the software compositor
element but uses CUDA
-
Added support for CUDA kernel precompile at plugin build time using nvcc
and NVCODEC plugin can cache/reuse compiled CUDA CUBIN/PTX
-
cudaupload and cudadownload elements can support Jetson platform’s NVMM memory
in addition to already supported desktop NVMM memory
-
Introduced nvdswrapper plugin which uses NVIDIA DeepStream SDK APIs with
gst-cuda in an integrated way:
-
nvdsdewarp: NVIDIA
NVWarp360 API based dewarping element
GStreamer Direct3D12 integration
-
New gst-d3d12 public library. The following elements are integrated with the gst-d3d12 library:
- NVIDIA
NVCODEC decoders and encoders can support D3D12 memory
- Intel
QSV encoders can accept D3D12 memory
- All elements in
dwrite plugin can support D3D12 memory
-
The d3d12 library and plugin can be built with MinGW toolchain now
(in addition to MSVC)
-
D3D12 video decoders and d3d12videosink are promoted to have higher rank than D3D11 elements
-
Added support for multiple mip-levels D3D12 textures:
-
Newly added d3d12mipmapping element can generate D3D12 textures
with multiple mip-levels
-
max-mip-levels property is added to d3d12convert**, d3d12video**sink,
and d3d12swapchainsink element, so that the elements can generate an
intermediate texture with multiple mip-levels in order to reduce downscale
aliasing artifacts
-
d3d12convert, d3d12videosink, and d3d12swapchainsink support
the GstColorBalanceInterface to offer color balancing functions
such as hue, saturation, and brightness adjustment
-
Added d3d12ipcsink and d3d12ipcsrc elements for zero-copy GPU memory
sharing between processes
-
d3d12upload and d3d12download support direct GPU memory copy between
D3D12 and D3D12 resources
-
Added d3d12swapchainsink element to support DirectComposition
or UWP/WinUI3 SwapChainPanel based applications
-
Added d3d12deinterlace element which performs deinterlacing using a
GPU vendor agnostic compute shader.
-
d3d12screencapturesrc element can capture HDR enabled desktop correctly
in DDA mode (DXGI Desktop Duplication API)
Capture and playout cards support
-
ajasrc: Improve clock handling, frame counting, capture timestamping,
and signal loss recovery
-
The Blackmagic Decklink plugin gained support
-
for HDR output and input (PQ + HLG static metadata)
-
all modes of Quad HDMI recorder
-
scheduling frames before they need to be displayed in decklinkvideosink
RTP and RTSP stack improvements
-
rtspsrc now supports client-managed MIKEY key management.
Some RTSP servers (e.g. Axis cameras) expect the client to propose the
encryption key(s) to be used for SRTP / SRTCP. This is required to allow
re-keying. This mode can be enabled by enabling the "client-managed-mikey-mode"
property and comes with a number of new signals ("request-rtp-key" and
"request-rtcp-key" ), action signals ("set-mikey-parameter" and "remove-key" )
and properties ("hard-limit" and "soft-limit" ).
-
rtpbin: Add new "never" and "ntp" RTCP sync modes
- Never is useful for some RTSP servers that report plain garbage both via
RTCP SR and RTP-Info, for example.
- NTP is useful if synchronization should only ever happen based on RTCP
SR or NTP-64 RTP header extensions.
This is part of a bigger refactoring of the synchronization / offsetting
code in rtpbin , which also makes it regularly emit the sync signal even if
no new synchronisation information is available, controlled by the new
"min-sync-interval" property.
-
rtpjitterbuffer: add RFC7273 active status to jitterbuffer stats so
applications can easily check whether RFC7273 sync is active.
-
rtph265depay: Add "wait-for-keyframe" "request-keyframe" properties and improve request keyframe logic
-
rtppassthroughpay gained the ability to regenerate RTP timestamps from
buffer timestamps via the new "retimestamp-mode" property. This is useful
in a relay RTSP server if one wants to do full drift compensation and ensure
that the stream coming out of gst-rtsp-server is not drifting compared to the
pipeline clock and also not compared to the RTCP NTP times.
-
New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV,
MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw), PCMA (aLaw), VP8, VP9.
-
New rtpbin2 based on separate rtprecv and rtpsend elements
WebRTC improvements
New elements and plugins
-
Many exciting new Rust elements, see Rust section below.
-
webview2src: new Microsoft WebView2 based web browser source element
-
h264ccextractor, h264ccinserter: H.264 closed caption extractor / inserter
-
h265ccextractor, h265ccinserter: H.265 closed caption extractor / inserter
-
h266parse
-
lcevch264decodebin
-
New VA elements (see below): vah266dec, vavp8enc, vajpegenc,
vavp8alphadecodebin, vavp9alphadecodebin
-
svtjpegxsdec, svtjpegxsenc: SVT JPEG XS decoder/encoder
-
Many other new elements mentioned in other sections (e.g. CUDA, NVCODEC, etc.)
New element features and additions
-
audioconvert enhancements:
-
Add possibility to reorder input channels when audioconvert has
unpositionned audio channels as input. It can now use reordering
configurations to automatically position those channels via the new
"input-channels-reorder" and "input-channels-reorder-mode" properties.
-
Better handling of setting of the mix matrix at run time
-
handles new GstRequestMixMatrix custom upstream event
-
audiorate: Take the tolerance into account when filling gaps; better
accounting of the number of samples added or dropped.
-
av1enc: Add "timebase" property to allow configuring a specific
time base, in line with what exists for vp8enc and vp9enc already.
-
av1parse can parse annexb streams now, and typefinding support has
been added for annexb streams as well.
-
The GTK3 plugin has gained support for OpenGL/WGL on Windows
-
fdsrc has a new "is-live" property to make it act like a live source
and timestamp the received data with the clock running time.
-
imagefreeze: Add support for JPEG and PNG
-
kmssink: Extended the functionality to support buffers with DRM formats
along with non-linear buffers
-
pitch now supports reverse playback
-
queue can emit the notify signal on queue level changes if the
"notify-levels" property has been set.
-
qroverlay: the "pixel-size" property has been removed in favour of
a new "size" property with slightly different semantics, where the size
of the square is expressed in percent of the smallest of width and height.
-
rsvgdec: Negotiate resolution with downstream and scale accordingly
-
rtmp2: server authentication improvements
-
Mimic librtmp's behaviour and support additional connection parameters for
the connect packet, which are commonly used for authentication, via the
new "extra-connect-args" property.
-
Add support for Limelight CDN (llnw) authentication
-
scaletempo has gained support for a "fit-down" mode: In fit-down
mode only 1.0 rates are supported, and the element will fit audio data in
buffers to their advertised duration. This is useful in speech synthesis
cases, where elements such as awspolly will generate audio data from text,
and assign the duration of the input text buffers to their output buffers.
Translated or synthesised audio might be longer than the original inputs,
so this makes sure the audio will be sped up to fit the original duration,
so it doesn't go out of sync.
-
souphttpsrc: Add the notion of "retry-backoff" and retry on
503 (service unavailable) and 500 (internal server error) http errors.
-
taginject now modifies existing tag events of the selected scope, with
the new "merge-mode" property allowing finer control.
-
timecodestamper gained a new running-time source mode that converts
the buffer running time into timecodes.
-
playbin3, uridecodebin3, parsebin
- lots of stream-collection handling and stability/reliability fixes
- error/warning/info message now include the URI (if known) and stream-id
- missing plugin messages include the stream-id
-
videocodectestsink gained support for GBR_10LE, GRAY8 and
GRAY10_LE{16,32} pixel formats
-
videoflip gained support for the Y444_16LE and Y444_16BE pixel formats
-
videoconvertscale:
- Handle pixel aspect ratios with large numerators or denominators
- Explicitly handle the overlaycomposition meta caps feature, so it doesn't
get dropped unnecessarily
-
waylandsink prefers DMABuf over system memory now
-
x264enc has a new "nal-hrd" property to make the encoder signal
HRD information, which is required for Blu-ray streams, television broadcast
and a few other specialist areas. It can also be used to force true CBR, and
will cause the encoder to output null padding packets.
-
zbar: add support for binary mode and getting symbols as raw bytes instead of a text string.
Plugin and library moves
- macOS: atdec was moved from the
applemedia plugin in -bad to the osxaudio
plugin in -good, in order to be able to share audio-related helper methods.
Plugin and element removals
Miscellaneous API additions
GStreamer Core
-
gst_meta_api_type_set_params_aggregator() allows setting an
GstAllocationMetaParamsAggregator function for metas, which has been
implemented for GstVideoMeta and is used to aggregate alignment
requirements of multiple tee branches.
-
gst_debug_print_object() and gst_debug_print_segment() have been made
public API. The can be used to easily get string representations of various
types of (mini)objects in custom log handlers.
-
Added gst_aggregator_push_src_event() , so subclasses don't just push events
directly onto the source pad bypassing the base class without giving it the
chance to send out any pending serialised events that should be sent out
before.
-
GstMessage has gained APIs to generically add "details" to messages:
gst_message_set_details()
gst_message_get_details()
gst_message_writable_details()
gst_message_parse_error_writable_details()
gst_message_parse_warning_writable_details()
-
gst_message_parse_info_writable_details()
This is used in uridecodebin3 to add the triggering URI to any INFO,
WARNING or ERROR messages posted on the bus, and in decodebin3 to add
the stream ID to any missing plugin messages posted on the bus.
-
gst_util_floor_log2() returns smallest integral value not bigger than log2(v).
-
gst_util_fraction_multiply_int64() is a 64-bit variant of gst_util_fraction_multiply() .
GstIdStr replaces GQuark in structure and caps APIs
-
GQuark s are integer identifiers for strings that are inserted into a
global hash table, allowing in theory for cheap equality comparisons. In
GStreamer they have been used to represent GstStructure names and field
names. The problem is that these strings once added to the global string table
can never be freed again, which can lead to ever-increasing memory usage
for processes where such name identifiers are created based on external
input or on locally-created random identifiers.
-
GstIdStr is a new data structure made to replace quarks in our APIs.
It can hold a short string inline, a static string, or a reference to a
heap-allocated longer string, and allows for cheap storage of short strings
and cheap comparisons. It does not involve access to a global hash table
protected by a global lock, and as most strings used in GStreamer structures
are very short, it is actually more performant than quarks in many scenarios.
-
GQuark -using APIs in GstStructure or GstCaps have been deprecated and
equivalent APIs using GstIdStr have been added instead. For more details
about this change watch Sebastian's GStreamer Conference presentation
"GQuark in GStreamer structures - what nonsense!".
-
Most applications and plugins will have been using the plain string-based
APIs which are not affected by this change.
GstVecDeque
-
Moved GstQueueArray as GstVecDeque into core for use in GstBus ,
the ringbuffer logger and in GstBufferPool , where an overly complicated
signaling mechanism using GstAtomicQueue and GstPoll was replaced with
GstVecDeque and a simple mutex/cond.
-
GstQueueArray in libgstbase was deprecated in favour of GstVecDeque .
-
GstAtomicQueue will be deprecated once all users in GStreamer have been
moved over to GstVecDeque .
Audio Library
-
Added gst_audio_reorder_channels_with_reorder_map() which allows
reordering the samples with a pre-calculated reorder map instead of
re-calculating the reorder map every time.
-
Add top-surround-left and top-surround-right channel positions
-
GstAudioConverter now supports more numerical types for the mix matrix,
namely double, int, int64, uint, and uint64 in addition to plain floats.
Plugins Base Utils Library
-
New AV1 caps utility functions for AV1 Codec Configuration Record
codec_data handling
-
The GstEncodingProfile (de)serialization functions are now public
-
GstEncodingProfile gained a way to specify a factory-name when specifying
caps. In some cases you want to ensure that a specific element factory is
used while requiring some specific caps, but this was not possible so far.
You can now do e.g. qtmux:video/x-prores,variant=standard|factory-name=avenc_prores_ks
to ensure that the avenc_prores_ks factory is used to produce the
variant of prores video stream.
Tag Library
Video Library and OpenGL Library
-
gst_video_convert_sample() , gst_video_convert_sample_async() gained
support for D3D12 conversion.
-
GstVideoEncoder : gst_video_encoder_release_frame() and
gst_video_encoder_drop_frame() have been made available as public API.
-
Navigation: gained mouse double click event support
-
Video element QoS handling was improved so as to not overshoot the QoS
earliest time by a factor of 2. This was fixed in the video decoder, encoder,
aggregator and audiovisualizer base classes, as well as in the adaptivedemux,
deinterlace, monoscope, shapewipe, and (old) videomixer elements.
-
GstVideoConverter gained fast paths for v210 to/from I420_10 / I422_10
-
New gst_video_dma_drm_format_from_gst_format() helper function that
converts a video format into a dma drm fourcc / modifier pair, plus
gst_video_dma_drm_format_to_gst_format() which will do the reverse.
-
In the same vein gst_gl_dma_buf_transform_gst_formats_to_drm_formats() and
gst_gl_dma_buf_transform_drm_formats_to_gst_formats() have been added to
the GStreamer OpenGL support library.
-
GLDisplay/EGL: Add API (gst_gl_display_egl_set_foreign() ) for overriding
foreign-ness of the EGLDisplay in order to control whether GStreamer should
call eglTerminate() or not.
-
Additional DMA DRM format definitions/mappings:
-
NV15 , NV20 , NV30
-
NV12_16L32S , MT2110T , MT2110R as used on Meditek SoCs
NV12_10LE40
-
RGB15 , GRAY8 , GRAY16_LE , GRAY16_BE
- plus support for big endian DRM formats and DRM vendor modifiers
New Raw Video Formats
-
Packed 4:2:2 YUV with 16 bits per channel:
-
Packed 4:4:4:4 YUV with alpha, with 16 bits per channel:
-
10-bit grayscale, packed into 16-bit words with left padding:
GstPlay Library
-
Add stream-id based selection of streams to better match playbin3's API:
- Add accessors for the stream ID and selection API based on the stream ID:
gst_play_stream_info_get_stream_id()
gst_play_set_audio_track_id()
gst_play_set_video_track_id()
gst_play_set_subtitle_track_id()
gst_play_set_track_ids()
- Deprecate the old index-based APIs:
gst_play_stream_info_get_index()
gst_play_set_audio_track()
gst_play_set_video_track()
gst_play_set_subtitle_track()
- Remove old playbin support
- Implement the track enable API based on stream selection
-
Distinguish missing plugin errors and include more details
(uri, and stream-id if available) in error/warning messages:
gst_play_message_get_uri()
gst_play_message_get_stream_id()
GST_PLAY_ERROR_MISSING_PLUGIN
gst_play_message_parse_error_missing_plugin()
gst_play_message_parse_warning_missing_plugin()
-
Improve play message API inconsistencies:
- Consistently name parse functions according to their message type:
gst_play_message_parse_duration_changed()
gst_play_message_parse_buffering()
- Deprecate the misnamed functions:
gst_play_message_parse_duration_updated()
gst_play_message_parse_buffering_percent()
- Add missing parse functions:
gst_play_message_parse_uri_loaded()
gst_play_message_parse_seek_done()
-
Support disabling the selected track at startup
Miscellaneous performance, latency and memory optimisations
-
dvdspu: use multiple minimal sized PGS overlay rectangles instead of
a single large one to minimise the total blitting surface in case of
disjointed rectangles.
-
video-frame: reduce number of memcpy() calls on frame copies if possible
-
video-converter: added fast path conversions between v210 and I420_10 / I422_10
-
As always there have been plenty of performance, latency and memory optimisations
all over the place.
Miscellaneous other changes and enhancements
-
netclientclock: now also emits the clock synced signal when corrupted
to signal that sync has been lost.
-
GstValue , GstStructure : can now (de)serialize string arrays (G_TYPE_STRV )
Tracing framework and debugging improvements
-
dot files (pipeline graph dumps) are now written to disk atomically
-
tracing: add hooks for gst_pad_send_event_unchecked() and GstMemory init/free
-
tracers: Simplify params handling using GstStructure and object properties
and move tracers over to property-based configuration (leaks, latency).
-
textoverlay, clockoverlay, timeoverlay: new "response-time-compensation"
property that makes the element render the text or timestamp twice: Once in
the normal location and once in a different sequentially predictable location
for every frame. This is useful when measuring video latency by taking a photo
with a camera of two screens showing the test video overlayed with timeoverlay
or clockoverlay. In these cases, you will often see ghosting if the display's
pixel response time is not great, which makes it difficult to discern what the
current timestamp being shown is. Rendering in a different location for each
frame makes it easy to tell what the latest timestamp is. In addition, you
can also use the fade-time of the previous frame to measure with sub-framerate
accuracy when the photo was taken, not just clamped to the framerate, giving
you a higher precision latency value.
New tracers
-
memory-tracer: New tracer that can track memory usage over time
-
pad-push-timings: New tracer for tracing pad push timings
-
pcap-writer: New tracer that can store the buffers flowing through a pad as PCAP file
Dot tracer/viewer
Debug logging system improvements
- Nothing major in this cycle.
Tools
GStreamer FFmpeg wrapper
-
Add support for H.266/VVC decoder
-
Add mappings for the Hap video codec, the Quite OK Image codec (QOI)
and the M101 Matrox uncompressed SD video codec.
-
Don't register elements for which we have no caps and which were
non-functional as a result (showing unknown/unknown caps).
-
The S302M audio encoder now supports up to 8 channels.
-
Various tag handling improvements in the avdemux wrappers, especially
when there are both upstream tags and additional local tags.
-
Support for 10-bit grayscale formats
GStreamer RTSP server
-
GstRTSPOnvifMediaFactoryClass gained a ::create_backchannel_stream() vfunc.
This allows subclasses to delay creation of the backchannel to later in the
sequence, which is useful in scenarios where the RTSP server acts as a relay
and the supported caps depend on the upstream camera, for example.
-
The ONVIF backchannel example now features support for different codecs,
including AAC.
VA-API integration
VA plugin
-
New VA elements:
- H.266 / VVC video decoder
- VP8 video encoder
- JPEG encoder
- VP9 + VP8 alpha decodebin
Remember that the availability of these elements depends on your platform and
driver.
-
There are a lot of improvements and bug fixes, to hightlight some of them:
-
Improved B pyramid mode for both H264 and HEVC encoding when reference
frame count exceeds 2, optimizing pyramid level handling.
- Enabled ICQ and QVBR modes for several encoders, including H264, H265,
VP9 and AV1.
-
Updated rate control features by setting the quality factor parameter,
while improving bitrate change handling.
- Improved VP9 encoder’s ability to avoid reopening or renegotiating encoder
settings when parameters remain stable.
- Added functionality to adjust the trellis parameter in encoders.
-
Optimize encoders throughput with the introduction of output delay.
- Added support for new interpolation methods for scaling
and improvements for handling interlace modes.
GStreamer-VAAPI is now deprecated
-
gstreamer-vaapi has been deprecated and is no longer actively maintained.
Users who rely on gstreamer-vaapi are encouraged to migrate to the va
plugin's elements at the earliest opportunity.
-
vaapi*enc encoders have been demoted to a rank of None, so will no longer
be autoplugged in encodebin . They have also no longer advertise dmabuf caps
or unusual pixel formats on their input pad template caps.
GStreamer Video4Linux2 support
-
Implemented DMA_DRM caps negotiation
-
Framerate negotiation improvements
-
Support for P010 and BGR10A2_LE pixel formats
-
The V4L2 stateless decoders now support inter-frame resolution changes for AV1 and VP9
-
The V4L2 stateful encoders can now handle dynamic frame rates (0/1),
and colorimetry negotiation was also improved.
GStreamer Editing Services and NLE
-
Added support for reverse playback with a new reverse property on
nlesource which is exposed child property on GESClip
-
Input channels reordering for flexible audio channel mapping
-
Added support for transition in the ges-launch-1.0 timeline description
format
-
Added support for GstContext sharing in GESTimeline
-
Added basic support for duplicated children property in GESTimelineElement
-
validate: Add an action type to group clips
GStreamer validate
-
Added new action types:
-
start-http-server : Start a new instance of our HTTP test server
-
http-requests : Send an HTTP request to a server, designed to work
with our test http server
-
HTTP server control endpoints to allow scenarios to control the server
behavior, allowing simulating server failures from tests
-
Improved the select-streams action type, adding support for selecting
the same streams several times
-
Added support for forcing monitoring of all pipelines in validatetest files
-
Enhanced support for expected Error messages on the bus
-
Added ways to retrieve HTTP server port in .validatetest files
-
Added support for lldb in the gst-validate-launcher
GStreamer Python Bindings
gst-python is an extension of the regular GStreamer Python bindings based on
gobject-introspection information and PyGObject, and provides "syntactic sugar"
in form of overrides for various GStreamer APIs that makes them easier to use
in Python and more pythonic; as well as support for APIs that aren't available
through the regular gobject-introspection based bindings, such as e.g.
GStreamer's fundamental GLib types such as Gst.Fraction , Gst.IntRange etc.
-
The python Meson build option has been renamed to python-exe (and will
yield to the monorepo build option of the same name if set, in a monorepo
build context).
-
Added an iterator for AnalyticsRelationMeta
-
Implement __eq__ for Mtd classes
-
Various build fixes and Windows-related fixes.
GStreamer C# Bindings
- The C# bindings have been updated for the latest GStreamer 1.26 API
GStreamer Rust Bindings and Rust Plugins
The GStreamer Rust bindings and plugins are released separately with a different
release cadence that's tied to the gtk-rs release cycle.
The latest release of the bindings (0.23) has already been updated for the new
GStreamer 1.26 APIs, and works with any GStreamer version starting at 1.14.
gst-plugins-rs , the module containing GStreamer plugins written in Rust,
has also seen lots of activity with many new elements and plugins. The GStreamer
1.26 binaries will be tracking the main branch of gst-plugins-rs for
starters and then track the 0.14 branch once that has been released (around
summer 2025). After that, fixes from newer versions will be backported as
needed to the 0.14 branch for future 1.26.x bugfix releases.
Rust plugins can be used from any programming language. To applications
they look just like a plugin written in C or C++.
New Rust elements
-
awstranscriber2, awstranslate: New elements around the
AWS transcription and translation services.
-
cea708mux: New element that allows to mux multiple CEA708 services
into a single stream.
-
cdpserviceinject: New element for injecting a CDP service descriptor
into closed caption CDP packets
-
cea708overlay: New element for overlaying CEA608 / CEA708 closed
captions over video streams.
-
gopbuffer: New element that can buffer a minimum duration of data
delimited by discrete GOPs (Group of Picture)
-
hlscmafsink, hlssink3: New single-variant HLS sink elements that
can output CMAF (fMP4) or MPEG-TS fragments.
-
hlsmultivariantsink: New sink element that can output an HLS stream
with multiple variants
-
mpegtslivesrc: New source element that can wrap a live MPEG-TS source
(e.g. SRT or UDP source) and provides a clock based on the PCR.
-
onvifmetadataextractor: New element that can extract ONVIF metadata
from GstMeta s into a separate stream
-
originalbuffer: New plugin with originalbuffersave / originalbufferrestore
elements that allow saving an original buffer, modifying it for analytics,
and then restoring the original buffer content while keeping any additional
metadata that was added.
-
polly: New element around the AWS text-to-speech polly services
-
quinn: New plugin that contains various QUIC-based elements for working
with raw QUIC streams, RTP-over-QUIC (RoQ) and WebTransport.
-
relationmeta: New plugin with elements converting between
GstRelationMeta and ONVIF XML metadata.
-
New Rust RTP payloaders and depayloaders for AC3, AMR, JPEG, KLV,
MPEG-TS (MP2T), MPEG-4 (MP4A, MP4G), Opus, PCMU (uLaw), PCMA (aLaw), VP8, VP9.
-
New rtpbin2 based on rtprecv / rtpsend elements
-
speechmatics: New transcriber / speech-to-text and translation element
-
New spotifylyricssrc element for grabbing lyrics from Spotify.
-
streamgrouper: New element that takes any number of streams as input
and adjusts their stream-start events in such a way that they all belong
to the same stream group.
-
translationbin: Helper bin around translation elements, similar to the
already existing transcriberbin for transcriptions.
-
tttocea708: New element for converting timed-text to CEA708 closed captions
-
A VVdeC-based H.266 decoder element was added to the Rust plugins,
based on the Fraunhofer Versatile Video Decoder library.
For a full list of changes in the Rust plugins see the
gst-plugins-rs ChangeLog between versions 0.12
(shipped with GStreamer 1.24) and 0.14.x (shipped with GStreamer 1.26).
Note that at the time of GStreamer 1.26.0 gst-plugins-rs 0.14 was not
released yet and the git main branch was included instead (see above).
As such, the ChangeLog also did not contain the changes between the latest
0.13 release and 0.14.0.
Build and Dependencies
-
Meson >= 1.4 is now required for all modules
-
liborc >= 0.4.41 is strongly recommended
-
libnice >= 0.1.22 is strongly recommended, as it is required
for WebRTC ICE consent freshness (RFC 7675).
-
The ASIO plugin dropped its external SDK header dependency,
so it can always be built and shipped more easily.
-
Require tinyalsa >= 1.1.0 when building the tinyalsa plugin
-
The srtp plugin now requires libsrtp2, support for libsrtp1 was dropped.
Monorepo build
gstreamer-full
Development environment
-
Local pre-commit checks via git hooks have been moved over to pre-commit ,
including the code indentation check.
-
Code indentation checking no longer relies on a locally installed copy of
GNU indent (which had different outcomes depending on the exact version
installed). Instead pre-commit will automatically install the gst-indent-1.0
indentation tool through pip, which also works on Windows and macOS.
-
A pre-commit hook has been added to check documentation cache updates and
since tags.
-
Many meson wrap updates, including to FFmpeg 7.1
-
The uninstalled development environment should work better on macOS now,
also in combination with homebrew (e.g. when libsoup comes from homebrew).
-
New python-exe Meson build option to override the target Python installation
to use. This will be picked up by the gst-python and gst-editing-sevices
subprojects.
Platform-specific changes and improvements
Android
- The recommended mechanism to build Android apps has changed from
Android.mk to CMake-in-Gradle using
FindGStreamerMobile.cmake .
Android.mk support has been deprecated and will be removed in the
next stable release. For more information, see below, in the Cerbero section.
-
More H.264/H.265 profiles and levels have been added to the androidmedia
hardware-accelerated video encoder and decoder elements, along with
mappings for a number of additional pixel formats for P010, packed 4:2:0
variants and RGBA layouts, which fixes problems with android decoders
refusing to output raw video frames with decoders that announce support
for these common pixel formats and only allow the 'hardware surfaces output'
path.
Apple macOS and iOS
-
atenc: added an Apple AAC audio encoder
-
atdec can now decode audio with more than two channels
-
vtenc has received various bug fixes as well as a number of new features:
- Support for HEVC with alpha encoding via the new
vtenc_h265a element
- additional rate control options for constant bitrate encoding (only
supported on macOS 13.0+ and iOS 16.0+ on Apple Silicon), setting data
rate limits, and emulating CBR mode via data rate limits where CBR is not
supported.
-
HLG color transfer support
- new
"max-frame-delay" property (for ProRes)
-
Better macOS support for gst-validate tools which now use gst_macos_main() and support lldb
-
The osxaudio device provider exposes more properties including a unique id
-
osxaudio will automatically set up AVAudioSession on iOS and always
expose the maximum number of channels a device supports with an unpositioned
layout.
-
The monorepo development environment should work better on macOS now
-
CMake apps that build macOS and iOS apps can consume GStreamer more easily now,
using FindGStreamer.cmake or FindGStreamerMobile.cmake respectively.
-
In the near future, CMake in Xcode will be the preferred way of building the
iOS tutorials. See below, in the Cerbero section.
Windows
-
webview2src : new Microsoft WebView2 based web browser source element
-
The mediafoundation plugin can also be built with MinGW now.
-
The GTK3 plugin has gained support for OpenGL/WGL on Windows
-
qsv: Add support for d3d12 interop in encoder, via D3D11 textures
Cerbero
Cerbero is a meta build system used to build GStreamer plus dependencies
on platforms where dependencies are not readily available, such as Windows,
Android, iOS, and macOS.
General improvements
macOS
iOS
Windows
-
The minimum supported OS version is now Windows 10.
- GStreamer itself can still be built for an older Windows, so if your
project is majorly impacted by this, please open an issue
with details.
-
The Windows MSI installers are now based on WiX v5, with several improvements
including a much faster MSI creation process, improved naming in Add/Remove Programs,
and more.
-
Windows installer packages: Starting with 1.26, due to security reasons, the
default installation directory has changed from C:\gstreamer to the Program Files
folder, e.g. C:\Program Files (x86)\gstreamer for the 32-bit package on 64-bit
Windows. If you upgrade from 1.24 or older versions, the 1.26 installers will
NOT keep using the existing folder. Nevertheless if you were using
C:\gstreamer we strongly recommend you double-check the install location.
-
Note for MSI packagers: Starting with 1.26, the installers were ported to WiX 5.0.
As part of this, the property for setting the installation directory has been changed
to INSTALLDIR , and it now requires a full path to the desired directory, e.g.
C:\gstreamer instead of C:\ .
-
Cross-MinGW build no longer supports the creation of MSIs. Please use tarballs.
-
MinGW:
-
MinGW toolchain has been updated from GCC 8.2 → 14.2 and MinGW 6.0 → 12.0
-
The mediafoundation plugin is also shipped in the MinGW packages now.
-
The d3d12 plugin is also shipped in the MinGW packages now.
-
Rust support has been enabled on MinGW 64-bit. Rust support cannot work on 32-bit MinGW
due to differences in exception handling between our 32-bit MinGW toolchain and that
used by the Rust project
-
The asio plugin is shipped now, since it no longer has a build-time dependency on the ASIO SDK.
-
The new plugin webview2 is shipped with MSVC. It requires the relevant component shipped with Windows.
Linux
-
Preliminary support for Alma Linux has been added.
-
RHEL distro support has been improved.
-
Cerbero CI now tests the build on Ubuntu 24.04 LTS.
-
curl is used for downloading sources on Fedora instead of wget , since they have moved to
wget2 despite show-stopper regressions such
as returning a success error code on download failure.
Android
Documentation improvements
- Tracer objects information is now included in the documentation
Possibly Breaking Changes
-
qroverlay: the "pixel-size" property has been removed in favour of
a new "size" property with slightly different semantics, where the size
of the square is expressed in percent of the smallest of width and height.
-
svtav1enc: The SVT-AV1 3.0.0 API exposes a different mechanism to
configure the level of parallelism when encoding, which has been exposed as
a new "level-of-parallelism" property. The old "logical-processors"
property is no longer functional if the plugin has been compiled against
the new API, which might affect encoder performance if application code
setting it is not updated.
-
udpsrc: now disables allocated port reuse for unicast to avoid unexpected
side-effects of SO_REUSEADDR where the kernel allocates the same listening
port for multiple udpsrc.
-
uridecodebin3 remove non-functional "source" property that doesn't
make sense and always returned NULL anyway.
Known Issues
-
GstBuffer now uses C11 atomics for 64 bit atomic operations if available,
which may require linking to libatomic on some systems, but this is not
done automatically yet, see issue #4177.
Statistics
Contributors
Aaron Boxer, Adrian Perez de Castro, Adrien De Coninck, Alan Coopersmith,
Albert Sjolund, Alexander Slobodeniuk, Alex Ashley, Alicia Boya García,
Andoni Morales Alastruey, Andreas Wittmann, Andrew Yooeun Chun,
Angelo Verlain, Aniket Hande, Antonio Larrosa, Antonio Morales,
Armin Begovic, Arnaud Vrac, Artem Martus, Arun Raghavan, Benjamin Gaignard,
Benjamin Gräf, Bill Nottingham, Brad Hards, Brad Reitmeyer, Branko Subasic,
Carlo Caione, Carlos Bentzen, Carlos Falgueras García, cdelguercio,
Chao Guo, Cheah, Cheung Yik Pang, chitao1234, Chris Bainbridge,
Chris Spencer, Chris Spoelstra, Christian Meissl, Christopher Degawa,
Chun-wei Fan, Colin Kinloch, Corentin Damman, Daniel Morin, Daniel Pendse,
Daniel Stone, Dan Yeaw, Dave Lucia, David Rosca, Dean Zhang (张安迪),
Denis Yuji Shimizu, Detlev Casanova, Devon Sookhoo, Diego Nieto, Dongyun Seo,
dukesook, Edward Hervey, eipachte, Eli Mallon, Elizabeth Figura, Elliot Chen,
Emil Ljungdahl, Emil Pettersson, eri, F. Duncanh, Fotis Xenakis,
Francisco Javier Velázquez-García, Francis Quiers, François Laignel,
George Hazan, Glyn Davies, Guillaume Desmottes, Guillermo E. Martinez,
Haihua Hu, Håvard Graff, He Junyan, Hosang Lee, Hou Qi, Hugues Fruchet,
Hyunwoo, iodar, jadarve, Jakub Adam, Jakub Vaněk, James Cowgill,
James Oliver, Jan Alexander Steffens (heftig), Jan Schmidt, Jeffery Wilson,
Jendrik Weise, Jerome Colle, Jesper Jensen, Jimmy Ohn, Jochen Henneberg,
Johan Sternerup, Jonas K Danielsson, Jonas Rebmann, Jordan Petridis,
Jordan Petridіs, Jordan Yelloz, Jorge Zapata, Joshua Breeden, Julian Bouzas,
Jurijs Satcs, Kévin Commaille, Kevin Wang, Khem Raj, kingosticks,
Leonardo Salvatore, L. E. Segovia, Liam, Lim, Loïc Le Page, Loïc Yhuel,
Lyra McMillan, Maksym Khomenko, Marc-André Lureau, Marek Olejnik,
Marek Vasut, Marianna Smidth Buschle, Marijn Suijten, Mark-André Schadow,
Mark Nauwelaerts, Markus Ebner, Martin Nordholts, Mart Raudsepp,
Mathieu Duponchelle, Matthew Waters, Maxim P. DEMENTYEV, Max Romanov,
Mengkejiergeli Ba, Michael Grzeschik, Michael Olbrich, Michael Scherle,
Michael Tretter, Michiel Westerbeek, Mikhail Rudenko, Nacho Garcia,
Nick Steel, Nicolas Dufresne, Niklas Jang, Nirbheek Chauhan, Ognyan Tonchev,
Olivier Crête, Oskar Fiedot, Pablo García, Pablo Sun, Patricia Muscalu,
Paweł Kotiuk, Peter Kjellerstedt, Peter Stensson, pgarciasancho,
Philippe Normand, Philipp Zabel, Piotr Brzeziński, Qian Hu (胡骞),
Rafael Caricio, Randy Li (ayaka), Rares Branici, Ray Tiley,
Robert Ayrapetyan, Robert Guziolowski, Robert Mader, Roberto Viola,
Robert Rosengren, RSWilli,Ruben González, Ruijing Dong, Sachin Gadag,
Sam James, Samuel Thibault, Sanchayan Maity, Scott Moreau, Sebastian Dröge,
Sebastian Gross, Sebastien Cote, Sergey Krivohatskiy, Sergey Radionov,
Seungha Yang, Seungmin Kim, Shengqi Yu, Sid Sethupathi, Silvio Lazzeretti,
Simonas Kazlauskas, Stefan Riedmüller, Stéphane Cerveau, Tamas Levai,
Taruntej Kanakamalla, Théo Maillart, Thibault Saunier, Thomas Goodwin,
Thomas Klausner, Tihran Katolikian, Tim Blechmann, Tim-Philipp Müller,
Tjitte de Wert, Tomas Granath, Tomáš Polomský, tomaszmi, Tom Schuring,
U. Artie Eoff, valadaptive, Víctor Manuel Jáquez Leal, Vivia Nikolaidou,
W. Bartel, Weijian Pan, William Wedler, Will Miller, Wim Taymans,
Wojciech Kapsa, Xavier Claessens, Xi Ruoyao, Xizhen, Yaakov Selkowitz,
Yacine Bandou, Zach van Rijn, Zeno Endemann, Zhao, Zhong Hongcheng,
... and many others who have contributed bug reports, translations,
sent suggestions or helped testing. Thank you all!
Stable 1.26 branch
After the 1.26.0 release there will be several 1.26.x bug-fix releases which
will contain bug fixes which have been deemed suitable for a stable branch,
but no new features or intrusive changes will be added to a bug-fix release
usually. The 1.26.x bug-fix releases will be made from the git 1.26 branch,
which is a stable release series branch.
Schedule for 1.28
Our next major feature release will be 1.28, and 1.27 will be the unstable
development version 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.
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 with contributions from Arun Raghavan, Daniel Morin, Nirbheek Chauhan, Olivier Crête, Philippe Normand, Sebastian Dröge, Seungha Yang, Thibault Saunier, and Víctor Manuel Jáquez Leal.
License: CC BY-SA 4.0
|
 |