Merge remote-tracking branch 'origin/5.5.0' into 5.5

Change-Id: I5a5b387b93a4b9dbaa9710e78fd7bf1ca09aa3b3
This commit is contained in:
Liang Qi
2015-06-26 14:04:32 +02:00
22 changed files with 240 additions and 44 deletions

View File

@@ -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);
}

View File

@@ -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
This is a typedef for QPair<qreal, qreal>.
\brief A FrameRateRange represents a range of frame rates as minimum and maximum rate.
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.
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

View File

@@ -77,7 +77,21 @@ class Q_MULTIMEDIA_EXPORT QCamera : public QMediaObject
Q_ENUMS(LockType)
Q_ENUMS(Position)
public:
typedef QPair<qreal, qreal> 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)

View File

@@ -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 &&
lhs.d->minimumFrameRate == rhs.d->minimumFrameRate &&
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.

View File

@@ -34,10 +34,12 @@
#ifndef QCAMERAVIEWFINDERSETTINGS_H
#define QCAMERAVIEWFINDERSETTINGS_H
#include <QtCore/qsharedpointer.h>
#include <QtMultimedia/qtmultimediadefs.h>
#include <QtMultimedia/qvideoframe.h>
#include <QtCore/qshareddata.h>
#include <QtCore/qsize.h>
QT_BEGIN_NAMESPACE
class QCameraViewfinderSettingsPrivate;
@@ -51,9 +53,14 @@ public:
~QCameraViewfinderSettings();
QCameraViewfinderSettings& operator=(const QCameraViewfinderSettings &other);
bool operator==(const QCameraViewfinderSettings &other) const;
bool operator!=(const QCameraViewfinderSettings &other) const;
#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;
QSize resolution() const;
@@ -78,6 +85,11 @@ public:
private:
QSharedDataPointer<QCameraViewfinderSettingsPrivate> d;
};
Q_DECLARE_SHARED(QCameraViewfinderSettings)
inline bool operator!=(const QCameraViewfinderSettings &lhs, const QCameraViewfinderSettings &rhs) Q_DECL_NOTHROW
{ return !operator==(lhs, rhs); }
QT_END_NAMESPACE

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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);

View File

@@ -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

View File

@@ -68,7 +68,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)) { \
@@ -134,6 +134,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
}
@@ -852,3 +853,5 @@ HRESULT QWinRTCameraControl::onRecordLimitationExceeded(IMediaCapture *)
setState(QCamera::LoadedState);
return S_OK;
}
QT_END_NAMESPACE

View File

@@ -65,7 +65,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<const wchar_t *>(str.utf16())
@@ -299,3 +299,5 @@ HRESULT QWinRTCameraImageCaptureControl::onCaptureCompleted(IAsyncAction *asyncI
return S_OK;
}
QT_END_NAMESPACE

View File

@@ -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

View File

@@ -46,7 +46,7 @@
#include <QtMultimedia/QVideoDeviceSelectorControl>
#include <QtMultimedia/QImageEncoderControl>
QT_USE_NAMESPACE
QT_BEGIN_NAMESPACE
class QWinRTCameraServicePrivate
{
@@ -103,3 +103,5 @@ void QWinRTCameraService::releaseControl(QMediaControl *control)
{
Q_UNUSED(control);
}
QT_END_NAMESPACE

View File

@@ -45,7 +45,7 @@
#include <wrl.h>
using namespace Microsoft::WRL;
QT_USE_NAMESPACE
QT_BEGIN_NAMESPACE
class D3DVideoBlitter
{
@@ -210,3 +210,5 @@ void QWinRTCameraVideoRendererControl::discardBuffers()
for (ComPtr<IMF2DBuffer> &buffer : d->buffers)
buffer.Reset();
}
QT_END_NAMESPACE

View File

@@ -55,7 +55,7 @@
#include <wrl.h>
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

View File

@@ -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

View File

@@ -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

View File

@@ -54,7 +54,7 @@
#include <wrl.h>
using namespace Microsoft::WRL;
QT_USE_NAMESPACE
QT_BEGIN_NAMESPACE
template <typename T>
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

View File

@@ -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

View File

@@ -39,7 +39,7 @@
#include <QtMultimedia/QMediaServiceProviderPlugin>
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

View File

@@ -55,7 +55,7 @@ typedef ITypedEventHandler<DeviceWatcher *, DeviceInformation *> DeviceInformati
typedef ITypedEventHandler<DeviceWatcher *, DeviceInformationUpdate *> DeviceInformationUpdateHandler;
typedef ITypedEventHandler<DeviceWatcher *, IInspectable *> 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