Qt 5.5 introduces many new features and improvements as well as bugfixes
over the 5.4.x series. For more details, refer to the online documentation
included in this distribution. The documentation is also available online:

  http://doc.qt.io/qt-5.5

The Qt version 5.5 series is binary compatible with the 5.4.x series.
Applications compiled for 5.4 will continue to run with 5.5.

Some of the changes listed in this file include issue tracking numbers
corresponding to tasks in the Qt Bug Tracker:

  http://bugreports.qt.io/

Each of these identifiers can be entered in the bug tracker to obtain more
information about a particular change.

****************************************************************************
*                          Library                                         *
****************************************************************************

QtMultimedia
------------

 - Added QAbstractVideoFilter that serves as a base class for QML
   video filtering elements that integrate compute, vision, and image
   processing frameworks with VideoOutput.
 - Added new QCameraViewfinderSettings class.
 - [QTBUG-40571] Fixed memory leak in QAudioDecoder.

 - Camera (QML):
   * Added imageProcessing.colorFilter, viewfinder.minimumFrameRate and
     viewfinder.maximumFrameRate properties.
   * Added new supportedViewfinderResolutions() and
     supportedViewfinderFrameRateRanges() methods.
   * Exposure modes extended to support Action, Landscape, NightPortrait,
     Theatre, Sunset, SteadyPhoto, Fireworks, Party, Candlelight, and
     Barcode modes

 - QCamera:
   * Added support for viewfinder settings. In addition to the getter and
     setter, supportedViewfinderSettings(),
     supportedViewfinderResolutions(), supportedViewfinderFrameRateRanges()
     and supportedViewfinderPixelFormats() can be used to query for
     supported values.
   * Fixed searchAndLock() and supportedLocks() functions which could not
     work at all on some platforms.

 - QCameraExposure:
   * Exposure modes extended to support Action, Landscape, NightPortrait,
     Theatre, Sunset, SteadyPhoto, Fireworks, Party, Candlelight, and
     Barcode modes

 - QCameraImageProcessing:
   * Added support for color filters.

****************************************************************************
*                      Platform Specific Changes                           *
****************************************************************************

Android
-------

 - Added support for additional camera exposure modes (see list in
   QCameraExposure changes).

iOS / OS X
----------

 - Improved camera support:
   * Image capture settings, focus, flash, exposure (iOS only) and
     zoom (iOS only) APIs are now functional.
   * QVideoProbe can now be used with a QCamera.

 - VideoOutput, when used with a MediaPlayer on iOS, can now be displayed
   under other elements and supports shader effects and advanced
   transformations.
 - QMediaRecorder now uses the correct system default audio capture
   device.
 - [QTBUG-36175] QMediaPlayer and the QML Audio and Mediaplayer types can
   now play media files stored in a Qt resource file.
 - [QTBUG-37655] Fixed video capture on iOS.
 - [QTBUG-39240] QMediaPlayer and the QML Audio and Mediaplayer types now
   support volume and mute on iOS 7.0 and later.
 - [QTBUG-42035] Fixed crash when capturing an image after changing the
   active camera device.

Linux
-----

 - Added support for GStreamer 1.0. The 0.10 series is still used by default
   and Qt needs to be configured with '-gstreamer 1.0' to enable 1.0
   support. If only GStreamer 1.0 is available on the system, the configure
   script will automatically configure Qt with GStreamer 1.0 support.
 - QCamera now supports exposure and white balance locks.
 - Added support for additional camera exposure modes (see list in
   QCameraExposure changes).
 - Fixed QCameraImageCapture::supportedResolutions(),
   QMediaRecorder::supportedResolutions() and
   QMediaRecorder::supportedFrameRates() that could return empty lists.
 - [QTBUG-46169] QVideoWidget now works with any windowing system. It was
   previously only working with X11.

Windows
-------

 - [QTBUG-45571] QAudioBuffer::startTime() now returns the time in the
   correct time scale.

WinRT
-----

 - [QTBUG-42263] QMediaPlayer and the QML Audio and Mediaplayer types can
   now play media files stored in a Qt resource file.
 - [QTBUG-44838] Fixed camera preview on Lumia 630.
 - [QTBUG-45920] Fixed camera preview on Lumia 530.
 - [QTBUG-45667] Fixed crash that could occur when using the camera
   preview.
