summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@theqtcompany.com>2016-01-15 17:27:32 +0100
committerChristian Strømme <christian.stromme@theqtcompany.com>2016-01-15 17:28:17 +0100
commit84e426c3af2a3bb1b7f916e54263aea758db38d0 (patch)
tree4fe09a8da5b15ba466e5771239d06f29a6c123da /src/multimedia
parent84aaa48fdfc1f35c9870518a3d4b6f08a1f99449 (diff)
parent924dc7f48c7003b46079623738ae531f34aed903 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: src/plugins/android/src/mediacapture/qandroidcamerasession.cpp src/plugins/wmf/mftvideo.cpp Change-Id: I78868b416ea4baec89ca3e2dc9eb4712db16d5fc
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/audio/qaudio.cpp1
-rw-r--r--src/multimedia/audio/qsoundeffect_qaudio_p.cpp2
-rw-r--r--src/multimedia/doc/qtmultimedia-dita.qdocconf32
-rw-r--r--src/multimedia/doc/qtmultimedia.qdocconf26
-rw-r--r--src/multimedia/doc/src/examples/video-qml-paint-rate.qdocinc6
-rw-r--r--src/multimedia/doc/src/multimedia.qdoc30
-rw-r--r--src/multimedia/doc/src/multimediabackend.qdoc5
-rw-r--r--src/multimedia/doc/src/plugins/qml-multimedia.qdoc6
-rw-r--r--src/multimedia/doc/src/qtmultimedia-cpp.qdoc19
-rw-r--r--src/multimedia/doc/src/qtmultimedia-index.qdoc17
-rw-r--r--src/multimedia/playback/qmediaplaylist.cpp72
-rw-r--r--src/multimedia/playback/qmediaplaylist_p.h4
-rw-r--r--src/multimedia/qmediametadata.cpp1
-rw-r--r--src/multimedia/qmultimedia.cpp1
-rw-r--r--src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h2
-rw-r--r--src/multimedia/recording/qaudiorecorder.cpp3
-rw-r--r--src/multimedia/video/qvideoframeconversionhelper_p.h11
17 files changed, 157 insertions, 81 deletions
diff --git a/src/multimedia/audio/qaudio.cpp b/src/multimedia/audio/qaudio.cpp
index 72c24ad9f..45540a2b9 100644
--- a/src/multimedia/audio/qaudio.cpp
+++ b/src/multimedia/audio/qaudio.cpp
@@ -49,6 +49,7 @@ Q_CONSTRUCTOR_FUNCTION(qRegisterAudioMetaTypes)
/*!
\namespace QAudio
+ \ingroup multimedia-namespaces
\brief The QAudio namespace contains enums used by the audio classes.
\inmodule QtMultimedia
\ingroup multimedia
diff --git a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
index e95e4e521..77ed48b4a 100644
--- a/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
+++ b/src/multimedia/audio/qsoundeffect_qaudio_p.cpp
@@ -395,6 +395,8 @@ qint64 PrivateSoundSource::readData( char* data, qint64 len)
memcpy(data + dataOffset, sampleData + m_offset, sampleSize - m_offset);
bytesWritten += sampleSize - m_offset;
int wrapLen = periodSize - (sampleSize - m_offset);
+ if (wrapLen > sampleSize)
+ wrapLen = sampleSize;
#ifdef QT_QAUDIO_DEBUG
qDebug() << "END OF SOUND: bytesWritten=" << bytesWritten << ", offset=" << m_offset
<< ", part1=" << (sampleSize-m_offset);
diff --git a/src/multimedia/doc/qtmultimedia-dita.qdocconf b/src/multimedia/doc/qtmultimedia-dita.qdocconf
deleted file mode 100644
index cb8a73c4f..000000000
--- a/src/multimedia/doc/qtmultimedia-dita.qdocconf
+++ /dev/null
@@ -1,32 +0,0 @@
-# Name of the project.
-project = Qt Multimedia
-
-# Directories in which to search for files to document and images.
-# By default set to the root directory of the project for sources
-# and headers and qdoc will therefore generate output for each file.
-# Images should be placed in <rootdir>/dic/images and examples in
-# <rootdir>/examples.
-# Paths are relative to the location of this file.
-exampledirs += ../src/examples \
- ../.. \
- ../../examples
-
-headerdirs += ../src \
- ../../src
-
-imagedirs += ../src/images \
-
-sourcedirs += ../src \
- ../../src
-
-excludedirs +=
-
-#Do not change the variables after this line unless you know what you are doing.
-
-outputdir = ../ditaxml
-outputformats = DITAXML
-
-examples.fileextensions = "*.cpp *.h *.js *.svg *.xml *.ui *.qml"
-examples.imageextensions = "*.png *.jpeg *.jpg *.gif *.mng"
-headers.fileextensions = "*.h *.ch *.h++ *.hh *.hpp *.hxx"
-sources.fileextensions = "*.cpp *.qdoc *.mm *.qml"
diff --git a/src/multimedia/doc/qtmultimedia.qdocconf b/src/multimedia/doc/qtmultimedia.qdocconf
index a32043b39..2ea23e2ee 100644
--- a/src/multimedia/doc/qtmultimedia.qdocconf
+++ b/src/multimedia/doc/qtmultimedia.qdocconf
@@ -18,21 +18,33 @@ qhp.QtMultimedia.indexTitle = Qt Multimedia
qhp.QtMultimedia.virtualFolder = qtmultimedia
# For listing child nodes in Qt Creator or Assistant.
-qhp.QtMultimedia.subprojects = classes qmltypes
-qhp.QtMultimedia.subprojects.classes.title = C++ Classes
+qhp.QtMultimedia.subprojects = classes widgetclasses qmltypes examples
+
+qhp.QtMultimedia.subprojects.classes.title = Qt Multimedia Classes and Namespaces
qhp.QtMultimedia.subprojects.classes.indexTitle = Qt Multimedia C++ Classes
-qhp.QtMultimedia.subprojects.classes.selectors = class fake:headerfile
+qhp.QtMultimedia.subprojects.classes.selectors = module:QtMultimedia
qhp.QtMultimedia.subprojects.classes.sortPages = true
+
+qhp.QtMultimedia.subprojects.widgetclasses.title = Qt Multimedia Widgets C++ Classes
+qhp.QtMultimedia.subprojects.widgetclasses.indexTitle = Qt Multimedia Widgets C++ Classes
+qhp.QtMultimedia.subprojects.widgetclasses.selectors = module:QtMultimediaWidgets
+qhp.QtMultimedia.subprojects.widgetclasses.sortPages = true
+
qhp.QtMultimedia.subprojects.qmltypes.title = QML Types
qhp.QtMultimedia.subprojects.qmltypes.indexTitle = Qt Multimedia QML Types
qhp.QtMultimedia.subprojects.qmltypes.selectors = qmlclass
qhp.QtMultimedia.subprojects.qmltypes.sortPages = true
-exampledirs += ../../../examples/multimedia \
+qhp.QtMultimedia.subprojects.examples.title = Examples
+qhp.QtMultimedia.subprojects.examples.indexTitle = Qt Multimedia Examples
+qhp.QtMultimedia.subprojects.examples.selectors = doc:example
+qhp.QtMultimedia.subprojects.examples.sortPages = true
+
+exampledirs += ../../../examples \
snippets
# Specify example install dir under QT_INSTALL_EXAMPLES
-examplesinstallpath = qtmultimedia/multimedia
+examplesinstallpath = qtmultimedia
headerdirs += ../..
@@ -40,9 +52,9 @@ imagedirs += src/images \
sourcedirs += ../..
-excludedirs += ../../multimediawidgets
+#excludedirs += ../../multimediawidgets
-depends += qtcore qtdoc qtgui qtquick qtqml qtmultimediawidgets qtwidgets
+depends += qtcore qtdoc qtgui qtquick qtqml qtwidgets
navigation.landingpage = "Qt Multimedia"
navigation.cppclassespage = "Qt Multimedia C++ Classes"
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 84098e241..860f14270 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 video/snippets/frequencymonitor/frequencymonitor.h
+\quotefromfile multimedia/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 video/snippets/frequencymonitor/frequencymonitordeclarative.cpp
+\quotefromfile multimedia/video/snippets/frequencymonitor/frequencymonitordeclarative.cpp
\skipto FrequencyMonitor::qmlRegisterType
\printuntil }
and its data is displayed by defining a QML item called FrequencyItem, like this:
-\quotefromfile video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml
+\quotefromfile multimedia/video/snippets/frequencymonitor/qml/frequencymonitor/FrequencyItem.qml
\skipto import FrequencyMonitor
\printuntil id: root
\dots
diff --git a/src/multimedia/doc/src/multimedia.qdoc b/src/multimedia/doc/src/multimedia.qdoc
index 23c2ee431..5849af59d 100644
--- a/src/multimedia/doc/src/multimedia.qdoc
+++ b/src/multimedia/doc/src/multimedia.qdoc
@@ -81,52 +81,52 @@ For some quick recipes, look at the overviews above and consult this table:
\li QSoundEffect
\row
\li Playing low latency audio
- \li \l{audioinput},
- \l{spectrum}
+ \li \l{Audio Input Example}{audioinput},
+ \l{Spectrum Example}{spectrum}
\li
\li QAudioOutput
\row
\li Playing encoded audio (MP3, AAC etc)
- \li \l{player}
+ \li \l{Media Player Example}{player}
\li \l Audio, \l {MediaPlayer}
\li QMediaPlayer
\row
\li Accessing raw audio input data
- \li \l{spectrum},
- \l{audioinput}
+ \li \l{Spectrum Example}{spectrum},
+ \l{Audio Input Example}{audioinput}
\li
\li QAudioInput
\row
\li Recording encoded audio data
- \li \l{audiorecorder}
+ \li \l{Audio Recorder Example}{audiorecorder}
\li
\li QAudioRecorder
\row
\li Discovering raw audio devices
- \li \l{audiodevices}
+ \li \l{Audio Devices Example}{audiodevices}
\li
\li QAudioDeviceInfo
\row
\li Video Playback
- \li \l{player},
- \l{video/qmlvideo}{qmlvideo},
- \l{video/qmlvideofx}{qmlvideofx}
+ \li \l{Media Player Example}{player},
+ \l{QML Video Example}{qmlvideo},
+ \l{QML Video Shader Effects Example}{qmlvideofx}
\li \l MediaPlayer, \l VideoOutput, \l Video
\li QMediaPlayer, QVideoWidget, QGraphicsVideoItem
\row
\li Video Processing
- \li \l {video/qmlvideofx}{qmlvideofx}
+ \li \l {QML Video Example}{qmlvideofx}
\li \l {MediaPlayer}, \l VideoOutput
\li QMediaPlayer, QAbstractVideoSurface, QVideoFrame
\row
\li Listening to the radio
- \li \l {declarative-radio}
+ \li \l {Declarative Radio Example}{declarative-radio}
\li \l Radio, \l RadioData
\li QRadioTuner, QRadioData
\row
\li Accessing camera viewfinder
\li \l {Camera Example}{camera},
- \l {declarative-camera}
+ \l {QML Camera Example}{declarative-camera}
\li \l Camera, \l VideoOutput
\li QCamera, QVideoWidget, QGraphicsVideoItem
\row
@@ -137,13 +137,13 @@ For some quick recipes, look at the overviews above and consult this table:
\row
\li Capturing photos
\li \l {Camera Example}{camera},
- \l {declarative-camera}
+ \l {QML Camera Example}{declarative-camera}
\li \l Camera
\li QCamera, QCameraImageCapture
\row
\li Capturing movies
\li \l {Camera Example}{camera},
- \l {declarative-camera}
+ \l {QML Camera Example}{declarative-camera}
\li \l Camera
\li QCamera, QMediaRecorder
\row
diff --git a/src/multimedia/doc/src/multimediabackend.qdoc b/src/multimedia/doc/src/multimediabackend.qdoc
index b56f1040d..0622f5f09 100644
--- a/src/multimedia/doc/src/multimediabackend.qdoc
+++ b/src/multimedia/doc/src/multimediabackend.qdoc
@@ -37,14 +37,14 @@
\section1 Overview
-A multimedia backend provides the glue between platform specific libraries, and
+A multimedia backend provides the glue between platform-specific libraries, and
Qt Multimedia. In some cases the available cross-platform Multimedia APIs or
implementations are not sufficient, or not immediately available on a certain
platform. Alternatively, the multimedia implementation on a platform might expose
certain extra properties or functionality that other platforms do not, or a finer
degree of control might be possible. For these cases, it is possible to use
extended controls directly.
-
+\omit
In addition, if you plan to port the Qt Multimedia APIs to a new platform, you do
this by implementing certain control and service classes, as detailed below.
@@ -94,7 +94,6 @@ In general, adding a new media service provider is outside the scope of this doc
For best results, consult the existing provider source code, and seek assistance on the relevant
mailing lists and IRC channels.
-\omit
The base class for creating new service providers is \l{QMediaServiceProvider}.
The user must implement the \l{QMediaServiceProvider::requestService()}{requestService()}
function
diff --git a/src/multimedia/doc/src/plugins/qml-multimedia.qdoc b/src/multimedia/doc/src/plugins/qml-multimedia.qdoc
index 15c6d3c1d..4cb30a8b8 100644
--- a/src/multimedia/doc/src/plugins/qml-multimedia.qdoc
+++ b/src/multimedia/doc/src/plugins/qml-multimedia.qdoc
@@ -26,12 +26,6 @@
****************************************************************************/
/*!
- \group qml-multimedia
- \title QML Multimedia Plugin
- QML Support for the Qt Multimedia API.
-*/
-
-/*!
\page qml-multimedia.html
\title Qt Multimedia QML API
diff --git a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
index 8460238e7..44623beca 100644
--- a/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
+++ b/src/multimedia/doc/src/qtmultimedia-cpp.qdoc
@@ -27,16 +27,33 @@
/*!
\module QtMultimedia
- \title Qt Multimedia C++ Classes
+ \title Qt Multimedia Module C++ Classes
\ingroup modules
\qtvariable multimedia
\brief The \l {Qt Multimedia} module provides audio, video, radio and camera
functionality.
+*/
+
+/*!
+ \page qtmultimedia-modules.html
+ \title Qt Multimedia C++ Classes
+ \brief Provides C++ class for multimedia use cases.
The C++ classes provide more control over the multimedia content than the
QML alternatives. If your application is serving complex use cases such as
decoding media files, accessing video or audio buffers, use the C++
alternative. For more details about the complex audio, video, and camera use
cases supported by the C++ classes, refer to \l {Multimedia}{Multimedia Overview}.
+
+ \section1 Namespaces
+ \annotatedlist multimedia-namespaces
+
+ \section1 Classes
+
+ \section2 Qt Multimedia Module
+ \generatelist {classesbymodule QtMultimedia}
+
+ \section2 Qt Multimedia Widgets Module
+ \generatelist {classesbymodule QtMultimediaWidgets}
*/
diff --git a/src/multimedia/doc/src/qtmultimedia-index.qdoc b/src/multimedia/doc/src/qtmultimedia-index.qdoc
index 0e2750872..e51ec97e0 100644
--- a/src/multimedia/doc/src/qtmultimedia-index.qdoc
+++ b/src/multimedia/doc/src/qtmultimedia-index.qdoc
@@ -35,10 +35,18 @@
and C++ classes to handle multimedia content. It also provides necessary
APIs to access the camera and radio functionality. The included
\l{Qt Audio Engine QML Types}{Qt Audio Engine} provides types for
- 3D positional audio playback and management.
+ 3D positional audio playback and content management.
- The \l{Qt Multimedia Widgets} module provides widget based multimedia
- classes.
+ The functionality of this module is divided into the following submodules:
+
+ \table
+ \row
+ \li \l{QtMultimedia}{Qt Multimedia}
+ \li Provides API for multimedia-specific use cases.
+ \row
+ \li \l{QtMultimediaWidgets}{Qt Multimedia Widgets}
+ \li Provides the widget-based multimedia API.
+ \endtable
\section1 Getting Started
@@ -54,6 +62,7 @@
\code
#include <QtMultimedia>
+ #include <QtMultimediaWidgets>
\endcode
\note If you are using a few classes from this module, we recommend
@@ -63,7 +72,7 @@
\c {qmake} project file:
\code
- QT += multimedia
+ QT += multimedia multimediawidgets
\endcode
\section1 QML Types and C++ Classes
diff --git a/src/multimedia/playback/qmediaplaylist.cpp b/src/multimedia/playback/qmediaplaylist.cpp
index 219dbc1fa..f863c78d9 100644
--- a/src/multimedia/playback/qmediaplaylist.cpp
+++ b/src/multimedia/playback/qmediaplaylist.cpp
@@ -168,10 +168,13 @@ bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject)
newControl = d->networkPlaylistControl;
if (d->control != newControl) {
- int oldSize = 0;
+ int removedStart = -1;
+ int removedEnd = -1;
+ int insertedStart = -1;
+ int insertedEnd = -1;
+
if (d->control) {
QMediaPlaylistProvider *playlist = d->control->playlistProvider();
- oldSize = playlist->mediaCount();
disconnect(playlist, SIGNAL(loadFailed(QMediaPlaylist::Error,QString)),
this, SLOT(_q_loadFailed(QMediaPlaylist::Error,QString)));
@@ -190,6 +193,12 @@ bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject)
disconnect(d->control, SIGNAL(currentMediaChanged(QMediaContent)),
this, SIGNAL(currentMediaChanged(QMediaContent)));
+ // Copy playlist items, sync playback mode and sync current index between
+ // old control and new control
+ d->syncControls(d->control, newControl,
+ &removedStart, &removedEnd,
+ &insertedStart, &insertedEnd);
+
if (d->mediaObject)
d->mediaObject->service()->releaseControl(d->control);
}
@@ -214,14 +223,14 @@ bool QMediaPlaylist::setMediaObject(QMediaObject *mediaObject)
connect(d->control, SIGNAL(currentMediaChanged(QMediaContent)),
this, SIGNAL(currentMediaChanged(QMediaContent)));
- if (oldSize) {
- emit mediaAboutToBeRemoved(0, oldSize-1);
- emit mediaRemoved(0, oldSize-1);
+ if (removedStart != -1 && removedEnd != -1) {
+ emit mediaAboutToBeRemoved(removedStart, removedEnd);
+ emit mediaRemoved(removedStart, removedEnd);
}
- if (playlist->mediaCount()) {
- emit mediaAboutToBeInserted(0,playlist->mediaCount()-1);
- emit mediaInserted(0,playlist->mediaCount()-1);
+ if (insertedStart != -1 && insertedEnd != -1) {
+ emit mediaAboutToBeInserted(insertedStart, insertedEnd);
+ emit mediaInserted(insertedStart, insertedEnd);
}
}
@@ -450,6 +459,53 @@ bool QMediaPlaylistPrivate::writeItems(QMediaPlaylistWriter *writer)
}
/*!
+ * \internal
+ * Copy playlist items, sync playback mode and sync current index between old control and new control
+*/
+void QMediaPlaylistPrivate::syncControls(QMediaPlaylistControl *oldControl, QMediaPlaylistControl *newControl,
+ int *removedStart, int *removedEnd,
+ int *insertedStart, int *insertedEnd)
+{
+ Q_ASSERT(oldControl != NULL && newControl != NULL);
+ Q_ASSERT(removedStart != NULL && removedEnd != NULL
+ && insertedStart != NULL && insertedEnd != NULL);
+
+ QMediaPlaylistProvider *oldPlaylist = oldControl->playlistProvider();
+ QMediaPlaylistProvider *newPlaylist = newControl->playlistProvider();
+
+ Q_ASSERT(oldPlaylist != NULL && newPlaylist != NULL);
+
+ *removedStart = -1;
+ *removedEnd = -1;
+ *insertedStart = -1;
+ *insertedEnd = -1;
+
+ if (newPlaylist->isReadOnly()) {
+ // we can't transfer the items from the old control.
+ // Report these items as removed.
+ if (oldPlaylist->mediaCount() > 0) {
+ *removedStart = 0;
+ *removedEnd = oldPlaylist->mediaCount() - 1;
+ }
+ // The new control might have some items that can't be cleared.
+ // Report these as inserted.
+ if (newPlaylist->mediaCount() > 0) {
+ *insertedStart = 0;
+ *insertedEnd = newPlaylist->mediaCount() - 1;
+ }
+ } else {
+ const int oldPlaylistSize = oldPlaylist->mediaCount();
+
+ newPlaylist->clear();
+ for (int i = 0; i < oldPlaylistSize; ++i)
+ newPlaylist->addMedia(oldPlaylist->media(i));
+ }
+
+ newControl->setPlaybackMode(oldControl->playbackMode());
+ newControl->setCurrentIndex(oldControl->currentIndex());
+}
+
+/*!
Load playlist using network \a request. If \a format is specified, it is used,
otherwise format is guessed from playlist name and data.
diff --git a/src/multimedia/playback/qmediaplaylist_p.h b/src/multimedia/playback/qmediaplaylist_p.h
index 25571378f..1440362df 100644
--- a/src/multimedia/playback/qmediaplaylist_p.h
+++ b/src/multimedia/playback/qmediaplaylist_p.h
@@ -108,6 +108,10 @@ public:
bool readItems(QMediaPlaylistReader *reader);
bool writeItems(QMediaPlaylistWriter *writer);
+ void syncControls(QMediaPlaylistControl *oldControl, QMediaPlaylistControl *newControl,
+ int *removedStart, int *removedEnd,
+ int *insertedStart, int *insertedEnd);
+
QMediaPlaylist::Error error;
QString errorString;
diff --git a/src/multimedia/qmediametadata.cpp b/src/multimedia/qmediametadata.cpp
index f07c0936b..9ffd2a727 100644
--- a/src/multimedia/qmediametadata.cpp
+++ b/src/multimedia/qmediametadata.cpp
@@ -160,6 +160,7 @@ Q_DEFINE_METADATA(ThumbnailImage);
/*!
\namespace QMediaMetaData
+ \ingroup multimedia-namespaces
\ingroup multimedia
\inmodule QtMultimedia
diff --git a/src/multimedia/qmultimedia.cpp b/src/multimedia/qmultimedia.cpp
index 2641cae44..f1673871f 100644
--- a/src/multimedia/qmultimedia.cpp
+++ b/src/multimedia/qmultimedia.cpp
@@ -31,6 +31,7 @@ QT_BEGIN_NAMESPACE
/*!
\namespace QMultimedia
+ \ingroup multimedia-namespaces
\ingroup multimedia
\inmodule QtMultimedia
diff --git a/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h b/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h
index 80fdab3b3..3024d1316 100644
--- a/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h
+++ b/src/multimedia/qtmultimediaquicktools_headers/qsgvideonode_p.h
@@ -81,6 +81,8 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(QSGVideoNode::FrameFlags)
class Q_MULTIMEDIAQUICK_EXPORT QSGVideoNodeFactoryInterface
{
public:
+ virtual ~QSGVideoNodeFactoryInterface();
+
virtual QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType handleType) const = 0;
virtual QSGVideoNode *createNode(const QVideoSurfaceFormat &format) = 0;
};
diff --git a/src/multimedia/recording/qaudiorecorder.cpp b/src/multimedia/recording/qaudiorecorder.cpp
index 3c0d1c22d..9750c0ffe 100644
--- a/src/multimedia/recording/qaudiorecorder.cpp
+++ b/src/multimedia/recording/qaudiorecorder.cpp
@@ -64,8 +64,7 @@ QT_BEGIN_NAMESPACE
\snippet multimedia-snippets/media.cpp Audio recorder inputs
- The \l {audiorecorder}{Audio Recorder} example shows how to use this class
- in more detail.
+ The \l {Audio Recorder Example} shows how to use this class in more detail.
\sa QMediaRecorder, QAudioInputSelectorControl
*/
diff --git a/src/multimedia/video/qvideoframeconversionhelper_p.h b/src/multimedia/video/qvideoframeconversionhelper_p.h
index eead17a91..10e9d3ab3 100644
--- a/src/multimedia/video/qvideoframeconversionhelper_p.h
+++ b/src/multimedia/video/qvideoframeconversionhelper_p.h
@@ -34,6 +34,17 @@
#ifndef QVIDEOFRAMECONVERSIONHELPER_P_H
#define QVIDEOFRAMECONVERSIONHELPER_P_H
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
#include <qvideoframe.h>
#include <private/qsimd_p.h>