diff --git a/dist/changes-5.11.1 b/dist/changes-5.11.1 new file mode 100644 index 0000000000000000000000000000000000000000..11421dbd4a1faed9e957e9eaaf95f907d16554df --- /dev/null +++ b/dist/changes-5.11.1 @@ -0,0 +1,73 @@ +Qt 5.11.1 is a bug-fix release. It maintains both forward and backward +compatibility (source and binary) with Qt 5.11.0. + +For more details, refer to the online documentation included in this +distribution. The documentation is also available online: + +http://doc.qt.io/qt-5/index.html + +The Qt version 5.11 series is binary compatible with the 5.10.x series. +Applications compiled for 5.10 will continue to run with 5.11. + +Some of the changes listed in this file include issue tracking numbers +corresponding to tasks in the Qt Bug Tracker: + +https://bugreports.qt.io/ + +Each of these identifiers can be entered in the bug tracker to obtain more +information about a particular change. + +**************************************************************************** +* Qt 5.11.1 Changes * +**************************************************************************** + +QtMultimedia +------------ + + - Made it possible for QSound to play source files using the qrc schema. + - [QTBUG-54680] Added a fix to show content + when the renderer beackend got recreated. + - [QTBUG-54262] QAudioOutput is now properly released when a new source is set. + - [QTBUG-66754] Fixed possible double release of QSoundEffect's network + access manager. + +**************************************************************************** +* Platform Specific Changes * +**************************************************************************** + +WinRT +----- + + - [QTBUG-67614] Prevented deadlock when playing mp3 with QMediaPlayer. + - [QTBUG-67417] Fixed white screen for camera output. + - [QTBUG-63016] Avoided a crash when QImage is being destroyed within capturing. + - [QTBUG-63014] Fixed rotation of camera image. + - [QTBUG-68054] Fixed to keep camera as uninitialized when an error. + - [QTBUG-68054] Fixed a crash when using IMFMediaSink from IMFStreamSink. + +WasAPI +------ + + - [QTBUG-67353] The WasAPI backend will now always use the multithreaded + concurrency model. + +Gstreamer +--------- + + - [QTBUG-67920] Postponeed fetching supported viewfinder camerabin settings. + - [QTBUG-67706] Added better error and warning reporting in QGstreamerRecorderControl. + +WindowsAudio +------------ + + - [QTBUG-61920] Fixed adjusting volume for the default device. + +DirectShow +---------- + + - [QTBUG-64931] Fixed crackling sound when playing with a custom sample rate. + +QNX +--- + + - Switched WindowGrabber to a private parent window. diff --git a/examples/multimedia/audioinput/doc/src/audioinput.qdoc b/examples/multimedia/audioinput/doc/src/audioinput.qdoc index 49fee6005d1fbf760028c05ada70aeed5c04efb7..5339f28216415bdf03c74d3c25771d88f3d27c05 100644 --- a/examples/multimedia/audioinput/doc/src/audioinput.qdoc +++ b/examples/multimedia/audioinput/doc/src/audioinput.qdoc @@ -29,7 +29,7 @@ \example multimedia/audioinput \title Audio Input Example \ingroup multimedia_examples - \brief Recording audio using the QAudioInput class + \brief Recording audio using the QAudioInput class. \e{Audio Input} demonstrates the basic use cases of QAudioInput. diff --git a/src/imports/multimedia/qdeclarativecameracapture.cpp b/src/imports/multimedia/qdeclarativecameracapture.cpp index 22d87ec22a804b435cdd1de44303b8178ad7d112..96611f0eacd192a86befe3c5dfd937a9a64815c3 100644 --- a/src/imports/multimedia/qdeclarativecameracapture.cpp +++ b/src/imports/multimedia/qdeclarativecameracapture.cpp @@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE /*! \qmltype CameraCapture \instantiates QDeclarativeCameraCapture - \brief An interface for capturing camera images + \brief An interface for capturing camera images. \ingroup multimedia_qml \inqmlmodule QtMultimedia \ingroup camera_qml diff --git a/src/imports/multimedia/qdeclarativetorch.cpp b/src/imports/multimedia/qdeclarativetorch.cpp index 266eadf004fc6975ee7430ba43a2923950b57074..954926b984770a1cf0034048fed0f31ff35ed046 100644 --- a/src/imports/multimedia/qdeclarativetorch.cpp +++ b/src/imports/multimedia/qdeclarativetorch.cpp @@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE \qmltype Torch \instantiates QDeclarativeTorch \inqmlmodule QtMultimedia - \brief Simple control over torch functionality + \brief Simple control over torch functionality. \ingroup multimedia_qml diff --git a/src/multimedia/controls/qcamerafeedbackcontrol.cpp b/src/multimedia/controls/qcamerafeedbackcontrol.cpp index a30e495da09fd57d9b7aeb18ccc2d86874f1c877..07074d83d5552d4129d90acc6d3181ddd65c8bf5 100644 --- a/src/multimedia/controls/qcamerafeedbackcontrol.cpp +++ b/src/multimedia/controls/qcamerafeedbackcontrol.cpp @@ -45,7 +45,7 @@ /*! \class QCameraFeedbackControl - \brief The QCameraFeedbackControl class allows controlling feedback (sounds etc) during camera operation + \brief The QCameraFeedbackControl class allows controlling feedback (sounds etc) during camera operation. \inmodule QtMultimedia diff --git a/src/multimedia/controls/qmediacontainercontrol.cpp b/src/multimedia/controls/qmediacontainercontrol.cpp index 1b6c4bf036504551de48d4aaf9b4f747eba0141f..0f130645f8dfa06996116fb08680b750da5fddc1 100644 --- a/src/multimedia/controls/qmediacontainercontrol.cpp +++ b/src/multimedia/controls/qmediacontainercontrol.cpp @@ -45,7 +45,7 @@ QT_BEGIN_NAMESPACE /*! \class QMediaContainerControl - \brief The QMediaContainerControl class provides access to the output container format of a QMediaService + \brief The QMediaContainerControl class provides access to the output container format of a QMediaService. \inmodule QtMultimedia diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf index aa2aa4e3e3d15eb5bf98fe34b92aa4bd4955aa71..b547db762ed875c141cb7f6de1a61305ac4657ed 100644 --- a/src/multimedia/doc/qtmultimedia.qdocconf +++ b/src/multimedia/doc/qtmultimedia.qdocconf @@ -44,7 +44,8 @@ qhp.QtMultimedia.subprojects.examples.selectors = doc:example qhp.QtMultimedia.subprojects.examples.sortPages = true exampledirs += ../../../examples \ - snippets + snippets \ + ../../multimediawidgets/doc/snippets manifestmeta.highlighted.names = "QtMultimedia/QML Video Shader Effects Example" \ "QtMultimedia/Media Player Example" diff --git a/src/multimedia/doc/snippets/doc_src_qtmultimedia.cpp b/src/multimedia/doc/snippets/doc_src_qtmultimedia.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a562834745fc38ce4d36997f6de4cea109e339cb --- /dev/null +++ b/src/multimedia/doc/snippets/doc_src_qtmultimedia.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +#include <QtMultimedia> +//! [0] diff --git a/src/multimedia/doc/snippets/doc_src_qtmultimedia.pro b/src/multimedia/doc/snippets/doc_src_qtmultimedia.pro new file mode 100644 index 0000000000000000000000000000000000000000..13da13011c0247ee54ebb55c86a1915a7e76fd93 --- /dev/null +++ b/src/multimedia/doc/snippets/doc_src_qtmultimedia.pro @@ -0,0 +1,3 @@ +#! [0] +QT += multimedia +#! [0] diff --git a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc index a7b13bad4d416377df96d9cd96fde1a3dba60cf1..053dd3de7664f32c04475a455c8ea1db9420de8f 100644 --- a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc +++ b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc @@ -33,6 +33,16 @@ \brief The \l {Qt Multimedia} module provides audio, video, radio and camera functionality. + + To enable Qt Multimedia in a project, add this directive into the + C++ files: + + \snippet doc_src_qtmultimedia.cpp 0 + + To link against the C++ libraries, add the following to your \c qmake project + file: + + \snippet doc_src_qtmultimedia.pro 0 */ /*! diff --git a/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.cpp b/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0598cfab9752654f121eeffaf44f0ab5f823d8f2 --- /dev/null +++ b/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.cpp @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//! [0] +#include <QtMultimediaWidgets> +//! [0] diff --git a/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.pro b/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.pro new file mode 100644 index 0000000000000000000000000000000000000000..29c3e9caec75901d2adc357fb8e433bcb9654a9a --- /dev/null +++ b/src/multimediawidgets/doc/snippets/doc_src_qtmultimediawidgets.pro @@ -0,0 +1,3 @@ +#! [0] +QT += multimediawidgets +#! [0] diff --git a/src/multimediawidgets/doc/src/qtmultimediawidgets.qdoc b/src/multimediawidgets/doc/src/qtmultimediawidgets.qdoc index 691d66838902164221a73bacfd2ab138ce2f75e8..d7964c557e829e46ae143fcbdd66c0072556ae4f 100644 --- a/src/multimediawidgets/doc/src/qtmultimediawidgets.qdoc +++ b/src/multimediawidgets/doc/src/qtmultimediawidgets.qdoc @@ -35,14 +35,11 @@ These classes are part of the \l{Qt Multimedia Widgets}Â module. To enable Qt Multimedia Widgets in a project, add this directive into the C++ files: -\code -#include <QtMultimediaWidgets> -\endcode + +\snippet doc_src_qtmultimediawidgets.cpp 0 To link against the C++ libraries, add the following to your \c qmake project file: -\code -QT += multimediawidgets -\endcode +\snippet doc_src_qtmultimediawidgets.pro 0 */ diff --git a/src/plugins/directshow/player/directshowplayerservice.cpp b/src/plugins/directshow/player/directshowplayerservice.cpp index d7d190c6ac4411009838f8aae9dd5e15c40b82b1..b975677a60bef0373b2d2882f3c07b429afc5ac5 100644 --- a/src/plugins/directshow/player/directshowplayerservice.cpp +++ b/src/plugins/directshow/player/directshowplayerservice.cpp @@ -521,9 +521,9 @@ void DirectShowPlayerService::doRender(QMutexLocker *locker) peer->Release(); } else { locker->unlock(); - HRESULT hr; - if (SUCCEEDED(hr = graph->RenderEx( - pin, /*AM_RENDEREX_RENDERTOEXISTINGRENDERERS*/ 1, 0))) { + HRESULT hr = graph->RenderEx(pin, /*AM_RENDEREX_RENDERTOEXISTINGRENDERERS*/ 1, 0); + // Do not return an error if no video output is set yet. + if (SUCCEEDED(hr) || !(m_executedTasks & SetVideoOutput)) { rendered = true; } else if (renderHr == S_OK || renderHr == VFW_E_NO_DECOMPRESSOR){ renderHr = hr; diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index d7a96d33374aa4b2d7563d0d67456f972674a235..e87e1b3f0e3d77d9c91495a2af9a621898a04705 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -518,11 +518,19 @@ GstElement *CameraBinSession::buildCameraSource() const QList<QByteArray> sources = envVideoSource.split(','); for (const QByteArray &source : sources) { QList<QByteArray> keyValue = source.split('='); - if (keyValue.count() == 1) { - m_videoSrc = gst_element_factory_make(keyValue.at(0), "camera_source"); - break; - } else if (keyValue.at(0) == QGstUtils::cameraDriver(m_inputDevice, m_sourceFactory)) { - m_videoSrc = gst_element_factory_make(keyValue.at(1), "camera_source"); + QByteArray name = keyValue.at(0); + if (keyValue.count() > 1 && keyValue.at(0) == QGstUtils::cameraDriver(m_inputDevice, m_sourceFactory)) + name = keyValue.at(1); + + GError *error = NULL; + GstElement *element = gst_parse_launch(name, &error); + + if (error) { + g_printerr("ERROR: %s: %s\n", name.constData(), GST_STR_NULL(error->message)); + g_clear_error(&error); + } + if (element) { + m_videoSrc = element; break; } } diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp index 0eec4a2ca88fd95839db6f2987139a029131202f..164a958ffd4714e5bfa259d1203599e624ce7c7e 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.cpp +++ b/src/plugins/winrt/qwinrtcameracontrol.cpp @@ -583,6 +583,8 @@ QWinRTCameraControl::QWinRTCameraControl(QObject *parent) connect(d->videoRenderer, &QWinRTCameraVideoRendererControl::bufferRequested, this, &QWinRTCameraControl::onBufferRequested); d->videoDeviceSelector = new QWinRTVideoDeviceSelectorControl(this); + connect(d->videoDeviceSelector, QOverload<int>::of(&QWinRTVideoDeviceSelectorControl::selectedDeviceChanged), + d->videoRenderer, &QWinRTCameraVideoRendererControl::resetSampleFormat); d->imageCaptureControl = new QWinRTCameraImageCaptureControl(this); d->imageEncoderControl = new QWinRTImageEncoderControl(this); d->cameraFlashControl = new QWinRTCameraFlashControl(this); diff --git a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp index 03d107ae8df4b256e1b1995e4e6a394f1bd51d63..6c5e3dbf93c06fe6d5cba5a453106d4af5889b04 100644 --- a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp @@ -426,4 +426,10 @@ void QWinRTCameraVideoRendererControl::decrementProbe() --d->videoProbesCounter; } +void QWinRTCameraVideoRendererControl::resetSampleFormat() +{ + Q_D(QWinRTCameraVideoRendererControl); + d->cameraSampleformat = QVideoFrame::Format_User; +} + QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcameravideorenderercontrol.h b/src/plugins/winrt/qwinrtcameravideorenderercontrol.h index eeda83d522961be07a0ad2bc22da5bb2ff325d5e..2f98e70f420ff8e5c3ad6598b5d6ddee65efbf14 100644 --- a/src/plugins/winrt/qwinrtcameravideorenderercontrol.h +++ b/src/plugins/winrt/qwinrtcameravideorenderercontrol.h @@ -69,6 +69,9 @@ signals: void bufferRequested(); void videoFrameProbed(const QVideoFrame &frame); +public slots: + void resetSampleFormat(); + private: QScopedPointer<QWinRTCameraVideoRendererControlPrivate> d_ptr; Q_DECLARE_PRIVATE(QWinRTCameraVideoRendererControl) diff --git a/tests/auto/unit/qmediaplaylist/qmediaplaylist.pro b/tests/auto/unit/qmediaplaylist/qmediaplaylist.pro index 4c1aceceb05e6681c9ef52e4de4c8a560738567a..78a9ea7e8336ada47c9af709b57beef3b9806e5e 100644 --- a/tests/auto/unit/qmediaplaylist/qmediaplaylist.pro +++ b/tests/auto/unit/qmediaplaylist/qmediaplaylist.pro @@ -5,12 +5,8 @@ include (../qmultimedia_common/mockplaylist.pri) QT += multimedia-private testlib -HEADERS += \ - ../../../../src/plugins/m3u/qm3uhandler.h - SOURCES += \ - tst_qmediaplaylist.cpp \ - ../../../../src/plugins/m3u/qm3uhandler.cpp + tst_qmediaplaylist.cpp INCLUDEPATH += ../../../../src/plugins/m3u