Qt 5.6 introduces many new features and improvements as well as bugfixes
over the 5.5.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.6

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

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.

****************************************************************************
*                   Important Behavior Changes                             *
****************************************************************************

 - QAudioOutput now transitions to IdleState instead of ActiveState when
   calling resume() in push mode. This was already the documented behavior
   but in practice, it was not respected on any platform. See QTBUG-50390.

 - DirectShow is now the default backend on all desktop versions of Windows,
   regardless of the compiler used. The Windows Media Foundation backend
   (WMF) can be re-enabled by configuring Qt with the -wmf-backend option.
   See QTBUG-45597.

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

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

 - Added new Playlist QML type.

 - Audio Engine QML types
   * All types can now be created dynamically and added to the engine
     using new 'add' functions.

 - MediaPlayer, Audio and Video (QML):
   * Added new audio role API.
   * Added playlist support.

 - QMediaPlayer:
   * Added new audio role API.

 - [QTBUG-49838] Fixed crash when playing very short WAV files with
   QSoundEffect.

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

Android
-------

 - QAudioOutput: improved detection of the default buffer size and sample
   rate.
 - [QTBUG-35416] Camera QVideoFrames can now me mapped when retrieved using
   QAbstractVideoSurface or QVideoProbe.
 - [QTBUG-37837] Fixed crash when recording the camera on specific devices.
 - [QTBUG-46491] Fixed media player blocking the UI when loading a media.
 - [QTBUG-49134] Fixed crash when starting the camera on specific devices.
 - [QTBUG-50282] Fixed QAudioRecorder crashing when trying to start it
   with invalid settings.

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

 - Greatly improved performance of displaying camera frames using the QML
   VideoOutput type on iOS.
 - Camera capture previews from the imageCaptured() signal are now in higher
   resolutions.
 - QMediaPlayer::isSeekable() (and QML counterpart) now correctly reports
   the seekable status.
 - QAudioRecorder::setVolume() is now functional.
 - [QTBUG-45570] Fixed media player playback rate not working when set
   before calling play().
 - [QTBUG-48057] Media player now correctly seeks as soon as playback starts
   when the position is changed before calling play().
 - [QTBUG-48154] Fixed media player volume not working when set before
   loading a media.
 - [QTBUG-49170] It is not necessary anymore to set a viewfinder on a
   QCamera to be able to query the supported viewfinder settings.
 - [QTBUG-49170] Fixed QCamera ignoring the resolution set in
   QCameraViewfinderSettings.

Linux
-----

 - QCameraImageProcessing is now functional.
 - [QTBUG-49531] Fixed QMediaPlayer not being able to play the same resource
   file more than once.

QNX
---

 - QAudioRecorder::setVolume() is now functional.
 - [QTBUG-49668] Fixed 'loops' property not working for Audio, Video and
   MediaPlayer QML types.

Windows
-------

 - [QTBUG-45593] The DirectShow backend now supports HW-accelerated video
   decoding.
 - The QML MediaPlayer and Video types previously supported HW-accelerated
   video decoding only when using the ANGLE OpenGL implementation. It now
   works with desktop OpenGL as well.
 - QAudioRecorder::setVolume() is now functional.
 - QCameraImageProcessing is now functional.
 - Fixed media player volume not working when set before a media is loaded.
 - Fixed QVideoFrame::startTime() not returning any value.
 - Fixed seek requests never being processed when QMediaPlayer::setPosition()
   is called while the media is not playing.

WinRT
-----

 - Improved camera support: focus, focus lock and video probe APIs are now
   functional.
 - [QTBUG-47465] Fixed camera viewfinder aspect ratio.
 - [QTBUG-47809] Fixed camera frames being upside down after switching
   between front and back cameras.
 - [QTBUG-48331][QTBUG-49660] Fixed camera viewfinder frames not being
   displayed on the Lumia 930 and 1520.
 - [QTBUG-48534] Fixed QCamera::searchAndLock() blocking the UI.
 - [QTBUG-48569] Fixed crash when resuming an application that uses the
   camera.
 - [QTBUG-48672] Fixed crash when mapping camera frames after the camera
   has stopped.
 - [QTBUG-49236] Fixed playback of local files.
 - [QTBUG-49347] Fixed crash when the application is suspended while
   a camera focus lock is in progress.
