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

  http://qt-project.org/doc/qt-5.4

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

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

  http://bugreports.qt-project.org/

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

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

 - Using QAudioOutput and QSoundEffect with the PulseAudio backend won't
   cause the system volume to be automatically changed to the maximum value
   anymore. Audio streams will now respect the system-wide volume unless
   explicitly set with setVolume().
 - On Linux, both Alsa and PulseAudio backends are now present. PulseAudio
   is used by default if available on the system and if the server is
   running, otherwise Alsa is used instead.

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

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

 - Added new QAbstractPlanarVideoBuffer class.

 - Camera (QML):
   * Added deviceId, displayName, position, orientation, metadata,
     viewfinder.resolution, viewfinder.minimumFrameRate and
     viewfinder.maximumFrameRate properties.
   * Camera device can be selected by setting the deviceId or position
     properties.
   *

 - QtMultimedia global QML object:
   * Added defaultCamera and availableCameras properties.

 - QAbstractVideoBuffer:
   * Added mapPlanes() function.

 - QVideoFrame:
   * Added support for planar video formats. New planeCount(),
     bytesPerLine(int plane) and bits(int plane) functions.

 - [QTBUG-40515] Improved PLS parser. It is now more permissive, allowing
   to load virtually any kind of PLS file. It also correctly resolve
   relative paths.

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

Android
-------

 - Changing a media player's position after reaching the end of a media
   now correctly works.
 - [QTBUG-40314] Fixed playing a QMediaPlaylit with a QMediaPlayer.

Linux
-----

 - Added support for QCameraInfo::position() and QCameraInfo::orientation().
 - Added support for QCameraFocus::customFocusPoint.
 - QMediaRecorder::duration() now returns the correct value when recording
   with a camera source.
 - QMediaMetaData::ContributingArtist and QMediaMetaData::AlbumArtist
   now map to the correct metadata.
 - Fixed QMediaPlayer's metaDataAvailableChanged() signal, which was never
   emitted.

OS X
----

 - OS X 10.6 not being supported anymore, the QuickTime backend has been
   removed.

QNX
---

 - [QTBUG-40746] Fixed crash when detroying a QML VideoOutput or Video item.

Windows
-------

 - [QTBUG-32481] Fixed various memory leaks when using a media player.
 - [QTBUG-39980] Fixed crash occasionally happening when playing and
   stopping repeatedly a media with QMediaPlayer.
 - [QTBUG-40954] Buffers retrieved with QAudioProbe now have a correct
   startTime().
 - [QTBUG-41158] Fixed crash occasionally happening when destroying a
   QML MediaPlayer.

WinRT
-----

 - Enabled media player support for WinRT.
 - Enabled basic camera support for WinRT (viewfinder, still image capture
   and camera device selection).
