+- Various clippy warnings
+
+
+GStreamer Rust Plugins
+
+Like the GStreamer Rust bindings, the Rust plugins are now officially
+part of the GStreamer project and are also maintained in the GStreamer
+GitLab.
+
+In the 0.3.x versions this contained infrastructure for writing
+GStreamer plugins in Rust, and a set of plugins.
+
+In git master that infrastructure was moved to the GLib and GStreamer
+bindings directly, together with many other improvements that were made
+possible by this, so the gst-plugins-rs repository only contains
+GStreamer elements now.
+
+Elements included are:
+
+- Tutorials plugin: identity, rgb2gray and sinesrc with extensive
+ comments
+
+- rsaudioecho, a port of the audiofx element
+
+- rsfilesrc, rsfilesink
+
+- rsflvdemux, a FLV demuxer. Not feature-equivalent with flvdemux yet
+
+- threadshare plugin: ts-appsrc, ts-proxysrc/sink, ts-queue, ts-udpsrc
+ and ts-tcpclientsrc elements that use a fixed number of threads and
+ share them between instances. For more background about these
+ elements see Sebastian’s talk “When adding more threads adds more
+ problems - Thread-sharing between elements in GStreamer” at the
+ GStreamer Conference 2017.
+
+- rshttpsrc, a HTTP source around the hyper/reqwest Rust libraries.
+ Not feature-equivalent with souphttpsrc yet.
+
+- togglerecord, an element that allows to start/stop recording at any
+ time and keeps all audio/video streams in sync.
+
+- mccparse and mccenc, parsers and encoders for the MCC closed caption
+ file format.
+
+Changes to 0.3.X since 0.3.0
+
+- All references were updated from GitHub to freedesktop.org GitLab
+- Fix various links in the README.md
+- Link to the correct location for the documentation
+
+Changes in git master for 0.4
+
+- togglerecord: Switch to parking_lot crate for mutexes/condition
+ variables for lower overhead
+- Merge threadshare plugin here
+- New closedcaption plugin with mccparse and mccenc elements
+- New identity element for the tutorials plugin
+
+- Register plugins statically in tests instead of relying on the
+ plugin loader to find the shared library in a specific place
+
+- Update to the latest API changes in the GLib and GStreamer bindings
+- Update to the latest versions of all crates
+
+
+Build and Dependencies
+
+- The MESON BUILD SYSTEM BUILD IS NOW FEATURE-COMPLETE (*) and it is
+ now the recommended build system on all platforms and also used by
+ Cerbero to build GStreamer on all platforms. The Autotools build is
+ scheduled to be removed in the next cycle. Developers who currently
+ use gst-uninstalled should move to gst-build. The build option
+ naming has been cleaned up and made consistent and there are now
+ feature options to enable/disable plugins and various other features
+ on a case-by-case basis. (*) with the exception of plugin docs which
+ will be handled differently in future
+
+- Symbol export in libraries is now controlled via explicit exports
+ using symbol visibility or export defines where supported, to ensure
+ consistency across all platforms. This also allows libraries to have
+ exports that vary based on detected platform features and configure
+ options as is the case with the GStreamer OpenGL integration library
+ for example. A few symbols that had been exported by accident in
+ earlier versions may no longer be exported. These symbols will not
+ have had declarations in any public header files then though and
+ would not have been usable.
+
+- The GStreamer FFmpeg wrapper plugin (gst-libav) now depends on
+ FFmpeg 4.x and uses the new FFmpeg 4.x API and stopped relying on
+ ancient API that was removed with the FFmpeg 4.x release. This means
+ that it is no longer possible to build this module against an older
+ system-provided FFmpeg 3.x version. Use the internal FFmpeg 4.x copy
+ instead if you build using autotools, or use gst-libav 1.14.x
+ instead which targets the FFmpeg 3.x API and _should_ work fine in
+ combination with a newer GStreamer. It’s difficult for us to support
+ both old and new FFmpeg APIs at the same time, apologies for any
+ inconvenience caused.
+
+- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
+ nvenc can be built against CUDA Toolkit versions 9 and 10.0 now. The
+ dynlink interface has been dropped since it’s deprecated in 10.0.
+
+- The (optional) OpenCV requirement has been bumped to >= 3.0.0 and
+ the plugin can also be built against OpenCV 4.x now.
+
+- New sctp plugin based on usrsctp (for WebRTC data channels)
+
+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.
+
+Cerbero has seen a number of improvements:
+
+- Cerbero has been ported to Python 3 and requires Python 3.5 or newer
+ now
+
+- Source tarballs are now protected by checksums in the recipes to
+ guard against download errors and malicious takeover of projects or
+ websites. In addition, downloads are only allowed via secure
+ transports now and plain HTTP, FTP and git:// transports are not
+ allowed anymore.
+
+- There is now a new fetch-bootstrap command which downloads sources
+ required for bootstrapping, with an optional --build-tools-only
+ argument to match the bootstrap --build-tools-only command.
+
+- The bootstrap, build, package and bundle-source commands gained a
+ new --offline switch that ensures that only sources from the cache
+ are used and never downloaded via the network. This is useful in
+ combination with the fetch and fetch-bootstrap commands that acquire
+ sources ahead of time before any build steps are executed. This
+ allows more control over the sources used and when sources are
+ updated, and is particularly useful for build environments that
+ don’t have network access.
+
+- bootstrap --assume-yes will automatically say ‘yes’ to any
+ interactive prompts during the bootstrap stage, such as those from
+ apt-get or yum.
+
+- bootstrap --system-only will only bootstrap the system without build
+ tools.
+
+- Manifest support: The build manifest can be used in continuous
+ integration (CI) systems to fixate the Git revision of certain
+ projects so that all builds of a pipeline are on the same reference.
+ This is used in GStreamer’s gitlab CI for example. It can also be
+ used in order to re-produce a specific build. To set a manifest, you
+ can set manifest = 'my_manifest.xml' in your configuration file, or
+ use the --manifest command line option. The command line option will
+ take precendence over anything specific in the configuration file.
+
+- The new build-deps command can be used to build only the
+ dependencies of a recipe, without the recipe itself.
+
+- new --list-variants command to list available variants
+
+- variants can now be set on the command line via the -v option as a
+ comma-separated list. This overrides any variants set in any
+ configuration files.
+
+- new qt5, intelmsdk and nvidia variants for enabling Qt5 and hardware
+ codec support. See the Enabling Optional Features with Variants
+ section in the Cerbero documentation for more details how to enable
+ and use these variants.
+
+- A new -t / --timestamp command line switch makes commands print
+ timestamps
+
+
+Platform-specific changes and improvements
+
+Android
+
+- toolchain: update compiler to clang and NDKr18. NDK r18 removed the
+ armv5 target and only has Android platforms that target at least
+ armv7 so the armv5 target is not useful anymore.
+
+- 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). data can be NULL for a static
+ library. Look at this commit for the necessary change in the
+ examples.
+
+- various build issues on Android have been fixed.
+
+macOS and iOS
+
+- various build issues on iOS have been fixed.
+
+- the minimum required iOS version is now 9.0. The difference in
+ adoption between 8.0 and 9.0 is 0.1% and the bump to 9.0 fixes some
+ build issues.
+
+- 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). data can be NULL for a static
+ library. Look at this commit for the necessary change in the
+ examples.
+
+Windows
+
+- The webrtcdsp element is shipped again as part of the Windows binary
+ packages, the build system issue has been resolved.
+
+- ‘Inconsistent DLL linkage’ warnings when building with MSVC have
+ been fixed
+
+- Hardware-accelerated Nvidia video encoder/decoder plugins nvdec and
+ nvenc build on Windows now, also with MSVC and using Meson.
+
+- The ksvideosrc camera capture plugin supports 16-bit grayscale video
+ now
+
+- The wasapisrc audio capture element implements loopback recording
+ from another output device or sink
+
+- wasapisink recover from low buffer levels in shared mode and some
+ exclusive mode fixes
+
+- dshowsrc now implements the GstDeviceMonitor interface
+
+
+Contributors
+
+Aaron Boxer, Aleix Conchillo Flaqué, Alessandro Decina, Alexandru Băluț,
+Alex Ashley, Alexey Chernov, Alicia Boya García, Amit Pandya, Andoni
+Morales Alastruey, Andreas Frisch, Andre McCurdy, Andy Green, Anthony
+Violo, Antoine Jacoutot, Antonio Ospite, Arun Raghavan, Aurelien Jarno,
+Aurélien Zanelli, ayaka, Bananahemic, Bastian Köcher, Branko Subasic,
+Brendan Shanks, Carlos Rafael Giani, Charlie Turner, Christoph Reiter,
+Corentin Noël, Daeseok Youn, Damian Vicino, Dan Kegel, Daniel Drake,
+Daniel Klamt, Danilo Spinella, Dardo D Kleiner, David Ing, David
+Svensson Fors, Devarsh Thakkar, Dimitrios Katsaros, Edward Hervey,
+Emilio Pozuelo Monfort, Enrique Ocaña González, Erlend Eriksen, Ezequiel
+Garcia, Fabien Dessenne, Fabrizio Gennari, Florent Thiéry, Francisco
+Velazquez, Freyr666, Garima Gaur, Gary Bisson, George Kiagiadakis, Georg
+Lippitsch, Georg Ottinger, Geunsik Lim, Göran Jönsson, Guillaume
+Desmottes, H1Gdev, Haihao Xiang, Haihua Hu, Harshad Khedkar, Havard
+Graff, He Junyan, Hoonhee Lee, Hosang Lee, Hyunjun Ko, Ilya Smelykh,
+Ingo Randolf, Iñigo Huguet, Jakub Adam, James Stevenson, Jan Alexander
+Steffens, Jan Schmidt, Jerome Laheurte, Jimmy Ohn, Joakim Johansson,
+Jochen Henneberg, Johan Bjäreholt, John-Mark Bell, John Bassett, John
+Nikolaides, Jonathan Karlsson, Jonny Lamb, Jordan Petridis, Josep Torra,
+Joshua M. Doe, Jos van Egmond, Juan Navarro, Julian Bouzas, Jun Xie,
+Junyan He, Justin Kim, Kai Kang, Kim Tae Soo, Kirill Marinushkin, Kyrylo
+Polezhaiev, Lars Petter Endresen, Linus Svensson, Louis-Francis
+Ratté-Boulianne, Lucas Stach, Luis de Bethencourt, Luz Paz, Lyon Wang,
+Maciej Wolny, Marc-André Lureau, Marc Leeman, Marco Trevisan (Treviño),
+Marcos Kintschner, Marian Mihailescu, Marinus Schraal, Mark Nauwelaerts,
+Marouen Ghodhbane, Martin Kelly, Matej Knopp, Mathieu Duponchelle,
+Matteo Valdina, Matthew Waters, Matthias Fend, memeka, Michael Drake,
+Michael Gruner, Michael Olbrich, Michael Tretter, Miguel Paris, Mike
+Wey, Mikhail Fludkov, Naveen Cherukuri, Nicola Murino, Nicolas Dufresne,
+Niels De Graef, Nirbheek Chauhan, Norbert Wesp, Ognyan Tonchev, Olivier
+Crête, Omar Akkila, Pat DeSantis, Patricia Muscalu, Patrick Radizi,
+Patrik Nilsson, Paul Kocialkowski, Per Forlin, Peter Körner, Peter
+Seiderer, Petr Kulhavy, Philippe Normand, Philippe Renon, Philipp Zabel,
+Pierre Labastie, Piotr Drąg, Roland Jon, Roman Sivriver, Roman Shpuntov,
+Rosen Penev, Russel Winder, Sam Gigliotti, Santiago Carot-Nemesio,
+Sean-Der, Sebastian Dröge, Seungha Yang, Shi Yan, Sjoerd Simons, Snir
+Sheriber, Song Bing, Soon, Thean Siew, Sreerenj Balachandran, Stefan
+Ringel, Stephane Cerveau, Stian Selnes, Suhas Nayak, Takeshi Sato,
+Thiago Santos, Thibault Saunier, Thomas Bluemel, Tianhao Liu,
+Tim-Philipp Müller, Tobias Ronge, Tomasz Andrzejak, Tomislav Tustonić,
+U. Artie Eoff, Ulf Olsson, Varunkumar Allagadapa, Víctor Guzmán, Víctor
+Manuel Jáquez Leal, Vincenzo Bono, Vineeth T M, Vivia Nikolaidou, Wang
+Fei, wangzq, Whoopie, Wim Taymans, Wind Yuan, Wonchul Lee, Xabier
+Rodriguez Calvar, Xavier Claessens, Haihao Xiang, Yacine Bandou,
+Yeongjin Jeong, Yuji Kuwabara, Zeeshan Ali,
+
+… and many others who have contributed bug reports, translations, sent
+suggestions or helped testing.