From 3196d3869eb564565e875929af6a913de5c30c53 Mon Sep 17 00:00:00 2001 From: Eskil Abrahamsen Blomfeldt Date: Tue, 28 May 2013 09:57:08 +0200 Subject: [PATCH 1/7] Android: Fix compilation on Windows The qtCompileTest function in configure.prf does not work when cross-compiling on Windows because it detects the wrong make executable. And it's anyway not the best way to do this, since what we really want to check for is the existence of the SDK version, whereas the compile test could potentially hide a lot of other problems under the same error message. Task-number: QTBUG-31405 Change-Id: I2c16b214e40bac5751d4e7098edcc30318756621 Reviewed-by: Oswald Buddenhagen Reviewed-by: Paul Olav Tvete Reviewed-by: Christian Stromme --- config.tests/android/android.pro | 4 ---- config.tests/android/main.java | 6 ------ qtmultimedia.pro | 4 +++- 3 files changed, 3 insertions(+), 11 deletions(-) delete mode 100644 config.tests/android/android.pro delete mode 100644 config.tests/android/main.java diff --git a/config.tests/android/android.pro b/config.tests/android/android.pro deleted file mode 100644 index dcf5df18..00000000 --- a/config.tests/android/android.pro +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG += java -API_VERSION = android-11 -JAVASOURCES += main.java - diff --git a/config.tests/android/main.java b/config.tests/android/main.java deleted file mode 100644 index 1ab87259..00000000 --- a/config.tests/android/main.java +++ /dev/null @@ -1,6 +0,0 @@ -import android.graphics.SurfaceTexture; - -class BuildTest -{ - public static void main(String [] args) { } -} diff --git a/qtmultimedia.pro b/qtmultimedia.pro index 53f6b988..672cbc94 100644 --- a/qtmultimedia.pro +++ b/qtmultimedia.pro @@ -9,7 +9,9 @@ win32 { } else:mac { qtCompileTest(avfoundation) } else:android { - !qtCompileTest(android):error("QtMultimedia for Android requires API level 11") + SDK_ROOT = $$(ANDROID_SDK_ROOT) + isEmpty(SDK_ROOT): SDK_ROOT = $$DEFAULT_ANDROID_SDK_ROOT + !exists($$SDK_ROOT/platforms/android-11/android.jar): error("QtMultimedia for Android requires API level 11") } else { qtCompileTest(alsa) qtCompileTest(pulseaudio) From 9d5a639ee8c726e04f0a0c4f3cc5cd7ac36476be Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Fri, 31 May 2013 10:32:39 +0200 Subject: [PATCH 2/7] Fix typo in QMediaPlayer docs. Change-Id: I0b9110488a2d116cea73abe30f80fc1f487029aa Reviewed-by: Jerome Pasion --- src/multimedia/playback/qmediaplayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index c3eb09eb..eaac8282 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -1220,7 +1220,7 @@ QMultimedia::AvailabilityStatus QMediaPlayer::availability() const \property QMediaPlayer::volume \brief the current playback volume. - The playback volume is a linear in effect and the value can range from 0 - + The playback volume is linear in effect and the value can range from 0 - 100, values outside this range will be clamped. */ From 2998a24d35a38e0b651b6e8efe07a1890ff2b6aa Mon Sep 17 00:00:00 2001 From: Jerome Pasion Date: Thu, 30 May 2013 15:43:19 +0200 Subject: [PATCH 3/7] Doc: Adding import statement for in Qt Multimedia QML Types Change-Id: I17e108c5d8524fe428ab8f0ca14130cd4bb78d2d Reviewed-by: Liang Qi Reviewed-by: Venugopal Shivashankar Reviewed-by: Martin Smith --- src/multimedia/doc/src/qtmultimedia5.qdoc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/multimedia/doc/src/qtmultimedia5.qdoc b/src/multimedia/doc/src/qtmultimedia5.qdoc index bbf9907f..c1267f09 100644 --- a/src/multimedia/doc/src/qtmultimedia5.qdoc +++ b/src/multimedia/doc/src/qtmultimedia5.qdoc @@ -31,9 +31,7 @@ \ingroup qmlmodules \brief Provides QML types for multimedia support. -\section1 Overview - -The QML types for Qt Multimedia support the basic use cases such as: +The QML types for \l{Qt Multimedia} support the basic use cases such as: \list \li audio and video playback, \li access camera and radio functionality, @@ -41,6 +39,11 @@ The QML types for Qt Multimedia support the basic use cases such as: \li and access camera settings. \endlist +The QML types can be imported into your application using the following import +statement in your .qml file: +\code +import QtMultimedia 5.0 +\endcode + \section1 QML types */ - From fca12620b1e14a5d2daf467f2f8c6eb96714e80a Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Fri, 31 May 2013 16:02:06 +0200 Subject: [PATCH 4/7] Doc: Add Qt Multimedia platform notes for Windows Add a page with details about Qt Multimedia backends on Windows, and link to it from the module index page. Initially, cover the status of camera backend in WMF and DirectShow plugins. Task-number: QTBUG-29552 Change-Id: I53e5901e2d621c4bbc96a61d5dbb249b4debb8d4 Reviewed-by: Yoann Lopes Reviewed-by: Friedemann Kleint --- .../doc/src/platform-notes-windows.qdoc | 57 +++++++++++++++++++ .../doc/src/qtmultimedia-index.qdoc | 1 + 2 files changed, 58 insertions(+) create mode 100644 src/multimedia/doc/src/platform-notes-windows.qdoc diff --git a/src/multimedia/doc/src/platform-notes-windows.qdoc b/src/multimedia/doc/src/platform-notes-windows.qdoc new file mode 100644 index 00000000..2f72ea1e --- /dev/null +++ b/src/multimedia/doc/src/platform-notes-windows.qdoc @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: http://www.gnu.org/copyleft/fdl.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! +\page platform-notes-windows.html +\title Qt Multimedia on Windows +\brief Platform notes for Windows + +This page covers the availability of Qt Multimedia features on Windows. + +\section1 Implementation + +Qt Multimedia features for Windows are implemented in two plugins; one +using the Microsoft DirectShow API, and another using WMF (Windows Media +Foundation) framework. DirectShow API was introduced in Windows 98, and +gradually deprecated from Windows XP onwards. Media Foundation framework +was introduced in Windows Vista as a replacement for DirectShow and other +multimedia APIs. Consequently, WMF plugin in Qt is supported only for +Windows Vista and later versions of the operating system. + +\section1 Limitations + +The WMF plugin in Qt does not currently provide a camera backend. Instead, +limited support for camera features is provided by the DirectShow +plugin. Basic features such as displaying a viewfinder and capturing a +still image are supported, however, majority of camera controls are not +implemented. + +Video recording is currently not supported. Additionally, the DirectShow +plugin does not support any low-level video functionality such as +monitoring video frames being played or recorded using \l QVideoProbe or +related classes. +*/ diff --git a/src/multimedia/doc/src/qtmultimedia-index.qdoc b/src/multimedia/doc/src/qtmultimedia-index.qdoc index 417c0c49..4cd59fd5 100644 --- a/src/multimedia/doc/src/qtmultimedia-index.qdoc +++ b/src/multimedia/doc/src/qtmultimedia-index.qdoc @@ -131,6 +131,7 @@ \section2 Platform Notes \list \li \l{BlackBerry} + \li \l{Qt Multimedia on Windows}{Windows} \endlist \section2 Reference From 056fe7e11e36f88e4e9fbe5838742d50aed3eda3 Mon Sep 17 00:00:00 2001 From: Tobias Koenig Date: Tue, 4 Jun 2013 16:09:32 +0200 Subject: [PATCH 5/7] BlackBerry: Fix frame size of video playback Adapt the frame size dynamically, since mmrenderer resizes the source viewport of the native video window at runtime on some hardware platforms. Task-number: QTBUG-31534 Change-Id: Ie637d7a80697175dacb454535fbe251b2c7a6809 Reviewed-by: Thomas McGuire --- .../blackberry/common/windowgrabber.cpp | 48 ++++++++++++++++--- src/plugins/blackberry/common/windowgrabber.h | 1 + .../bbplayervideorenderercontrol.cpp | 8 +++- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/src/plugins/blackberry/common/windowgrabber.cpp b/src/plugins/blackberry/common/windowgrabber.cpp index db070d8e..144b5a69 100644 --- a/src/plugins/blackberry/common/windowgrabber.cpp +++ b/src/plugins/blackberry/common/windowgrabber.cpp @@ -55,6 +55,8 @@ QT_BEGIN_NAMESPACE WindowGrabber::WindowGrabber(QObject *parent) : QObject(parent), m_screenBuffer(0), + m_screenBufferWidth(-1), + m_screenBufferHeight(-1), m_active(false), m_screenContextInitialized(false), m_screenPixmapInitialized(false), @@ -145,7 +147,8 @@ void WindowGrabber::start() } int size[2] = { 0, 0 }; - result = screen_get_window_property_iv(m_window, SCREEN_PROPERTY_SIZE, size); + + result = screen_get_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_SIZE, size); if (result != 0) { cleanup(); qWarning() << "WindowGrabber: cannot get window size:" << strerror(errno); @@ -155,7 +158,18 @@ void WindowGrabber::start() m_screenBufferWidth = size[0]; m_screenBufferHeight = size[1]; - result = screen_set_pixmap_property_iv(m_screenPixmap, SCREEN_PROPERTY_BUFFER_SIZE, size); + updateFrameSize(); + + m_timer.start(); + + m_active = true; +} + +void WindowGrabber::updateFrameSize() +{ + int size[2] = { m_screenBufferWidth, m_screenBufferHeight }; + + int result = screen_set_pixmap_property_iv(m_screenPixmap, SCREEN_PROPERTY_BUFFER_SIZE, size); if (result != 0) { cleanup(); qWarning() << "WindowGrabber: cannot set pixmap size:" << strerror(errno); @@ -191,10 +205,6 @@ void WindowGrabber::start() qWarning() << "WindowGrabber: cannot get pixmap buffer stride:" << strerror(errno); return; } - - m_timer.start(); - - m_active = true; } void WindowGrabber::stop() @@ -284,7 +294,31 @@ QByteArray WindowGrabber::windowGroupId() const void WindowGrabber::grab() { - const int result = screen_read_window(m_window, m_screenPixmapBuffer, 0, 0, 0); + int size[2] = { 0, 0 }; + + int result = screen_get_window_property_iv(m_window, SCREEN_PROPERTY_SOURCE_SIZE, size); + if (result != 0) { + cleanup(); + qWarning() << "WindowGrabber: cannot get window size:" << strerror(errno); + return; + } + + if (m_screenBufferWidth != size[0] || m_screenBufferHeight != size[1]) { + // The source viewport size changed, so we have to adapt our buffers + + if (m_screenPixmapBufferInitialized) { + screen_destroy_pixmap_buffer(m_screenPixmap); + m_screenPixmapBufferInitialized = false; + } + + m_screenBufferWidth = size[0]; + m_screenBufferHeight = size[1]; + + updateFrameSize(); + } + + const int rect[] = { 0, 0, m_screenBufferWidth, m_screenBufferHeight }; + result = screen_read_window(m_window, m_screenPixmapBuffer, 1, rect, 0); if (result != 0) return; diff --git a/src/plugins/blackberry/common/windowgrabber.h b/src/plugins/blackberry/common/windowgrabber.h index 547742da..f8e3686a 100644 --- a/src/plugins/blackberry/common/windowgrabber.h +++ b/src/plugins/blackberry/common/windowgrabber.h @@ -79,6 +79,7 @@ private slots: private: void cleanup(); + void updateFrameSize(); QTimer m_timer; diff --git a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp b/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp index 096ae55e..d9226d91 100644 --- a/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp +++ b/src/plugins/blackberry/mediaplayer/bbplayervideorenderercontrol.cpp @@ -142,8 +142,14 @@ void BbPlayerVideoRendererControl::resume() void BbPlayerVideoRendererControl::frameGrabbed(const QImage &frame) { if (m_surface) { - if (!m_surface->isActive()) + if (!m_surface->isActive()) { m_surface->start(QVideoSurfaceFormat(frame.size(), QVideoFrame::Format_ARGB32)); + } else { + if (m_surface->surfaceFormat().frameSize() != frame.size()) { + m_surface->stop(); + m_surface->start(QVideoSurfaceFormat(frame.size(), QVideoFrame::Format_ARGB32)); + } + } m_surface->present(frame.copy()); } From 593e1b99f10e261de854766d59c3d433cbe3d088 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Tue, 8 Jan 2013 22:16:24 +0900 Subject: [PATCH 6/7] disable module when gui is not available Change-Id: I414b67d8c4fe34a41e1d96d51879138c01c6e3a5 Reviewed-by: Oswald Buddenhagen --- qtmultimedia.pro | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qtmultimedia.pro b/qtmultimedia.pro index 53f6b988..f4aab579 100644 --- a/qtmultimedia.pro +++ b/qtmultimedia.pro @@ -1,3 +1,5 @@ +requires(qtHaveModule(gui)) + load(configure) qtCompileTest(openal) win32 { From 09fea23419b86fc6e2d2fce9ec2b26e7f346657a Mon Sep 17 00:00:00 2001 From: Sze Howe Koh Date: Mon, 27 May 2013 06:38:02 +0800 Subject: [PATCH 7/7] Doc: Fix some broken links and quote paths The correct paths are relative to: - /examples/, or - /src/ Removing the module specifier fixes these links/quotes. Change-Id: I6be4f28c44bd26361b60a394158b0e6cc46b1ec0 Reviewed-by: Laszlo Papp Reviewed-by: Yoann Lopes Reviewed-by: Jerome Pasion --- .../multimedia/video/doc/src/qmlvideo.qdoc | 42 +++++++++---------- .../multimedia/video/doc/src/qmlvideofx.qdoc | 22 +++++----- .../src/examples/video-qml-paint-rate.qdocinc | 6 +-- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/examples/multimedia/video/doc/src/qmlvideo.qdoc b/examples/multimedia/video/doc/src/qmlvideo.qdoc index 1efed800..6d683349 100644 --- a/examples/multimedia/video/doc/src/qmlvideo.qdoc +++ b/examples/multimedia/video/doc/src/qmlvideo.qdoc @@ -52,15 +52,15 @@ which moves across the \l{VideoOutput} item. \section1 Application structure -The \l{multimedia/video/qmlvideo/qml/qmlvideo/main.qml} file creates a UI which includes +The \l{video/qmlvideo/qml/qmlvideo/main.qml} file creates a UI which includes the following items: \list - \li Two \l{multimedia/video/qmlvideo/qml/qmlvideo/Button.qml}{Button} instances, each + \li Two \l{video/qmlvideo/qml/qmlvideo/Button.qml}{Button} instances, each of which displays a filename, and can be used to launch a - \l{multimedia/video/qmlvideo/qml/qmlvideo/FileBrowser.qml}{FileBrowser} - \li An exit \l{multimedia/video/qmlvideo/qml/qmlvideo/Button.qml}{Button} - \li A \l{multimedia/video/qmlvideo/qml/qmlvideo/SceneSelectionPanel.qml}{SceneSelectionPanel}, + \l{video/qmlvideo/qml/qmlvideo/FileBrowser.qml}{FileBrowser} + \li An exit \l{video/qmlvideo/qml/qmlvideo/Button.qml}{Button} + \li A \l{video/qmlvideo/qml/qmlvideo/SceneSelectionPanel.qml}{SceneSelectionPanel}, which is a flickable list displaying the available scenes \li At the lower left, an item which displays the QML repainting rate - the upper number is the instantaneous frame rate and the lower number is the @@ -72,18 +72,18 @@ the following items: Each scene in the flickable list is implemented in its own QML file - for example the video-basic scene (which just displays a static \l{VideoOutput} in the center of the screen) is implemented in the -\l{multimedia/video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic.qml} file. As you +\l{video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic.qml} file. As you can see from the code, this makes use of a type of inheritance: a -\l{multimedia/video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic} item ... +\l{video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic} item ... -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/VideoBasic.qml +\quotefromfile video/qmlvideo/qml/qmlvideo/VideoBasic.qml \skipto import \printuntil /^\}/ ... is-a -\l{multimedia/video/qmlvideo/qml/qmlvideo/SceneBasic.qml}{SceneBasic} ... +\l{video/qmlvideo/qml/qmlvideo/SceneBasic.qml}{SceneBasic} ... -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/SceneBasic.qml +\quotefromfile video/qmlvideo/qml/qmlvideo/SceneBasic.qml \skipto import \printuntil contentType \dots @@ -94,9 +94,9 @@ can see from the code, this makes use of a type of inheritance: a \printuntil /^\}/ ... which is-a -\l{multimedia/video/qmlvideo/qml/qmlvideo/Scene.qml}{Scene}: +\l{video/qmlvideo/qml/qmlvideo/Scene.qml}{Scene}: -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/Scene.qml +\quotefromfile video/qmlvideo/qml/qmlvideo/Scene.qml \skipto import \printuntil root \dots @@ -106,25 +106,25 @@ can see from the code, this makes use of a type of inheritance: a \skipto Button \printuntil /^\}/ -\l{multimedia/video/qmlvideo/qml/qmlvideo/SceneBasic.qml}{SceneBasic} describes the +\l{video/qmlvideo/qml/qmlvideo/SceneBasic.qml}{SceneBasic} describes the structure and behaviour of the scene, but is agnostic of the type of content which will be displayed - this is abstracted by -\l{multimedia/video/qmlvideo/qml/qmlvideo/Content.qml}{Content}. +\l{video/qmlvideo/qml/qmlvideo/Content.qml}{Content}. This pattern allows us to define a particular use case (in this case, simply display a static piece of content), and then instantiate that use case for both video content -(\l{multimedia/video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic}) and cameracontent -(\l{multimedia/video/qmlvideo/qml/qmlvideo/CameraBasic.qml}{CameraBasic}). This approach +(\l{video/qmlvideo/qml/qmlvideo/VideoBasic.qml}{VideoBasic}) and camera content +(\l{video/qmlvideo/qml/qmlvideo/CameraBasic.qml}{CameraBasic}). This approach is used to implement many of the other scenes - for example, "repeatedly slide the content from left to right and back again" is implemented by -\l{multimedia/video/qmlvideo/qml/qmlvideo/SceneMove.qml}{SceneMove}, on which -\l{multimedia/video/qmlvideo/qml/qmlvideo/VideoMove.qml}{VideoMove} and -\l{multimedia/video/qmlvideo/qml/qmlvideo/CameraMove.qml}{CameraMove} are based. +\l{video/qmlvideo/qml/qmlvideo/SceneMove.qml}{SceneMove}, on which +\l{video/qmlvideo/qml/qmlvideo/VideoMove.qml}{VideoMove} and +\l{video/qmlvideo/qml/qmlvideo/CameraMove.qml}{CameraMove} are based. Depending on the value of the contentType property in the top-level scene instance, the embedded -\l{multimedia/video/qmlvideo/qml/qmlvideo/Content.qml}{Content} item creates either a +\l{video/qmlvideo/qml/qmlvideo/Content.qml}{Content} item creates either a \l{MediaPlayer} or a \l{Camera} item. \section1 Calculating and displaying QML painting rate @@ -134,7 +134,7 @@ instance, the embedded All that remains is to connect the afterRendering() signal of the QQuickView object to a JavaScript function, which will eventually call frequencyItem.notify(): -\quotefromfile multimedia/video/qmlvideo/main.cpp +\quotefromfile video/qmlvideo/main.cpp \skipto QGuiApplication \printuntil ; \dots diff --git a/examples/multimedia/video/doc/src/qmlvideofx.qdoc b/examples/multimedia/video/doc/src/qmlvideofx.qdoc index f4abbc57..b7bd78ac 100644 --- a/examples/multimedia/video/doc/src/qmlvideofx.qdoc +++ b/examples/multimedia/video/doc/src/qmlvideofx.qdoc @@ -134,10 +134,10 @@ types is a bit more complicated, for the following reasons: \endlist The abstraction of source item type is achieved by the -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/Content.qml}{Content}, which uses a +\l{video/qmlvideofx/qml/qmlvideofx/Content.qml}{Content}, which uses a \l{Loader} to create either a \l{MediaPlayer}, \l{Camera} or \l{Image}: -\quotefromfile multimedia/video/qmlvideofx/qml/qmlvideofx/Content.qml +\quotefromfile video/qmlvideofx/qml/qmlvideofx/Content.qml \skipto import \printuntil { \dots @@ -164,10 +164,10 @@ The abstraction of source item type is achieved by the \printuntil } Each effect is implemented as a QML item which is based on the -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/Effect.qml}{Effect}, which in turn +\l{video/qmlvideofx/qml/qmlvideofx/Effect.qml}{Effect}, which in turn is based on the \l{ShaderEffect}: -\quotefromfile multimedia/video/qmlvideofx/qml/qmlvideofx/Effect.qml +\quotefromfile video/qmlvideofx/qml/qmlvideofx/Effect.qml \skipto import \printuntil /^\}/ @@ -179,20 +179,20 @@ implementation of the pixelation effect. As you can see, the pixelation effect supports one parameter (which controls the pixelation granularity), and states that the divider should be displayed. -\quotefromfile multimedia/video/qmlvideofx/qml/qmlvideofx/EffectPixelate.qml +\quotefromfile video/qmlvideofx/qml/qmlvideofx/EffectPixelate.qml \skipto import \printuntil /^\}/ The main.qml file shows a -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/FileOpen.qml}{FileOpen}, which allows +\l{video/qmlvideofx/qml/qmlvideofx/FileOpen.qml}{FileOpen}, which allows the user to select the input source and an -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/EffectSelectionPanel.qml}{EffectSelectionPanel} +\l{video/qmlvideofx/qml/qmlvideofx/EffectSelectionPanel.qml}{EffectSelectionPanel} item, which lists each of the available shader effects. As described above, a -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/Content.qml}{Content} item is used to load the +\l{video/qmlvideofx/qml/qmlvideofx/Content.qml}{Content} item is used to load the appropriate input and effect type. A -\l{multimedia/video/qmlvideofx/qml/qmlvideofx/Divider.qml}{Divider} item draws the +\l{video/qmlvideofx/qml/qmlvideofx/Divider.qml}{Divider} item draws the vertical dividing line, which can be dragged left / right by the user. Finally, -a \l{multimedia/video/qmlvideofx/qml/qmlvideofx/ParameterPanel.qml}{ParameterPanel} item +a \l{video/qmlvideofx/qml/qmlvideofx/ParameterPanel.qml}{ParameterPanel} item renders the sliders corresponding to each effect parameter. Here is the source selection menu: @@ -208,7 +208,7 @@ And here is the effect selection menu: All that remains is to connect the afterRendering() signal of the QQuickView object to a JavaScript function, which will eventually call frequencyItem.notify(): -\quotefromfile multimedia/video/qmlvideofx/main.cpp +\quotefromfile video/qmlvideofx/main.cpp \skipto QGuiApplication \printuntil ; \dots diff --git a/src/multimedia/doc/src/examples/video-qml-paint-rate.qdocinc b/src/multimedia/doc/src/examples/video-qml-paint-rate.qdocinc index 860f1427..84098e24 100644 --- a/src/multimedia/doc/src/examples/video-qml-paint-rate.qdocinc +++ b/src/multimedia/doc/src/examples/video-qml-paint-rate.qdocinc @@ -2,7 +2,7 @@ The QML painting rate is calculated by the FrequencyMonitor class, which turns a stream of events (received via the notify() slot), into an instantaneous and an averaged frequency: -\quotefromfile multimedia/video/snippets/frequencymonitor/frequencymonitor.h +\quotefromfile video/snippets/frequencymonitor/frequencymonitor.h \skipto class FrequencyMonitor : public QObject \printuntil Q_OBJECT \skipto Q_PROPERTY(qreal instantaneousFrequency @@ -19,13 +19,13 @@ instantaneous and an averaged frequency: The FrequencyMonitor class is exposed to QML like this -\quotefromfile multimedia/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp +\quotefromfile video/snippets/frequencymonitor/frequencymonitordeclarative.cpp \skipto FrequencyMonitor::qmlRegisterType \printuntil } and its data is displayed by defining a QML item called FrequencyItem, like this: -\quotefromfile multimedia/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml +\quotefromfile video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml \skipto import FrequencyMonitor \printuntil id: root \dots