-- assrender: handle more font mime types; better interaction with
- matroskademux for embedded fonts
-
-- audiobuffersplit: Add support for specifying output buffer size in
- bytes (not just duration)
-
-- audiolatency: new "samplesperbuffer" property so users can configure
- the number of samples per buffer. The default value is 240 samples
- which is equivalent to 5ms latency with a sample rate of 48000,
- which might be larger than actual buffer size of audio capture
- device.
-
-- audiomixer, audiointerleave, GstAudioAggregator: now keep a count of
- samples that are dropped or processed as statistic and can be made
- to post QoS messages on the bus whenever samples are dropped by
- setting the "qos-messages" property on input pads.
-
-- audiomixer, compositor: improved handling of new inputs added at
- runtime. New API was added to the GstAggregator base class to allow
- subclasses to opt into an aggregation mode where inactive pads are
- ignored when processing input buffers
- (gst_aggregator_set_ignore_inactive_pads(),
- gst_aggregator_pad_is_inactive()). An “inactive pad” in this context
- is a pad which, in live mode, hasn’t yet received a first buffer,
- but has been waited on at least once. What would happen usually in
- this case is that the aggregator would wait for data on this pad
- every time, up to the maximum configured latency. This would
- inadvertently push mixer elements in live mode to the configured
- latency envelope and delay processing when new inputs are added at
- runtime until these inputs have actually produced data. This is
- usually undesirable. With this new API, new inputs can be added
- (requested) and configured and they won’t delay the data processing.
- Applications can opt into this new behaviour by setting the
- "ignore-inactive-pads" property on compositor, audiomixer or other
- GstAudioAggregator-based elements.
-
-- cccombiner: implement “scheduling” of captions. So far cccombiner’s
- behaviour was essentially that of a funnel: it strictly looked at
- input timestamps to associate together video and caption buffers.
- Now it will try to smoothly schedule caption buffers in order to
- have exactly one per output video buffer. This might involve
- rewriting input captions, for example when the input is CDP then
- sequence counters are rewritten, time codes are dropped and
- potentially re-injected if the input video frame had a time code
- meta. This can also lead to the input drifting from synchronisation,
- when there isn’t enough padding in the input stream to catch up. In
- that case the element will start dropping old caption buffers once
- the number of buffers in its internal queue reaches a certain limit
- (configurable via the "max-scheduled" property). The new original
- funnel-like behaviour can be restored by setting the "scheduling"
- property to FALSE.
-
-- ccconverter: new "cdp-mode" property to specify which sections to
- include in CDP packets (timecode, CC data, service info). Various
- software, including FFmpeg’s Decklink support, fails parsing CDP
- packets that contain anything but CC data in the CDP packets.
-
-- clocksync: new "sync-to-first" property for automatic timestamp
- offset setup: if set clocksync will set up the "ts-offset" value
- based on the first buffer and the pipeline’s running time when the
- first buffer arrived. The newly configured "ts-offset" in this case
- would be the value that allows outputting the first buffer without
- waiting on the clock. This is useful for example to feed a non-live
- input into an already-running pipeline.
-
-- compositor:
-
- - multi-threaded input conversion and compositing. Set the
- "max-threads" property to activate this.
- - new "sizing-policy" property to support display aspect ratio
- (DAR)-aware scaling. By default the image is scaled to fill the
- configured destination rectangle without padding and without
- keeping the aspect ratio. With sizing-policy=keep-aspect-ratio
- the input image is scaled to fit the destination rectangle
- specified by GstCompositorPad:{xpos, ypos, width, height}
- properties preserving the aspect ratio. As a result, the image
- will be centered in the destination rectangle with padding if
- necessary.
- - new "zero-size-is-unscaled" property on input pads. By default
- pad width=0 or pad height=0 mean that the stream should not be
- scaled in that dimension. But if the "zero-size-is-unscaled"
- property is set to FALSE a width or height of 0 is instead
- interpreted to mean that the input image on that pad should not
- be composited, which is useful when creating animations where an
- input image is made smaller and smaller until it disappears.
- - improved handling of new inputs at runtime via
- "ignore-inactive-pads"property (see above for details)
- - allow output format with alpha even if none of the inputs have
- alpha (also glvideomixer and other GstVideoAggregator
- subclasses)
-
-- dashsink: add H.265 codec support and signals for allowing custom
- playlist/fragment output
-
-- decodebin3:
-
- - improved decoder selection, especially for hardware decoders
- - make input activation “atomic” when adding inputs dynamically
- - better interleave handling: take into account decoder latency
- for interleave size
-
-- decklink:
-
- - Updated DeckLink SDK to 11.2 to support DeckLink 8K Pro
- - decklinkvideosrc:
- - More accurate and stable capture timestamps: use the
- hardware reference clock time when the frame was finished
- being captured instead of a clock time much further down the
- road.
- - Automatically detect widescreen vs. normal NTSC/PAL
-
-- encodebin:
-
- - add “smart encoding” support for H.265, VP8 and VP9 (i.e. only
- re-encode where needed and otherwise pass through encoded video
- as-is).
- - H.264/H.265 smart encoding improvements: respect user-specified
- stream-format, but if not specified default to avc3/hvc1 with
- in-band SPS/PPS/VPS signalling for more flexibility.
- - new encodebin2 element with dynamic/sometimes source pads in
- order to support the option of doing the muxing outside of
- encodebin, e.g. in combination with splitmuxsink.
- - add APIs to set element properties on encoding profiles (see
- below)
-
-- errorignore: new "ignore-eos" property to also ignore FLOW_EOS from
- downstream elements
-
-- giosrc: add support for growing source files: applications can
- specify that the underlying file being read is growing by setting
- the "is-growing" property. If set, the source won’t EOS when it
- reaches the end of the file, but will instead start monitoring it
- and will start reading data again whenever a change is detected. The
- new "waiting-data" and "done-waiting-data" signals keep the
- application informed about the current state.
-
-- gtksink, gtkglsink:
-
- - scroll event support: forwarded as navigation events into the
- pipeline
- - "video-aspect-ratio-override" property to force a specific
- aspect ratio
- - "rotate-method" property and support automatic rotation based on
- image tags
-
-- identity: new "stats" property allows applications to retrieve the
- number of bytes and buffers that have passed through so far.
-
-- interlace: add support for more formats, esp 10-bit, 12-bit and
- 16-bit ones
-
-- jack: new "low-latency" property for automatic latency-optimized
- setting and "port-names" property to select ports explicitly
-
-- jpegdec: support output conversion to RGB using libjpeg-turbo (for
- certain input files)
-
-- line21dec:
-
- - "mode" property to control whether and how detected closed
- captions should be inserted in the list of existing close
- caption metas on the input frame (if any): add, drop, or
- replace.
- - "ntsc-only" property to only look for captions if video has NTSC
- resolution
-
-- line21enc: new "remove-caption-meta" to remove metas from output
- buffers after encoding the captions into the video data; support for
- CDP closed captions
-
-- matroskademux, matroskamux: Add support for ffv1, a lossless
- intra-frame video coding format.
-
-- matroskamux: accept in-band SPS/PPS/VPS for H.264 and H.265
- (i.e. stream-format avc3 and hev1) which allows on-the-fly
- profile/level/resolution changes.
-
-- matroskamux: new "cluster-timestamp-offset" property, useful for use
- cases where the container timestamps should map to some absolute
- wall clock time, for example.
-
-- rtpsrc: add "caps" property to allow explicit setting of the caps
- where needed
-
-- mpegts: support SCTE-35 pass-through via new "send-scte35-events"
- property on MPEG-TS demuxer tsdemux. When enabled, SCTE 35 sections
- (e.g. ad placement opportunities) are forwarded as events downstream
- where they can be picked up again by mpegtsmux. This required a
- semantic change in the SCTE-35 section API: timestamps are now in
- running time instead of muxer pts.
-
-- tsdemux: Handle PCR-less MPEG-TS streams; more robust timestamp
- handling in certain corner cases and for poorly muxed streams.
-
-- mpegtsmux:
-
- - More conformance improvements to make MPEG-TS analysers happy:
- - PCR timing accuracy: Improvements to the way mpegtsmux
- outputs PCR observations in CBR mode, so that a PCR
- observation is always inserted when needed, so that we never
- miss the configured pcr-interval, as that triggers various
- MPEG-TS analyser errors.
- - Improved PCR/SI scheduling
- - Don’t write PCR until PAT/PMT are output to make sure streams
- start cleanly with a PAT/PMT.
- - Allow overriding the automatic PMT PID selection via
- application-supplied PMT_%d fields in the prog-map
- structure/property.
-
-- mp4mux:
-
- - new "first-moov-then-finalise" mode for fragmented output where
- the output will start with a self-contained moov atom for the
- first fragment, and then produce regular fragments. Then at the
- end when the file is finalised, the initial moov is invalidated
- and a new moov is written covering the entire file. This way the
- file is a “fragmented mp4” file while it is still being written
- out, and remains playable at all times, but at the end it is
- turned into a regular mp4 file (with former fragment headers
- remaining as unused junk data in the file).
- - support H.264 avc3 and H.265 hvc1 stream formats as input where
- the codec data is signalled in-band inside the bitstream instead
- of caps/file headers.
- - support profile/level/resolution changes for H.264/H.265 input
- streams (i.e. codec data changing on the fly). Each codec_data
- is put into its own SampleTableEntry inside the stsd, unless the
- input is in avc3 stream format in which case it’s written
- in-band and not in the headers.
-
-- multifilesink: new ""min-keyframe-distance"" property to make
- minimum distance between keyframes in next-file=key-frame mode
- configurable instead of hard-coding it to 10 seconds.
-
-- mxfdemux has seen a big refactoring to support non-frame wrappings
- and more accurate timestamp/seek handling for some formats
-
-- msdk plugin for hardware-accelerated video encoding and decoding
- using the Intel Media SDK:
-
- - oneVPL support (Intel oneAPI Video Processing Library)
- - AV1 decoding support
- - H.264 decoder now supports constrained-high and progressive-high
- profiles
- - H.264 encoder:
- - more configuration options (properties):
- "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
- "dblk-idc"
- - H.265 encoder:
- - can output main-still-picture profile
- - now inserts HDR SEIs (mastering display colour volume and
- content light level)
- - more configuration options (properties):
- "intra-refresh-type", "min-qp" , "max-qp", "p-pyramid",
- "b-pyramid", "dblk-idc", "transform-skip"
- - support for RGB 10bit format
- - External bitrate control in encoders
- - Video post proc element msdkvpp gained support for 12-bit pixel
- formats P012_LE, Y212_LE and Y412_LE
-
-- nvh264sldec: interlaced stream support
-
-- openh264enc: support main, high, constrained-high and
- progressive-high profiles
-
-- openjpeg: support for multithreaded decoding and encoding
-
-- rtspsrc: now supports IPv6 also for tunneled mode (RTSP-over-HTTP);
- new "ignore-x-server-reply" property to ignore the
- x-server-ip-address server header reply in case of HTTP tunneling,
- as it is often broken.
-
-- souphttpsrc: Runtime compatibility support for libsoup2 and
- libsoup3. libsoup3 is the latest major version of libsoup, but
- libsoup2 and libsoup3 can’t co-exist in the same process because
- there is no namespacing or versioning for GObject types. As a
- result, it would be awkward if the GStreamer souphttpsrc plugin
- linked to a specific version of libsoup, because it would only work
- with applications that use the same version of libsoup. To make this
- work, the soup plugin now tries to determine the libsoup version
- used by the application (and its other dependencies) at runtime on
- systems where GStreamer is linked dynamically. libsoup3 support is
- still considered somewhat experimental at this point. Distro
- packagers please take note of the souphttpsrc plugin dependency
- changes mentioned in the build and dependencies section below.
-
-- srtsrc, srtsink: add signals for the application to accept/reject
- incoming connections
-
-- timeoverlay: new elapsed-running-time time mode which shows the
- running time since the first running time (and each flush-stop).
-
-- udpsrc: new timestamping mode to retrieve packet receive timestamps
- from the kernel via socket control messages (SO_TIMESTAMPNS) on
- supported platforms
-
-- uritranscodebin: new setup-source and element-setup signals for
- applications to configure elements used
-
-- v4l2codecs plugin gained support for 4x4 and 32x32 tile formats
- enabling some platforms or direct renders. Important memory usage
- improvement.
-
-- v4l2slh264dec now implements the final Linux uAPI as shipped on
- Linux 5.11 and later.
-
-- valve: add "drop-mode" property and provide two new modes of
- operation: in drop-mode=forward-sticky-events sticky events
- (stream-start, segment, tags, caps, etc.) are forwarded downstream
- even when dropping is enabled; drop-mode=transform-to-gap will in
- addition also convert buffers into gap events when dropping is
- enabled, which lets downstream elements know that time is advancing
- and might allow for preroll in many scenarios. By default all events
- and all buffers are dropped when dropping is enabled, which can
- cause problems with caps negotiation not progressing or branches not
- prerolling when dropping is enabled.
-
-- videocrop: support for many more pixel formats, e.g. planar YUV
- formats with > 8bits and GBR* video formats; can now also accept
- video not backed by system memory as long as downstream supports the
- GstCropMeta
-
-- videotestsrc: new smpte-rp-219 pattern for SMPTE75 RP-219 conformant
- color bars
-
-- vp8enc: finish support for temporal scalability: two new properties
- ("temporal-scalability-layer-flags",
- "temporal-scalability-layer-sync-flags") and a unit change on the
- "temporal-scalability-target-bitrate" property (now expects bps);
- also make temporal scalability details available to RTP payloaders
- as buffer metadata.
-
-- vp9enc: new properties to tweak encoder performance:
-
- - "aq-mode" to configure adaptive quantization modes
- - "frame-parallel-decoding" to configure whether to create a
- bitstream that reduces decoding dependencies between frames
- which allows staged parallel processing of more than one video
- frames in the decoder. (Defaults to TRUE)
- - "row-mt", "tile-columns" and "tile-rows" so multithreading can
- be enabled on a per-tile basis, instead of on a per tile-column
- basis. In combination with the new "tile-rows" property, this
- allows the encoder to make much better use of the available CPU
- power.
-
-- vp9dec, vp9enc: add support for 10-bit 4:2:0 and 4:2:2 YUV, as well
- as 8-bit 4:4:4
-
-- vp8enc, vp9enc now default to “good quality” for the deadline
- property rather then “best quality”. Having the deadline set to best
- quality causes the encoder to be absurdly slow, most real-life users
- will prefer good-enough quality with better performance instead.
-
-- wpesrc:
-
- - implement audio support: a new sometimes source pad will be
- created for each audio stream created by the web engine.
- - move wpesrc to wpevideosrc and add a wrapper bin wpesrc to also
- support audio
- - also handles web:// URIs now (same as cefsrc)
- - post messages with the estimated load progress on the bus
-
-- x265enc: add negative DTS support, which means timestamps are now
- offset by 1h same as with x264enc
-
-RTP Payloaders and Depayloaders
-
-- rtpisacpay, rtpisacdepay: new RTP payloader and depayloader for iSAC
- audio codec
-
-- rtph264depay:
-
- - new "request-keyframe" property to make the depayloader
- automatically request a new keyframe from the sender on packet
- loss, consistent with the new property on rtpvp8depay.
- - new "wait-for-keyframe" property to make depayloader wait for a
- new keyframe at the beginning and after packet loss (only
- effective if the depayloader outputs AUs), consistent with the
- existing property on rtpvp8depay.
-
-- rtpopuspay, rtpopusdepay: support libwebrtc-compatible multichannel
- audio in addition to the previously supported multichannel audio
- modes
-
-- rtpopuspay: add DTX (Discontinuous Transmission) support
-
-- rtpvp8depay: new "request-keyframe" property to make the depayloader
- automatically request a new keyframe from the sender on packet loss.
-
-- rtpvp8pay: temporal scaling support
-
-- rtpvp9depay: Improved SVC handling (aggregate all layers)
-
-RTP Infrastructure
-
-- rtpst2022-1-fecdec, rtpst2022-1-fecenc: new elements providing SMPTE
- 2022-1 2-D Forward Error Correction. More details in Mathieu’s blog
- post.
-
-- rtpreddec: BUNDLE support
-
-- rtpredenc, rtpulpfecenc: add support for Transport-wide Congestion
- Control (TWCC)
-
-- rtpsession: new "twcc-feedback-interval" property to allow RTCP TWCC
- reports to be scheduled on a timer instead of per marker-bit.