summaryrefslogtreecommitdiffstats
path: root/examples/video/snippets
diff options
context:
space:
mode:
authorGareth Stockwell <gareth.stockwell@accenture.com>2011-12-15 13:14:24 +0000
committerQt by Nokia <qt-info@nokia.com>2011-12-22 02:29:16 +0100
commitfebe3984003dcd9313ae451ee2cc23ac15630977 (patch)
tree69cc574086538d5decaffa237f5c5beeb93107ef /examples/video/snippets
parentf33731fe5a265bad8cfbe6a0c83d3d3806d730f8 (diff)
Add qmlvideo and qmlvideofx examples
Based on code imported from master branch of QtMobility repo, ported to Qt Quick 2. Task-number: QTBUG-23118 Change-Id: Ifd297de0e595c675ff1a8e3218d91b03629295b9 Reviewed-by: Jonas Rabbe <jonas.rabbe@nokia.com> Reviewed-by: Michael Goddard <michael.goddard@nokia.com>
Diffstat (limited to 'examples/video/snippets')
-rw-r--r--examples/video/snippets/frequencymonitor/frequencymonitor.cpp250
-rw-r--r--examples/video/snippets/frequencymonitor/frequencymonitor.h102
-rw-r--r--examples/video/snippets/frequencymonitor/frequencymonitor.pri6
-rw-r--r--examples/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp48
-rw-r--r--examples/video/snippets/frequencymonitor/frequencymonitordeclarative.pri17
-rw-r--r--examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml103
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitor.cpp70
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitor.h65
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitor.pri7
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitordeclarative.cpp51
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitordeclarative.h51
-rw-r--r--examples/video/snippets/performancemonitor/performancemonitordeclarative.pri22
-rw-r--r--examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml110
13 files changed, 902 insertions, 0 deletions
diff --git a/examples/video/snippets/frequencymonitor/frequencymonitor.cpp b/examples/video/snippets/frequencymonitor/frequencymonitor.cpp
new file mode 100644
index 000000000..0166ea46c
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/frequencymonitor.cpp
@@ -0,0 +1,250 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "frequencymonitor.h"
+#include <QtCore/QDebug>
+#include <QtCore/QElapsedTimer>
+#include <QtCore/QString>
+#include <QtCore/QTime>
+#include <QtCore/QTimer>
+
+//#define VERBOSE_TRACE
+
+inline QDebug qtTrace() { return qDebug() << "[frequencymonitor]"; }
+#ifdef VERBOSE_TRACE
+inline QDebug qtVerboseTrace() { return qtTrace(); }
+#else
+inline QNoDebug qtVerboseTrace() { return QNoDebug(); }
+#endif
+
+static const int DefaultSamplingInterval = 100;
+static const int DefaultTraceInterval = 0;
+
+class FrequencyMonitorPrivate : public QObject
+{
+ Q_OBJECT
+public:
+ FrequencyMonitorPrivate(FrequencyMonitor *parent);
+ void calculateInstantaneousFrequency();
+
+private slots:
+ void calculateAverageFrequency();
+ void stalled();
+
+public:
+ FrequencyMonitor *const q_ptr;
+ QString m_label;
+ bool m_active;
+ qreal m_instantaneousFrequency;
+ QElapsedTimer m_instantaneousElapsed;
+ QTimer *m_averageTimer;
+ QElapsedTimer m_averageElapsed;
+ int m_count;
+ qreal m_averageFrequency;
+ QTimer *m_traceTimer;
+ QTimer *m_stalledTimer;
+};
+
+FrequencyMonitorPrivate::FrequencyMonitorPrivate(FrequencyMonitor *parent)
+: QObject(parent)
+, q_ptr(parent)
+, m_active(false)
+, m_instantaneousFrequency(0)
+, m_averageTimer(new QTimer(this))
+, m_count(0)
+, m_averageFrequency(0)
+, m_traceTimer(new QTimer(this))
+, m_stalledTimer(new QTimer(this))
+{
+ m_instantaneousElapsed.start();
+ connect(m_averageTimer, SIGNAL(timeout()),
+ this, SLOT(calculateAverageFrequency()));
+ if (DefaultSamplingInterval)
+ m_averageTimer->start(DefaultSamplingInterval);
+ m_averageElapsed.start();
+ connect(m_traceTimer, SIGNAL(timeout()),
+ q_ptr, SLOT(trace()));
+ if (DefaultTraceInterval)
+ m_traceTimer->start(DefaultTraceInterval);
+ m_stalledTimer->setSingleShot(true);
+ connect(m_stalledTimer, SIGNAL(timeout()),
+ this, SLOT(stalled()));
+}
+
+void FrequencyMonitorPrivate::calculateInstantaneousFrequency()
+{
+ const qint64 ms = m_instantaneousElapsed.restart();
+ m_instantaneousFrequency = ms ? qreal(1000) / ms : 0;
+ m_stalledTimer->start(3 * ms);
+ if (m_instantaneousFrequency)
+ q_ptr->setActive(true);
+ q_ptr->emit instantaneousFrequencyChanged(m_instantaneousFrequency);
+ q_ptr->emit frequencyChanged();
+}
+
+void FrequencyMonitorPrivate::calculateAverageFrequency()
+{
+ const qint64 ms = m_averageElapsed.restart();
+ m_averageFrequency = qreal(m_count * 1000) / ms;
+ q_ptr->emit averageFrequencyChanged(m_averageFrequency);
+ q_ptr->emit frequencyChanged();
+ m_count = 0;
+}
+
+void FrequencyMonitorPrivate::stalled()
+{
+ if (m_instantaneousFrequency) {
+ qtVerboseTrace() << "FrequencyMonitor::stalled";
+ m_instantaneousFrequency = 0;
+ q_ptr->emit instantaneousFrequencyChanged(m_instantaneousFrequency);
+ q_ptr->emit frequencyChanged();
+ }
+}
+
+FrequencyMonitor::FrequencyMonitor(QObject *parent)
+: QObject(parent)
+, d_ptr(0)
+{
+ d_ptr = new FrequencyMonitorPrivate(this);
+ qtTrace() << "FrequencyMonitor::FrequencyMonitor";
+}
+
+FrequencyMonitor::~FrequencyMonitor()
+{
+
+}
+
+const QString &FrequencyMonitor::label() const
+{
+ return d_func()->m_label;
+}
+
+bool FrequencyMonitor::active() const
+{
+ return d_func()->m_active;
+}
+
+int FrequencyMonitor::samplingInterval() const
+{
+ return d_ptr->m_averageTimer->isActive() ? d_ptr->m_averageTimer->interval() : 0;
+}
+
+int FrequencyMonitor::traceInterval() const
+{
+ return d_ptr->m_traceTimer->isActive() ? d_ptr->m_traceTimer->interval() : 0;
+}
+
+qreal FrequencyMonitor::instantaneousFrequency() const
+{
+ return d_func()->m_instantaneousFrequency;
+}
+
+qreal FrequencyMonitor::averageFrequency() const
+{
+ return d_func()->m_averageFrequency;
+}
+
+void FrequencyMonitor::notify()
+{
+ Q_D(FrequencyMonitor);
+ ++(d->m_count);
+ d->calculateInstantaneousFrequency();
+}
+
+void FrequencyMonitor::trace()
+{
+ Q_D(FrequencyMonitor);
+ const QString value = QString::fromAscii("instant %1 average %2")
+ .arg(d->m_instantaneousFrequency, 0, 'f', 2)
+ .arg(d->m_averageFrequency, 0, 'f', 2);
+ if (d->m_label.isEmpty())
+ qtTrace() << "FrequencyMonitor::trace" << value;
+ else
+ qtTrace() << "FrequencyMonitor::trace" << "label" << d->m_label << value;
+}
+
+void FrequencyMonitor::setLabel(const QString &value)
+{
+ Q_D(FrequencyMonitor);
+ if (d->m_label != value) {
+ d->m_label = value;
+ emit labelChanged(d->m_label);
+ }
+}
+
+void FrequencyMonitor::setActive(bool value)
+{
+ Q_D(FrequencyMonitor);
+ if (d->m_active != value) {
+ d->m_active = value;
+ emit activeChanged(d->m_active);
+ }
+}
+
+void FrequencyMonitor::setSamplingInterval(int value)
+{
+ Q_D(FrequencyMonitor);
+ if (samplingInterval() != value) {
+ if (value) {
+ d->m_averageTimer->setInterval(value);
+ d->m_averageTimer->start();
+ } else {
+ d->m_averageTimer->stop();
+ }
+ emit samplingIntervalChanged(value);
+ }
+}
+
+void FrequencyMonitor::setTraceInterval(int value)
+{
+ Q_D(FrequencyMonitor);
+ if (traceInterval() != value) {
+ if (value) {
+ d->m_traceTimer->setInterval(value);
+ d->m_traceTimer->start();
+ } else {
+ d->m_traceTimer->stop();
+ }
+ emit traceIntervalChanged(value);
+ }
+}
+
+#include "frequencymonitor.moc"
diff --git a/examples/video/snippets/frequencymonitor/frequencymonitor.h b/examples/video/snippets/frequencymonitor/frequencymonitor.h
new file mode 100644
index 000000000..a949e55d4
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/frequencymonitor.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef FREQUENCYMONITOR_H
+#define FREQUENCYMONITOR_H
+
+#include <QtCore/QObject>
+
+class QTimer;
+
+class FrequencyMonitorPrivate;
+
+/**
+ * Class for measuring frequency of events
+ *
+ * Occurrence of the event is notified by the client via the notify() slot.
+ * On a regular interval, both an instantaneous and a rolling average
+ * event frequency are calculated.
+ */
+class FrequencyMonitor : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(FrequencyMonitor)
+ Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged)
+ Q_PROPERTY(bool active READ active WRITE setActive NOTIFY activeChanged)
+ Q_PROPERTY(int samplingInterval READ samplingInterval WRITE setSamplingInterval NOTIFY samplingIntervalChanged)
+ Q_PROPERTY(int traceInterval READ traceInterval WRITE setTraceInterval NOTIFY traceIntervalChanged)
+ Q_PROPERTY(qreal instantaneousFrequency READ instantaneousFrequency NOTIFY instantaneousFrequencyChanged)
+ Q_PROPERTY(qreal averageFrequency READ averageFrequency NOTIFY averageFrequencyChanged)
+public:
+ FrequencyMonitor(QObject *parent = 0);
+ ~FrequencyMonitor();
+
+ static void qmlRegisterType();
+
+ const QString &label() const;
+ bool active() const;
+ int samplingInterval() const;
+ int traceInterval() const;
+ qreal instantaneousFrequency() const;
+ qreal averageFrequency() const;
+
+signals:
+ void labelChanged(const QString &value);
+ void activeChanged(bool);
+ void samplingIntervalChanged(int value);
+ void traceIntervalChanged(int value);
+ void frequencyChanged();
+ void instantaneousFrequencyChanged(qreal value);
+ void averageFrequencyChanged(qreal value);
+
+public slots:
+ Q_INVOKABLE void notify();
+ Q_INVOKABLE void trace();
+ void setActive(bool value);
+ void setLabel(const QString &value);
+ void setSamplingInterval(int value);
+ void setTraceInterval(int value);
+
+private:
+ FrequencyMonitorPrivate *d_ptr;
+};
+
+#endif // FREQUENCYMONITOR_H
diff --git a/examples/video/snippets/frequencymonitor/frequencymonitor.pri b/examples/video/snippets/frequencymonitor/frequencymonitor.pri
new file mode 100644
index 000000000..f9dcb3414
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/frequencymonitor.pri
@@ -0,0 +1,6 @@
+HEADERS += $$PWD/frequencymonitor.h
+SOURCES += $$PWD/frequencymonitor.cpp
+INCLUDEPATH += $$PWD
+DEFINES += FREQUENCYMONITOR_SUPPORT
+message("frequencymonitor.pri loaded")
+
diff --git a/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp b/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp
new file mode 100644
index 000000000..595dd0837
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp
@@ -0,0 +1,48 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "frequencymonitor.h"
+#include <QtDeclarative/qdeclarative.h>
+
+void FrequencyMonitor::qmlRegisterType()
+{
+ ::qmlRegisterType<FrequencyMonitor>("FrequencyMonitor", 1, 0, "FrequencyMonitor");
+}
diff --git a/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.pri b/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.pri
new file mode 100644
index 000000000..a6868385f
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/frequencymonitordeclarative.pri
@@ -0,0 +1,17 @@
+include($$PWD/frequencymonitor.pri)
+QT += declarative
+SOURCES += $$PWD/frequencymonitordeclarative.cpp
+
+defineTest(frequencyItemAddDeployment) {
+ symbian: frequencyitem_folder.source = $$PWD/$$SNIPPETS_PATH/frequencymonitor/qml/frequencymonitor
+ else: frequencyitem_folder.source = $$SNIPPETS_PATH/frequencymonitor/qml/frequencymonitor
+ frequencyitem_folder.target = qml
+ DEPLOYMENTFOLDERS += frequencyitem_folder
+
+ export(frequencyitem_folder.source)
+ export(frequencyitem_folder.target)
+ export(DEPLOYMENTFOLDERS)
+}
+
+message("frequencymonitordeclarative.pri loaded")
+
diff --git a/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml b/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml
new file mode 100644
index 000000000..5108113c0
--- /dev/null
+++ b/examples/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml
@@ -0,0 +1,103 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import FrequencyMonitor 1.0
+
+Rectangle {
+ id: root
+ property bool logging: true
+ property bool displayed: true
+ property bool enabled: logging || displayed
+ property alias active: monitor.active
+ property int samplingInterval: 500
+ property color textColor: "yellow"
+ property int textSize: 20
+ property alias label: monitor.label
+
+ border.width: 1
+ border.color: "yellow"
+ width: 3.5 * root.textSize
+ height: 3.0 * root.textSize
+ color: "black"
+ opacity: 0.5
+ radius: 10
+ visible: displayed && active
+
+ // This should ensure that the monitor is on top of all other content
+ z: 999
+
+ function notify() {
+ monitor.notify()
+ }
+
+ FrequencyMonitor {
+ id: monitor
+ samplingInterval: root.enabled ? root.samplingInterval : 0
+ onAverageFrequencyChanged: {
+ if (root.logging) trace()
+ instantaneousFrequencyText.text = monitor.instantaneousFrequency.toFixed(2)
+ averageFrequencyText.text = monitor.averageFrequency.toFixed(2)
+ }
+ }
+
+ Text {
+ id: instantaneousFrequencyText
+ anchors {
+ right: parent.right
+ top: parent.top
+ margins: 10
+ }
+ color: root.textColor
+ font.pixelSize: root.textSize
+ }
+
+ Text {
+ id: averageFrequencyText
+ anchors {
+ right: parent.right
+ bottom: parent.bottom
+ margins: 10
+ }
+ color: root.textColor
+ font.pixelSize: root.textSize
+ }
+}
diff --git a/examples/video/snippets/performancemonitor/performancemonitor.cpp b/examples/video/snippets/performancemonitor/performancemonitor.cpp
new file mode 100644
index 000000000..73ebe291f
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitor.cpp
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "performancemonitor.h"
+#include <QtCore/QString>
+
+namespace PerformanceMonitor {
+
+ bool parseArgument(const QString &arg, State &state)
+ {
+ bool result = false;
+ if ("-log-perf" == arg) {
+ state.logging = true;
+ state.valid = true;
+ result = true;
+ } else if ("-no-log-perf" == arg) {
+ state.logging = false;
+ state.valid = true;
+ result = true;
+ } else if ("-show-perf" == arg) {
+ state.visible = true;
+ state.valid = true;
+ result = true;
+ } else if ("-hide-perf" == arg) {
+ state.visible = false;
+ state.valid = true;
+ result = true;
+ }
+ return result;
+ }
+
+}
diff --git a/examples/video/snippets/performancemonitor/performancemonitor.h b/examples/video/snippets/performancemonitor/performancemonitor.h
new file mode 100644
index 000000000..59e90550f
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitor.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PERFORMANCEMONITOR_H
+#define PERFORMANCEMONITOR_H
+
+class QString;
+
+namespace PerformanceMonitor {
+ struct State {
+ bool valid;
+ bool logging;
+ bool visible;
+
+ State() : valid(true), logging(false), visible(true) { }
+ State(bool l, bool v) : valid(true), logging(l), visible(v) { }
+ bool operator==(const State &other) const
+ { return logging == other.logging && visible == other.visible; }
+ bool operator!=(const State &other) const
+ { return logging != other.logging || visible != other.visible; }
+ };
+
+ bool parseArgument(const QString &arg, State &state);
+}
+
+#endif // PERFORMANCEMONITOR_H
+
diff --git a/examples/video/snippets/performancemonitor/performancemonitor.pri b/examples/video/snippets/performancemonitor/performancemonitor.pri
new file mode 100644
index 000000000..6622488b5
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitor.pri
@@ -0,0 +1,7 @@
+INCLUDEPATH += $$PWD
+HEADERS += $$PWD/performancemonitor.h
+SOURCES += $$PWD/performancemonitor.cpp
+DEFINES += PERFORMANCEMONITOR_SUPPORT
+
+message("performancemonitor.pri loaded")
+
diff --git a/examples/video/snippets/performancemonitor/performancemonitordeclarative.cpp b/examples/video/snippets/performancemonitor/performancemonitordeclarative.cpp
new file mode 100644
index 000000000..85996f3ab
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitordeclarative.cpp
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "frequencymonitor.h"
+#include "performancemonitor.h"
+
+namespace PerformanceMonitor {
+
+ void qmlRegisterTypes()
+ {
+ FrequencyMonitor::qmlRegisterType();
+ }
+}
diff --git a/examples/video/snippets/performancemonitor/performancemonitordeclarative.h b/examples/video/snippets/performancemonitor/performancemonitordeclarative.h
new file mode 100644
index 000000000..dccdd5ebb
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitordeclarative.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef PERFORMANCEMONITORDECLARATIVE_H
+#define PERFORMANCEMONITORDECLARATIVE_H
+
+#include "performancemonitor.h"
+
+namespace PerformanceMonitor {
+ void qmlRegisterTypes();
+}
+
+#endif // PERFORMANCEMONITORDECLARATIVE_H
diff --git a/examples/video/snippets/performancemonitor/performancemonitordeclarative.pri b/examples/video/snippets/performancemonitor/performancemonitordeclarative.pri
new file mode 100644
index 000000000..d8f2f8f3f
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/performancemonitordeclarative.pri
@@ -0,0 +1,22 @@
+include($$PWD/../frequencymonitor/frequencymonitordeclarative.pri)
+include($$PWD/performancemonitor.pri)
+
+HEADERS += $$PWD/performancemonitordeclarative.h
+SOURCES += $$PWD/performancemonitordeclarative.cpp
+
+PERFORMANCE_ROOT = $$PWD
+
+defineTest(performanceItemAddDeployment) {
+ frequencyItemAddDeployment()
+
+ symbian: performanceitem_folder.source = $$PWD/$$SNIPPETS_PATH/performancemonitor/qml/performancemonitor
+ else: performanceitem_folder.source = $$SNIPPETS_PATH/performancemonitor/qml/performancemonitor
+ performanceitem_folder.target = qml
+ DEPLOYMENTFOLDERS += performanceitem_folder
+
+ export(performanceitem_folder.source)
+ export(performanceitem_folder.target)
+ export(DEPLOYMENTFOLDERS)
+}
+
+message("performancemonitordeclarative.pri loaded")
diff --git a/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml b/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml
new file mode 100644
index 000000000..acc92ceee
--- /dev/null
+++ b/examples/video/snippets/performancemonitor/qml/performancemonitor/PerformanceItem.qml
@@ -0,0 +1,110 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Mobility Components.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Rectangle {
+ id: root
+ property bool logging: true
+ property bool displayed: true
+ property bool videoActive
+ property int samplingInterval: 500
+ property color textColor: "yellow"
+ property int textSize: 28
+ property int margins: 5
+
+ color: "transparent"
+
+ // This should ensure that the monitor is on top of all other content
+ z: 999
+
+ Loader {
+ id: videoFrameRateItemLoader
+ function init() {
+ source = "../frequencymonitor/FrequencyItem.qml"
+ item.label = "videoFrameRate"
+ item.parent = root
+ item.anchors.left = root.left
+ item.anchors.top = root.top
+ item.anchors.margins = root.margins
+ item.logging = root.logging
+ item.displayed = root.displayed
+ videoFrameRateActiveConnections.target = item
+ }
+
+ Connections {
+ id: videoFrameRateActiveConnections
+ ignoreUnknownSignals: true
+ onActiveChanged: root.videoActive = videoFrameRateActiveConnections.target.active
+ }
+ }
+
+ Loader {
+ id: qmlFrameRateItemLoader
+ function init() {
+ source = "../frequencymonitor/FrequencyItem.qml"
+ item.label = "qmlFrameRate"
+ item.parent = root
+ item.anchors.left = root.left
+ item.anchors.bottom = root.bottom
+ item.anchors.margins = root.margins
+ item.logging = root.logging
+ item.displayed = root.displayed
+ }
+ }
+
+ function init() {
+ videoFrameRateItemLoader.init()
+ qmlFrameRateItemLoader.init()
+ }
+
+ function videoFramePainted() {
+ videoFrameRateItemLoader.item.notify()
+ }
+
+ function qmlFramePainted() {
+ qmlFrameRateItemLoader.item.notify()
+ }
+
+ onVideoActiveChanged: {
+ videoFrameRateItemLoader.item.active = root.videoActive
+ }
+}