diff options
Diffstat (limited to 'examples/multimedia/video/doc')
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideofx-camera-glow.jpg | bin | 74914 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideofx-camera-wobble.jpg | bin | 62992 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideofx-effects-menu.jpg | bin | 84990 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideofx-video-edgedetection.jpg | bin | 108916 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideofx-video-pagecurl.jpg | bin | 61450 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/src/qmlvideofx.qdoc | 207 |
6 files changed, 0 insertions, 207 deletions
diff --git a/examples/multimedia/video/doc/images/qmlvideofx-camera-glow.jpg b/examples/multimedia/video/doc/images/qmlvideofx-camera-glow.jpg Binary files differdeleted file mode 100644 index 777ed4ffc..000000000 --- a/examples/multimedia/video/doc/images/qmlvideofx-camera-glow.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/images/qmlvideofx-camera-wobble.jpg b/examples/multimedia/video/doc/images/qmlvideofx-camera-wobble.jpg Binary files differdeleted file mode 100644 index 980ab0d15..000000000 --- a/examples/multimedia/video/doc/images/qmlvideofx-camera-wobble.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/images/qmlvideofx-effects-menu.jpg b/examples/multimedia/video/doc/images/qmlvideofx-effects-menu.jpg Binary files differdeleted file mode 100644 index eb5b90321..000000000 --- a/examples/multimedia/video/doc/images/qmlvideofx-effects-menu.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/images/qmlvideofx-video-edgedetection.jpg b/examples/multimedia/video/doc/images/qmlvideofx-video-edgedetection.jpg Binary files differdeleted file mode 100644 index 35b36c036..000000000 --- a/examples/multimedia/video/doc/images/qmlvideofx-video-edgedetection.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/images/qmlvideofx-video-pagecurl.jpg b/examples/multimedia/video/doc/images/qmlvideofx-video-pagecurl.jpg Binary files differdeleted file mode 100644 index 5cd8d2bd2..000000000 --- a/examples/multimedia/video/doc/images/qmlvideofx-video-pagecurl.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/src/qmlvideofx.qdoc b/examples/multimedia/video/doc/src/qmlvideofx.qdoc deleted file mode 100644 index c52f95f44..000000000 --- a/examples/multimedia/video/doc/src/qmlvideofx.qdoc +++ /dev/null @@ -1,207 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/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: https://www.gnu.org/licenses/fdl-1.3.html. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -/*! -\example multimedia/video/qmlvideofx -\title QML Video Shader Effects Example -\ingroup multimedia_examples - -\brief Applying shader effects on video and camera viewfinder content. - -\include examples-run.qdocinc - -\section1 Overview - -\e{QML Video Shader Effects} demonstrates how a \l ShaderEffect can be used to -apply postprocessing effects, expressed in GLSL, to QML \l VideoOutput type. - -It also shows how native code can be combined with QML to implement more -advanced functionality - in this case, C++ code is used to calculate the QML -frame rate. This value is rendered in QML in a semi-transparent item -overlaid on the video content. - -The following screenshots show shader effects being applied. In each case, -the effect is implemented using a fragment shader. - -Here we see an edge detection algorithm being applied to a video clip -(\l{http://durian.blender.org/}{Sintel from blender.org}). -\image qmlvideofx-video-edgedetection.jpg - -This image shows a page curl effect, applied to the same video clip. -\image qmlvideofx-video-pagecurl.jpg - -Here we see a 'glow' effect (edge detection plus colour quantization) being -applied to the camera viewfinder. -\image qmlvideofx-camera-glow.jpg - -This image shows a 'wobble' effect applied to the viewfinder. -\image qmlvideofx-camera-wobble.jpg - -The application includes many more effects than the ones shown here - look -for Effect*.qml files in the list of files below to see the full range. - -\section1 Application Structure - -Shader effects can be applied to video or viewfinder content using -\l{ShaderEffect}, as shown in the following example, which applies -a wiggly effect to the content: - -\qml -import QtQuick 2.0 -import QtMultimedia 5.0 - -Rectangle { - width: 300 - height: 300 - color: "black" - - MediaPlayer { - id: mediaPlayer - source: "test.mp4" - playing: true - } - - VideoOutput { - id: video - anchors.fill: parent - source: mediaPlayer - } - - ShaderEffect { - property variant source: ShaderEffectSource { sourceItem: video; hideSource: true } - property real wiggleAmount: 0.005 - anchors.fill: video - - fragmentShader: " - varying highp vec2 qt_TexCoord0; - uniform sampler2D source; - uniform highp float wiggleAmount; - void main(void) - { - highp vec2 wiggledTexCoord = qt_TexCoord0; - wiggledTexCoord.s += sin(4.0 * 3.14159265358979323846 * wiggledTexCoord.t) * wiggleAmount; - gl_FragColor = texture2D(source, wiggledTexCoord.st); - } - " - } -} -\endqml - -In this application, the usage of the \l{ShaderEffect} and \l{VideoOutput} -types is a bit more complicated, for the following reasons: - -\list - \li Each effect can be applied to either a \l{VideoOutput} or an - \l{Image} item, so the type of the source item must be abstracted away - from the effect implementation - \li For some effects (such as the edge detection and glow examples shown in - the screenshots above), the transformation is applied only to pixels to - the left of a dividing line - this allows the effect to be easily - compared with the untransformed image on the right - \li Most effects have one or more parameters which can be modified by the - user - these are controlled by sliders in the UI which are connected - to uniform values passed into the GLSL code -\endlist - -The abstraction of source item type is achieved by the \c Content, which uses a -\l[QML]{Loader} to create either a \l[QML]{MediaPlayer}, \l[QML]{Camera}, or an -\l[QML]{Image}: - -\quotefromfile multimedia/video/qmlvideofx/qml/qmlvideofx/Content.qml -\skipto import -\printuntil { -\dots -\skipto Loader { -\printuntil } -\dots -\skipto function openImage -\printuntil "ContentImage.qml" -\skipto contentLoader.item.source -\printuntil path -\skipto } -\printuntil } -\skipto function openVideo -\printuntil "ContentVideo.qml" -\skipto contentLoader.item.mediaSource -\printuntil path -\skipto } -\printuntil } -\skipto function openCamera -\printuntil "ContentCamera.qml" -\skipto } -\printuntil } -\skipto /^\}/ -\printuntil } - -Each effect is implemented as a QML item which is based on the \c Effect, which in -turn is based on the \l[QML]{ShaderEffect}: - -\quotefromfile multimedia/video/qmlvideofx/qml/qmlvideofx/Effect.qml -\skipto import -\printuntil /^\}/ - -The interface of Effect allows for derived effects to specify the -number of parameters which they support (and therefore the number of sliders -which should be displayed), and whether a vertical dividing line should be drawn -between transformed and untransformed image regions. As an example, here is the -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 -\skipto import -\printuntil /^\}/ - -The main.qml file shows a \c FileOpen item, which allows -the user to select the input source and an \c EffectSelectionList -item, which lists each of the available shader effects. As described above, a -\c Content item is used to load the appropriate input and effect type. A -\c Divider item draws the vertical dividing line, which can be dragged left or -right by the user. Finally, a \c ParameterPanel item renders the sliders -corresponding to each effect parameter. - -\image qmlvideofx-effects-menu.jpg -\caption The effect selection menu - -\section1 Calculating and Displaying QML Painting Rate - -\input multimedia/doc/src/examples/video-qml-paint-rate.qdocinc - -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 -\skipto QGuiApplication -\printuntil ; -\dots -\skipto QQuickItem -\printuntil ; -\dots -\skipto QObject::connect -\printuntil SLOT(qmlFramePainted())); - -*/ |