+- GESProject::loading was added so applications can be notified about
+ when a new timeline starts loading.
+
+- Implemented the GstStream API in GESTimeline.
+
+- Added a way to add a timeoverlay inside the test source (potentially
+ with timecodes).
+
+- Added APIs to convert times to frame numbers and vice versa:
+
+ - ges_timeline_get_frame_time()
+
+ - ges_timeline_get_frame_at()
+
+ - ges_clip_asset_get_frame_time()
+
+ - ges_clip_get_timeline_time_from_source_frame()
+
+ Quite a few validate tests have been implemented to check the
+ behavior for various demuxer/codec formats
+
+- Added ges_layer_set_active_for_tracks() which allows muting layers
+ for the specified tracks
+
+- Deprecated GESImageSource and GESMultiFileSource now that we have
+ imagesequencesrc which handles the imagesequence “protocol”
+
+- Stopped exposing ‘deinterlacing’ children properties for clip types
+ where they do not make sense.
+
+- Added support for simple time remapping effects
+
+GStreamer validate
+
+- Introduced the concept of “Test files” allowing to implement “all
+ included” test cases, meaning that inside the file the following can
+ be defined:
+
+ - The application arguments
+ - The validate configurations
+ - The validate scenario
+
+ This replaces the previous big dictionary file in
+ gst-validate-launcher to implement specific test cases.
+
+ We set several variables inside the files (as well as inside
+ scenarios and config files) to make them relocatable.
+
+ The file format has been enhanced so it is easier to read and write,
+ for example line ending with a coma or (curly) brackets can now be
+ used as continuation marker so you do not need to add \ at the end
+ of lines to write a structure on several lines.
+
+- Support the imagesequence “protocol” and added integration tests for
+ it.
+
+- Added action types to allow the scenario to run the Test Clock for
+ better reproducibility of tests.
+
+- Support generating tests to check that seeking is frame accurate
+ (base on ssim).
+
+- Added ways to record buffers checksum (in different ways) in the
+ validateflow module.
+
+- Added vp9 encoding tests.
+
+- Enhanced seeking action types implementation to allow support for
+ segment seeks.
+
+- Output improvements:
+
+ - Logs are now in markdown formats (and bat is used to dump them
+ if available).
+ - File format issues in scenarios/configs/tests files are nicely
+ reported with the line numbers now.
+
+GStreamer Python Bindings
+
+- Python 2.x is no longer supported
+
+- Support mapping buffers without any memcpy:
+
+ - Added a ContextManager to make the API more pythonic
+
+ with buf.map(Gst.MapFlags.READ | Gst.MapFlags.WRITE) as info:
+ info.data[42] = 0
+
+- Added high-level helper API for constructing pipelines:
+
+ - Gst.Bin.make_and_add(factory_name, instance_name=None)
+ - Gst.Element.link_many(element, ...)
+
+GStreamer C# Bindings
+
+- Bind gst_buffer_new_wrapped() manually to fix memory handling.
+
+- Fix gst_promise_new_with_change_func() where bindgen didn’t properly
+ detect the func as a closure.
+
+- Declare GstVideoOverlayComposition and GstVideoOverlayRectangle as
+ opaque type and subclasses of Gst.MiniObject. This changes the API
+ but without this all usage will cause memory corruption or simply
+ not work.
+
+- on Windows, look for gstreamer, glib and gobject DLLs using the MSVC
+ naming convention (i.e. gstvideo-1.0-0.dll instead of
+ libgstvideo-1.0-0.dll).
+
+ The names of these DLLs have to be hardcoded in the bindings, and
+ most C# users will probably be using the Microsoft toolchain anyway.
+
+ This means that the MSVC compiler is now required to build the
+ bindings, MingW will no longer work out of the box.
+
+GStreamer Rust Bindings and Rust Plugins
+
+The GStreamer Rust bindings are released separately with a different
+release cadence that’s tied to gtk-rs, but the latest release has
+already been updated for the new GStreamer 1.18 API, so there’s
+absolutely no excuse why your next GStreamer application can’t be
+written in Rust anymore.
+
+gst-plugins-rs, the module containing GStreamer plugins written in Rust,
+has also seen lots of activity with many new elements and plugins.
+
+What follows is a list of elements and plugins available in
+gst-plugins-rs, so people don’t miss out on all those potentially useful
+elements that have no C equivalent.
+
+Rust audio plugins
+
+- audiornnoise: New element for audio denoising which implements the
+ noise removal algorithm of the Xiph RNNoise library, in Rust
+- rsaudioecho: Port of the audioecho element from gst-plugins-good
+ rsaudioloudnorm: Live audio loudness normalization element based on
+ the FFmpeg af_loudnorm filter
+- claxondec: FLAC lossless audio codec decoder element based on the
+ pure-Rust claxon implementation
+- csoundfilter: Audio filter that can use any filter defined via the
+ Csound audio programming language
+- lewtondec: Vorbis audio decoder element based on the pure-Rust
+ lewton implementation
+
+Rust video plugins
+
+- cdgdec/cdgparse: Decoder and parser for the CD+G video codec based
+ on a pure-Rust CD+G implementation, used for example by karaoke CDs
+- cea608overlay: CEA-608 Closed Captions overlay element
+- cea608tott: CEA-608 Closed Captions to timed-text (e.g. VTT or SRT
+ subtitles) converter
+- tttocea608: CEA-608 Closed Captions from timed-text converter
+- mccenc/mccparse: MacCaption Closed Caption format encoder and parser
+- sccenc/sccparse: Scenarist Closed Caption format encoder and parser
+- dav1dec: AV1 video decoder based on the dav1d decoder implementation
+ by the VLC project
+- rav1enc: AV1 video encoder based on the fast and pure-Rust rav1e
+ encoder implementation
+- rsflvdemux: Alternative to the flvdemux FLV demuxer element from
+ gst-plugins-good, not feature-equivalent yet
+- rsgifenc/rspngenc: GIF/PNG encoder elements based on the pure-Rust
+ implementations by the image-rs project
+
+Rust text plugins
+
+- textwrap: Element for line-wrapping timed text (e.g. subtitles) for
+ better screen-fitting, including hyphenation support for some
+ languages
+
+Rust network plugins
+
+- reqwesthttpsrc: HTTP(S) source element based on the Rust
+ reqwest/hyper HTTP implementations and almost feature-equivalent
+ with the main GStreamer HTTP source souphttpsrc
+- s3src/s3sink: Source/sink element for the Amazon S3 cloud storage
+- awstranscriber: Live audio to timed text transcription element using
+ the Amazon AWS Transcribe API
+
+Generic Rust plugins
+
+- sodiumencrypter/sodiumdecrypter: Encryption/decryption element based
+ on libsodium/NaCl
+- togglerecord: Recording element that allows to pause/resume
+ recordings easily and considers keyframe boundaries
+- fallbackswitch/fallbacksrc: Elements for handling potentially
+ failing (network) sources, restarting them on errors/timeout and
+ showing a fallback stream instead
+- threadshare: Set of elements that provide alternatives for various
+ existing GStreamer elements but allow to share the streaming threads
+ between each other to reduce the number of threads
+- rsfilesrc/rsfilesink: File source/sink elements as replacements for
+ the existing filesrc/filesink elements
+
+Build and Dependencies
+
+- The Autotools build system has finally been removed in favour of the
+ Meson build system. Developers who currently use gst-uninstalled
+ should move to gst-build.
+
+- API and plugin documentation are no longer built with gtk_doc. The
+ gtk_doc documentation has been removed in favour of a new unified
+ documentation module built with hotdoc (also see “Documentation
+ improvements” section below). Distributors should use the
+ documentation release tarball instead of trying to package hotdoc
+ and building the documentation from scratch.
+
+- gst-plugins-bad now includes an internal copy of libusrsctp, as
+ there are problems in usrsctp with global shared state, lack of API
+ stability guarantees, and the absence of any kind of release
+ process. We also can’t rely on distros shipping a version with the
+ fixes we need. Both firefox and Chrome bundle their own copies too.
+ It is still possible to build against an external copy of usrsctp if
+ so desired.
+
+- nvcodec no longer needs the NVIDIA NVDEC/NVENC SDKs available at
+ build time, only at runtime. This allows distributions to ship this
+ plugin by default and it will just start to work when the required
+ run-time SDK libraries are installed by the user, without users
+ needing to build and install the plugin from source.
+
+- the gst-editing-services tarball is now named gst-editing-services
+ for consistency (used to be gstreamer-editing-services).
+
+- the gst-validate tarball has been superseded by the gst-devtools
+ tarball for consistency with the git module name.
+
+gst-build
+
+gst-build is a meta-module and serves primarily as our uninstalled
+development environment. It makes it easy to build most of GStreamer,
+but unlike Cerbero it only comes with a limited number of external
+dependencies that can be built as subprojects if they are not found on
+the system.
+
+gst-build is based on Meson and replaces the old autotools
+gst-uninstalled script.
+
+- The ‘uninstalled’ target has been renamed to ‘devenv’
+
+- Experimental gstreamer-full library containing all built plugins and
+ their deps when building with -Ddefault_library=static. A monolithic
+ library is easier to distribute, and may be required in some
+ environments. GStreamer core, GLib and GObject are always included,
+ but external dependencies are still dynamically linked. The
+ gst-full-libraries meson option allows adding other GStreamer
+ libraries to the gstreamer-full build. This is an experiment for now
+ and its behaviour or API may still change in future releases.
+
+- Add glib-networking as a subproject when glib is a subproject and
+ load gio modules in the devenv, tls option control whether to use
+ openssl or gnutls.
+
+- git-worktree: Allow multiple worktrees for subproject branches
+
+- Guard against meson being run from inside the uninstalled devenv, as
+ this might have unexpected consequences.
+
+- our ffmpeg and x264 meson ports have been updated to the latest
+ stable version (you might need to update the subprojects checkout
+ manually though, or just remove the checkouts so meson checks out
+ the latest version again; improvements for this are pending in
+ meson, but not merged yet).
+
+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
+
+- Recipe build steps are done in parallel wherever possible. This
+ leads to massive improvements in overall build time.
+- Several recipes were ported to Meson, which improved build times
+- Moved from using both GnuTLS and OpenSSL to only OpenSSL
+- Moved from yasm to nasm for all assembly compilation
+- Support zsh when running the cerbero shell command
+- Numerous version upgrades for dependencies
+- Default to xz for tarball binary packages. bz2 can be selected with
+ the --compress-method option to package.
+- Added boolean variant for controlling the optimization level:
+ -v optimization
+- Ship .pc pkgconfig files for all plugins in the binary packages
+- CMake and nasm will only be built by Cerbero if the system versions
+ are unusable
+- The nvcodec variant was removed and the nvcodec plugin is built by
+ default now (as it no longer requires the SDK to be installed at
+ build time, only at runtime)
+
+macOS / iOS
+
+- Minimum iOS SDK version bumped to 11.0
+- Minimum macOS SDK version bumped to 10.11
+- No longer need to manually add support for newer iOS SDK versions
+- Added Vulkan elements via MoltenVK
+- Build times were improved by code-signing all build tools
+- macOS framework ships all gstreamer libraries instead of an outdated
+ subset
+- Ship pkg-config in the macOS framework package
+- fontconfig: Fix EXC_BAD_ACCESS crash on iOS ARM64
+- Improved App Store compatibility by setting LC_VERSION_MIN_MACOSX,
+ fixing relocations, and improved bitcode support
+
+Windows
+
+- MinGW-GCC toolchain was updated to 8.2. It uses the Universal CRT
+ instead of MSVCRT which eliminates cross-CRT issues in the Visual
+ Studio build.
+- Require Windows 7 or newer for running binaries produced by Cerbero
+- Require Windows x86_64 for running Cerbero to build binary packages
+- Cerbero no longer uses C:/gstreamer/1.0 as a prefix when building.
+ That prefix is reserved for use by the MSI installers.
+- Several recipes can now be buit with Visual Studio instead of MinGW.
+ Ported to meson: opus, libsrtp, harfbuzz, cairo, openh264, libsoup,
+ libusrsctp. Existing build system: libvpx, openssl.
+- Support building using Visual Studio for 32-bit x86. Previously we
+ only supported building for 32-bit x86 using the MinGW toolchain.
+- Fixed annoying msgmerge popups in the middle of cerbero builds
+- Added configuration options vs_install_path and vs_install_version
+ for specifying custom search locations for older Visual Studio
+ versions that do not support vswhere. You can set these in
+ ~/.cerbero/cerbero.cbc where ~ is the MSYS homedir, not your Windows
+ homedir.
+- New Windows-specific plugins: d3d11, mediafoundation, wasapi2
+- Numerous compatibility and reliability fixes when running Cerbero on
+ Windows, especially non-English locales
+- proxy-libintl now exports the same symbols as gettext, which makes
+ it a drop-in replacement
+- New mapping variant for selecting the Visual Studio CRT to use:
+ -v vscrt=<value>. Valid values are md, mdd, and auto (default). A
+ separate prefix is used when building with either md (release) or
+ mdd (debug), and the outputted package will have +debug in the
+ filename. This variant is also used for selecting the correct Qt
+ libraries (debug vs release) to use when building with -v qt5 on
+ Windows.
+- Support cross-compile on Windows to Windows ARM64 and ARMv7
+- Support cross-compile on Windows to the Universal Windows Platform
+ (UWP). Only the subset of plugins that can be built entirely with
+ Visual Studio will be selected in this case. To do so, use the
+ config/cross-uwp-universal.cbc configuration, which will build
+ ARM64, x86, and x86_64 binaries linked to the release CRT, with
+ optimizations enabled, and debugging turned on. You can combine this
+ with -v vscrt=mdd to produce binaries linked to the debug CRT. You
+ can turn off optimizations with the -v nooptimization variant.
+
+Windows MSI installer
+
+- Require Windows 7 or newer for running GStreamer
+- Fixed some issues with shipping of pkg-config in the Windows
+ installers
+- Plugin PDB debug files are now shipped in the development package,
+ not the runtime package
+- Ship installers for 32-bit binaries built with Visual Studio
+- Ship debug and release “universal” (ARM64, X86, and X86_64) tarballs
+ built for the Universal Windows Platform
+- Windows MSI installers now install into separate prefixes when
+ building with MSVC and MinGW. Previously both would be installed
+ into C:/gstreamer/1.0/x86 or C:/gstreamer/1.0/x86_64. Now, the
+ installation prefixes are:
+
+ ----------------------------------------------------------------------------------------------------------------
+ Target Path Build options
+ --------------------------- ------------------------------------ -----------------------------------------------
+ MinGW 32-bit C:/gstreamer/1.0/mingw_x86 -c config/win32.cbc
+
+ MinGW 64-bit C:/gstreamer/1.0/mingw_x86_64 -c config/win64.cbc
+
+ MSVC 32-bit C:/gstreamer/1.0/msvc_x86 -c config/win32.cbc -v visualstudio
+
+ MSVC 64-bit C:/gstreamer/1.0/msvc_x86_64 -c config/win64.cbc -v visualstudio
+
+ MSVC 32-bit (debug) C:/gstreamer/1.0/msvc-debug_x86 -c config/win32.cbc -v visualstudio,vscrt=mdd
+
+ MSVC 64-bit (debug) C:/gstreamer/1.0/msvc-debug_x86_64 -c config/win64.cbc -v visualstudio,vscrt=mdd
+ ----------------------------------------------------------------------------------------------------------------
+
+Note: UWP binary packages are tarballs, not MSI installers.
+
+Linux
+
+- Support creating MSI installers using WiX when cross-compiling to
+ Windows
+- Support running cross-windows binaries with Wine when using the
+ shell and runit cerbero commands
+- Added bash-completion support inside the cerbero shell on Linux
+- Require a system-wide installation of openssl on Linux
+- Added variant -v vaapi to build gstreamer-vaapi and the new gstva
+ plugin
+- Debian packaging was disabled because it does not work. Help in
+ fixing this is appreciated.
+- Trimmed the list of packages needed for bootstrap on Linux
+
+Android
+
+- Updated to NDK r21
+- Support Vulkan
+- Support Qt 5.14+ binary package layout
+
+Platform-specific changes and improvements
+
+Android
+
+- opensles: Remove hard-coded buffer-/latency-time values and allow
+ openslessink to handle 48kHz streams.
+
+- photography interface and camera source: Add additional settings
+ relevant to Android such as: Exposure mode property, extra colour
+ tone values (aqua, emboss, sketch, neon), extra scene modes
+ (backlight, flowers, AR, HDR), and missing virtual methods for
+ exposure mode, analog gain, lens focus, colour temperature, min &
+ max exposure time. Add new effects and scene modes to Camera
+ parameters.
+
+macOS and iOS
+
+- vtdec can now output to Vulkan-backed memory for zerocopy support
+ with the Vulkan elements.
+
+Windows
+
+- d3d11videosink: new Direct3D11-based video sink with support for
+ HDR10 rendering if supported.
+
+- Hardware-accelerated video decoding on Windows via DXVA2 /
+ Direct3D11 using native Windows APIs rather than per-vendor SDKs
+ (like MSDK for Intel or NVCODEC for NVidia). Plus modern Direct3D11
+ integration rather than the almost 20-year old Direct3D9 from
+ Windows XP times used in d3dvideosink. Formats supported for
+ decoding are H.264, H.265, VP8, and VP9, and zero-copy operation
+ should be supported in combination with the new d3d11videosink. See
+ Seungha’s blog post “Windows DXVA2 (via Direct3D 11) Support in
+ GStreamer 1.17” for more details.
+
+- Microsoft Media Foundation plugin for hardware-accelerated video
+ encoding on Windows using native Windows APIs rather than per-vendor
+ SDKs. Formats supported for encoding are H.264, H.265 and VP9. Also
+ includes audio encoders for AAC and MP3. See Seungha’s blog post
+ “Bringing Microsoft Media Foundation to GStreamer” for some more
+ details about this.
+
+- new mfvideosrc video capture source element using the latest Windows
+ APIs rather than ancient APIs used by ksvideosrc/winks. ksvideosrc
+ should be considered deprecated going forward.
+
+- d3d11: add d3d11convert, a color space conversion and rescaling
+ element using shaders, and introduce d3d11upload and d3d11download
+ elements that work just like glupload and gldownload but for D3D11.
+
+- Universal Windows Platform (UWP) support, including official
+ GStreamer binary packages for it. Check out Nirbheek’s latest blog
+ post “GStreamer 1.18 supports the Universal Windows Platform” for
+ more details.
+
+- systemclock correctness and reliability fixes, and also don’t start
+ the system clock at 0 any longer (which shouldn’t make any
+ difference to anyone, as absolute clock time values are supposed to
+ be meaningless in themselves, only the rate of increase matters).
+
+- toolchain specific plugin registry: the registry cache is now named
+ differently for MSVC and MinGW toolchains/packages, which should
+ avoid problems when switching between binaries built with a
+ different toolchain.
+
+- new wasapi2 plugin mainly to support UWP applications. The core
+ logic of this plugin is almost identical to existing wasapi plugin,
+ but the main target is Windows 10 and UWP. This plugin uses WinRT
+ APIs, so will likely not work on Windows 8 or older. Unlike the
+ existing wasapi plugin, this plugin supports automatic stream
+ routing (auto fallback when device was removed) and device level
+ mute/volume control. Exclusive streaming mode is not supported,
+ however, and loopback features are not implemented yet. It is also
+ only possible to build this plugin with MSVC and the Windows 10 SDK,
+ it can’t be cross-compiled with the MingW toolchain.
+
+- new dxgiscreencapsrc element which uses the Desktop Duplication API
+ to capture the desktop screen at high speed. This is only supported
+ on Windows 8 or later. Compared to the existing elements
+ dxgiscreencapsrc offers much better performance, works in High DPI
+ environments and draws an accurate mouse cursor.
+
+- d3dvideosink was downgraded to secondary rank, d3d11videosink is
+ preferred now. Support OverlayComposition for GPU overlay
+ compositing of subtitles and logos.
+
+- debug log output fixes, esp. with a non-UTF8 locale/codepage
+
+- speex, jack: fixed crashes on Windows caused by cross-CRT issues
+
+- gst-play-1.0 interactive keyboard controls now also work on Windows
+
+Linux
+
+- kmssink: Add support for P010 and P016 formats
+
+- vah264dec: new experimental va plugin with an element for H.264
+ decoding with VA-API. This novel approach, different from
+ gstreamer-vaapi, uses the gstcodecs library for decoder state
+ handling, which it is hoped will make for cleaner code because it
+ uses VA-API without further layers or wrappers. Check out Víctor’s
+ blog post “New VA-API H.264 decoder in gst-plugins-bad” for the full
+ lowdown and the limitations of this new plugin, and how to give it a
+ spin.
+
+- v4l2codecs: introduce a V4L2 CODECs Accelerator. This plugin will
+ support the new CODECs uAPI in the Linux kernel, which consists of
+ an accelerator interface similar to DXVA, NVDEC, VDPAU and VAAPI. So
+ far H.264 and VP8 are supported. This is used on certain embedded
+ systems such as i.mx8m, rk3288, rk3399, Allwinner H-series SoCs.
+
+Documentation improvements
+
+- unified documentation containing tutorials, API docs, plugin docs,
+ etc. all under one roof, shipped in form of a documentation release
+ tarball containing both devhelp and html documentation.
+
+- all documentation is now generated using hotdoc, gtk-doc is no
+ longer used. Distributors should use the above-mentioned
+ documentation release tarball instead of trying to package hotdoc
+ and building the documentation from scratch.
+
+- there is now documentation for wrapper plugins like gst-libav and
+ frei0r, as well as tracer plugins.
+
+- for more info, check out Thibault’s “GStreamer Documentation”
+ lightning talk from the 2019 GStreamer Conference.
+
+- new API for plugins to support the documentation system:
+
+ - new GParamSpecFlag GST_PARAM_DOC_SHOW_DEFAULT to make
+ gst-inspect-1.0 (and the documentation) show the paramspec’s
+ default value rather than the actually set value as default
+ - GstPadTemplate getter and setter for “documentation caps”,
+ gst_pad_template_set_documentation_caps() and
+ gst_pad_template_get_documentation_caps(): This can be used in
+ elements where the caps of pad templates are dynamically
+ generated and/or dependent on the environment, to override the
+ caps shown in the documentation (usually to advertise the full
+ set of possible caps).
+ - gst_type_mark_as_plugin_api() for marking types as plugin API,
+ used for plugin-internal types like enums, flags, pad
+ subclasses, boxed types, and such.
+
+Possibly Breaking Changes
+
+- GstVideo: the canonical list of raw video formats (for use in caps)
+ has been reordered, so video elements such as videotestsrc or
+ videoconvert might negotiate to a different format now than before.
+ The new format might be a higher-quality format or require more
+ processing overhead, which might affect pipeline performance.
+
+- mpegtsdemux used to wrongly advertise H.264 and H.265 video
+ elementary streams as alignment=nal. This has now been fixed and
+ changed to alignment=none, which means an h264parse or h265parse
+ element is now required after tsdemux for some pipelines where there
+ wasn’t one before, e.g. in transmuxing scenarios (tsdemux ! tsmux).
+ Pipelines without such a parser may now fail to link or error out at
+ runtime. As parsers after demuxers and before muxers have been
+ generally required for a long time now it is hoped that this will
+ only affect a small number of applications or pipelines.
+
+- The Android opensles audio source and sink used to have hard-coded
+ buffer-/latency-time values of 20ms. This is no longer needed with
+ newer Android versions and has now been removed. This means a higher
+ or lower value might now be negotiated by default, which can affect
+ pipeline performance and latency.
+
+Known Issues
+
+- None in particular
+
+Contributors
+
+Aaron Boxer, Adam Duskett, Adam x Nilsson, Adrian Negreanu, Akinobu
+Mita, Alban Browaeys, Alcaro, Alexander Lapajne, Alexandru Băluț, Alex
+Ashley, Alex Hoenig, Alicia Boya García, Alistair Buxton, Ali Yousuf,
+Ambareesh “Amby” Balaji, Amr Mahdi, Andoni Morales Alastruey, Andreas
+Frisch, Andre Guedes, Andrew Branson, Andrey Sazonov, Antonio Ospite,
+aogun, Arun Raghavan, Askar Safin, AsociTon, A. Wilcox, Axel Mårtensson,
+Ayush Mittal, Bastian Bouchardon, Benjamin Otte, Bilal Elmoussaoui,
+Brady J. Garvin, Branko Subasic, Camilo Celis Guzman, Carlos Rafael
+Giani, Charlie Turner, Cheng-Chang Wu, Chris Ayoup, Chris Lord,
+Christoph Reiter, cketti, Damian Hobson-Garcia, Daniel Klamt, Daniel
+Molkentin, Danny Smith, David Bender, David Gunzinger, David Ing, David
+Svensson Fors, David Trussel, Debarshi Ray, Derek Lesho, Devarsh
+Thakkar, dhilshad, Dimitrios Katsaros, Dmitriy Purgin, Dmitry Shusharin,
+Dominique Leuenberger, Dong Il Park, Doug Nazar, dudengke, Dylan McCall,
+Dylan Yip, Ederson de Souza, Edward Hervey, Eero Nurkkala, Eike Hein,
+ekwange, Eric Marks, Fabian Greffrath, Fabian Orccon, Fabio D’Urso,
+Fabrice Bellet, Fabrice Fontaine, Fanchao L, Felix Yan, Fernando
+Herrrera, Francisco Javier Velázquez-García, Freyr, Fuwei Tang, Gaurav
+Kalra, George Kiagiadakis, Georgii Staroselskii, Georg Lippitsch, Georg
+Ottinger, gla, Göran Jönsson, Gordon Hart, Gregor Boirie, Guillaume
+Desmottes, Guillermo Rodríguez, Haakon Sporsheim, Haihao Xiang, Haihua
+Hu, Havard Graff, Håvard Graff, Heinrich Kruger, He Junyan, Henry
+Wilkes, Hosang Lee, Hou Qi, Hu Qian, Hyunjun Ko, ibauer, Ignacio Casal
+Quinteiro, Ilya Smelykh, Jake Barnes, Jakub Adam, James Cowgill, James
+Westman, Jan Alexander Steffens, Jan Schmidt, Jan Tojnar, Javier Celaya,
+Jeffy Chen, Jennifer Berringer, Jens Göpfert, Jérôme Laheurte, Jim
+Mason, Jimmy Ohn, J. Kim, Joakim Johansson, Jochen Henneberg, Johan
+Bjäreholt, Johan Sternerup, John Bassett, Jonas Holmberg, Jonas Larsson,
+Jonathan Matthew, Jordan Petridis, Jose Antonio Santos Cadenas, Josep
+Torra, Jose Quaresma, Josh Matthews, Joshua M. Doe, Juan Navarro,
+Juergen Werner, Julian Bouzas, Julien Isorce, Jun-ichi OKADA, Justin
+Chadwell, Justin Kim, Keri Henare, Kevin JOLY, Kevin King, Kevin Song,
+Knut Andre Tidemann, Kristofer Björkström, krivoguzovVlad, Kyrylo
+Polezhaiev, Lenny Jorissen, Linus Svensson, Loïc Le Page, Loïc Minier,
+Lucas Stach, Ludvig Rappe, Luka Blaskovic, luke.lin, Luke Yelavich,
+Marcin Kolny, Marc Leeman, Marco Felsch, Marcos Kintschner, Marek
+Olejnik, Mark Nauwelaerts, Markus Ebner, Martin Liska, Martin Theriault,
+Mart Raudsepp, Matej Knopp, Mathieu Duponchelle, Mats Lindestam, Matthew
+Read, Matthew Waters, Matus Gajdos, Maxim Paymushkin, Maxim P.
+Dementiev, Michael Bunk, Michael Gruner, Michael Olbrich, Miguel París
+Díaz, Mikhail Fludkov, Milian Wolff, Millan Castro, Muhammet Ilendemli,
+Nacho García, Nayana Topolsky, Nian Yan, Nicola Murino, Nicolas
+Dufresne, Nicolas Pernas Maradei, Niels De Graef, Nikita Bobkov, Niklas
+Hambüchen, Nirbheek Chauhan, Ognyan Tonchev, okuoku, Oleksandr
+Kvl,Olivier Crête, Ondřej Hruška, Pablo Marcos Oltra, Patricia Muscalu,
+Peter Seiderer, Peter Workman, Philippe Normand, Philippe Renon, Philipp
+Zabel, Pieter Willem Jordaan, Piotr Drąg, Ralf Sippl, Randy Li, Rasmus
+Thomsen, Ratchanan Srirattanamet, Raul Tambre, Ray Tiley, Richard
+Kreckel, Rico Tzschichholz, R Kh, Robert Rosengren, Robert Tiemann,
+Roman Shpuntov, Roman Sivriver, Ruben Gonzalez, Rubén Gonzalez,
+rubenrua, Ryan Huang, Sam Gigliotti, Santiago Carot-Nemesio, Saunier
+Thibault, Scott Kanowitz, Sebastian Dröge, Sebastiano Barrera, Seppo
+Yli-Olli, Sergey Nazaryev, Seungha Yang, Shinya Saito, Silvio
+Lazzeretti, Simon Arnling Bååth, Siwon Kang, sohwan.park, Song Bing,
+Soohyun Lee, Srimanta Panda, Stefano Buora, Stefan Sauer, Stéphane
+Cerveau, Stian Selnes, Sumaid Syed, Swayamjeet, Thiago Santos, Thibault
+Saunier, Thomas Bluemel, Thomas Coldrick, Thor Andreassen, Tim-Philipp
+Müller, Ting-Wei Lan, Tobias Ronge, trilene, Tulio Beloqui, U. Artie
+Eoff, VaL Doroshchuk, Varunkumar Allagadapa, Vedang Patel, Veerabadhran
+G, Víctor Manuel Jáquez Leal, Vivek R, Vivia Nikolaidou, Wangfei, Wang
+Zhanjun, Wim Taymans, Wonchul Lee, Xabier Rodriguez Calvar, Xavier
+Claessens, Xidorn Quan, Xu Guangxin, Yan Wang, Yatin Maan, Yeongjin
+Jeong, yychao, Zebediah Figura, Zeeshan Ali, Zeid Bekli, Zhiyuan Sraf,
+Zoltán Imets,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing.