Qt 5.1.1 is a bug-fix release. It maintains both forward and backward
compatibility (source and binary) with Qt 5.1.0.

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.1/

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

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.

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

Qt for Windows
--------------

 - Use correct default audio output and input devices on Windows.
 - [QTBUG-29206] DirectShow: avoid unnecessary RGB32 -> BGR32 conversion.
 - [QTBUG-32282] DirectShow: Don't create the widget and renderer controls
    until requested.
 - [QTBUG-23822] Fix resource leak in directshow plugin.
 - WMF: fixed MediaPlayer buffering logic.

Qt for Android
--------------

 - Fixed potential memory leak when destroying a media player.
 - Fixed media player showing black frames on some hardware.
 - [QTBUG-31422] Make it possible for the media player to play assets.
 - Fixed Java exception being thrown at app startup when using multimedia.

Qt for BlackBerry
-----------------

 - [QTBUG-31534] Fix frame size of video playback.
