From 762bce7a06de20d87425a363a83a01bd0be9159a Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 1 Jun 2015 18:09:30 +0200 Subject: AVFoundation: fix wrong Q_ASSERT. The assert was always triggered, at least on OSX. Change-Id: I9aabb6103b7f5540cff42facc448ffcf6a6de511 Reviewed-by: Timur Pocheptsov --- src/plugins/avfoundation/camera/avfcameraflashcontrol.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/avfoundation/camera/avfcameraflashcontrol.mm b/src/plugins/avfoundation/camera/avfcameraflashcontrol.mm index 0eef95e92..89c7a2eb6 100644 --- a/src/plugins/avfoundation/camera/avfcameraflashcontrol.mm +++ b/src/plugins/avfoundation/camera/avfcameraflashcontrol.mm @@ -157,7 +157,7 @@ void AVFCameraFlashControl::cameraStateChanged(QCamera::State newState) bool AVFCameraFlashControl::applyFlashSettings() { - Q_ASSERT(m_session->state() == QCamera::ActiveState); + Q_ASSERT(m_session->requestedState() == QCamera::ActiveState); AVCaptureDevice *captureDevice = m_session->videoCaptureDevice(); if (!captureDevice) { -- cgit v1.2.3 From 00789e7d4ebbf4adb40a7722db43a03bcf5c3b4d Mon Sep 17 00:00:00 2001 From: Peng Wu Date: Mon, 1 Jun 2015 16:13:27 +0300 Subject: winrt: fix camera preview on Lumia 530 Lumia 530 has the same QTBUG-44838 device bug that gives black frames when blitting to the target texture for image preview. Add it to workaround blacklist. Task-number: QTBUG-45920 Change-Id: Ia411793b90e487fa57b943ed7f01e370bfb84a1f Reviewed-by: Andrew Knight --- src/plugins/winrt/qwinrtcameracontrol.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp index e4a577642..2f71674fe 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.cpp +++ b/src/plugins/winrt/qwinrtcameracontrol.cpp @@ -129,6 +129,7 @@ public: hr = deviceInfo->get_SystemSku(deviceModel.GetAddressOf()); Q_ASSERT_SUCCEEDED(hr); m_flags |= bufferLockRequired(L"NOKIA RM-976", deviceModel); + m_flags |= bufferLockRequired(L"NOKIA RM-1019", deviceModel); #endif } -- cgit v1.2.3 From f93f4e3daab1f9cbebbf663f1119a080cb299b9f Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Wed, 3 Jun 2015 14:43:13 +0200 Subject: WinRT: fix namespaced build Change-Id: I06b18e2a1318bda826befde52ee1fd874e25dd47 Reviewed-by: Oswald Buddenhagen Reviewed-by: Andrew Knight --- src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp | 4 +++- src/plugins/winrt/qwinrtcameracontrol.cpp | 4 +++- src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp | 4 +++- src/plugins/winrt/qwinrtcamerainfocontrol.cpp | 4 +++- src/plugins/winrt/qwinrtcameraservice.cpp | 4 +++- src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp | 4 +++- src/plugins/winrt/qwinrtmediaplayercontrol.cpp | 4 +++- src/plugins/winrt/qwinrtmediaplayercontrol.h | 4 +++- src/plugins/winrt/qwinrtmediaplayerservice.cpp | 4 +++- src/plugins/winrt/qwinrtplayerrenderercontrol.cpp | 4 +++- src/plugins/winrt/qwinrtserviceplugin.cpp | 4 +++- src/plugins/winrt/qwinrtserviceplugin.h | 4 +++- src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp | 4 +++- 13 files changed, 39 insertions(+), 13 deletions(-) diff --git a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp index 2d0b5413a..aa0f721b3 100644 --- a/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtabstractvideorenderercontrol.cpp @@ -56,7 +56,7 @@ using namespace Microsoft::WRL; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE #define BREAK_IF_FAILED(msg) RETURN_IF_FAILED(msg, break) #define CONTINUE_IF_FAILED(msg) RETURN_IF_FAILED(msg, continue) @@ -408,3 +408,5 @@ void QWinRTAbstractVideoRendererControl::present() QVideoFrame frame(d->videoBuffer, d->format.frameSize(), d->format.pixelFormat()); d->surface->present(frame); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp index 2f71674fe..12f4fb459 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.cpp +++ b/src/plugins/winrt/qwinrtcameracontrol.cpp @@ -67,7 +67,7 @@ using namespace ABI::Windows::Media::Devices; using namespace ABI::Windows::Media::MediaProperties; using namespace ABI::Windows::Storage::Streams; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE #define RETURN_VOID_AND_EMIT_ERROR(msg) \ if (FAILED(hr)) { \ @@ -833,3 +833,5 @@ HRESULT QWinRTCameraControl::onRecordLimitationExceeded(IMediaCapture *) setState(QCamera::LoadedState); return S_OK; } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp index 104484a6e..6bc5eaafc 100644 --- a/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp +++ b/src/plugins/winrt/qwinrtcameraimagecapturecontrol.cpp @@ -64,7 +64,7 @@ using namespace ABI::Windows::Media::MediaProperties; using namespace ABI::Windows::Storage::Streams; using namespace ABI::Windows::Graphics::Imaging; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE #define wchar(str) reinterpret_cast(str.utf16()) @@ -273,3 +273,5 @@ HRESULT QWinRTCameraImageCaptureControl::onCaptureCompleted(IAsyncAction *asyncI return S_OK; } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcamerainfocontrol.cpp b/src/plugins/winrt/qwinrtcamerainfocontrol.cpp index 69fc0a9a2..3e88fadc6 100644 --- a/src/plugins/winrt/qwinrtcamerainfocontrol.cpp +++ b/src/plugins/winrt/qwinrtcamerainfocontrol.cpp @@ -37,7 +37,7 @@ #include "qwinrtcamerainfocontrol.h" #include "qwinrtvideodeviceselectorcontrol.h" -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE QWinRTCameraInfoControl::QWinRTCameraInfoControl(QObject *parent) : QCameraInfoControl(parent) @@ -53,3 +53,5 @@ int QWinRTCameraInfoControl::cameraOrientation(const QString &deviceName) const { return QWinRTVideoDeviceSelectorControl::cameraOrientation(deviceName); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcameraservice.cpp b/src/plugins/winrt/qwinrtcameraservice.cpp index 09b565753..a73cddbe5 100644 --- a/src/plugins/winrt/qwinrtcameraservice.cpp +++ b/src/plugins/winrt/qwinrtcameraservice.cpp @@ -45,7 +45,7 @@ #include #include -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class QWinRTCameraServicePrivate { @@ -97,3 +97,5 @@ void QWinRTCameraService::releaseControl(QMediaControl *control) { Q_UNUSED(control); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp index 3b8a38bbb..4878c55c9 100644 --- a/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtcameravideorenderercontrol.cpp @@ -45,7 +45,7 @@ #include using namespace Microsoft::WRL; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class D3DVideoBlitter { @@ -210,3 +210,5 @@ void QWinRTCameraVideoRendererControl::discardBuffers() for (ComPtr &buffer : d->buffers) buffer.Reset(); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp index 0402553d0..8954d4445 100644 --- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp +++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp @@ -55,7 +55,7 @@ #include using namespace Microsoft::WRL; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE #define QT_WINRT_MEDIAPLAYER_STREAM_ID "__qtmultimedia_winrt_player_stream" @@ -892,3 +892,5 @@ void QWinRTMediaPlayerControl::finishRead() Q_D(QWinRTMediaPlayerControl); d->streamProvider->finishRead(); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.h b/src/plugins/winrt/qwinrtmediaplayercontrol.h index 34abcc12c..54fdcc108 100644 --- a/src/plugins/winrt/qwinrtmediaplayercontrol.h +++ b/src/plugins/winrt/qwinrtmediaplayercontrol.h @@ -41,7 +41,7 @@ struct IMFMediaEngineClassFactory; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class QVideoRendererControl; @@ -96,4 +96,6 @@ private: Q_DECLARE_PRIVATE(QWinRTMediaPlayerControl) }; +QT_END_NAMESPACE + #endif // QWINRTMEDIAPLAYERCONTROL_H diff --git a/src/plugins/winrt/qwinrtmediaplayerservice.cpp b/src/plugins/winrt/qwinrtmediaplayerservice.cpp index a6b3d1f37..dd7aaa117 100644 --- a/src/plugins/winrt/qwinrtmediaplayerservice.cpp +++ b/src/plugins/winrt/qwinrtmediaplayerservice.cpp @@ -47,7 +47,7 @@ using namespace Microsoft::WRL; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class QWinRTMediaPlayerServicePrivate { @@ -104,3 +104,5 @@ void QWinRTMediaPlayerService::releaseControl(QMediaControl *control) if (control == d->player) d->player->deleteLater(); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtplayerrenderercontrol.cpp b/src/plugins/winrt/qwinrtplayerrenderercontrol.cpp index 5a8f4b87c..c37aac4e2 100644 --- a/src/plugins/winrt/qwinrtplayerrenderercontrol.cpp +++ b/src/plugins/winrt/qwinrtplayerrenderercontrol.cpp @@ -54,7 +54,7 @@ #include using namespace Microsoft::WRL; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE template class D3DDeviceLocker @@ -149,3 +149,5 @@ bool QWinRTPlayerRendererControl::render(ID3D11Texture2D *texture) RETURN_FALSE_IF_FAILED("Failed to transfer video frame to DXGI surface"); return true; } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtserviceplugin.cpp b/src/plugins/winrt/qwinrtserviceplugin.cpp index fc0103d15..7237632a3 100644 --- a/src/plugins/winrt/qwinrtserviceplugin.cpp +++ b/src/plugins/winrt/qwinrtserviceplugin.cpp @@ -42,7 +42,7 @@ #include "qwinrtcameraservice.h" #include "qwinrtvideodeviceselectorcontrol.h" -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE QMediaService *QWinRTServicePlugin::create(QString const &key) { @@ -102,3 +102,5 @@ QByteArray QWinRTServicePlugin::defaultDevice(const QByteArray &service) const return QByteArray(); } + +QT_END_NAMESPACE diff --git a/src/plugins/winrt/qwinrtserviceplugin.h b/src/plugins/winrt/qwinrtserviceplugin.h index 5f5cf559b..0f76f5059 100644 --- a/src/plugins/winrt/qwinrtserviceplugin.h +++ b/src/plugins/winrt/qwinrtserviceplugin.h @@ -39,7 +39,7 @@ #include -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE class QWinRTServicePlugin : public QMediaServiceProviderPlugin , public QMediaServiceFeaturesInterface @@ -68,4 +68,6 @@ public: QByteArray defaultDevice(const QByteArray &service) const Q_DECL_OVERRIDE; }; +QT_END_NAMESPACE + #endif // QWINRTSERVICEPLUGIN_H diff --git a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp index 582a9fc6d..8e806dcbf 100644 --- a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp +++ b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp @@ -55,7 +55,7 @@ typedef ITypedEventHandler DeviceInformati typedef ITypedEventHandler DeviceInformationUpdateHandler; typedef ITypedEventHandler DeviceEnumerationCompletedHandler; -QT_USE_NAMESPACE +QT_BEGIN_NAMESPACE static QString deviceName(IDeviceInformation *device) { @@ -386,3 +386,5 @@ void QWinRTVideoDeviceSelectorControl::setSelectedDevice(int index) emit selectedDeviceChanged(deviceName(d->selectedDevice)); } } + +QT_END_NAMESPACE -- cgit v1.2.3 From 7f9beeaf9c1f86268dee8e6f668fbf78313ffd9c Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 9 Jun 2015 18:30:32 +0200 Subject: Define QCamera::FrameRateRange as a struct. Instead of an alias for QPair. Task-number: QTBUG-46563 Change-Id: I7e1ac68242810f7e5f7e161571a11f5de7850e29 Reviewed-by: Christian Stromme --- src/imports/multimedia/qdeclarativecamera.cpp | 4 ++-- src/multimedia/camera/qcamera.cpp | 26 +++++++++++++++++------ src/multimedia/camera/qcamera.h | 24 ++++++++++++++++++++- src/plugins/directshow/camera/dscamerasession.cpp | 6 +++--- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp index aac873b8e..c5d899e98 100644 --- a/src/imports/multimedia/qdeclarativecamera.cpp +++ b/src/imports/multimedia/qdeclarativecamera.cpp @@ -1094,8 +1094,8 @@ QJSValue QDeclarativeCamera::supportedViewfinderFrameRateRanges(const QSize &res int i = 0; Q_FOREACH (const QCamera::FrameRateRange &frameRateRange, frameRateRanges) { QJSValue range = engine->newObject(); - range.setProperty(QStringLiteral("minimumFrameRate"), frameRateRange.first); - range.setProperty(QStringLiteral("maximumFrameRate"), frameRateRange.second); + range.setProperty(QStringLiteral("minimumFrameRate"), frameRateRange.minimumFrameRate); + range.setProperty(QStringLiteral("maximumFrameRate"), frameRateRange.maximumFrameRate); supportedFrameRateRanges.setProperty(i++, range); } diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index daee0a930..e70bed047 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -72,7 +72,7 @@ static bool qt_sizeLessThan(const QSize &s1, const QSize &s2) static bool qt_frameRateRangeLessThan(const QCamera::FrameRateRange &s1, const QCamera::FrameRateRange &s2) { - return s1.second < s2.second; + return s1.maximumFrameRate < s2.maximumFrameRate; } /*! @@ -1028,15 +1028,29 @@ void QCamera::unlock() /*! - \typedef QCamera::FrameRateRange + \class QCamera::FrameRateRange + \inmodule QtMultimedia + \ingroup multimedia + \ingroup multimedia_camera + \since 5.5 + + \brief A FrameRateRange represents a range of frame rates as minimum and maximum rate. - This is a typedef for QPair. + If the minimum frame rate is equal to the maximum frame rate, the frame rate is fixed. + If not, the actual frame rate fluctuates between the minimum and the maximum. - A frame rate range contains a minimum and a maximum frame rate, respectively the first and - second element of the pair. If the minimum frame rate is equal to the maximum frame rate, the - frame rate is fixed. If not, the actual frame rate fluctuates between the minimum and the maximum. + \sa QCamera::supportedViewfinderFrameRateRanges(), QCameraViewfinderSettings */ +/*! + \variable QCamera::FrameRateRange::minimumFrameRate + The minimum frame rate supported by the range, in frames per second. +*/ + +/*! + \variable QCamera::FrameRateRange::maximumFrameRate + The maximum frame rate supported by the range, in frames per second. +*/ /*! \enum QCamera::State diff --git a/src/multimedia/camera/qcamera.h b/src/multimedia/camera/qcamera.h index a50c38496..ea81c02c4 100644 --- a/src/multimedia/camera/qcamera.h +++ b/src/multimedia/camera/qcamera.h @@ -77,7 +77,21 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QMediaObject Q_ENUMS(LockType) Q_ENUMS(Position) public: - typedef QPair FrameRateRange; + struct FrameRateRange + { + Q_DECL_CONSTEXPR FrameRateRange() Q_DECL_NOTHROW + : minimumFrameRate(0) + , maximumFrameRate(0) + { } + + Q_DECL_CONSTEXPR FrameRateRange(qreal minimum, qreal maximum) Q_DECL_NOTHROW + : minimumFrameRate(minimum) + , maximumFrameRate(maximum) + { } + + qreal minimumFrameRate; + qreal maximumFrameRate; + }; enum Status { UnavailableStatus, @@ -237,6 +251,14 @@ private: Q_DECLARE_OPERATORS_FOR_FLAGS(QCamera::LockTypes) +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator==(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2) Q_DECL_NOTHROW +{ return r1.minimumFrameRate == r2.minimumFrameRate && r1.maximumFrameRate == r2.maximumFrameRate; } + +Q_DECL_CONSTEXPR Q_INLINE_TEMPLATE bool operator!=(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2) Q_DECL_NOTHROW +{ return !(r1 == r2); } + +Q_DECLARE_TYPEINFO(QCamera::FrameRateRange, Q_PRIMITIVE_TYPE); + QT_END_NAMESPACE Q_DECLARE_METATYPE(QCamera::State) diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index 87af9a6e3..a2586aa9d 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -789,7 +789,7 @@ void DSCameraSession::disconnectGraph() static bool qt_frameRateRangeGreaterThan(const QCamera::FrameRateRange &r1, const QCamera::FrameRateRange &r2) { - return r1.second > r2.second; + return r1.maximumFrameRate > r2.maximumFrameRate; } void DSCameraSession::updateSourceCapabilities() @@ -896,8 +896,8 @@ void DSCameraSession::updateSourceCapabilities() Q_FOREACH (const QCamera::FrameRateRange &frameRateRange, frameRateRanges) { QCameraViewfinderSettings settings; settings.setResolution(resolution); - settings.setMinimumFrameRate(frameRateRange.first); - settings.setMaximumFrameRate(frameRateRange.second); + settings.setMinimumFrameRate(frameRateRange.minimumFrameRate); + settings.setMaximumFrameRate(frameRateRange.maximumFrameRate); settings.setPixelFormat(pixelFormat); m_supportedViewfinderSettings.append(settings); -- cgit v1.2.3 From 36507b71f2a05d8703cfa5437f5d3246be896359 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 10 Jun 2015 22:37:09 +0200 Subject: Added 5.5.0 change file. Task-number: QTBUG-45455 Change-Id: I832dcd02215e6ae004b6f1e6cf3905b95a838e4a Reviewed-by: Christian Stromme --- dist/changes-5.5.0 | 118 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 dist/changes-5.5.0 diff --git a/dist/changes-5.5.0 b/dist/changes-5.5.0 new file mode 100644 index 000000000..14b9cc041 --- /dev/null +++ b/dist/changes-5.5.0 @@ -0,0 +1,118 @@ +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. -- cgit v1.2.3 From c34cf6131221dac2ea8745a5c93b57c13dd8533c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 13:45:34 +0200 Subject: QCameraViewFinderSettings: use correct include Change-Id: I71f24922872f64d86d55f420b0e27028a6368097 Reviewed-by: Lars Knoll --- src/multimedia/camera/qcameraviewfindersettings.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/multimedia/camera/qcameraviewfindersettings.h b/src/multimedia/camera/qcameraviewfindersettings.h index bfb3d08d3..db9d3d8eb 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.h +++ b/src/multimedia/camera/qcameraviewfindersettings.h @@ -34,10 +34,11 @@ #ifndef QCAMERAVIEWFINDERSETTINGS_H #define QCAMERAVIEWFINDERSETTINGS_H -#include #include #include +#include + QT_BEGIN_NAMESPACE class QCameraViewfinderSettingsPrivate; -- cgit v1.2.3 From 99bda08cb1ea14a29deefe9dabe276c38648c899 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 13:55:43 +0200 Subject: QCameraViewFinderSettings: make op== non-member ...and inline op!=. Mark them as nothrow. More idiomatic C++ (symmetry between lhs and rhs). Change-Id: I65ecbef961383897e4e17325ad62d45e1772fbb0 Reviewed-by: Lars Knoll --- .../camera/qcameraviewfindersettings.cpp | 31 ++++++++++++---------- src/multimedia/camera/qcameraviewfindersettings.h | 7 +++-- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/multimedia/camera/qcameraviewfindersettings.cpp b/src/multimedia/camera/qcameraviewfindersettings.cpp index a6290cfb7..059c93f6a 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.cpp +++ b/src/multimedia/camera/qcameraviewfindersettings.cpp @@ -136,32 +136,35 @@ QCameraViewfinderSettings &QCameraViewfinderSettings::operator=(const QCameraVie } /*! - Determines if \a other is of equal value to a viewfinder settings object. + \relates QCameraViewfinderSettings + \since 5.5 + + Determines if \a lhs is of equal value to \a rhs. Returns true if the settings objects are of equal value, and false if they are not of equal value. */ -bool QCameraViewfinderSettings::operator==(const QCameraViewfinderSettings &other) const +bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW { - return (d == other.d) || - (d->isNull == other.d->isNull && - d->resolution == other.d->resolution && - qFuzzyCompare(d->minimumFrameRate, other.d->minimumFrameRate) && - qFuzzyCompare(d->maximumFrameRate, other.d->maximumFrameRate) && - d->pixelFormat == other.d->pixelFormat && - d->pixelAspectRatio == other.d->pixelAspectRatio); + return (lhs.d == rhs.d) || + (lhs.d->isNull == rhs.d->isNull && + lhs.d->resolution == rhs.d->resolution && + qFuzzyCompare(lhs.d->minimumFrameRate, rhs.d->minimumFrameRate) && + qFuzzyCompare(lhs.d->maximumFrameRate, rhs.d->maximumFrameRate) && + lhs.d->pixelFormat == rhs.d->pixelFormat && + lhs.d->pixelAspectRatio == rhs.d->pixelAspectRatio); } /*! - Determines if \a other is of equal value to a viewfinder settings object. + \fn bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) + \relates QCameraViewfinderSettings + \since 5.5 + + Determines if \a lhs is of equal value to \a rhs. Returns true if the settings objects are not of equal value, and false if they are of equal value. */ -bool QCameraViewfinderSettings::operator!=(const QCameraViewfinderSettings &other) const -{ - return !(*this == other); -} /*! Identifies if a viewfinder settings object is uninitalized. diff --git a/src/multimedia/camera/qcameraviewfindersettings.h b/src/multimedia/camera/qcameraviewfindersettings.h index db9d3d8eb..dcdf025fc 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.h +++ b/src/multimedia/camera/qcameraviewfindersettings.h @@ -52,9 +52,8 @@ public: ~QCameraViewfinderSettings(); QCameraViewfinderSettings& operator=(const QCameraViewfinderSettings &other); - bool operator==(const QCameraViewfinderSettings &other) const; - bool operator!=(const QCameraViewfinderSettings &other) const; + friend Q_MULTIMEDIA_EXPORT bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW; bool isNull() const; QSize resolution() const; @@ -80,6 +79,10 @@ private: QSharedDataPointer d; }; +inline bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW +{ return !operator==(lhs, rhs); } + + QT_END_NAMESPACE Q_DECLARE_METATYPE(QCameraViewfinderSettings) -- cgit v1.2.3 From 12893e382600bf9defaa79e3b22a2f880e2f5a0a Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 13:59:19 +0200 Subject: QCameraViewFinderSettings: declare shared Requires implementing member-swap. Also implemented move assignment operator. Change-Id: I077ee85346a8c542cd344720e45a0795a6947e4c Reviewed-by: Lars Knoll --- src/multimedia/camera/qcameraviewfindersettings.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/multimedia/camera/qcameraviewfindersettings.h b/src/multimedia/camera/qcameraviewfindersettings.h index dcdf025fc..31c7329c2 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.h +++ b/src/multimedia/camera/qcameraviewfindersettings.h @@ -52,6 +52,12 @@ public: ~QCameraViewfinderSettings(); QCameraViewfinderSettings& operator=(const QCameraViewfinderSettings &other); +#ifdef Q_COMPILER_RVALUE_REFS + QCameraViewfinderSettings &operator=(QCameraViewfinderSettings &&other) Q_DECL_NOTHROW + { swap(other); return *this; } +#endif + + void swap(QCameraViewfinderSettings &other) Q_DECL_NOTHROW { d.swap(other.d); } friend Q_MULTIMEDIA_EXPORT bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW; bool isNull() const; @@ -78,6 +84,7 @@ public: private: QSharedDataPointer d; }; +Q_DECLARE_SHARED(QCameraViewfinderSettings) inline bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW { return !operator==(lhs, rhs); } -- cgit v1.2.3 From 62d9398a27a14098e15094b52dd4f0c72bf5cc23 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 14:03:21 +0200 Subject: QCameraViewFinderSettings: make op== transitive Using qFuzzyCompare in operator== makes it impossible to create a consistent qHash() overload for the class later on (qFuzzyCompare is not transitive). It is unlikely that there will be numerical instability for frame rates. If there is, qFuzzyCompare should be overloaded for either this class or the FrameRateRange class. Change-Id: Id975ea410b373e2987da160504f7618a8c498b5c Reviewed-by: Lars Knoll --- src/multimedia/camera/qcameraviewfindersettings.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multimedia/camera/qcameraviewfindersettings.cpp b/src/multimedia/camera/qcameraviewfindersettings.cpp index 059c93f6a..a92ee65ad 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.cpp +++ b/src/multimedia/camera/qcameraviewfindersettings.cpp @@ -149,8 +149,8 @@ bool operator==(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSet return (lhs.d == rhs.d) || (lhs.d->isNull == rhs.d->isNull && lhs.d->resolution == rhs.d->resolution && - qFuzzyCompare(lhs.d->minimumFrameRate, rhs.d->minimumFrameRate) && - qFuzzyCompare(lhs.d->maximumFrameRate, rhs.d->maximumFrameRate) && + lhs.d->minimumFrameRate == rhs.d->minimumFrameRate && + lhs.d->maximumFrameRate == rhs.d->maximumFrameRate && lhs.d->pixelFormat == rhs.d->pixelFormat && lhs.d->pixelAspectRatio == rhs.d->pixelAspectRatio); } -- cgit v1.2.3 From 3a18580e230e77e6e340a4a1f3eb2f69b320cda3 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 14:14:31 +0200 Subject: QAbstractVideoFilter: make ctor explicit Change-Id: If091d751c7e164c0480b48301358833705cd4870 Reviewed-by: Lars Knoll --- src/multimedia/video/qabstractvideofilter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multimedia/video/qabstractvideofilter.h b/src/multimedia/video/qabstractvideofilter.h index f0175be12..77f035e0a 100644 --- a/src/multimedia/video/qabstractvideofilter.h +++ b/src/multimedia/video/qabstractvideofilter.h @@ -62,7 +62,7 @@ class Q_MULTIMEDIA_EXPORT QAbstractVideoFilter : public QObject Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged) public: - QAbstractVideoFilter(QObject *parent = 0); + explicit QAbstractVideoFilter(QObject *parent = 0); ~QAbstractVideoFilter(); bool isActive() const; -- cgit v1.2.3 From 04e086e33667ca1a7aa8a7be7427bfba491a72b0 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Thu, 11 Jun 2015 14:08:07 +0200 Subject: QCameraViewFinderSettings: add missing include The header should not depend on indirect includes. It uses QSize in inline functions, so include the header. Change-Id: I3a5fca458ded47c98b7f71749ad75660c6e049e9 Reviewed-by: Lars Knoll --- src/multimedia/camera/qcameraviewfindersettings.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/multimedia/camera/qcameraviewfindersettings.h b/src/multimedia/camera/qcameraviewfindersettings.h index 31c7329c2..ce10b68a2 100644 --- a/src/multimedia/camera/qcameraviewfindersettings.h +++ b/src/multimedia/camera/qcameraviewfindersettings.h @@ -38,6 +38,7 @@ #include #include +#include QT_BEGIN_NAMESPACE -- cgit v1.2.3