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
@@ -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);
}
+20 -6
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
+23 -1
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)
@@ -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.
@@ -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
+1 -1
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;
@@ -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) {
@@ -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);
@@ -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
+4 -1
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
@@ -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
@@ -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
+3 -1
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
@@ -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
@@ -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
+3 -1
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
@@ -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
@@ -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
+3 -1
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
+3 -1
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
@@ -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