diff options
Diffstat (limited to 'examples/multimedia/video/doc')
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideo-menu.jpg | bin | 21959 -> 0 bytes | |||
-rw-r--r-- | examples/multimedia/video/doc/images/qmlvideo-overlay.jpg | bin | 23787 -> 0 bytes | |||
-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/qmlvideo.qdoc | 135 | ||||
-rw-r--r-- | examples/multimedia/video/doc/src/qmlvideofx.qdoc | 207 |
9 files changed, 0 insertions, 342 deletions
diff --git a/examples/multimedia/video/doc/images/qmlvideo-menu.jpg b/examples/multimedia/video/doc/images/qmlvideo-menu.jpg Binary files differdeleted file mode 100644 index 54ab877a1..000000000 --- a/examples/multimedia/video/doc/images/qmlvideo-menu.jpg +++ /dev/null diff --git a/examples/multimedia/video/doc/images/qmlvideo-overlay.jpg b/examples/multimedia/video/doc/images/qmlvideo-overlay.jpg Binary files differdeleted file mode 100644 index 6a0d48ae6..000000000 --- a/examples/multimedia/video/doc/images/qmlvideo-overlay.jpg +++ /dev/null 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/qmlvideo.qdoc b/examples/multimedia/video/doc/src/qmlvideo.qdoc deleted file mode 100644 index b8ab25d03..000000000 --- a/examples/multimedia/video/doc/src/qmlvideo.qdoc +++ /dev/null @@ -1,135 +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/qmlvideo -\title QML Video Example -\ingroup multimedia_examples -\brief Transforming video and camera viewfinder content. - -\e{QML Video} demonstrates the various transformations (move; resize; rotate; -change aspect ratio) that can be applied to QML \l VideoOutput and \l Camera -types. - -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 image shows the application executing the video-overlay scene, -which creates a dummy overlay item (just a semi-transparent \l{Rectangle}), -which moves across the \l{VideoOutput} item. - -\image qmlvideo-overlay.jpg - -\include examples-run.qdocinc - -\section1 Application Structure - -The \c main.qml file creates a UI which includes the following items: - -\list - \li Two \c Button instances, each of which displays a filename, and can be - used to launch a \c FileBrowser. - \li An exit \c Button. - \li A \c 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 - average over the past second. -\endlist - -\image qmlvideo-menu.jpg - -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 \c VideoBasic.qml file. As -you can see from the code, this makes use of a type of inheritance; a -\c VideoBasic item ... - -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/VideoBasic.qml -\skipto import -\printuntil /^\}/ - -... is of type \c SceneBasic ... - -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/SceneBasic.qml -\skipto import -\printuntil contentType -\dots -\skipto Content -\printuntil content -\dots -\skipto } -\printuntil /^\}/ - -... which itself is a \c Scene: - -\quotefromfile multimedia/video/qmlvideo/qml/qmlvideo/Scene.qml -\skipto import -\printuntil root -\dots -\skipto property QtObject content -\printuntil content -\dots -\skipto Button -\printuntil /^\}/ - -\c SceneBasic describes the structure and behavior of the scene, but is -agnostic of the type of content which will be displayed - this is abstracted -by \c 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 (\c {VideoBasic}) and camera content \c ({CameraBasic}). -This approach is used to implement many of the other scenes - for example, -\e {"repeatedly slide the content from left to right and back again"} is -implemented by \c SceneMove, on which \c VideoMove and \c CameraMove are based. - -Depending on the value of the contentType property in the top-level scene -instance, the embedded \c Content item creates either a -\l[QML]{MediaPlayer} or a \l[QML]{Camera} item. - -\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 -\c frequencyItem.notify(): - -\quotefromfile multimedia/video/qmlvideo/main.cpp -\skipto QGuiApplication -\printuntil ; -\dots -\skipto QQuickItem -\printuntil ; -\dots -\skipto QObject::connect -\printuntil SLOT(qmlFramePainted())); - -*/ 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())); - -*/ |