# GStreamer 1.14 Release Notes

GStreamer 1.14.0 has not been released yet. It is scheduled for release
in late February / early March 2018.

There are unstable pre-releases available for testing and development purposes.
The latest pre-release is version 1.13.1 and was released on 15 February 2018.

See [https://gstreamer.freedesktop.org/releases/1.14/][latest] for the latest
version of this document.

*Last updated: Thursday 15 February 2018, 16:30 UTC [(log)][gitlog]*

[latest]: https://gstreamer.freedesktop.org/releases/1.14/
[gitlog]: https://cgit.freedesktop.org/gstreamer/www/log/src/htdocs/releases/1.14/release-notes-1.14.md

## 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 new features, bug fixes and other
improvements.

## Highlights

- this section will be completed shortly

## Major new features and changes

### Noteworthy new API

- this section will be filled in shortly

### New Elements

- this section will be filled in shortly

### New element features and additions

- this section will be filled in shortly

### Plugin and library moves

- this section will be filled in shortly

### Plugin removals

- this section will be filled in shortly


## Miscellaneous API additions

- this section will be filled in shortly

### GstPlayer

- this section will be filled in shortly

## Miscellaneous changes

- this section will be filled in shortly

### OpenGL integration

- this section will be filled in shortly

## Tracing framework and debugging improvements

- this section will be filled in shortly

## Tools

- this section will be filled in shortly

## GStreamer RTSP server

- this section will be filled in shortly

## GStreamer VAAPI

- this section will be filled in shortly

## GStreamer Editing Services and NLE

- this section will be filled in shortly

## GStreamer validate

- this section will be filled in shortly

## GStreamer Python Bindings

- this section will be filled in shortly

## Build and Dependencies

- this section will be filled in shortly

## Platform-specific improvements

### Android

- this section will be filled in shortly

### macOS and iOS

- this section will be filled in shortly

### Windows

- this section will be filled in shortly

## Contributors

- this section will be filled in shortly

... and many others who have contributed bug reports, translations, sent
suggestions or helped testing.

## Bugs fixed in 1.14

- this section will be filled in shortly

More than [704 bugs][bugs-fixed-in-1.14] have been fixed during
the development of 1.14.

This list does not include issues that have been cherry-picked into the
stable 1.12 branch and fixed there as well, all fixes that ended up in the
1.12 branch are also included in 1.14.

This list also does not include issues that have been fixed without a bug
report in bugzilla, so the actual number of fixes is much higher.

[bugs-fixed-in-1.14]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=213265&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.12.1&target_milestone=1.12.2&target_milestone=1.12.3&target_milestone=1.12.4&target_milestone=1.13.1&target_milestone=1.13.2&target_milestone=1.13.3&target_milestone=1.13.4&target_milestone=1.13.90&target_milestone=1.13.91&target_milestone=1.14.0

## Stable 1.14 branch

After the 1.14.0 release there will be several 1.14.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.14.x bug-fix releases will be made from the git 1.14 branch,
which is a stable branch.

### 1.14.0

1.14.0 is scheduled to be released in late February / early March 2018.

## Known Issues

- The `webrtcdsp` element is currently not shipped as part of the Windows
  binary packages due to a [build system issue][bug-770264].

[bug-770264]: https://bugzilla.gnome.org/show_bug.cgi?id=770264

## Schedule for 1.16

Our next major feature release will be 1.16, and 1.15 will be the unstable
development version leading up to the stable 1.16 release. The development
of 1.15/1.16 will happen in the git master branch.

The plan for the 1.16 development cycle is yet to be confirmed, but it is
expected that feature freeze will be around August 2017
followed by several 1.15 pre-releases and the new 1.16 stable release
in September.

1.16 will be backwards-compatible to the stable 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.*

*License: [CC BY-SA 4.0](http://creativecommons.org/licenses/by-sa/4.0/)*
