1.16.1
The first 1.16 bug-fix release (1.16.1) was released on 23 September 2019.
This release only contains bugfixes and it should be safe to update from 1.16.0.
Highlighted bugfixes in 1.16.1
GStreamer-vaapi: fix green frames and decoding artefacts in some cases
OpenGL: fix wayland event source burning CPU in certain circumstances
Memory leak fixes and memory footprint improvements
Performance improvements
Stability and security fixes
Fix enum for GST_MESSAGE_DEVICE_CHANGED which is technically an API break, but this is only used internally in GStreamer and duplicated another message enum
hls: Make crypto dependency optional when hls-crypto is auto
player: fix switching back and forth between forward and reverse playback
decklinkaudiosink: Drop late buffers
openh264enc: Fix compilation with openh264 v2.0
wasapisrc: fix segtotal value being always 2
android: Fix gnutls issue causing a FORTIFY crash on Android Q
windows: Fix two crashes due to cross-CRT free when using MSVC
gstreamer core
device: gst_device_create_element() is transfer floating, not transfer full
filesink, fdsink: respect IOV_MAX for the writev iovec array (Solaris)
miniobject: free qdata array when the last qdata is removed (reduces memory footprint)
bin: Fix minor race when adding to a bin
aggregator: Actually handle NEED_DATA return from update_src_caps()
aggregator: Ensure that the source pad is created as a GstAggregatorPad if no type is given in the pad template
latency: fix custom event leaks
registry: Use plugin directory from the build system for relocateable Windows builds
message: fix up enum value for GST_MESSAGE_DEVICE_CHANGED
info: Fix deadlock in gst_ring_buffer_logger_log()
downloadbuffer: Check for flush after seek
identity: Non-live upstream have no max latency
identity: Fix the ts-offset property getter
aggregator: Make parsing of explicit sink pad names more robust
bufferpool: Fix the buffer size reset code
fakesink, fakesrc, identity: sync gst_buffer_get_flags_string() with new flags
multiqueue: never unref queries we do not own
concat: Reset last_stop on FLUSH_STOP too
aggregator: fix flow-return boolean return type mismatch
gstpad: Handle probes that reset the data field
gst: Add support for g_autoptr(GstPromise)
gst-inspect: fix unused-const-variable error in windows
base: Include gstbitwriter.h in the single-include header
Add various Since: 1.16 markers
GST_MESSAGE_DEVICE_CHANGED duplicates GST_MESSAGE_REDIRECT
Targetting wrong meson version
meson: Make get_flex_version.py script executable
meson: Link to objects instead of static helper library
meson: set correct install path for gdb helper
meson: fix warning about configure_file() install kwarg
gst-plugins-base
video-info: parse field-order for all interleaved formats
tests: fix up valgrind suppressions for glibc getaddrinfo leaks
meson: Reenable NEON support (in audio resampler)
audio-resampler: Update NEON to handle remainders not multiples of 4
eglimage: Fix memory leak
audiodecoder: Set output caps with negotiated caps to avoid critical info printed
video-frame: Take TFF flag from the video info if it was set in there
glcolorconvert: Fix external-oes shader
video-anc: Fix ADF detection when trying to extract data from vanc
gl/wayland: fix wayland event source burning CPU
configure: add used attribute in order to make NEON detection working with -flto.
audioaggregator: Return a valid rate range from caps query if downstream supports a whole range
rtspconnection: data-offset increase not set
rtpsconnection: Fix number of n_vectors
video-color: Add compile-time assert for ColorimetryInfo enum
audiodecoder: Fix leak on failed audio gaps
glupload: Keep track of cached EGLImage texture format
playsink: Set ts-offset to text sink.
meson.build: use join_paths() on prefix
compositor: copy frames as-is when possible
compositor: Skip background when a pad obscures it completely
rtspconnection: Start CSeq at 1 (some servers don't cope well with seqnum 0)
viv-fb: fix build break for GST_GL_API
gl/tests: fix shader creation tests part 2
gl/tests: fix shader creation tests
wayland: set the event queue also for the xdg_wm_base object
video: Added GI annotation for gstvideoaffinetransformationmeta apply_matrix
compositor: Remove unneeded left shift for ARGB/AYUV SOURCE operator
Colorimetry fixes
alsasrc: Don't use driver timestamp if it's zero
gloverlaycompositor: fix crash if buffer doesn't have video meta
meson: Don't try to find gio-unix on Windows
glshader: fix default external-oes shaders
subparse: fix pushing WebVTT cue with no newline at the end
meson: Missing "android" choice in gl_winsys
video test: Keep BE test inline with LE test
id3tag: Correctly validate the year from v1 tags before passing to GstDateTime
gl/wayland: Don't prefix wl_shell struct field
eglimage: Add compatibility define for DRM_FORMAT_NV24
Add various Since: 1.16 markers
video-anc: Handle SD formats correctly
Docs: add GL_CFLAGS to GTK_DOC_CFLAGS
GL: using vaapi and showing on glimagesink on wayland loads one core for 100% on 1.16
GL: external-oes shader places precision qualifier before #extension (was: androidmedia amcviddec fail after 1.15.90 1.16.0 update)
gst-plugins-good
alpha: Fix one_over_kc calculation on arm/aarch64
souphttpsrc: Fix incompatible type build warning
rtpjitterbuffer: limit max-dropout-time to maxint32
rtpjitterbuffer: Clear clock master before unreffing
qtdemux: Use empty-array safe way to cleanup GPtrArray
v4l2: Fix type compatibility issue with glibc 2.30
valgrind: suppress Cond error coming from gnutls and Ignore leaks caused by shout/sethostent
rtpfunnel: forward correct segment when switching pad
gtkglsink: fix crash when widget is resized after element destruction
jpegdec: Don't dereference NULL input state if we have no caps in TIME segments
rtp: opuspay: fix memory leak in gst_rtp_opus_pay_setcaps
v4l2videodec: return right type for drain.
rtpssrcdemux: Avoid taking streamlock out-of-band
Support v4l2src buffer orphaning
splitmuxsink: Only set running time on finalizing sink element when in async-finalize mode
rtpsession: Always keep at least one NACK on early RTCP
rtspsrc: do not try to send EOS with invalid seqnum
rtpsession: Call on-new-ssrc earlier
rtprawdepay: Don't get rid of the buffer pool on FLUSH_STOP
rtpbin: Free storage when freeing session
scaletempo: Advertise interleaved layout in caps templates
Support v4l2src buffer orphaning
gst-plugins-bad
hls: Make crypto dependency optional when hls-crypto is auto
player: fix switching back and forth between forward and reverse playback
decklinkaudiosink: Drop late buffers
srt: Add stats property, include sender-side statistics and fix a crash
dshowsrcwrapper: fix regression on device selection
tsdemux: Limit the maximum PES payload size
wayland: Define libdrm_dep in meson.build to fix meson configure error when kms is disabled
sctp: Fix crash on free() when using the MSVC binaries
webrtc: Fix signals documentation
h264parse: don't critical on VUI parameters > 2^31
rtmp: Fix crash inside free() with MSVC on Windows
iqa: fix leak of map_meta.data
d3dvideosink: Fix crash on WinProc handler
amc: Fix crash when a sync_meta survives its sink
pitch: Fix race between putSamples() and setting soundtouch parameters
webrtc: fix type of max-retransmits, make it work
mxfdemux: Also allow picture essence element type 0x05 for VC-3
wasapi: fix symbol redefinition build error
decklinkvideosrc: Retrieve mode of the ancillary data from the frame
decklinkaudiosrc/decklinkvideosrc: Do nothing in BaseSrc::negotiate() and...
adaptivedemux: do not retry downloads during shutdown.
webrtcbin: fix GInetAddress leak
dtls: fix dtls connection object leak
siren: fix a global buffer overflow spotted by asan
kmssink: Fix implicit declaration build error
Fix -Werror=return-type error in configure.
aiff: Fix infinite loop in header parsing.
nvdec: Fix possible frame drop on EOS
srtserversrc: yields malformed rtp payloads
srtsink: Fix crash in case no URI
dtlsagent: Fix leaked dtlscertificate
meson: bluez: Early terminate configure on Windows
decklink: Correctly ensure >=16 byte alignment for the buffers we allocate
webrtcbin: fix DTLS when receivebin is set to DROP
zbar: Include running-time, stream-time and duration in the messages
uvch264src: Make sure we set our segment
avwait: Allow start and end timecode to be set back to NULL
avwait: Don't print warnings for every buffer passed
hls/meson: fix dependency logic
Waylandsink gnome shell workaround
avwait: Allow setting start timecode after end timecode; protect propeties with mutex
wayland/wlbuffer: just return if used_by_compositor is true when attach
proxy: Set SOURCE flag on the source and SINK flag on the sink
ivfparse: Check the data size against IVF_FRAME_HEADER_SIZE
webrtc: Add various Since markers to new types after 1.14.0
msdk: fix the typo in debug category
dtlsagent: Do not overwrite openssl locking callbacks
meson: Fix typo in gsm header file name
srt: handle races in state change
webrtc: Add g_autoptr() support for public types
openh264enc: Fix compilation with openh264 v2.0
meson: Allow CUDA_PATH fallback on linux
meson: fix build with opencv=enabled and opencv4. Fixes#964
meson: Add support for the colormanagement plugin
autotools: gstsctp: set LDFLAGS
nvenc/nvdec: Add NVIDIA SDK headers to noinst_HEADERS
h264parse: Fix typo when setting multiview mode and flags
Add various Since: 1.16 markers
opencv: allow compilation against 4.1.x
Backport of some minor srt commits without MR into 1.16
meson: fix build with opencv=enabled and opencv4
wasapisrc: fix segtotal value being always 2 due to an unused variable
meson: colormanagement missing
androidmedia amcviddec fail after 1.15.90 1.16.0 update
gst-plugins-ugly
meson: Always require the gmodule dependency
gst-libav
docs: don't include the type hierarchy, fixing build with gtk-doc 1.30
avvidenc: Correctly signal interlaced input to ffmpeg when the input caps are interlaced
autotools: add bcrypt to win32 libs
gstav: Use libavcodec util function for version check
API documentation fails to build with gtk-doc 1.30
gst-rtsp-server
rtsp-client: RTP Info must exist in PLAY response
onvif-media: fix "void function returning a value" compiler warning
Add various Since: 1.16 markers
gstreamer-vaapi
fix egl context leak and display creation race
pluginutil: Remove Mesa from drivers white list
Classify vaapidecodebin as a hardware decoder
Fix two leak
vaapivideomemory: demote error message to info
encoder: vp8,vp9: reset frame_counter when input frame's format changes
encoder: mpeg2: No packed header for SPS and PPS
decoder: vp9: clear parser pointer after release
encoder: Fixes deadlock in change state function
encoder: h265: reset num_ref_idx_l1_active_minus1 when low delay B.
encoder: not call ensure_num_slices inside g_assert()
encoder: continue if roi meta is NULL
decoder: vp9: Set chroma_ ype by VP9 bit_depth
vaapipostproc: don't do any color conversion when GL_TEXTURE_UPLOAD
libs: surface: fix double free when dmabuf export fails
h264 colors and artifacts upon upgrade to GStreamer Core Library version 1.15.90
gst-editing-services
element: Properly handle the fact that pasting can return NULL
Add various missing Since markers
launch: Fix caps restriction short names
python: Avoid warning about using deprecated methods
video-transition: When using non crossfade effect use 'over' operations
meson: Generate a pkgconfig file for the GES plugin
gst-devtools
launcher: testsuites: skip systemclock stress tests
validate: fix build on macOS
gst-build
Update win flex bison binaries
Update the flexmeson windows binary version
Don't allow people to run meson inside the uninstalled env
Contributors to 1.16.1
Aaron Boxer, Adam Duskett, Alicia Boya García, Andoni Morales Alastruey, Antonio Ospite, Arun Raghavan, Askar Safin, A. Wilcox, Charlie Turner, Christoph Reiter, Damian Hobson-Garcia, Daniel Klamt, Danny Smith, David Gunzinger, David Ing, David Svensson Fors, Doug Nazar, Edward Hervey, Eike Hein, Fabrice Bellet, Fernando Herrrera, Georg Lippitsch, Göran Jönsson, Guillaume Desmottes, Haihao Xiang, Haihua Hu, Håvard Graff, Hou Qi, Ignacio Casal Quinteiro, Ilya Smelykh, Jan Schmidt, Javier Celaya, Jim Mason, Jonas Larsson, Jordan Petridis, Jose Antonio Santos Cadenas, Juan Navarro, Knut Andre Tidemann, Kristofer Björkström, Lucas Stach, Marco Felsch, Marcos Kintschner, Mark Nauwelaerts, Martin Liska, Martin Theriault, Mathieu Duponchelle, Matthew Waters, Michael Olbrich, Mike Gorse, Nicola Murino, Nicolas Dufresne, Niels De Graef, Niklas Hambüchen, Nirbheek Chauhan, Olivier Crête, Philippe Normand, Ross Burton, Sebastian Dröge, Seungha Yang, Song Bing, Thiago Santos, Thibault Saunier, Thomas Coldrick, Tim-Philipp Müller, Víctor Manuel Jáquez Leal, Vivia Nikolaidou, Xavier Claessens, Yeongjin Jeong,
... 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.16.1
List of Merge Requests applied in 1.16
List of Issues fixed in 1.16.1
Known Issues
possibly breaking/incompatible changes to properties of wrapped FFmpeg decoders and encoders (see above).
The way that GIO modules are named has changed due to upstream GLib natively adding support for loading static GIO modules. This means that any GStreamer application using gnutls for SSL/TLS on the Android or iOS platforms (or any other setup using static libraries) will fail to link looking for the g_io_module_gnutls_load_static() function. The new function name is now g_io_gnutls_load(gpointer data). See Android/iOS sections above for further details.
GStreamer 1.8.0 was released on 24 March 2016.
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 new features, bug fixes
and other improvements.
See https://gstreamer.freedesktop.org/releases/1.8/ for the latest
version of this document.
Highlights
Hardware-accelerated zero-copy video decoding on Android
New video capture source for Android using the android.hardware.Camera
API
Windows Media reverse playback support (ASF/WMV/WMA)
New tracing system provides support for more sophisticated
debugging tools
New high-level GstPlayer playback convenience API
Initial support for the new Vulkan API, see Matthew Waters'
blog post for more details
Improved Opus audio codec support: Support for more than two
channels; MPEG-TS demuxer/muxer can now handle Opus; sample-accurate
encoding/decoding/transmuxing with Ogg, Matroska, ISOBMFF
(Quicktime/MP4), and MPEG-TS as container; new codec utility
functions for Opus header and caps handling in pbutils library.
The Opus encoder/decoder elements were also moved to gst-plugins-base
(from -bad), and the opus RTP depayloader/payloader to -good.
GStreamer VAAPI module now released and maintained as part of
the GStreamer project
Asset proxy support in the GStreamer Editing Services
This is GStreamer Libav Plugins 1.4.0
Changes since 1.2:
New API:
• GstMessageType has GST_MESSAGE_EXTENDED added. All types before
that can be used together as a flags type as before, but from
that message onwards the types are just counted incrementally.
This was necessary to be able to add more message types.
In 2.0 GstMessageType will just become an enum and not a flags
type anymore.
• GstDeviceMonitor for device probing, e.g. to list all available
audio or video capture devices. This is the replacement for
GstPropertyProbe from 0.10.
• Events accumulate the running-time offset now when travelling
through pads, as set by the gst_pad_set_offset() function. This
allows to compensate for this in the QOS event for example.
• GstBuffer has a new flag "tag-memory" that is set automatically
when memory is added or removed to a buffer. This allows buffer
pools to detect if they can recycle a buffer or need to reset
it first.
• GstToc has new API to mark GstTocEntries as loops.
• A not-authorized resource error has been defined to notify
applications that accessing the resource has failed because
of missing authorization and to distinguish this case from others.
This change is actually already in 1.2.4.
• GstPad has a new flag "accept-intersect", that will let the default
ACCEPT_CAPS query handler do an intersection instead of subset check.
This is interesting for parser elements that can handle incomplete
caps.
• GstCollectPads has support for flushing and a default handler for
SEEK events now.
• New GstFlowAggregator helper object that simplifies handling of
flow returns in elements with multiple source pads. Additionally
GstPad now always stores the last flow return and provides an
API to retrieve it.
• GstSegment has new API to offset the running time by a specific
value and this is used in GstPad to allow positive and negative
offsets in gst_pad_set_offset() in all situations.
• Support for h265/HEVC and VP8 has been added to the codec utils and codec
parsers library, and was integrated into various elements.
• API for adjusting the TLS validation of RTSP connection has been added.
• The RTSP and SDP library has MIKEY (RFC 3830) support now, and
there is API to distinguish between the different RTSP profiles.
• API to access RTP time information and statistics.
• Support for auxiliary streams was added to rtpbin.
• Support for tiled, raw video formats has been added.
• GstVideoDecoder and GstAudioDecoder have API to help aggregating tag
events and merge custom tags into them consistently.
• GstBufferPool has support for flushing now.
• playbin/playsink has support for application provided audio and video
filters.
• GstDiscoverer has new and simplified API to get details about missing
plugins and information to pass to the plugin installer.
• The GL library was merged from gst-plugins-gl to gst-plugins-bad,
providing a generic infrastructure for handling GL inside GStreamer
pipelines and a plugin with some elements using these, especially
a video sink. Supported platforms currently are Android, Cocoa (OS X),
DispManX (Raspberry Pi), EAGL (iOS), WGL (Windows) and generic X11,
Wayland and EGL platforms.
This replaces eglglessink and also is supposed to replace osxvideosink.
• New GstAggregator base class in gst-plugins-bad. This is supposed to
replace GstCollectPads in the future and fix long-known shortcomings
in its API. Together with the base class some elements are provided
already, like a videomixer (compositor).
Major changes:
• New plugins and elements:
∘ v4l2videodec element for accessing hardware codecs on
platforms that make them accessible via V4L2, e.g.
Samsung Exynos. This comes together with major refactoring
of the existing V4L2 elements and the corresponding
infrastructure.
The v4l2videodec element replaces the mfcdec element.
∘ New downloadbuffer element that replaces the download
buffering feature of queue2. Compared to queue2's code
it is much simpler and only for this single use case.
A noteworthy new feature is that it's downloading gaps
in the already downloaded stream parts when nothing else
is to be downloaded.
This is now used by playbin when download buffering is
enabled.
∘ rtpstreampay and rtpstreamdepay elements for transmitting
RTP packets over a stream API (e.g. TCP) according to
RFC 4571.
∘ rtprtx elements for standard compliant implementation of
retransmissions, integrated into the rtpmanager plugin.
∘ audiomixer element that mixes multiple audio streams together
into a single one while keeping synchronization. This is
planned to become the replacement of the adder element.
∘ OpenNI2 plugin for 3D cameras like the Kinect camera.
∘ OpenEXR plugin for decoding high-dynamic-range EXR images.
∘ curlsshsink and curlsftpsink to write files via SSH/SFTP.
∘ videosignal, ivfparse and sndfile plugins ported from 0.10.
∘ avfvideosrc, vtdec and other elements were ported from 0.10 and
are available on OS X and iOS now.
• Other changes:
∘ gst-libav now uses libav 10.2, and gained support for H265/HEVC.
∘ Support for hardware codecs and special memory types has been
improved with bugfixes and feature additions in various plugins
and base classes.
∘ Various bugfixes and improvements to buffering in queue2 and
multiqueue elements.
∘ dvbsrc supports more delivery mechanisms and other features
now, including DVB S2 and T2 support.
∘ The MPEGTS library has support for many more descriptors.
∘ Major improvements to tsdemux and tsparse, especially time and
seeking related.
∘ souphttpsrc now has support for keep-alive connections,
compression, configurable number of retries and configuration
for SSL certificate validation.
∘ hlsdemux has undergone major refactoring and works more
reliable now and supports more HLS features like trick modes.
Also fragments are pushed downstream while they're downloaded
now instead of waiting for each fragment to finish.
∘ dashdemux and mssdemux are now also pushing fragments downstream
while they're downloaded instead of waiting for each fragment to
finish.
∘ videoflip can automatically flip based on the orientation tag.
∘ openjpeg supports the OpenJPEG2 API.
∘ waylandsink was refactored and should be more useful now. It also
includes a small library which most likely is going to be removed
in the future and will result in extensions to the GstVideoOverlay
interface.
∘ gst-rtsp-server supports SRTP and MIKEY now.
∘ gst-libav encoders are now negotiating any profile/level settings
with downstream via caps.
∘ Lots of fixes for coverity warnings all over the place.
∘ Negotiation related performance improvements.
∘ 800+ fixed bug reports, and many other bug fixes and other
improvements everywhere that had no bug report.
Things to look out for:
• The eglglessink element was removed and replaced by the glimagesink
element.
• The mfcdec element was removed and replaced by v4l2videodec.
• osxvideosink is only available in OS X 10.6 or newer.
• On Android the namespace of the automatically generated Java class
for initialization of GStreamer has changed from com.gstreamer to
org.freedesktop.gstreamer to prevent namespace pollution.
• On iOS you have to update your gst_ios_init.h and gst_ios_init.m in
your projects from the one included in the binaries if you used the
GnuTLS GIO module before. The loading mechanism has slightly changed.