diff options
Diffstat (limited to 'src')
91 files changed, 474 insertions, 219 deletions
diff --git a/src/gsttools/qgstreameraudioinputselector.cpp b/src/gsttools/qgstreameraudioinputselector.cpp index 52587e075..565b6c44a 100644 --- a/src/gsttools/qgstreameraudioinputselector.cpp +++ b/src/gsttools/qgstreameraudioinputselector.cpp @@ -145,8 +145,8 @@ void QGstreamerAudioInputSelector::updateOssDevices() { QDir devDir("/dev"); devDir.setFilter(QDir::System); - QFileInfoList entries = devDir.entryInfoList(QStringList() << "dsp*"); - foreach(const QFileInfo& entryInfo, entries) { + const QFileInfoList entries = devDir.entryInfoList(QStringList() << "dsp*"); + for (const QFileInfo& entryInfo : entries) { m_names.append(QLatin1String("oss:")+entryInfo.filePath()); m_descriptions.append(QString("OSS device %1").arg(entryInfo.fileName())); } diff --git a/src/gsttools/qgstreamerbushelper.cpp b/src/gsttools/qgstreamerbushelper.cpp index 7db62b83c..243a21611 100644 --- a/src/gsttools/qgstreamerbushelper.cpp +++ b/src/gsttools/qgstreamerbushelper.cpp @@ -117,7 +117,7 @@ private: private slots: void doProcessMessage(const QGstreamerMessage& msg) { - foreach (QGstreamerBusMessageFilter *filter, busFilters) { + for (QGstreamerBusMessageFilter *filter : qAsConst(busFilters)) { if (filter->processBusMessage(msg)) break; } @@ -136,7 +136,7 @@ static GstBusSyncReply syncGstBusFilter(GstBus* bus, GstMessage* message, QGstre Q_UNUSED(bus); QMutexLocker lock(&d->filterMutex); - foreach (QGstreamerSyncMessageFilter *filter, d->syncFilters) { + for (QGstreamerSyncMessageFilter *filter : qAsConst(d->syncFilters)) { if (filter->processSyncMessage(QGstreamerMessage(message))) return GST_BUS_DROP; } diff --git a/src/gsttools/qgstutils.cpp b/src/gsttools/qgstutils.cpp index b9e04e3f1..0b84e16ee 100644 --- a/src/gsttools/qgstutils.cpp +++ b/src/gsttools/qgstutils.cpp @@ -480,7 +480,7 @@ QMultimedia::SupportEstimate QGstUtils::hasSupport(const QString &mimeType, } int supportedCodecCount = 0; - foreach (const QString &codec, codecs) { + for (const QString &codec : codecs) { QString codecLowcase = codec.toLower(); const char* codecAlias = getCodecAlias(codecLowcase); if (codecAlias) { @@ -583,10 +583,10 @@ QVector<QGstUtils::CameraInfo> QGstUtils::enumerateCameras(GstElementFactory *fa QDir devDir(QStringLiteral("/dev")); devDir.setFilter(QDir::System); - QFileInfoList entries = devDir.entryInfoList(QStringList() + const QFileInfoList entries = devDir.entryInfoList(QStringList() << QStringLiteral("video*")); - foreach (const QFileInfo &entryInfo, entries) { + for (const QFileInfo &entryInfo : entries) { //qDebug() << "Try" << entryInfo.filePath(); int fd = qt_safe_open(entryInfo.filePath().toLatin1().constData(), O_RDWR ); @@ -643,7 +643,9 @@ QList<QByteArray> QGstUtils::cameraDevices(GstElementFactory * factory) { QList<QByteArray> devices; - foreach (const CameraInfo &camera, enumerateCameras(factory)) + const auto cameras = enumerateCameras(factory); + devices.reserve(cameras.size()); + for (const CameraInfo &camera : cameras) devices.append(camera.name.toUtf8()); return devices; @@ -651,7 +653,8 @@ QList<QByteArray> QGstUtils::cameraDevices(GstElementFactory * factory) QString QGstUtils::cameraDescription(const QString &device, GstElementFactory * factory) { - foreach (const CameraInfo &camera, enumerateCameras(factory)) { + const auto cameras = enumerateCameras(factory); + for (const CameraInfo &camera : cameras) { if (camera.name == device) return camera.description; } @@ -660,7 +663,8 @@ QString QGstUtils::cameraDescription(const QString &device, GstElementFactory * QCamera::Position QGstUtils::cameraPosition(const QString &device, GstElementFactory * factory) { - foreach (const CameraInfo &camera, enumerateCameras(factory)) { + const auto cameras = enumerateCameras(factory); + for (const CameraInfo &camera : cameras) { if (camera.name == device) return camera.position; } @@ -669,7 +673,8 @@ QCamera::Position QGstUtils::cameraPosition(const QString &device, GstElementFac int QGstUtils::cameraOrientation(const QString &device, GstElementFactory * factory) { - foreach (const CameraInfo &camera, enumerateCameras(factory)) { + const auto cameras = enumerateCameras(factory); + for (const CameraInfo &camera : cameras) { if (camera.name == device) return camera.orientation; } @@ -678,7 +683,8 @@ int QGstUtils::cameraOrientation(const QString &device, GstElementFactory * fact QByteArray QGstUtils::cameraDriver(const QString &device, GstElementFactory *factory) { - foreach (const CameraInfo &camera, enumerateCameras(factory)) { + const auto cameras = enumerateCameras(factory); + for (const CameraInfo &camera : cameras) { if (camera.name == device) return camera.driver; } @@ -749,8 +755,8 @@ QSet<QString> QGstUtils::supportedMimeTypes(bool (*isValidFactory)(GstElementFac if (value) { gchar *str = gst_value_serialize(value); QString versions(str); - QStringList elements = versions.split(QRegExp("\\D+"), QString::SkipEmptyParts); - foreach (const QString &e, elements) + const QStringList elements = versions.split(QRegExp("\\D+"), QString::SkipEmptyParts); + for (const QString &e : elements) supportedMimeTypes.insert(nameLowcase + e); g_free(str); } @@ -768,7 +774,7 @@ QSet<QString> QGstUtils::supportedMimeTypes(bool (*isValidFactory)(GstElementFac QStringList list = supportedMimeTypes.toList(); list.sort(); if (qgetenv("QT_DEBUG_PLUGINS").toInt() > 0) { - foreach (const QString &type, list) + for (const QString &type : qAsConst(list)) qDebug() << type; } #endif @@ -1110,7 +1116,7 @@ GstCaps *QGstUtils::capsForFormats(const QList<QVideoFrame::PixelFormat> &format GstCaps *caps = gst_caps_new_empty(); #if GST_CHECK_VERSION(1,0,0) - foreach (QVideoFrame::PixelFormat format, formats) { + for (QVideoFrame::PixelFormat format : formats) { int index = indexOfVideoFormat(format); if (index != -1) { @@ -1121,7 +1127,7 @@ GstCaps *QGstUtils::capsForFormats(const QList<QVideoFrame::PixelFormat> &format } } #else - foreach (QVideoFrame::PixelFormat format, formats) { + for (QVideoFrame::PixelFormat format : formats) { int index = indexOfYuvColor(format); if (index != -1) { diff --git a/src/gsttools/qgstvideorenderersink.cpp b/src/gsttools/qgstvideorenderersink.cpp index 31ac94e86..8f71e4ac7 100644 --- a/src/gsttools/qgstvideorenderersink.cpp +++ b/src/gsttools/qgstvideorenderersink.cpp @@ -119,7 +119,8 @@ QVideoSurfaceGstDelegate::QVideoSurfaceGstDelegate(QAbstractVideoSurface *surfac , m_stop(false) , m_flush(false) { - foreach (QObject *instance, rendererLoader()->instances(QGstVideoRendererPluginKey)) { + const auto instances = rendererLoader()->instances(QGstVideoRendererPluginKey); + for (QObject *instance : instances) { QGstVideoRendererInterface* plugin = qobject_cast<QGstVideoRendererInterface*>(instance); if (QGstVideoRenderer *renderer = plugin ? plugin->createRenderer() : 0) m_renderers.append(renderer); @@ -369,7 +370,7 @@ void QVideoSurfaceGstDelegate::updateSupportedFormats() m_surfaceCaps = 0; } - foreach (QGstVideoRenderer *pool, m_renderers) { + for (QGstVideoRenderer *pool : qAsConst(m_renderers)) { if (GstCaps *caps = pool->getCaps(m_surface)) { if (gst_caps_is_empty(caps)) { gst_caps_unref(caps); diff --git a/src/gsttools/qvideosurfacegstsink.cpp b/src/gsttools/qvideosurfacegstsink.cpp index d59709723..2f61770ce 100644 --- a/src/gsttools/qvideosurfacegstsink.cpp +++ b/src/gsttools/qvideosurfacegstsink.cpp @@ -65,7 +65,8 @@ QVideoSurfaceGstDelegate::QVideoSurfaceGstDelegate( , m_startCanceled(false) { if (m_surface) { - foreach (QObject *instance, bufferPoolLoader()->instances(QGstBufferPoolPluginKey)) { + const auto instances = bufferPoolLoader()->instances(QGstBufferPoolPluginKey); + for (QObject *instance : instances) { QGstBufferPoolInterface* plugin = qobject_cast<QGstBufferPoolInterface*>(instance); if (plugin) { @@ -302,7 +303,7 @@ void QVideoSurfaceGstDelegate::queuedRender() void QVideoSurfaceGstDelegate::updateSupportedFormats() { QGstBufferPoolInterface *newPool = 0; - foreach (QGstBufferPoolInterface *pool, m_pools) { + for (QGstBufferPoolInterface *pool : qAsConst(m_pools)) { if (!m_surface->supportedPixelFormats(pool->handleType()).isEmpty()) { newPool = pool; break; @@ -503,7 +504,8 @@ GstCaps *QVideoSurfaceGstSink::get_caps(GstBaseSink *base) sink->delegate->poolMutex()->unlock(); supportedFormats = poolHandleFormats; - foreach (QVideoFrame::PixelFormat format, sink->delegate->supportedPixelFormats()) { + const auto supportedPixelFormats = sink->delegate->supportedPixelFormats(); + for (QVideoFrame::PixelFormat format : supportedPixelFormats) { if (!poolHandleFormats.contains(format)) supportedFormats.append(format); } diff --git a/src/imports/audioengine/audioengine.cpp b/src/imports/audioengine/audioengine.cpp index aa2d195c5..6dc0b83e7 100644 --- a/src/imports/audioengine/audioengine.cpp +++ b/src/imports/audioengine/audioengine.cpp @@ -45,6 +45,13 @@ #include "qdeclarative_audiosample_p.h" #include "qdeclarative_attenuationmodel_p.h" +static void initResources() +{ +#ifdef QT_STATIC + Q_INIT_RESOURCE(qmake_QtAudioEngine); +#endif +} + QT_BEGIN_NAMESPACE class QAudioEngineDeclarativeModule : public QQmlExtensionPlugin @@ -53,6 +60,7 @@ class QAudioEngineDeclarativeModule : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") public: + QAudioEngineDeclarativeModule(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtAudioEngine")); diff --git a/src/imports/audioengine/qaudioengine_openal_p.cpp b/src/imports/audioengine/qaudioengine_openal_p.cpp index 839a584c5..fd9b1da1f 100644 --- a/src/imports/audioengine/qaudioengine_openal_p.cpp +++ b/src/imports/audioengine/qaudioengine_openal_p.cpp @@ -235,15 +235,15 @@ QAudioEnginePrivate::~QAudioEnginePrivate() #ifdef DEBUG_AUDIOENGINE qDebug() << "QAudioEnginePrivate::dtor"; #endif - QObjectList children = this->children(); - foreach (QObject *child, children) { + const QObjectList children = this->children(); + for (QObject *child : children) { QSoundSourcePrivate* s = qobject_cast<QSoundSourcePrivate*>(child); if (!s) continue; s->release(); } - foreach (QSoundBufferPrivateAL *buffer, m_staticBufferPool) { + for (QSoundBufferPrivateAL *buffer : qAsConst(m_staticBufferPool)) { delete buffer; } m_staticBufferPool.clear(); diff --git a/src/imports/audioengine/qdeclarative_audioengine_p.cpp b/src/imports/audioengine/qdeclarative_audioengine_p.cpp index dd80c698d..78e759be2 100644 --- a/src/imports/audioengine/qdeclarative_audioengine_p.cpp +++ b/src/imports/audioengine/qdeclarative_audioengine_p.cpp @@ -247,7 +247,8 @@ void QDeclarativeAudioEngine::initSound(QDeclarativeSound *sound) } sound->setAttenuationModelObject(attenuationModel); - foreach (QDeclarativePlayVariation *playVariation, sound->playlist()) { + const auto playList = sound->playlist(); + for (QDeclarativePlayVariation *playVariation : playList) { if (m_samples.contains(playVariation->sample())) { playVariation->setSampleObject( qobject_cast<QDeclarativeAudioSample*>( @@ -454,7 +455,8 @@ void QDeclarativeAudioEngine::componentComplete() #ifdef DEBUG_AUDIOENGINE qDebug() << "init samples" << m_samples.keys().count(); #endif - foreach (const QString& key, m_samples.keys()) { + const auto samplesKeys = m_samples.keys(); + for (const QString& key : samplesKeys) { QDeclarativeAudioSample *sample = qobject_cast<QDeclarativeAudioSample*>( qvariant_cast<QObject*>(m_samples[key])); if (!sample) { @@ -468,7 +470,8 @@ void QDeclarativeAudioEngine::componentComplete() #ifdef DEBUG_AUDIOENGINE qDebug() << "init sounds" << m_sounds.keys().count(); #endif - foreach (const QString& key, m_sounds.keys()) { + const auto soundsKeys = m_sounds.keys(); + for (const QString& key : soundsKeys) { QDeclarativeSound *sound = qobject_cast<QDeclarativeSound*>( qvariant_cast<QObject*>(m_sounds[key])); @@ -504,7 +507,7 @@ void QDeclarativeAudioEngine::updateSoundInstances() } QVector3D listenerPosition = this->listener()->position(); - foreach (QSoundInstance *instance, m_activeSoundInstances) { + for (QSoundInstance *instance : qAsConst(m_activeSoundInstances)) { if (instance->state() == QSoundInstance::PlayingState && instance->attenuationEnabled()) { instance->update3DVolume(listenerPosition); diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp index 7d34672a1..a143d34fa 100644 --- a/src/imports/multimedia/multimedia.cpp +++ b/src/imports/multimedia/multimedia.cpp @@ -57,6 +57,13 @@ QML_DECLARE_TYPE(QSoundEffect) +static void initResources() +{ +#ifdef QT_STATIC + Q_INIT_RESOURCE(qmake_QtMultimedia); +#endif +} + QT_BEGIN_NAMESPACE static QObject *multimedia_global_object(QQmlEngine *qmlEngine, QJSEngine *jsEngine) @@ -71,6 +78,7 @@ class QMultimediaDeclarativeModule : public QQmlExtensionPlugin Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") public: + QMultimediaDeclarativeModule(QObject *parent = 0) : QQmlExtensionPlugin(parent) { initResources(); } virtual void registerTypes(const char *uri) { Q_ASSERT(QLatin1String(uri) == QLatin1String("QtMultimedia")); diff --git a/src/imports/multimedia/multimedia.pro b/src/imports/multimedia/multimedia.pro index 606fb3966..dabb0a4ba 100644 --- a/src/imports/multimedia/multimedia.pro +++ b/src/imports/multimedia/multimedia.pro @@ -1,3 +1,8 @@ +CXX_MODULE = multimedia +TARGET = declarative_multimedia +TARGETPATH = QtMultimedia +IMPORT_VERSION = 5.6 + QT += qml quick network multimedia-private qtmultimediaquicktools-private HEADERS += \ diff --git a/src/imports/multimedia/qdeclarativecamera.cpp b/src/imports/multimedia/qdeclarativecamera.cpp index eac1c0c9b..368b1f036 100644 --- a/src/imports/multimedia/qdeclarativecamera.cpp +++ b/src/imports/multimedia/qdeclarativecamera.cpp @@ -982,11 +982,11 @@ QJSValue QDeclarativeCamera::supportedViewfinderResolutions(qreal minimumFrameRa QCameraViewfinderSettings settings; settings.setMinimumFrameRate(minimumFrameRate); settings.setMaximumFrameRate(maximumFrameRate); - QList<QSize> resolutions = m_camera->supportedViewfinderResolutions(settings); + const QList<QSize> resolutions = m_camera->supportedViewfinderResolutions(settings); QJSValue supportedResolutions = engine->newArray(resolutions.count()); int i = 0; - Q_FOREACH (const QSize &resolution, resolutions) { + for (const QSize &resolution : resolutions) { QJSValue size = engine->newObject(); size.setProperty(QStringLiteral("width"), resolution.width()); size.setProperty(QStringLiteral("height"), resolution.height()); @@ -1024,11 +1024,11 @@ QJSValue QDeclarativeCamera::supportedViewfinderFrameRateRanges(const QJSValue & if (width.isNumber() && height.isNumber()) settings.setResolution(width.toInt(), height.toInt()); } - QList<QCamera::FrameRateRange> frameRateRanges = m_camera->supportedViewfinderFrameRateRanges(settings); + const QList<QCamera::FrameRateRange> frameRateRanges = m_camera->supportedViewfinderFrameRateRanges(settings); QJSValue supportedFrameRateRanges = engine->newArray(frameRateRanges.count()); int i = 0; - Q_FOREACH (const QCamera::FrameRateRange &frameRateRange, frameRateRanges) { + for (const QCamera::FrameRateRange &frameRateRange : frameRateRanges) { QJSValue range = engine->newObject(); range.setProperty(QStringLiteral("minimumFrameRate"), frameRateRange.minimumFrameRate); range.setProperty(QStringLiteral("maximumFrameRate"), frameRateRange.maximumFrameRate); diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp index de5aee85b..f6fbe9fc4 100644 --- a/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp +++ b/src/imports/multimedia/qdeclarativecameraimageprocessing.cpp @@ -138,6 +138,25 @@ void QDeclarativeCameraImageProcessing::setManualWhiteBalance(qreal colorTemp) c } /*! + \qmlproperty qreal QtMultimedia::CameraImageProcessing::brightness + + Image brightness adjustment. + Valid brightness adjustment values range between -1.0 and 1.0, with a default of 0. +*/ +qreal QDeclarativeCameraImageProcessing::brightness() const +{ + return m_imageProcessing->brightness(); +} + +void QDeclarativeCameraImageProcessing::setBrightness(qreal value) +{ + if (value != brightness()) { + m_imageProcessing->setBrightness(value); + emit brightnessChanged(brightness()); + } +} + +/*! \qmlproperty qreal QtMultimedia::CameraImageProcessing::contrast Image contrast adjustment. diff --git a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h index 0e0cbb230..2e6c942ef 100644 --- a/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h +++ b/src/imports/multimedia/qdeclarativecameraimageprocessing_p.h @@ -60,6 +60,7 @@ class QDeclarativeCameraImageProcessing : public QObject Q_PROPERTY(WhiteBalanceMode whiteBalanceMode READ whiteBalanceMode WRITE setWhiteBalanceMode NOTIFY whiteBalanceModeChanged) Q_PROPERTY(qreal manualWhiteBalance READ manualWhiteBalance WRITE setManualWhiteBalance NOTIFY manualWhiteBalanceChanged) + Q_PROPERTY(qreal brightness READ brightness WRITE setBrightness NOTIFY brightnessChanged) Q_PROPERTY(qreal contrast READ contrast WRITE setContrast NOTIFY contrastChanged) Q_PROPERTY(qreal saturation READ saturation WRITE setSaturation NOTIFY saturationChanged) Q_PROPERTY(qreal sharpeningLevel READ sharpeningLevel WRITE setSharpeningLevel NOTIFY sharpeningLevelChanged) @@ -97,6 +98,7 @@ public: WhiteBalanceMode whiteBalanceMode() const; qreal manualWhiteBalance() const; + qreal brightness() const; qreal contrast() const; qreal saturation() const; qreal sharpeningLevel() const; @@ -108,6 +110,7 @@ public Q_SLOTS: void setWhiteBalanceMode(QDeclarativeCameraImageProcessing::WhiteBalanceMode mode) const; void setManualWhiteBalance(qreal colorTemp) const; + void setBrightness(qreal value); void setContrast(qreal value); void setSaturation(qreal value); void setSharpeningLevel(qreal value); @@ -119,6 +122,7 @@ Q_SIGNALS: void whiteBalanceModeChanged(QDeclarativeCameraImageProcessing::WhiteBalanceMode) const; void manualWhiteBalanceChanged(qreal) const; + void brightnessChanged(qreal); void contrastChanged(qreal); void saturationChanged(qreal); void sharpeningLevelChanged(qreal); diff --git a/src/imports/multimedia/qdeclarativeplaylist.cpp b/src/imports/multimedia/qdeclarativeplaylist.cpp index bb785aa98..75be64b81 100644 --- a/src/imports/multimedia/qdeclarativeplaylist.cpp +++ b/src/imports/multimedia/qdeclarativeplaylist.cpp @@ -421,6 +421,29 @@ bool QDeclarativePlaylist::addItem(const QUrl &source) } /*! + \qmlmethod bool QtMultimedia::Playlist::addItems(sources) + + Appends the list of URLs in \a sources to the playlist. + + Returns true if the \a sources are added successfully. + + \since 5.7 +*/ +bool QDeclarativePlaylist::addItems(const QList<QUrl> &sources) +{ + if (sources.isEmpty()) + return false; + + QList<QMediaContent> contents; + QList<QUrl>::const_iterator it = sources.constBegin(); + while (it != sources.constEnd()) { + contents.push_back(QMediaContent(*it)); + ++it; + } + return m_playlist->addMedia(contents); +} + +/*! \qmlmethod bool QtMultimedia::Playlist::insertItem(index, source) Inserts the \a source URL to the playlist at the given \a index. @@ -433,6 +456,43 @@ bool QDeclarativePlaylist::insertItem(int index, const QUrl &source) } /*! + \qmlmethod bool QtMultimedia::Playlist::insertItems(index, sources) + + Inserts the list of URLs in \a sources to the playlist at the given \a index. + + Returns true if the \a sources are added successfully. + + \since 5.7 +*/ +bool QDeclarativePlaylist::insertItems(int index, const QList<QUrl> &sources) +{ + if (sources.empty()) + return false; + + QList<QMediaContent> contents; + QList<QUrl>::const_iterator it = sources.constBegin(); + while (it != sources.constEnd()) { + contents.push_back(QMediaContent(*it)); + ++it; + } + return m_playlist->insertMedia(index, contents); +} + +/*! + \qmlmethod bool QtMultimedia::Playlist::moveItem(from, to) + + Moves the item at index position \a from to index position \a to. + + Returns true if the item is moved successfully. + + \since 5.7 +*/ +bool QDeclarativePlaylist::moveItem(int from, int to) +{ + return m_playlist->moveMedia(from, to); +} + +/*! \qmlmethod bool QtMultimedia::Playlist::removeItem(index) Removed the item at the given \a index from the playlist. @@ -445,6 +505,20 @@ bool QDeclarativePlaylist::removeItem(int index) } /*! + \qmlmethod bool QtMultimedia::Playlist::removeItems(int start, int end) + + Removes items in the playlist from \a start to \end inclusive. + + Returns true if the items are removed successfully. + + \since 5.7 +*/ +bool QDeclarativePlaylist::removeItems(int start, int end) +{ + return m_playlist->removeMedia(start, end); +} + +/*! \qmlmethod bool QtMultimedia::Playlist::clear() Removes all the items from the playlist. diff --git a/src/imports/multimedia/qdeclarativeplaylist_p.h b/src/imports/multimedia/qdeclarativeplaylist_p.h index fd94135e6..66674ebb7 100644 --- a/src/imports/multimedia/qdeclarativeplaylist_p.h +++ b/src/imports/multimedia/qdeclarativeplaylist_p.h @@ -152,8 +152,12 @@ public Q_SLOTS: void load(const QUrl &location, const QString &format = QString()); bool save(const QUrl &location, const QString &format = QString()); bool addItem(const QUrl &source); + bool addItems(const QList<QUrl> &sources); bool insertItem(int index, const QUrl &source); + bool insertItems(int index, const QList<QUrl> &sources); + bool moveItem(int from, int to); bool removeItem(int index); + bool removeItems(int start, int end); bool clear(); Q_SIGNALS: diff --git a/src/multimedia/audio/qaudiodevicefactory.cpp b/src/multimedia/audio/qaudiodevicefactory.cpp index 19fa05e6e..bff3d6c37 100644 --- a/src/multimedia/audio/qaudiodevicefactory.cpp +++ b/src/multimedia/audio/qaudiodevicefactory.cpp @@ -119,10 +119,12 @@ QList<QAudioDeviceInfo> QAudioDeviceFactory::availableDevices(QAudio::Mode mode) QList<QAudioDeviceInfo> devices; #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) QMediaPluginLoader* l = audioLoader(); - foreach (const QString& key, l->keys()) { + const auto keys = l->keys(); + for (const QString& key : keys) { QAudioSystemFactoryInterface* plugin = qobject_cast<QAudioSystemFactoryInterface*>(l->instance(key)); if (plugin) { - foreach (QByteArray const& handle, plugin->availableDevices(mode)) + const auto availableDevices = plugin->availableDevices(mode); + for (const QByteArray& handle : availableDevices) devices << QAudioDeviceInfo(key, handle, mode); } } diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp index 33e198164..8cc32ac9b 100644 --- a/src/multimedia/audio/qaudiodeviceinfo.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo.cpp @@ -297,7 +297,7 @@ QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const if (sampleSizesAvailable.contains(settings.sampleSize())) testSampleSizes.insert(0,settings.sampleSize()); sampleSizesAvailable.removeAll(settings.sampleSize()); - foreach (int size, sampleSizesAvailable) { + for (int size : qAsConst(sampleSizesAvailable)) { int larger = (size > settings.sampleSize()) ? size : settings.sampleSize(); int smaller = (size > settings.sampleSize()) ? settings.sampleSize() : size; bool isMultiple = ( 0 == (larger % smaller)); @@ -307,7 +307,7 @@ QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const if (sampleRatesAvailable.contains(settings.sampleRate())) testSampleRates.insert(0,settings.sampleRate()); sampleRatesAvailable.removeAll(settings.sampleRate()); - foreach (int sampleRate, sampleRatesAvailable) { + for (int sampleRate : qAsConst(sampleRatesAvailable)) { int larger = (sampleRate > settings.sampleRate()) ? sampleRate : settings.sampleRate(); int smaller = (sampleRate > settings.sampleRate()) ? settings.sampleRate() : sampleRate; bool isMultiple = ( 0 == (larger % smaller)); @@ -316,17 +316,17 @@ QAudioFormat QAudioDeviceInfo::nearestFormat(const QAudioFormat &settings) const } // Try to find nearest - foreach (QString codec, testCodecs) { + for (const QString &codec : qAsConst(testCodecs)) { nearest.setCodec(codec); - foreach (QAudioFormat::Endian order, testByteOrders) { + for (QAudioFormat::Endian order : qAsConst(testByteOrders)) { nearest.setByteOrder(order); - foreach (QAudioFormat::SampleType sample, testSampleTypes) { + for (QAudioFormat::SampleType sample : qAsConst(testSampleTypes)) { nearest.setSampleType(sample); QMapIterator<int, int> sz(testSampleSizes); while (sz.hasNext()) { sz.next(); nearest.setSampleSize(sz.value()); - foreach (int channel, testChannels) { + for (int channel : qAsConst(testChannels)) { nearest.setChannelCount(channel); QMapIterator<int, int> i(testSampleRates); while (i.hasNext()) { diff --git a/src/multimedia/audio/qsamplecache_p.cpp b/src/multimedia/audio/qsamplecache_p.cpp index 8043b770c..23c970405 100644 --- a/src/multimedia/audio/qsamplecache_p.cpp +++ b/src/multimedia/audio/qsamplecache_p.cpp @@ -119,11 +119,12 @@ QSampleCache::~QSampleCache() // Killing the loading thread means that no samples can be // deleted using deleteLater. And some samples that had deleteLater // already called won't have been processed (m_staleSamples) - foreach (QSample* sample, m_samples) - delete sample; + for (auto it = m_samples.cbegin(), end = m_samples.cend(); it != end; ++it) + delete it.value(); - foreach (QSample* sample, m_staleSamples) - delete sample; // deleting a sample does affect the m_staleSamples list, but foreach copies it + const auto copyStaleSamples = m_staleSamples; //deleting a sample does affect the m_staleSamples list, but we create a copy + for (QSample* sample : copyStaleSamples) + delete sample; m_networkAccessManager->deleteLater(); } @@ -194,8 +195,9 @@ void QSampleCache::setCapacity(qint64 capacity) if (sample->m_ref == 0) { unloadSample(sample); it = m_samples.erase(it); - } else - it++; + } else { + ++it; + } } } diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index bec894b75..edda3cfbe 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -275,7 +275,7 @@ void QCameraPrivate::updateLockStatus() lockStatuses << q->lockStatus(QCamera::LockWhiteBalance); - foreach (QCamera::LockStatus currentStatus, lockStatuses) { + for (QCamera::LockStatus currentStatus : qAsConst(lockStatuses)) { int currentPriority = lockStatusPriority.value(currentStatus, -1); if (currentPriority > priority) { priority = currentPriority; @@ -655,8 +655,8 @@ QList<QCameraViewfinderSettings> QCamera::supportedViewfinderSettings(const QCam return d->viewfinderSettingsControl2->supportedViewfinderSettings(); QList<QCameraViewfinderSettings> results; - QList<QCameraViewfinderSettings> supported = d->viewfinderSettingsControl2->supportedViewfinderSettings(); - Q_FOREACH (const QCameraViewfinderSettings &s, supported) { + const QList<QCameraViewfinderSettings> supported = d->viewfinderSettingsControl2->supportedViewfinderSettings(); + for (const QCameraViewfinderSettings &s : supported) { if ((settings.resolution().isEmpty() || settings.resolution() == s.resolution()) && (qFuzzyIsNull(settings.minimumFrameRate()) || qFuzzyCompare((float)settings.minimumFrameRate(), (float)s.minimumFrameRate())) && (qFuzzyIsNull(settings.maximumFrameRate()) || qFuzzyCompare((float)settings.maximumFrameRate(), (float)s.maximumFrameRate())) @@ -687,8 +687,8 @@ QList<QCameraViewfinderSettings> QCamera::supportedViewfinderSettings(const QCam QList<QSize> QCamera::supportedViewfinderResolutions(const QCameraViewfinderSettings &settings) const { QList<QSize> resolutions; - QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); - Q_FOREACH (const QCameraViewfinderSettings &s, capabilities) { + const QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); + for (const QCameraViewfinderSettings &s : capabilities) { if (!resolutions.contains(s.resolution())) resolutions.append(s.resolution()); } @@ -716,8 +716,8 @@ QList<QSize> QCamera::supportedViewfinderResolutions(const QCameraViewfinderSett QList<QCamera::FrameRateRange> QCamera::supportedViewfinderFrameRateRanges(const QCameraViewfinderSettings &settings) const { QList<QCamera::FrameRateRange> frameRateRanges; - QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); - Q_FOREACH (const QCameraViewfinderSettings &s, capabilities) { + const QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); + for (const QCameraViewfinderSettings &s : capabilities) { QCamera::FrameRateRange range(s.minimumFrameRate(), s.maximumFrameRate()); if (!frameRateRanges.contains(range)) frameRateRanges.append(range); @@ -745,8 +745,8 @@ QList<QCamera::FrameRateRange> QCamera::supportedViewfinderFrameRateRanges(const QList<QVideoFrame::PixelFormat> QCamera::supportedViewfinderPixelFormats(const QCameraViewfinderSettings &settings) const { QList<QVideoFrame::PixelFormat> pixelFormats; - QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); - Q_FOREACH (const QCameraViewfinderSettings &s, capabilities) { + const QList<QCameraViewfinderSettings> capabilities = supportedViewfinderSettings(settings); + for (const QCameraViewfinderSettings &s : capabilities) { if (!pixelFormats.contains(s.pixelFormat())) pixelFormats.append(s.pixelFormat()); } diff --git a/src/multimedia/camera/qcameraexposure.cpp b/src/multimedia/camera/qcameraexposure.cpp index 5bbce4465..3c5b1cb08 100644 --- a/src/multimedia/camera/qcameraexposure.cpp +++ b/src/multimedia/camera/qcameraexposure.cpp @@ -401,8 +401,8 @@ QList<int> QCameraExposure::supportedIsoSensitivities(bool *continuous) const if (!control) return res; - foreach (const QVariant &value, - control->supportedParameterRange(QCameraExposureControl::ISO, continuous)) { + const auto range = control->supportedParameterRange(QCameraExposureControl::ISO, continuous); + for (const QVariant &value : range) { bool ok = false; int intValue = value.toInt(&ok); if (ok) @@ -497,8 +497,8 @@ QList<qreal> QCameraExposure::supportedApertures(bool * continuous) const if (!control) return res; - foreach (const QVariant &value, - control->supportedParameterRange(QCameraExposureControl::Aperture, continuous)) { + const auto range = control->supportedParameterRange(QCameraExposureControl::Aperture, continuous); + for (const QVariant &value : range) { bool ok = false; qreal realValue = value.toReal(&ok); if (ok) @@ -566,8 +566,8 @@ QList<qreal> QCameraExposure::supportedShutterSpeeds(bool *continuous) const if (!control) return res; - foreach (const QVariant &value, - control->supportedParameterRange(QCameraExposureControl::ShutterSpeed, continuous)) { + const auto range = control->supportedParameterRange(QCameraExposureControl::ShutterSpeed, continuous); + for (const QVariant &value : range) { bool ok = false; qreal realValue = value.toReal(&ok); if (ok) diff --git a/src/multimedia/camera/qcameraimageprocessing.cpp b/src/multimedia/camera/qcameraimageprocessing.cpp index 4ce3759e4..f2fd73949 100644 --- a/src/multimedia/camera/qcameraimageprocessing.cpp +++ b/src/multimedia/camera/qcameraimageprocessing.cpp @@ -220,6 +220,25 @@ void QCameraImageProcessing::setManualWhiteBalance(qreal colorTemperature) } /*! + Returns the brightness adjustment setting. + */ +qreal QCameraImageProcessing::brightness() const +{ + return d_func()->imageControl->parameter(QCameraImageProcessingControl::BrightnessAdjustment).toReal(); +} + +/*! + Set the brightness adjustment to \a value. + + Valid brightness adjustment values range between -1.0 and 1.0, with a default of 0. + */ +void QCameraImageProcessing::setBrightness(qreal value) +{ + d_func()->imageControl->setParameter(QCameraImageProcessingControl::BrightnessAdjustment, + QVariant(value)); +} + +/*! Returns the contrast adjustment setting. */ qreal QCameraImageProcessing::contrast() const diff --git a/src/multimedia/camera/qcameraimageprocessing.h b/src/multimedia/camera/qcameraimageprocessing.h index 2247b33f7..77e28eab1 100644 --- a/src/multimedia/camera/qcameraimageprocessing.h +++ b/src/multimedia/camera/qcameraimageprocessing.h @@ -91,6 +91,9 @@ public: qreal manualWhiteBalance() const; void setManualWhiteBalance(qreal colorTemperature); + qreal brightness() const; + void setBrightness(qreal value); + qreal contrast() const; void setContrast(qreal value); diff --git a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp index 88c253494..d7630640c 100644 --- a/src/multimedia/playback/qmedianetworkplaylistprovider.cpp +++ b/src/multimedia/playback/qmedianetworkplaylistprovider.cpp @@ -198,6 +198,16 @@ bool QMediaNetworkPlaylistProvider::insertMedia(int pos, const QList<QMediaConte return true; } +bool QMediaNetworkPlaylistProvider::moveMedia(int from, int to) +{ + Q_D(QMediaNetworkPlaylistProvider); + + Q_UNUSED(from); + Q_UNUSED(to); + + return true; +} + bool QMediaNetworkPlaylistProvider::removeMedia(int fromPos, int toPos) { Q_D(QMediaNetworkPlaylistProvider); diff --git a/src/multimedia/playback/qmedianetworkplaylistprovider_p.h b/src/multimedia/playback/qmedianetworkplaylistprovider_p.h index 84e34c7ce..6fbdfe59b 100644 --- a/src/multimedia/playback/qmedianetworkplaylistprovider_p.h +++ b/src/multimedia/playback/qmedianetworkplaylistprovider_p.h @@ -69,6 +69,7 @@ public: virtual bool addMedia(const QList<QMediaContent> &items); virtual bool insertMedia(int pos, const QMediaContent &content); virtual bool insertMedia(int pos, const QList<QMediaContent> &items); + virtual bool moveMedia(int from, int to); virtual bool removeMedia(int pos); virtual bool removeMedia(int start, int end); virtual bool clear(); diff --git a/src/multimedia/playback/qmediaplaylist.cpp b/src/multimedia/playback/qmediaplaylist.cpp index c63340637..f863c78d9 100644 --- a/src/multimedia/playback/qmediaplaylist.cpp +++ b/src/multimedia/playback/qmediaplaylist.cpp @@ -386,6 +386,20 @@ bool QMediaPlaylist::insertMedia(int pos, const QList<QMediaContent> &items) } /*! + Move the item from position \a from to position \a to. + + Returns true if the operation is successful, otherwise false. + + \since 5.7 +*/ +bool QMediaPlaylist::moveMedia(int from, int to) +{ + QMediaPlaylistProvider *playlist = d_func()->playlist(); + return playlist->moveMedia(qBound(0, from, playlist->mediaCount()), + qBound(0, to, playlist->mediaCount())); +} + +/*! Remove the item from the playlist at position \a pos. Returns true if the operation is successful, otherwise return false. @@ -517,7 +531,8 @@ void QMediaPlaylist::load(const QNetworkRequest &request, const char *format) return; } - foreach (QString const& key, playlistIOLoader()->keys()) { + const auto keys = playlistIOLoader()->keys(); + for (QString const& key : keys) { QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key)); if (plugin && plugin->canRead(request.url(), format)) { QMediaPlaylistReader *reader = plugin->createReader(request.url(), QByteArray(format)); @@ -578,7 +593,8 @@ void QMediaPlaylist::load(QIODevice * device, const char *format) return; } - foreach (QString const& key, playlistIOLoader()->keys()) { + const auto keys = playlistIOLoader()->keys(); + for (QString const& key : keys) { QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key)); if (plugin && plugin->canRead(device,format)) { QMediaPlaylistReader *reader = plugin->createReader(device,QByteArray(format)); @@ -640,7 +656,8 @@ bool QMediaPlaylist::save(QIODevice * device, const char *format) if (d->playlist()->save(device,format)) return true; - foreach (QString const& key, playlistIOLoader()->keys()) { + const auto keys = playlistIOLoader()->keys(); + for (QString const& key : keys) { QMediaPlaylistIOInterface* plugin = qobject_cast<QMediaPlaylistIOInterface*>(playlistIOLoader()->instance(key)); if (plugin && plugin->canWrite(device,format)) { QMediaPlaylistWriter *writer = plugin->createWriter(device,QByteArray(format)); diff --git a/src/multimedia/playback/qmediaplaylist.h b/src/multimedia/playback/qmediaplaylist.h index 1388ac10f..e076877b7 100644 --- a/src/multimedia/playback/qmediaplaylist.h +++ b/src/multimedia/playback/qmediaplaylist.h @@ -85,6 +85,7 @@ public: bool addMedia(const QList<QMediaContent> &items); bool insertMedia(int index, const QMediaContent &content); bool insertMedia(int index, const QList<QMediaContent> &items); + bool moveMedia(int from, int to); bool removeMedia(int pos); bool removeMedia(int start, int end); bool clear(); diff --git a/src/multimedia/playback/qmediaplaylistprovider.cpp b/src/multimedia/playback/qmediaplaylistprovider.cpp index fc3619ff3..ecdf2330e 100644 --- a/src/multimedia/playback/qmediaplaylistprovider.cpp +++ b/src/multimedia/playback/qmediaplaylistprovider.cpp @@ -172,7 +172,7 @@ bool QMediaPlaylistProvider::addMedia(const QMediaContent &media) */ bool QMediaPlaylistProvider::addMedia(const QList<QMediaContent> &items) { - foreach(const QMediaContent &item, items) { + for (const QMediaContent &item : items) { if (!addMedia(item)) return false; } @@ -207,6 +207,20 @@ bool QMediaPlaylistProvider::insertMedia(int position, const QList<QMediaContent return true; } +/*! + Move the media from position \a from to position \a to. + + Returns true if the operation is successful, otherwise false. + + \since 5.7 +*/ +bool QMediaPlaylistProvider::moveMedia(int from, int to) +{ + Q_UNUSED(from); + Q_UNUSED(to); + + return false; +} /*! Removes the media at \a position from a playlist. diff --git a/src/multimedia/playback/qmediaplaylistprovider_p.h b/src/multimedia/playback/qmediaplaylistprovider_p.h index 57436d30e..94b59186b 100644 --- a/src/multimedia/playback/qmediaplaylistprovider_p.h +++ b/src/multimedia/playback/qmediaplaylistprovider_p.h @@ -81,6 +81,7 @@ public: virtual bool addMedia(const QList<QMediaContent> &contentList); virtual bool insertMedia(int index, const QMediaContent &content); virtual bool insertMedia(int index, const QList<QMediaContent> &content); + virtual bool moveMedia(int from, int to); virtual bool removeMedia(int pos); virtual bool removeMedia(int start, int end); virtual bool clear(); diff --git a/src/multimedia/playback/qmediaresource.cpp b/src/multimedia/playback/qmediaresource.cpp index 955837d2c..0813ab82e 100644 --- a/src/multimedia/playback/qmediaresource.cpp +++ b/src/multimedia/playback/qmediaresource.cpp @@ -145,14 +145,14 @@ QMediaResource::~QMediaResource() bool QMediaResource::operator ==(const QMediaResource &other) const { // Compare requests directly as QNetworkRequests are "custom types". - foreach (int key, values.keys()) { - switch (key) { + for (auto it = values.cbegin(), end = values.cend(); it != end; ++it) { + switch (it.key()) { case Request: if (request() != other.request()) return false; break; default: - if (values.value(key) != other.values.value(key)) + if (it.value() != other.values.value(it.key())) return false; } } diff --git a/src/multimedia/qmediaobject.cpp b/src/multimedia/qmediaobject.cpp index 4b5f86cf9..2b1edb437 100644 --- a/src/multimedia/qmediaobject.cpp +++ b/src/multimedia/qmediaobject.cpp @@ -49,7 +49,7 @@ void QMediaObjectPrivate::_q_notify() const QMetaObject* m = q->metaObject(); - foreach (int pi, notifyProperties) { + for (int pi : qAsConst(notifyProperties)) { QMetaProperty p = m->property(pi); p.notifySignal().invoke( q, QGenericArgument(QMetaType::typeName(p.userType()), p.read(q).data())); diff --git a/src/multimedia/qmediapluginloader.cpp b/src/multimedia/qmediapluginloader.cpp index febadb1b8..679217318 100644 --- a/src/multimedia/qmediapluginloader.cpp +++ b/src/multimedia/qmediapluginloader.cpp @@ -77,7 +77,8 @@ QList<QObject*> QMediaPluginLoader::instances(QString const &key) return QList<QObject*>(); QList<QObject *> objects; - foreach (QJsonObject jsonobj, m_metadata.value(key)) { + const auto list = m_metadata.value(key); + for (const QJsonObject &jsonobj : list) { int idx = jsonobj.value(QStringLiteral("index")).toDouble(); if (idx < 0) continue; @@ -125,7 +126,7 @@ void QMediaPluginLoader::loadMetadata() if (arr.isEmpty()) arr = jsonobj.value(QStringLiteral("Keys")).toArray(); - foreach (QJsonValue value, arr) { + for (const QJsonValue &value : qAsConst(arr)) { QString key = value.toString(); if (!m_metadata.contains(key)) { diff --git a/src/multimedia/qmediaserviceprovider.cpp b/src/multimedia/qmediaserviceprovider.cpp index 38d31eac2..c3a91db7e 100644 --- a/src/multimedia/qmediaserviceprovider.cpp +++ b/src/multimedia/qmediaserviceprovider.cpp @@ -314,7 +314,8 @@ public: QString key(QLatin1String(type.constData())); QList<QMediaServiceProviderPlugin *>plugins; - foreach (QObject *obj, loader()->instances(key)) { + const auto instances = loader()->instances(key); + for (QObject *obj : instances) { QMediaServiceProviderPlugin *plugin = qobject_cast<QMediaServiceProviderPlugin*>(obj); if (plugin) @@ -331,7 +332,7 @@ public: //prefer services not offering it, since they are likely to support //more formats if (type == QByteArray(Q_MEDIASERVICE_MEDIAPLAYER)) { - foreach (QMediaServiceProviderPlugin *currentPlugin, plugins) { + for (QMediaServiceProviderPlugin *currentPlugin : qAsConst(plugins)) { QMediaServiceFeaturesInterface *iface = qobject_cast<QMediaServiceFeaturesInterface*>(currentPlugin); @@ -346,7 +347,7 @@ public: break; case QMediaServiceProviderHint::SupportedFeatures: plugin = plugins[0]; - foreach (QMediaServiceProviderPlugin *currentPlugin, plugins) { + for (QMediaServiceProviderPlugin *currentPlugin : qAsConst(plugins)) { QMediaServiceFeaturesInterface *iface = qobject_cast<QMediaServiceFeaturesInterface*>(currentPlugin); @@ -360,7 +361,7 @@ public: break; case QMediaServiceProviderHint::Device: { plugin = plugins[0]; - foreach (QMediaServiceProviderPlugin *currentPlugin, plugins) { + for (QMediaServiceProviderPlugin *currentPlugin : qAsConst(plugins)) { QMediaServiceSupportedDevicesInterface *iface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(currentPlugin); @@ -375,7 +376,7 @@ public: plugin = plugins[0]; if (type == QByteArray(Q_MEDIASERVICE_CAMERA) && hint.cameraPosition() != QCamera::UnspecifiedPosition) { - foreach (QMediaServiceProviderPlugin *currentPlugin, plugins) { + for (QMediaServiceProviderPlugin *currentPlugin : qAsConst(plugins)) { const QMediaServiceSupportedDevicesInterface *deviceIface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(currentPlugin); const QMediaServiceCameraInfoInterface *cameraIface = @@ -383,7 +384,7 @@ public: if (deviceIface && cameraIface) { const QList<QByteArray> cameras = deviceIface->devices(type); - foreach (const QByteArray &camera, cameras) { + for (const QByteArray &camera : cameras) { if (cameraIface->cameraPosition(camera) == hint.cameraPosition()) { plugin = currentPlugin; break; @@ -396,7 +397,7 @@ public: break; case QMediaServiceProviderHint::ContentType: { QMultimedia::SupportEstimate estimate = QMultimedia::NotSupported; - foreach (QMediaServiceProviderPlugin *currentPlugin, plugins) { + for (QMediaServiceProviderPlugin *currentPlugin : qAsConst(plugins)) { QMultimedia::SupportEstimate currentEstimate = QMultimedia::MaybeSupported; QMediaServiceSupportedFormatsInterface *iface = qobject_cast<QMediaServiceSupportedFormatsInterface*>(currentPlugin); @@ -465,7 +466,7 @@ public: const QStringList& codecs, int flags) const { - QList<QObject*> instances = loader()->instances(QLatin1String(serviceType)); + const QList<QObject*> instances = loader()->instances(QLatin1String(serviceType)); if (instances.isEmpty()) return QMultimedia::NotSupported; @@ -473,7 +474,7 @@ public: bool allServicesProvideInterface = true; QMultimedia::SupportEstimate supportEstimate = QMultimedia::NotSupported; - foreach(QObject *obj, instances) { + for (QObject *obj : instances) { QMediaServiceSupportedFormatsInterface *iface = qobject_cast<QMediaServiceSupportedFormatsInterface*>(obj); @@ -517,11 +518,11 @@ public: QStringList supportedMimeTypes(const QByteArray &serviceType, int flags) const { - QList<QObject*> instances = loader()->instances(QLatin1String(serviceType)); + const QList<QObject*> instances = loader()->instances(QLatin1String(serviceType)); QStringList supportedTypes; - foreach(QObject *obj, instances) { + for (QObject *obj : instances) { QMediaServiceSupportedFormatsInterface *iface = qobject_cast<QMediaServiceSupportedFormatsInterface*>(obj); @@ -564,7 +565,8 @@ public: QByteArray defaultDevice(const QByteArray &serviceType) const { - foreach (QObject *obj, loader()->instances(QLatin1String(serviceType))) { + const auto instances = loader()->instances(QLatin1String(serviceType)); + for (QObject *obj : instances) { const QMediaServiceDefaultDeviceInterface *iface = qobject_cast<QMediaServiceDefaultDeviceInterface*>(obj); @@ -585,7 +587,8 @@ public: { QList<QByteArray> res; - foreach (QObject *obj, loader()->instances(QLatin1String(serviceType))) { + const auto instances = loader()->instances(QLatin1String(serviceType)); + for (QObject *obj : instances) { QMediaServiceSupportedDevicesInterface *iface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(obj); @@ -599,7 +602,8 @@ public: QString deviceDescription(const QByteArray &serviceType, const QByteArray &device) { - foreach (QObject *obj, loader()->instances(QLatin1String(serviceType))) { + const auto instances = loader()->instances(QLatin1String(serviceType)); + for (QObject *obj : instances) { QMediaServiceSupportedDevicesInterface *iface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(obj); @@ -615,7 +619,8 @@ public: QCamera::Position cameraPosition(const QByteArray &device) const { const QByteArray serviceType(Q_MEDIASERVICE_CAMERA); - foreach (QObject *obj, loader()->instances(QString::fromLatin1(serviceType))) { + const auto instances = loader()->instances(QString::fromLatin1(serviceType)); + for (QObject *obj : instances) { const QMediaServiceSupportedDevicesInterface *deviceIface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(obj); const QMediaServiceCameraInfoInterface *cameraIface = @@ -634,7 +639,8 @@ public: int cameraOrientation(const QByteArray &device) const { const QByteArray serviceType(Q_MEDIASERVICE_CAMERA); - foreach (QObject *obj, loader()->instances(QString::fromLatin1(serviceType))) { + const auto instances = loader()->instances(QString::fromLatin1(serviceType)); + for (QObject *obj : instances) { const QMediaServiceSupportedDevicesInterface *deviceIface = qobject_cast<QMediaServiceSupportedDevicesInterface*>(obj); const QMediaServiceCameraInfoInterface *cameraIface = diff --git a/src/multimedia/qmediastoragelocation.cpp b/src/multimedia/qmediastoragelocation.cpp index 8a6baa1a2..85aa1ba63 100644 --- a/src/multimedia/qmediastoragelocation.cpp +++ b/src/multimedia/qmediastoragelocation.cpp @@ -69,7 +69,7 @@ QDir QMediaStorageLocation::defaultLocation(MediaType type) const dirCandidates << QDir::currentPath(); dirCandidates << QDir::tempPath(); - Q_FOREACH (const QString &path, dirCandidates) { + for (const QString &path : qAsConst(dirCandidates)) { if (QFileInfo(path).isWritable()) return QDir(path); } @@ -110,7 +110,8 @@ QString QMediaStorageLocation::generateFileName(const QString &prefix, if (lastMediaIndex == 0) { // first run, find the maximum media number during the fist capture - Q_FOREACH (const QString &fileName, dir.entryList(QStringList() << QString(QLatin1String("%1*.%2")).arg(prefix).arg(extension))) { + const auto list = dir.entryList(QStringList() << QString(QLatin1String("%1*.%2")).arg(prefix).arg(extension)); + for (const QString &fileName : list) { const qint64 mediaIndex = fileName.midRef(prefix.length(), fileName.size() - prefix.length() - extension.length() - 1).toInt(); lastMediaIndex = qMax(lastMediaIndex, mediaIndex); } diff --git a/src/multimedia/qmediatimerange.cpp b/src/multimedia/qmediatimerange.cpp index b30ee0439..30535b160 100644 --- a/src/multimedia/qmediatimerange.cpp +++ b/src/multimedia/qmediatimerange.cpp @@ -488,7 +488,8 @@ void QMediaTimeRange::addInterval(const QMediaTimeInterval &interval) */ void QMediaTimeRange::addTimeRange(const QMediaTimeRange &range) { - foreach(const QMediaTimeInterval &i, range.intervals()) { + const auto intervals = range.intervals(); + for (const QMediaTimeInterval &i : intervals) { d->addInterval(i); } } @@ -537,7 +538,8 @@ void QMediaTimeRange::removeInterval(const QMediaTimeInterval &interval) */ void QMediaTimeRange::removeTimeRange(const QMediaTimeRange &range) { - foreach(const QMediaTimeInterval &i, range.intervals()) { + const auto intervals = range.intervals(); + for (const QMediaTimeInterval &i : intervals) { d->removeInterval(i); } } @@ -708,7 +710,8 @@ QDebug operator<<(QDebug dbg, const QMediaTimeRange &range) QDebugStateSaver saver(dbg); dbg.nospace(); dbg << "QMediaTimeRange( "; - foreach (const QMediaTimeInterval &interval, range.intervals()) + const auto intervals = range.intervals(); + for (const QMediaTimeInterval &interval : intervals) dbg << '(' << interval.start() << ", " << interval.end() << ") "; dbg.space(); dbg << ')'; diff --git a/src/multimedia/video/qvideosurfaceformat.cpp b/src/multimedia/video/qvideosurfaceformat.cpp index df6cbcfc1..bbc58054a 100644 --- a/src/multimedia/video/qvideosurfaceformat.cpp +++ b/src/multimedia/video/qvideosurfaceformat.cpp @@ -632,7 +632,8 @@ QDebug operator<<(QDebug dbg, const QVideoSurfaceFormat &f) << ", handleType=" << f.handleType() << ", yCbCrColorSpace=" << f.yCbCrColorSpace() << ')'; - foreach(const QByteArray& propertyName, f.propertyNames()) + const auto propertyNames = f.propertyNames(); + for (const QByteArray& propertyName : propertyNames) dbg << "\n " << propertyName.data() << " = " << f.property(propertyName.data()); return dbg; diff --git a/src/multimediawidgets/qgraphicsvideoitem_maemo6.cpp b/src/multimediawidgets/qgraphicsvideoitem_maemo6.cpp index 894025703..39ab39221 100644 --- a/src/multimediawidgets/qgraphicsvideoitem_maemo6.cpp +++ b/src/multimediawidgets/qgraphicsvideoitem_maemo6.cpp @@ -432,8 +432,8 @@ void QGraphicsVideoItem::paint( bool obscured = false; if (scene()) { - foreach (QGraphicsItem *item, - scene()->items(mapToScene(boundingRect()), Qt::IntersectsItemBoundingRect) ) { + const auto items = scene()->items(mapToScene(boundingRect()), Qt::IntersectsItemBoundingRect); + for (QGraphicsItem *item : items) { if (item->flags() & QGraphicsItem::ItemHasNoContents) continue; diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp index 7b065c8c4..eec31e65e 100644 --- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp +++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp @@ -588,7 +588,7 @@ void QAndroidCameraSession::onNewPreviewFrame(const QVideoFrame &frame) { m_videoProbesMutex.lock(); - foreach (QAndroidMediaVideoProbeControl *probe, m_videoProbes) + for (QAndroidMediaVideoProbeControl *probe : qAsConst(m_videoProbes)) probe->newFrameProbed(frame); if (m_previewCallback) diff --git a/src/plugins/audiocapture/audiocapturesession.cpp b/src/plugins/audiocapture/audiocapturesession.cpp index 1b183db26..07f709e01 100644 --- a/src/plugins/audiocapture/audiocapturesession.cpp +++ b/src/plugins/audiocapture/audiocapturesession.cpp @@ -74,7 +74,7 @@ qint64 FileProbeProxy::writeData(const char *data, qint64 len) if (m_format.isValid()) { QMutexLocker locker(&m_probeMutex); - foreach (AudioCaptureProbeControl* probe, m_probes) + for (AudioCaptureProbeControl* probe : qAsConst(m_probes)) probe->bufferProbed(data, len, m_format); } @@ -210,7 +210,7 @@ QDir AudioCaptureSession::defaultDir() const dirCandidates << QDir::currentPath(); dirCandidates << QDir::tempPath(); - foreach (const QString &path, dirCandidates) { + for (const QString &path : qAsConst(dirCandidates)) { QDir dir(path); if (dir.exists() && QFileInfo(path).isWritable()) return dir; @@ -243,7 +243,8 @@ QString AudioCaptureSession::generateFileName(const QDir &dir, const QString &ext) const { int lastClip = 0; - foreach(QString fileName, dir.entryList(QStringList() << QString("clip_*.%1").arg(ext))) { + const auto list = dir.entryList(QStringList() << QString("clip_*.%1").arg(ext)); + for (const QString &fileName : list) { int imgNumber = fileName.midRef(5, fileName.size()-6-ext.length()).toInt(); lastClip = qMax(lastClip, imgNumber); } diff --git a/src/plugins/avfoundation/avfoundation.pro b/src/plugins/avfoundation/avfoundation.pro index c05331d20..1110e196b 100644 --- a/src/plugins/avfoundation/avfoundation.pro +++ b/src/plugins/avfoundation/avfoundation.pro @@ -1,4 +1,4 @@ TEMPLATE = subdirs -SUBDIRS += mediaplayer \ - camera +SUBDIRS += mediaplayer +!tvos: SUBDIRS += camera diff --git a/src/plugins/avfoundation/camera/avfcameraserviceplugin.mm b/src/plugins/avfoundation/camera/avfcameraserviceplugin.mm index bf2f4a24b..f450c35c7 100644 --- a/src/plugins/avfoundation/camera/avfcameraserviceplugin.mm +++ b/src/plugins/avfoundation/camera/avfcameraserviceplugin.mm @@ -78,7 +78,8 @@ QList<QByteArray> AVFServicePlugin::devices(const QByteArray &service) const if (service == Q_MEDIASERVICE_CAMERA) { const QList<AVFCameraInfo> &cameras = AVFCameraSession::availableCameraDevices(); - Q_FOREACH (const AVFCameraInfo &info, cameras) + devs.reserve(cameras.size()); + for (const AVFCameraInfo &info : cameras) devs.append(info.deviceId); } diff --git a/src/plugins/avfoundation/camera/avfcamerasession.mm b/src/plugins/avfoundation/camera/avfcamerasession.mm index 993e28319..e0f18c114 100644 --- a/src/plugins/avfoundation/camera/avfcamerasession.mm +++ b/src/plugins/avfoundation/camera/avfcamerasession.mm @@ -179,7 +179,7 @@ AVFCameraInfo AVFCameraSession::cameraDeviceInfo(const QByteArray &device) { updateCameraDevices(); - Q_FOREACH (const AVFCameraInfo &info, m_cameraDevices) { + for (const AVFCameraInfo &info : qAsConst(m_cameraDevices)) { if (info.deviceId == device) return info; } diff --git a/src/plugins/avfoundation/camera/avfstoragelocation.mm b/src/plugins/avfoundation/camera/avfstoragelocation.mm index 3bb62ed93..5f3aef490 100644 --- a/src/plugins/avfoundation/camera/avfstoragelocation.mm +++ b/src/plugins/avfoundation/camera/avfstoragelocation.mm @@ -81,7 +81,7 @@ QDir AVFStorageLocation::defaultDir(QCamera::CaptureMode mode) const dirCandidates << QDir::currentPath(); dirCandidates << QDir::tempPath(); - Q_FOREACH (const QString &path, dirCandidates) { + for (const QString &path : qAsConst(dirCandidates)) { if (QFileInfo(path).isWritable()) return QDir(path); } @@ -96,7 +96,8 @@ QString AVFStorageLocation::generateFileName(const QString &prefix, const QDir & if (lastClip == 0) { //first run, find the maximum clip number during the fist capture - Q_FOREACH (const QString &fileName, dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(ext))) { + const auto list = dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(ext)); + for (const QString &fileName : list) { int imgNumber = fileName.midRef(prefix.length(), fileName.size()-prefix.length()-ext.length()-1).toInt(); lastClip = qMax(lastClip, imgNumber); } diff --git a/src/plugins/avfoundation/mediaplayer/avfdisplaylink.h b/src/plugins/avfoundation/mediaplayer/avfdisplaylink.h index 6e00ee80d..79dfb5165 100644 --- a/src/plugins/avfoundation/mediaplayer/avfdisplaylink.h +++ b/src/plugins/avfoundation/mediaplayer/avfdisplaylink.h @@ -37,7 +37,7 @@ #include <QtCore/qobject.h> #include <QtCore/qmutex.h> -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) #include <CoreVideo/CVBase.h> #else #include <QuartzCore/CVDisplayLink.h> @@ -68,7 +68,7 @@ protected: virtual bool event(QEvent *); private: -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) void *m_displayLink; #else CVDisplayLinkRef m_displayLink; diff --git a/src/plugins/avfoundation/mediaplayer/avfdisplaylink.mm b/src/plugins/avfoundation/mediaplayer/avfdisplaylink.mm index 47b6b8324..d2ce841fa 100644 --- a/src/plugins/avfoundation/mediaplayer/avfdisplaylink.mm +++ b/src/plugins/avfoundation/mediaplayer/avfdisplaylink.mm @@ -38,7 +38,7 @@ #include <QtCore/qdebug.h> #endif -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) #import <QuartzCore/CADisplayLink.h> #import <Foundation/NSRunLoop.h> #define _m_displayLink static_cast<DisplayLinkObserver*>(m_displayLink) @@ -47,7 +47,7 @@ QT_USE_NAMESPACE -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) @interface DisplayLinkObserver : NSObject { AVFDisplayLink *m_avfDisplayLink; @@ -127,7 +127,7 @@ AVFDisplayLink::AVFDisplayLink(QObject *parent) , m_pendingDisplayLinkEvent(false) , m_isActive(false) { -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) m_displayLink = [[DisplayLinkObserver alloc] initWithAVFDisplayLink:this]; #else // create display link for the main display @@ -150,7 +150,7 @@ AVFDisplayLink::~AVFDisplayLink() if (m_displayLink) { stop(); -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) [_m_displayLink release]; #else CVDisplayLinkRelease(m_displayLink); @@ -172,7 +172,7 @@ bool AVFDisplayLink::isActive() const void AVFDisplayLink::start() { if (m_displayLink && !m_isActive) { -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) [_m_displayLink start]; #else CVDisplayLinkStart(m_displayLink); @@ -184,7 +184,7 @@ void AVFDisplayLink::start() void AVFDisplayLink::stop() { if (m_displayLink && m_isActive) { -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) [_m_displayLink stop]; #else CVDisplayLinkStop(m_displayLink); @@ -202,7 +202,7 @@ void AVFDisplayLink::displayLinkEvent(const CVTimeStamp *ts) m_displayLinkMutex.lock(); bool pending = m_pendingDisplayLinkEvent; m_pendingDisplayLinkEvent = true; -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) Q_UNUSED(ts); memset(&m_frameTimeStamp, 0, sizeof(CVTimeStamp)); #else diff --git a/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm b/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm index 4049ea6e4..62b4d5d29 100644 --- a/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm +++ b/src/plugins/avfoundation/mediaplayer/avfmediaplayerservice.mm @@ -62,7 +62,7 @@ AVFMediaPlayerService::AVFMediaPlayerService(QObject *parent) // AVPlayerItemVideoOutput is available in SDK #if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_10_8, __IPHONE_6_0) // might not be available at runtime - #if defined(Q_OS_IOS) + #if defined(Q_OS_IOS) || defined(Q_OS_TVOS) m_enableRenderControl = [AVPlayerItemVideoOutput class] != 0; #endif #endif diff --git a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.h b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.h index a46026f54..0fc091af9 100644 --- a/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.h +++ b/src/plugins/avfoundation/mediaplayer/avfvideoframerenderer_ios.h @@ -53,7 +53,7 @@ class QAbstractVideoSurface; typedef struct __CVBuffer *CVBufferRef; typedef CVBufferRef CVImageBufferRef; typedef CVImageBufferRef CVPixelBufferRef; -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) typedef struct __CVOpenGLESTextureCache *CVOpenGLESTextureCacheRef; typedef CVImageBufferRef CVOpenGLESTextureRef; // helpers to avoid boring if def diff --git a/src/plugins/avfoundation/mediaplayer/avfvideorenderercontrol.mm b/src/plugins/avfoundation/mediaplayer/avfvideorenderercontrol.mm index 03000ea43..d067c7f0b 100644 --- a/src/plugins/avfoundation/mediaplayer/avfvideorenderercontrol.mm +++ b/src/plugins/avfoundation/mediaplayer/avfvideorenderercontrol.mm @@ -34,7 +34,7 @@ #include "avfvideorenderercontrol.h" #include "avfdisplaylink.h" -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) #include "avfvideoframerenderer_ios.h" #else #include "avfvideoframerenderer.h" @@ -52,7 +52,7 @@ QT_USE_NAMESPACE -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) class TextureCacheVideoBuffer : public QAbstractVideoBuffer { public: @@ -164,7 +164,7 @@ void AVFVideoRendererControl::setSurface(QAbstractVideoSurface *surface) //Surface changed, so we need a new frame renderer m_frameRenderer = new AVFVideoFrameRenderer(m_surface, this); -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) if (m_playerLayer) { m_frameRenderer->setPlayerLayer(static_cast<AVPlayerLayer*>(m_playerLayer)); } @@ -195,7 +195,7 @@ void AVFVideoRendererControl::setLayer(void *playerLayer) if (m_surface && m_surface->isActive()) m_surface->stop(); -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) if (m_frameRenderer) { m_frameRenderer->setPlayerLayer(static_cast<AVPlayerLayer*>(playerLayer)); } @@ -230,7 +230,7 @@ void AVFVideoRendererControl::updateVideoFrame(const CVTimeStamp &ts) return; if (m_enableOpenGL) { -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) CVOGLTextureRef tex = m_frameRenderer->renderLayerToTexture(playerLayer); //Make sure we got a valid texture @@ -254,7 +254,7 @@ void AVFVideoRendererControl::updateVideoFrame(const CVTimeStamp &ts) if (!m_surface->isActive()) { QVideoSurfaceFormat format(frame.size(), frame.pixelFormat(), QAbstractVideoBuffer::GLTextureHandle); -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) format.setScanLineDirection(QVideoSurfaceFormat::TopToBottom); #else format.setScanLineDirection(QVideoSurfaceFormat::BottomToTop); diff --git a/src/plugins/avfoundation/mediaplayer/mediaplayer.pro b/src/plugins/avfoundation/mediaplayer/mediaplayer.pro index 28cdc2727..8b5f14b4e 100644 --- a/src/plugins/avfoundation/mediaplayer/mediaplayer.pro +++ b/src/plugins/avfoundation/mediaplayer/mediaplayer.pro @@ -11,7 +11,7 @@ PLUGIN_TYPE = mediaservice PLUGIN_CLASS_NAME = AVFMediaPlayerServicePlugin load(qt_plugin) -LIBS += -framework AVFoundation -framework CoreMedia +LIBS += -framework AVFoundation -framework CoreMedia -framework CoreVideo -framework QuartzCore DEFINES += QMEDIA_AVF_MEDIAPLAYER @@ -44,7 +44,7 @@ OBJECTIVE_SOURCES += \ avfvideowidget.mm } -ios { +ios|tvos { contains(QT_CONFIG, opengl.*) { HEADERS += \ avfvideoframerenderer_ios.h \ @@ -56,8 +56,9 @@ ios { avfvideorenderercontrol.mm \ avfdisplaylink.mm } + LIBS += -framework Foundation } else { - LIBS += -framework QuartzCore -framework AppKit + LIBS += -framework AppKit contains(QT_CONFIG, opengl.*) { HEADERS += \ diff --git a/src/plugins/coreaudio/coreaudio.pro b/src/plugins/coreaudio/coreaudio.pro index 146851493..e01932c6a 100644 --- a/src/plugins/coreaudio/coreaudio.pro +++ b/src/plugins/coreaudio/coreaudio.pro @@ -24,10 +24,10 @@ OBJECTIVE_SOURCES += \ coreaudioplugin.mm \ coreaudioutils.mm -ios { +ios|tvos { HEADERS += coreaudiosessionmanager.h OBJECTIVE_SOURCES += coreaudiosessionmanager.mm - LIBS += -framework AVFoundation + LIBS += -framework Foundation -framework AVFoundation } else { LIBS += \ -framework ApplicationServices \ diff --git a/src/plugins/coreaudio/coreaudiodeviceinfo.mm b/src/plugins/coreaudio/coreaudiodeviceinfo.mm index f16389372..c221cb151 100644 --- a/src/plugins/coreaudio/coreaudiodeviceinfo.mm +++ b/src/plugins/coreaudio/coreaudiodeviceinfo.mm @@ -33,7 +33,7 @@ #include "coreaudiodeviceinfo.h" #include "coreaudioutils.h" -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) # include "coreaudiosessionmanager.h" #endif diff --git a/src/plugins/coreaudio/coreaudioinput.mm b/src/plugins/coreaudio/coreaudioinput.mm index e0cedb1b9..229a3a34e 100644 --- a/src/plugins/coreaudio/coreaudioinput.mm +++ b/src/plugins/coreaudio/coreaudioinput.mm @@ -39,7 +39,7 @@ # include <CoreServices/CoreServices.h> #endif -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) # include "coreaudiosessionmanager.h" #endif diff --git a/src/plugins/coreaudio/coreaudiooutput.mm b/src/plugins/coreaudio/coreaudiooutput.mm index 149b5a8c0..c0ad2bf2f 100644 --- a/src/plugins/coreaudio/coreaudiooutput.mm +++ b/src/plugins/coreaudio/coreaudiooutput.mm @@ -45,7 +45,7 @@ # include <CoreServices/CoreServices.h> #endif -#if defined(Q_OS_IOS) +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) # include <QtMultimedia/private/qaudiohelpers_p.h> #endif @@ -504,7 +504,7 @@ OSStatus CoreAudioOutput::renderCallback(void *inRefCon, AudioUnitRenderActionFl if (framesRead > 0) { ioData->mBuffers[0].mDataByteSize = framesRead * bytesPerFrame; d->m_totalFrames += framesRead; -#ifdef Q_OS_IOS +#if defined(Q_OS_IOS) || defined(Q_OS_TVOS) // on iOS we have to adjust the sound volume ourselves if (!qFuzzyCompare(d->m_cachedVolume, qreal(1.0f))) { QAudioHelperInternal::qMultiplySamples(d->m_cachedVolume, diff --git a/src/plugins/coreaudio/coreaudiosessionmanager.mm b/src/plugins/coreaudio/coreaudiosessionmanager.mm index 15d1ad86f..5c6b3b4d1 100644 --- a/src/plugins/coreaudio/coreaudiosessionmanager.mm +++ b/src/plugins/coreaudio/coreaudiosessionmanager.mm @@ -274,7 +274,9 @@ bool CoreAudioSessionManager::setCategory(CoreAudioSessionManager::AudioSessionC targetCategory = AVAudioSessionCategoryPlayAndRecord; break; case CoreAudioSessionManager::AudioProcessing: +#ifndef Q_OS_TVOS targetCategory = AVAudioSessionCategoryAudioProcessing; +#endif break; case CoreAudioSessionManager::MultiRoute: #if QT_IOS_DEPLOYMENT_TARGET_BELOW(__IPHONE_6_0) @@ -348,8 +350,10 @@ CoreAudioSessionManager::AudioSessionCategorys CoreAudioSessionManager::category localCategory = Record; } else if (category == AVAudioSessionCategoryPlayAndRecord) { localCategory = PlayAndRecord; +#ifndef Q_OS_TVOS } else if (category == AVAudioSessionCategoryAudioProcessing) { localCategory = AudioProcessing; +#endif } else if ( #if QT_IOS_DEPLOYMENT_TARGET_BELOW(__IPHONE_6_0) QSysInfo::MacintoshVersion >= QSysInfo::MV_IOS_6_0 && diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index 2e92cb37d..ede5e4763 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -491,7 +491,7 @@ bool DSCameraSession::unload() m_needsHorizontalMirroring = false; m_supportedViewfinderSettings.clear(); - Q_FOREACH (AM_MEDIA_TYPE f, m_supportedFormats) + for (AM_MEDIA_TYPE f : qAsConst(m_supportedFormats)) _FreeMediaType(f); m_supportedFormats.clear(); SAFE_RELEASE(m_sourceFilter); @@ -876,7 +876,7 @@ bool DSCameraSession::configurePreviewFormat() // Resolve viewfinder settings int settingsIndex = 0; QCameraViewfinderSettings resolvedViewfinderSettings; - Q_FOREACH (const QCameraViewfinderSettings &s, m_supportedViewfinderSettings) { + for (const QCameraViewfinderSettings &s : qAsConst(m_supportedViewfinderSettings)) { if ((m_viewfinderSettings.resolution().isEmpty() || m_viewfinderSettings.resolution() == s.resolution()) && (qFuzzyIsNull(m_viewfinderSettings.minimumFrameRate()) || qFuzzyCompare((float)m_viewfinderSettings.minimumFrameRate(), (float)s.minimumFrameRate())) && (qFuzzyIsNull(m_viewfinderSettings.maximumFrameRate()) || qFuzzyCompare((float)m_viewfinderSettings.maximumFrameRate(), (float)s.maximumFrameRate())) @@ -1112,7 +1112,7 @@ void DSCameraSession::updateSourceCapabilities() m_supportedViewfinderSettings.clear(); m_needsHorizontalMirroring = false; - Q_FOREACH (AM_MEDIA_TYPE f, m_supportedFormats) + for (AM_MEDIA_TYPE f : qAsConst(m_supportedFormats)) _FreeMediaType(f); m_supportedFormats.clear(); m_imageProcessingParametersInfos.clear(); @@ -1204,7 +1204,7 @@ void DSCameraSession::updateSourceCapabilities() qreal(10000000) / scc.MinFrameInterval)); } - Q_FOREACH (const QCamera::FrameRateRange &frameRateRange, frameRateRanges) { + for (const QCamera::FrameRateRange &frameRateRange : qAsConst(frameRateRanges)) { QCameraViewfinderSettings settings; settings.setResolution(resolution); settings.setMinimumFrameRate(frameRateRange.minimumFrameRate); diff --git a/src/plugins/directshow/dsserviceplugin.cpp b/src/plugins/directshow/dsserviceplugin.cpp index 4af38b1cc..839271219 100644 --- a/src/plugins/directshow/dsserviceplugin.cpp +++ b/src/plugins/directshow/dsserviceplugin.cpp @@ -137,7 +137,7 @@ QList<QByteArray> DSServicePlugin::devices(const QByteArray &service) const #ifdef QMEDIA_DIRECTSHOW_CAMERA if (service == Q_MEDIASERVICE_CAMERA) { const QList<DSVideoDeviceInfo> &devs = DSVideoDeviceControl::availableDevices(); - Q_FOREACH (const DSVideoDeviceInfo &info, devs) + for (const DSVideoDeviceInfo &info : devs) result.append(info.first); } #endif @@ -150,7 +150,7 @@ QString DSServicePlugin::deviceDescription(const QByteArray &service, const QByt #ifdef QMEDIA_DIRECTSHOW_CAMERA if (service == Q_MEDIASERVICE_CAMERA) { const QList<DSVideoDeviceInfo> &devs = DSVideoDeviceControl::availableDevices(); - Q_FOREACH (const DSVideoDeviceInfo &info, devs) { + for (const DSVideoDeviceInfo &info : devs) { if (info.first == device) return info.second; } diff --git a/src/plugins/directshow/player/directshowaudioendpointcontrol.cpp b/src/plugins/directshow/player/directshowaudioendpointcontrol.cpp index d063447e3..a240f6c5f 100644 --- a/src/plugins/directshow/player/directshowaudioendpointcontrol.cpp +++ b/src/plugins/directshow/player/directshowaudioendpointcontrol.cpp @@ -54,7 +54,7 @@ DirectShowAudioEndpointControl::DirectShowAudioEndpointControl( DirectShowAudioEndpointControl::~DirectShowAudioEndpointControl() { - foreach (IMoniker *moniker, m_devices) + for (IMoniker *moniker : qAsConst(m_devices)) moniker->Release(); if (m_bindContext) diff --git a/src/plugins/directshow/player/directshowmetadatacontrol.cpp b/src/plugins/directshow/player/directshowmetadatacontrol.cpp index 5400ac8d4..f1581e129 100644 --- a/src/plugins/directshow/player/directshowmetadatacontrol.cpp +++ b/src/plugins/directshow/player/directshowmetadatacontrol.cpp @@ -504,7 +504,8 @@ void DirectShowMetaDataControl::updateMetadata(IFilterGraph2 *graph, IBaseFilter IWMHeaderInfo *info = com_cast<IWMHeaderInfo>(source, IID_IWMHeaderInfo); if (info) { - Q_FOREACH (const QWMMetaDataKey &key, *qt_wmMetaDataKeys()) { + const auto keys = *qt_wmMetaDataKeys(); + for (const QWMMetaDataKey &key : keys) { QVariant var = getValue(info, key.wmName); if (var.isValid()) { if (key.qtName == QMediaMetaData::Duration) { diff --git a/src/plugins/directshow/player/directshowpinenum.cpp b/src/plugins/directshow/player/directshowpinenum.cpp index 1119cb690..d47fe19fc 100644 --- a/src/plugins/directshow/player/directshowpinenum.cpp +++ b/src/plugins/directshow/player/directshowpinenum.cpp @@ -39,13 +39,13 @@ DirectShowPinEnum::DirectShowPinEnum(const QList<IPin *> &pins) , m_pins(pins) , m_index(0) { - foreach (IPin *pin, m_pins) + for (IPin *pin : qAsConst(m_pins)) pin->AddRef(); } DirectShowPinEnum::~DirectShowPinEnum() { - foreach (IPin *pin, m_pins) + for (IPin *pin : qAsConst(m_pins)) pin->Release(); } diff --git a/src/plugins/directshow/player/videosurfacefilter.cpp b/src/plugins/directshow/player/videosurfacefilter.cpp index 1fa7329cc..d53e9187c 100644 --- a/src/plugins/directshow/player/videosurfacefilter.cpp +++ b/src/plugins/directshow/player/videosurfacefilter.cpp @@ -582,7 +582,7 @@ void VideoSurfaceFilter::supportedFormatsChanged() static const GUID none = { 0xe436eb8e, 0x524f, 0x11ce, {0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70} }; - QList<QVideoFrame::PixelFormat> formats = m_surface->supportedPixelFormats(); + const QList<QVideoFrame::PixelFormat> formats = m_surface->supportedPixelFormats(); QVector<AM_MEDIA_TYPE> mediaTypes; mediaTypes.reserve(formats.count()); @@ -597,7 +597,7 @@ void VideoSurfaceFilter::supportedFormatsChanged() type.cbFormat = 0; type.pbFormat = 0; - foreach (QVideoFrame::PixelFormat format, formats) { + for (QVideoFrame::PixelFormat format : formats) { type.subtype = DirectShowMediaType::convertPixelFormat(format); if (type.subtype != none) diff --git a/src/plugins/gstreamer/camerabin/camerabincontainer.cpp b/src/plugins/gstreamer/camerabin/camerabincontainer.cpp index f5b6900f9..b1b61ffe7 100644 --- a/src/plugins/gstreamer/camerabin/camerabincontainer.cpp +++ b/src/plugins/gstreamer/camerabin/camerabincontainer.cpp @@ -116,13 +116,13 @@ GstEncodingContainerProfile *CameraBinContainer::createProfile() return 0; } else { QString format = m_actualFormat; - QStringList supportedFormats = m_supportedContainers.supportedCodecs(); + const QStringList supportedFormats = m_supportedContainers.supportedCodecs(); //if format is not in the list of supported gstreamer mime types, //try to find the mime type with matching extension if (!supportedFormats.contains(format)) { QString extension = suggestedFileExtension(m_actualFormat); - foreach (const QString &formatCandidate, supportedFormats) { + for (const QString &formatCandidate : supportedFormats) { if (suggestedFileExtension(formatCandidate) == extension) { format = formatCandidate; break; diff --git a/src/plugins/gstreamer/camerabin/camerabinfocus.cpp b/src/plugins/gstreamer/camerabin/camerabinfocus.cpp index 32b8d9454..340e776e5 100644 --- a/src/plugins/gstreamer/camerabin/camerabinfocus.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinfocus.cpp @@ -239,7 +239,7 @@ QCameraFocusZoneList CameraBinFocus::focusZones() const if (m_focusPointMode != QCameraFocus::FocusPointFaceDetection) { zones.append(QCameraFocusZone(m_focusRect, m_focusZoneStatus)); #if GST_CHECK_VERSION(1,0,0) - } else foreach (const QRect &face, m_faceFocusRects) { + } else for (const QRect &face : qAsConst(m_faceFocusRects)) { const QRectF normalizedRect( face.x() / qreal(m_viewfinderResolution.width()), face.y() / qreal(m_viewfinderResolution.height()), @@ -434,7 +434,7 @@ void CameraBinFocus::updateRegionOfInterest(const QVector<QRect> &rectangles) m_viewfinderResolution.width(), m_viewfinderResolution.height()) * 0.3; const QRect viewfinderRectangle(QPoint(0, 0), m_viewfinderResolution); - foreach (const QRect &rectangle, rectangles) { + for (const QRect &rectangle : rectangles) { QRect paddedRectangle( 0, 0, diff --git a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp index e404065fc..0fca1d4f8 100644 --- a/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinmetadata.cpp @@ -197,7 +197,8 @@ QVariant CameraBinMetaData::metaData(const QString &key) const } #endif - Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys()) { + const auto keys = *qt_gstreamerMetaDataKeys(); + for (const QGStreamerMetaDataKey &metadataKey : keys) { if (metadataKey.qtName == key) return m_values.value(QByteArray::fromRawData(metadataKey.gstName, qstrlen(metadataKey.gstName))); } @@ -216,7 +217,8 @@ void CameraBinMetaData::setMetaData(const QString &key, const QVariant &value) } } - Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys()) { + const auto keys = *qt_gstreamerMetaDataKeys(); + for (const QGStreamerMetaDataKey &metadataKey : keys) { if (metadataKey.qtName == key) { const char *name = metadataKey.gstName; @@ -239,13 +241,14 @@ QStringList CameraBinMetaData::availableMetaData() const { static QMap<QByteArray, QString> keysMap; if (keysMap.isEmpty()) { - Q_FOREACH (const QGStreamerMetaDataKey &metadataKey, *qt_gstreamerMetaDataKeys()) + const auto keys = *qt_gstreamerMetaDataKeys(); + for (const QGStreamerMetaDataKey &metadataKey : keys) keysMap[QByteArray(metadataKey.gstName)] = metadataKey.qtName; } QStringList res; - Q_FOREACH (const QByteArray &key, m_values.keys()) { - QString tag = keysMap.value(key); + for (auto it = m_values.keyBegin(), end = m_values.keyEnd(); it != end; ++it) { + QString tag = keysMap.value(*it); if (!tag.isEmpty()) res.append(tag); } diff --git a/src/plugins/gstreamer/camerabin/camerabinrecorder.cpp b/src/plugins/gstreamer/camerabin/camerabinrecorder.cpp index ad0596a6e..bc97563ec 100644 --- a/src/plugins/gstreamer/camerabin/camerabinrecorder.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinrecorder.cpp @@ -154,7 +154,7 @@ void CameraBinRecorder::applySettings() candidates.append(QStringList() << "video/quicktime" << "video/x-h264" << "audio/mpeg"); candidates.append(QStringList() << "video/x-msvideo" << "video/x-divx" << "audio/mpeg"); - foreach (const QStringList &candidate, candidates) { + for (const QStringList &candidate : qAsConst(candidates)) { if (containerControl->supportedContainers().contains(candidate[0]) && videoEncoderControl->supportedVideoCodecs().contains(candidate[1]) && audioEncoderControl->supportedAudioCodecs().contains(candidate[2])) { diff --git a/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp b/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp index 745536e87..f76c2c2a3 100644 --- a/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinresourcepolicy.cpp @@ -127,13 +127,17 @@ void CamerabinResourcePolicy::setResourceSet(CamerabinResourcePolicy::ResourceSe } QSet<ResourcePolicy::ResourceType> currentTypes; - foreach (ResourcePolicy::Resource *resource, m_resource->resources()) + const auto resources = m_resource->resources(); + currentTypes.reserve(resources.size()); + for (ResourcePolicy::Resource *resource : resources) currentTypes << resource->type(); - foreach (ResourcePolicy::ResourceType resourceType, currentTypes - requestedTypes) + const auto diffCurrentWithRequested = currentTypes - requestedTypes; + for (ResourcePolicy::ResourceType resourceType : diffCurrentWithRequested) m_resource->deleteResource(resourceType); - foreach (ResourcePolicy::ResourceType resourceType, requestedTypes - currentTypes) { + const auto diffRequestedWithCurrent = requestedTypes - currentTypes; + for (ResourcePolicy::ResourceType resourceType : diffRequestedWithCurrent) { if (resourceType == ResourcePolicy::LensCoverType) { ResourcePolicy::LensCoverResource *lensCoverResource = new ResourcePolicy::LensCoverResource; lensCoverResource->setOptional(true); @@ -169,7 +173,8 @@ void CamerabinResourcePolicy::setResourceSet(CamerabinResourcePolicy::ResourceSe bool CamerabinResourcePolicy::isResourcesGranted() const { #ifdef HAVE_RESOURCE_POLICY - foreach (ResourcePolicy::Resource *resource, m_resource->resources()) + const auto resources = m_resource->resources(); + for (ResourcePolicy::Resource *resource : resources) if (!resource->isOptional() && !resource->isGranted()) return false; #endif @@ -218,7 +223,8 @@ void CamerabinResourcePolicy::updateCanCapture() const bool wasAbleToRecord = m_canCapture; m_canCapture = (m_resourceSet == VideoCaptureResources) || (m_resourceSet == ImageCaptureResources); #ifdef HAVE_RESOURCE_POLICY - foreach (ResourcePolicy::Resource *resource, m_resource->resources()) { + const auto resources = m_resource->resources(); + for (ResourcePolicy::Resource *resource : resources) { if (resource->type() != ResourcePolicy::LensCoverType) m_canCapture = m_canCapture && resource->isGranted(); } diff --git a/src/plugins/gstreamer/camerabin/camerabinsession.cpp b/src/plugins/gstreamer/camerabin/camerabinsession.cpp index 3dd200c54..95624f711 100644 --- a/src/plugins/gstreamer/camerabin/camerabinsession.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinsession.cpp @@ -496,8 +496,8 @@ GstElement *CameraBinSession::buildCameraSource() const QByteArray envVideoSource = qgetenv("QT_GSTREAMER_CAMERABIN_VIDEOSRC"); if (!envVideoSource.isEmpty()) { - QList<QByteArray> sources = envVideoSource.split(','); - foreach (const QByteArray &source, sources) { + const QList<QByteArray> sources = envVideoSource.split(','); + for (const QByteArray &source : sources) { QList<QByteArray> keyValue = source.split('='); if (keyValue.count() == 1) { m_videoSrc = gst_element_factory_make(keyValue.at(0), "camera_source"); @@ -1363,7 +1363,7 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate, //if the range is continuos, populate is with the common rates if (isContinuous && res.size() >= 2) { //fill the ragne with common value - static QList<QSize> commonSizes = + static const QList<QSize> commonSizes = QList<QSize>() << QSize(128, 96) << QSize(160,120) << QSize(176, 144) @@ -1385,7 +1385,7 @@ QList<QSize> CameraBinSession::supportedResolutions(QPair<int,int> rate, QSize maxSize = res.last(); res.clear(); - foreach (const QSize &candidate, commonSizes) { + for (const QSize &candidate : commonSizes) { int w = candidate.width(); int h = candidate.height(); diff --git a/src/plugins/gstreamer/camerabin/camerabinvideoencoder.cpp b/src/plugins/gstreamer/camerabin/camerabinvideoencoder.cpp index 2d53af1fb..12336ea43 100644 --- a/src/plugins/gstreamer/camerabin/camerabinvideoencoder.cpp +++ b/src/plugins/gstreamer/camerabin/camerabinvideoencoder.cpp @@ -71,9 +71,9 @@ QList< qreal > CameraBinVideoEncoder::supportedFrameRates(const QVideoEncoderSet *continuous = false; QList< qreal > res; - QPair<int,int> rate; - foreach(rate, m_session->supportedFrameRates(settings.resolution(), continuous)) { + const auto rates = m_session->supportedFrameRates(settings.resolution(), continuous); + for (const auto &rate : rates) { if (rate.second > 0) res << qreal(rate.first)/rate.second; } @@ -141,7 +141,7 @@ QPair<int,int> CameraBinVideoEncoder::rateAsRational(qreal frameRate) const int num = 1; int denum = 1; - foreach (int curDenum, denumCandidates) { + for (int curDenum : qAsConst(denumCandidates)) { int curNum = qRound(frameRate*curDenum); qreal curError = qAbs(qreal(curNum)/curDenum - frameRate); diff --git a/src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp b/src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp index b7693c18a..2528bbec1 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreameraudioencode.cpp @@ -77,7 +77,7 @@ QGstreamerAudioEncode::QGstreamerAudioEncode(QObject *parent) m_codecOptions["audio/AMR"] = QStringList(); m_codecOptions["audio/AMR-WB"] = QStringList(); - foreach( const QByteArray& codecName, codecCandidates ) { + for (const QByteArray& codecName : qAsConst(codecCandidates)) { QByteArray elementName = m_elementNames[codecName]; GstElementFactory *factory = gst_element_factory_find(elementName.constData()); diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp index fca38ecf8..79deb9229 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturemetadatacontrol.cpp @@ -142,8 +142,8 @@ void QGstreamerCaptureMetaDataControl::setMetaData(const QString &key, const QVa QStringList QGstreamerCaptureMetaDataControl::availableMetaData() const { QStringList res; - foreach (const QByteArray &key, m_values.keys()) { - QString tag = qt_gstreamerMetaDataKeys()->key(key); + for (auto it = m_values.keyBegin(), end = m_values.keyEnd(); it != end; ++it) { + QString tag = qt_gstreamerMetaDataKeys()->key(*it); if (!tag.isEmpty()) res.append(tag); } diff --git a/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp index a5f91f193..57b968b77 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamerimagecapturecontrol.cpp @@ -74,7 +74,8 @@ int QGstreamerImageCaptureControl::capture(const QString &fileName) if (path.isEmpty()) { int lastImage = 0; QDir outputDir = QDir::currentPath(); - foreach(QString fileName, outputDir.entryList(QStringList() << "img_*.jpg")) { + const auto list = outputDir.entryList(QStringList() << "img_*.jpg"); + for (const QString &fileName : list) { int imgNumber = fileName.midRef(4, fileName.size()-8).toInt(); lastImage = qMax(lastImage, imgNumber); } diff --git a/src/plugins/gstreamer/mediacapture/qgstreamermediacontainercontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamermediacontainercontrol.cpp index 338af5255..41b049d5d 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamermediacontainercontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamermediacontainercontrol.cpp @@ -71,7 +71,7 @@ QGstreamerMediaContainerControl::QGstreamerMediaContainerControl(QObject *parent QSet<QString> allTypes; - foreach( const QByteArray& formatName, formatCandidates ) { + for (const QByteArray& formatName : qAsConst(formatCandidates)) { QByteArray elementName = m_elementNames[formatName]; GstElementFactory *factory = gst_element_factory_find(elementName.constData()); if (factory) { diff --git a/src/plugins/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp index 91bfd67f3..d30a2fe6f 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamerrecordercontrol.cpp @@ -242,7 +242,7 @@ void QGstreamerRecorderControl::applySettings() QString audioCodec; QString videoCodec; - foreach (const QString &containerCandidate, containerCandidates) { + for (const QString &containerCandidate : qAsConst(containerCandidates)) { QSet<QString> supportedTypes = mediaContainerControl->supportedStreamTypes(containerCandidate); audioCodec.clear(); @@ -250,7 +250,7 @@ void QGstreamerRecorderControl::applySettings() if (needAudio) { bool found = false; - foreach (const QString &audioCandidate, audioCandidates) { + for (const QString &audioCandidate : qAsConst(audioCandidates)) { QSet<QString> audioTypes = audioEncodeControl->supportedStreamTypes(audioCandidate); if (audioTypes.intersects(supportedTypes)) { found = true; @@ -264,7 +264,7 @@ void QGstreamerRecorderControl::applySettings() if (needVideo) { bool found = false; - foreach (const QString &videoCandidate, videoCandidates) { + for (const QString &videoCandidate : qAsConst(videoCandidates)) { QSet<QString> videoTypes = videoEncodeControl->supportedStreamTypes(videoCandidate); if (videoTypes.intersects(supportedTypes)) { found = true; @@ -339,7 +339,7 @@ QDir QGstreamerRecorderControl::defaultDir() const dirCandidates << QDir::currentPath(); dirCandidates << QDir::tempPath(); - foreach (const QString &path, dirCandidates) { + for (const QString &path : qAsConst(dirCandidates)) { QDir dir(path); if (dir.exists() && QFileInfo(path).isWritable()) return dir; @@ -352,7 +352,8 @@ QString QGstreamerRecorderControl::generateFileName(const QDir &dir, const QStri { int lastClip = 0; - foreach(QString fileName, dir.entryList(QStringList() << QString("clip_*.%1").arg(ext))) { + const auto list = dir.entryList(QStringList() << QString("clip_*.%1").arg(ext)); + for (const QString &fileName : list) { int imgNumber = fileName.midRef(5, fileName.size()-6-ext.length()).toInt(); lastClip = qMax(lastClip, imgNumber); } diff --git a/src/plugins/gstreamer/mediacapture/qgstreamerv4l2input.cpp b/src/plugins/gstreamer/mediacapture/qgstreamerv4l2input.cpp index 600a492e7..65e19ad2e 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamerv4l2input.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamerv4l2input.cpp @@ -138,7 +138,7 @@ void QGstreamerV4L2Input::updateSupportedResolutions(const QByteArray &device) //get the list of resolutions: - foreach (quint32 format, supportedFormats) { + for (quint32 format : qAsConst(supportedFormats)) { struct v4l2_frmsizeenum formatSize; memset(&formatSize, 0, sizeof(formatSize)); formatSize.pixel_format = format; @@ -161,7 +161,7 @@ void QGstreamerV4L2Input::updateSupportedResolutions(const QByteArray &device) sizeList.append(QSize(formatSize.discrete.width, formatSize.discrete.height)); } else { - foreach (const QSize& candidate, commonSizes) { + for (const QSize& candidate : qAsConst(commonSizes)) { if (candidate.width() <= (int)formatSize.stepwise.max_width && candidate.height() >= (int)formatSize.stepwise.min_width && candidate.width() % formatSize.stepwise.step_width == 0 && @@ -185,7 +185,7 @@ void QGstreamerV4L2Input::updateSupportedResolutions(const QByteArray &device) //and frameRates for each resolution. - foreach (const QSize &s, sizeList) { + for (const QSize &s : qAsConst(sizeList)) { allResolutions.insert(s); struct v4l2_frmivalenum formatInterval; @@ -221,7 +221,7 @@ void QGstreamerV4L2Input::updateSupportedResolutions(const QByteArray &device) formatInterval.stepwise.max.numerator); - foreach (int candidate, commonRates) { + for (int candidate : qAsConst(commonRates)) { if (candidate >= minRate && candidate <= maxRate) frameRates.append(candidate); } @@ -242,7 +242,7 @@ void QGstreamerV4L2Input::updateSupportedResolutions(const QByteArray &device) f.close(); - foreach(int rate, allFrameRates) { + for (int rate : qAsConst(allFrameRates)) { m_frameRates.append(rate/1000.0); } @@ -262,7 +262,9 @@ QList<qreal> QGstreamerV4L2Input::supportedFrameRates(const QSize &frameSize) co return m_frameRates; else { QList<qreal> res; - foreach(int rate, m_ratesByResolution[frameSize]) { + const auto rates = m_ratesByResolution[frameSize]; + res.reserve(rates.size()); + for (int rate : rates) { res.append(rate/1000.0); } return res; diff --git a/src/plugins/gstreamer/mediacapture/qgstreamervideoencode.cpp b/src/plugins/gstreamer/mediacapture/qgstreamervideoencode.cpp index 543603c6d..172845d7c 100644 --- a/src/plugins/gstreamer/mediacapture/qgstreamervideoencode.cpp +++ b/src/plugins/gstreamer/mediacapture/qgstreamervideoencode.cpp @@ -59,7 +59,7 @@ QGstreamerVideoEncode::QGstreamerVideoEncode(QGstreamerCaptureSession *session) m_codecOptions["video/mpeg2"] = QStringList() << "quantizer"; m_codecOptions["video/theora"] = QStringList(); - foreach( const QByteArray& codecName, codecCandidates ) { + for (const QByteArray& codecName : qAsConst(codecCandidates)) { QByteArray elementName = m_elementNames[codecName]; GstElementFactory *factory = gst_element_factory_find(elementName.constData()); if (factory) { @@ -293,7 +293,7 @@ QPair<int,int> QGstreamerVideoEncode::rateAsRational() const int num = 1; int denum = 1; - foreach (int curDenum, denumCandidates) { + for (int curDenum : qAsConst(denumCandidates)) { int curNum = qRound(frameRate*curDenum); qreal curError = qAbs(qreal(curNum)/curDenum - frameRate); diff --git a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp index c3d20e790..19496977b 100644 --- a/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp +++ b/src/plugins/gstreamer/mediaplayer/qgstreamerplayersession.cpp @@ -1524,7 +1524,8 @@ void QGstreamerPlayerSession::playbinNotifySource(GObject *o, GParamSpec *p, gpo if (g_object_class_find_property(G_OBJECT_GET_CLASS(source), "extra-headers") != 0) { GstStructure *extras = qt_gst_structure_new_empty("extras"); - foreach (const QByteArray &rawHeader, self->m_request.rawHeaderList()) { + const auto rawHeaderList = self->m_request.rawHeaderList(); + for (const QByteArray &rawHeader : rawHeaderList) { if (rawHeader == userAgentString) // Filter User-Agent continue; else { diff --git a/src/plugins/m3u/qm3uhandler.cpp b/src/plugins/m3u/qm3uhandler.cpp index c141376c7..e20b11006 100644 --- a/src/plugins/m3u/qm3uhandler.cpp +++ b/src/plugins/m3u/qm3uhandler.cpp @@ -105,7 +105,7 @@ public: candidates << fileUrl; candidates << url; - foreach (const QUrl &candidate, candidates) { + for (const QUrl &candidate : qAsConst(candidates)) { if (QFile::exists(candidate.toLocalFile())) { nextResource = candidate; break; diff --git a/src/plugins/qnx/camera/bbcamerasession.cpp b/src/plugins/qnx/camera/bbcamerasession.cpp index 66243187b..13af75e2d 100644 --- a/src/plugins/qnx/camera/bbcamerasession.cpp +++ b/src/plugins/qnx/camera/bbcamerasession.cpp @@ -526,7 +526,7 @@ void BbCameraSession::applyVideoSettings() QList<QSize> sizes = supportedViewfinderResolutions(QCamera::CaptureVideo); std::reverse(sizes.begin(), sizes.end()); // use smallest possible resolution - foreach (const QSize &size, sizes) { + for (const QSize &size : qAsConst(sizes)) { // search for viewfinder resolution with the same aspect ratio if (qFuzzyCompare(aspectRatio, (static_cast<qreal>(size.width())/static_cast<qreal>(size.height())))) { viewfinderResolution = size; @@ -944,7 +944,7 @@ void BbCameraSession::applyConfiguration() QSize viewfinderResolution; QList<QSize> sizes = supportedViewfinderResolutions(QCamera::CaptureStillImage); std::reverse(sizes.begin(), sizes.end()); // use smallest possible resolution - foreach (const QSize &size, sizes) { + for (const QSize &size : qAsConst(sizes)) { // search for viewfinder resolution with the same aspect ratio if (qFuzzyCompare(aspectRatio, (static_cast<qreal>(size.width())/static_cast<qreal>(size.height())))) { viewfinderResolution = size; diff --git a/src/plugins/qnx/camera/bbmediastoragelocation.cpp b/src/plugins/qnx/camera/bbmediastoragelocation.cpp index deaff77d3..ffec15381 100644 --- a/src/plugins/qnx/camera/bbmediastoragelocation.cpp +++ b/src/plugins/qnx/camera/bbmediastoragelocation.cpp @@ -57,7 +57,7 @@ QDir BbMediaStorageLocation::defaultDir(QCamera::CaptureMode mode) const dirCandidates << QDir::currentPath(); dirCandidates << QDir::tempPath(); - Q_FOREACH (const QString &path, dirCandidates) { + for (const QString &path : qAsConst(dirCandidates)) { if (QFileInfo(path).isWritable()) return QDir(path); } @@ -83,7 +83,8 @@ QString BbMediaStorageLocation::generateFileName(const QString &prefix, const QD if (lastMediaIndex == 0) { // first run, find the maximum media number during the fist capture - Q_FOREACH (const QString &fileName, dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(extension))) { + const auto list = dir.entryList(QStringList() << QString("%1*.%2").arg(prefix).arg(extension)); + for (const QString &fileName : list) { const qint64 mediaIndex = fileName.midRef(prefix.length(), fileName.size() - prefix.length() - extension.length() - 1).toInt(); lastMediaIndex = qMax(lastMediaIndex, mediaIndex); } diff --git a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp index aac8825cf..84f0ca83b 100644 --- a/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp +++ b/src/plugins/qnx/mediaplayer/mmrenderervideowindowcontrol.cpp @@ -405,7 +405,8 @@ void MmRendererVideoWindowControl::screenEventHandler(const screen_event_t &scre QWindow *MmRendererVideoWindowControl::findWindow(WId id) const { - Q_FOREACH (QWindow *window, QGuiApplication::allWindows()) + const auto allWindows = QGuiApplication::allWindows(); + for (QWindow *window : allWindows) if (window->winId() == id) return window; return 0; diff --git a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp index 2e2092be9..5c120b0e1 100644 --- a/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp +++ b/src/plugins/videonode/imx6/qsgvivantevideomaterial.cpp @@ -125,7 +125,8 @@ void QSGVivanteVideoMaterial::bind() void QSGVivanteVideoMaterial::clearTextures() { - Q_FOREACH (GLuint id, mBitsToTextureMap.values()) { + for (auto it = mBitsToTextureMap.cbegin(), end = mBitsToTextureMap.cend(); it != end; ++it) { + GLuint id = it.value(); #ifdef QT_VIVANTE_VIDEO_DEBUG qDebug() << "delete texture: " << id; #endif diff --git a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp index 039bafead..4c77f5183 100644 --- a/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp +++ b/src/plugins/windowsaudio/qwindowsaudiodeviceinfo.cpp @@ -370,8 +370,8 @@ void QWindowsAudioDeviceInfo::updateLists() // Check more sample sizes testFormat = defaultTestFormat; - QList<int> testSampleSizes = QList<int>() << 24 << 32 << 48 << 64; - Q_FOREACH (int s, testSampleSizes) { + const QList<int> testSampleSizes = QList<int>() << 24 << 32 << 48 << 64; + for (int s : testSampleSizes) { testFormat.setSampleSize(s); if (testSettings(testFormat)) sizez.append(s); @@ -379,8 +379,8 @@ void QWindowsAudioDeviceInfo::updateLists() // Check more sample rates testFormat = defaultTestFormat; - QList<int> testSampleRates = QList<int>() << 8000 << 16000 << 32000 << 88200 << 192000; - Q_FOREACH (int r, testSampleRates) { + const QList<int> testSampleRates = QList<int>() << 8000 << 16000 << 32000 << 88200 << 192000; + for (int r : testSampleRates) { testFormat.setSampleRate(r); if (testSettings(testFormat)) sampleRatez.append(r); diff --git a/src/plugins/winrt/qwinrtcameracontrol.cpp b/src/plugins/winrt/qwinrtcameracontrol.cpp index 19b718cdd..d209d9394 100644 --- a/src/plugins/winrt/qwinrtcameracontrol.cpp +++ b/src/plugins/winrt/qwinrtcameracontrol.cpp @@ -936,7 +936,7 @@ HRESULT QWinRTCameraControl::initialize() // Set preview resolution. QVector<QSize> filtered; const float captureAspectRatio = float(captureResolution.width()) / captureResolution.height(); - foreach (const QSize &resolution, previewResolutions) { + for (const QSize &resolution : qAsConst(previewResolutions)) { const float aspectRatio = float(resolution.width()) / resolution.height(); if (qAbs(aspectRatio - captureAspectRatio) <= ASPECTRATIO_EPSILON) filtered.append(resolution); diff --git a/src/plugins/winrt/qwinrtimageencodercontrol.cpp b/src/plugins/winrt/qwinrtimageencodercontrol.cpp index 6260a1d66..fc28a8a18 100644 --- a/src/plugins/winrt/qwinrtimageencodercontrol.cpp +++ b/src/plugins/winrt/qwinrtimageencodercontrol.cpp @@ -109,7 +109,7 @@ void QWinRTImageEncoderControl::applySettings() // Find closest resolution from the list const int pixelCount = requestResolution.width() * requestResolution.height(); int minimumGap = std::numeric_limits<int>::max(); - foreach (const QSize &size, d->supportedResolutions) { + for (const QSize &size : qAsConst(d->supportedResolutions)) { int gap = qAbs(pixelCount - size.width() * size.height()); if (gap < minimumGap) { minimumGap = gap; diff --git a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp index ed2dbb943..7bdb586c3 100644 --- a/src/plugins/winrt/qwinrtmediaplayercontrol.cpp +++ b/src/plugins/winrt/qwinrtmediaplayercontrol.cpp @@ -757,7 +757,8 @@ void QWinRTMediaPlayerControl::setMedia(const QMediaContent &media, QIODevice *s QString urlString = media.canonicalUrl().toString(); if (!d->stream) { // If we can read the file via Qt, use the byte stream approach - foreach (const QMediaResource &resource, media.resources()) { + const auto resources = media.resources(); + for (const QMediaResource &resource : resources) { const QUrl url = resource.url(); if (url.isLocalFile()) { urlString = url.toLocalFile(); diff --git a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp index 8e806dcbf..07b63be9a 100644 --- a/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp +++ b/src/plugins/winrt/qwinrtvideodeviceselectorcontrol.cpp @@ -158,7 +158,7 @@ private: if (isDefault) defaultDeviceIndex = index; - foreach (QWinRTVideoDeviceSelectorControl *watcher, watchers) + for (QWinRTVideoDeviceSelectorControl *watcher : qAsConst(watchers)) emit watcher->devicesChanged(); return S_OK; @@ -180,7 +180,7 @@ private: if (index >= 0) devices.remove(index); - foreach (QWinRTVideoDeviceSelectorControl *watcher, watchers) + for (QWinRTVideoDeviceSelectorControl *watcher : qAsConst(watchers)) emit watcher->devicesChanged(); return S_OK; @@ -189,7 +189,7 @@ private: HRESULT onDeviceUpdated(IDeviceWatcher *, IDeviceInformationUpdate *) { // A name or description may have changed, so emit devicesChanged - foreach (QWinRTVideoDeviceSelectorControl *watcher, watchers) + for (QWinRTVideoDeviceSelectorControl *watcher : qAsConst(watchers)) emit watcher->devicesChanged(); return S_OK; @@ -349,8 +349,9 @@ int QWinRTVideoDeviceSelectorControl::cameraOrientation(const QString &deviceNam QList<QByteArray> QWinRTVideoDeviceSelectorControl::deviceNames() { QList<QByteArray> devices; - foreach (const QString &device, g->deviceIndex.keys()) - devices.append(device.toUtf8()); + devices.reserve(g->deviceIndex.size()); + for (auto it = g->deviceIndex.keyBegin(), end = g->deviceIndex.keyEnd(); it != end; ++it) + devices.append((*it).toUtf8()); return devices; } diff --git a/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp b/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp index 55fae7146..62a7f6cb0 100644 --- a/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp +++ b/src/plugins/wmf/decoder/mfaudiodecodercontrol.cpp @@ -340,7 +340,7 @@ void MFAudioDecoderControl::handleSampleAdded() QByteArray abuf; if (m_sourceOutputFormat == m_audioFormat) { //no need for resampling - foreach (IMFSample *s, samples) { + for (IMFSample *s : qAsConst(samples)) { IMFMediaBuffer *buffer; s->ConvertToContiguousBuffer(&buffer); DWORD bufLen = 0; @@ -357,7 +357,7 @@ void MFAudioDecoderControl::handleSampleAdded() s->Release(); } } else { - foreach (IMFSample *s, samples) { + for (IMFSample *s : qAsConst(samples)) { HRESULT hr = m_resampler->ProcessInput(m_mfInputStreamID, s, 0); if (SUCCEEDED(hr)) { MFT_OUTPUT_DATA_BUFFER outputDataBuffer; diff --git a/src/plugins/wmf/mftvideo.cpp b/src/plugins/wmf/mftvideo.cpp index 1b3c5bbca..b7a416213 100644 --- a/src/plugins/wmf/mftvideo.cpp +++ b/src/plugins/wmf/mftvideo.cpp @@ -511,6 +511,15 @@ STDMETHODIMP MFTransform::ProcessInput(DWORD dwInputStreamID, IMFSample *pSample m_sample = pSample; m_sample->AddRef(); + QMutexLocker lockerProbe(&m_videoProbeMutex); + + if (!m_videoProbes.isEmpty()) { + QVideoFrame frame = makeVideoFrame(); + + for (MFVideoProbeControl* probe : qAsConst(m_videoProbes)) + probe->bufferProbed(frame); + } + return S_OK; } diff --git a/src/plugins/wmf/player/mfaudioendpointcontrol.cpp b/src/plugins/wmf/player/mfaudioendpointcontrol.cpp index 7178a75c1..ccd4cdf98 100644 --- a/src/plugins/wmf/player/mfaudioendpointcontrol.cpp +++ b/src/plugins/wmf/player/mfaudioendpointcontrol.cpp @@ -49,8 +49,8 @@ void MFAudioEndpointControl::clear() { m_activeEndpoint.clear(); - foreach (LPWSTR wstrID, m_devices) - CoTaskMemFree(wstrID); + for (auto it = m_devices.cbegin(), end = m_devices.cend(); it != end; ++it) + CoTaskMemFree(it.value()); m_devices.clear(); diff --git a/src/plugins/wmf/player/mfvideorenderercontrol.cpp b/src/plugins/wmf/player/mfvideorenderercontrol.cpp index 766b4b0d9..222d74ef2 100644 --- a/src/plugins/wmf/player/mfvideorenderercontrol.cpp +++ b/src/plugins/wmf/player/mfvideorenderercontrol.cpp @@ -788,8 +788,8 @@ namespace clearMediaTypes(); if (!m_surface) return; - QList<QVideoFrame::PixelFormat> formats = m_surface->supportedPixelFormats(); - foreach (QVideoFrame::PixelFormat format, formats) { + const QList<QVideoFrame::PixelFormat> formats = m_surface->supportedPixelFormats(); + for (QVideoFrame::PixelFormat format : formats) { IMFMediaType *mediaType; if (FAILED(MFCreateMediaType(&mediaType))) { qWarning("Failed to create mf media type!"); @@ -1044,7 +1044,7 @@ namespace void clearMediaTypes() { - foreach (IMFMediaType* mediaType, m_mediaTypes) + for (IMFMediaType* mediaType : qAsConst(m_mediaTypes)) mediaType->Release(); m_mediaTypes.clear(); } @@ -1285,7 +1285,7 @@ namespace bool m_prerolling; void clearSampleQueue() { - foreach (IUnknown* sample, m_sampleQueue) + for (IUnknown* sample : qAsConst(m_sampleQueue)) sample->Release(); m_sampleQueue.clear(); } @@ -1392,7 +1392,7 @@ namespace void clearBufferCache() { - foreach (SampleBuffer sb, m_bufferCache) + for (SampleBuffer sb : qAsConst(m_bufferCache)) sb.m_buffer->Release(); m_bufferCache.clear(); diff --git a/src/plugins/wmf/samplegrabber.cpp b/src/plugins/wmf/samplegrabber.cpp index 35f038891..b4cf68095 100644 --- a/src/plugins/wmf/samplegrabber.cpp +++ b/src/plugins/wmf/samplegrabber.cpp @@ -160,7 +160,7 @@ STDMETHODIMP AudioSampleGrabberCallback::OnProcessSample(REFGUID guidMajorMediaT llSampleTime /= 10; } - foreach (MFAudioProbeControl* probe, m_audioProbes) + for (MFAudioProbeControl* probe : qAsConst(m_audioProbes)) probe->bufferProbed((const char*)pSampleBuffer, dwSampleSize, m_format, llSampleTime); return S_OK; diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp index cae6cf002..d3e8c32ee 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput.cpp @@ -231,7 +231,8 @@ bool QDeclarativeVideoOutput::createBackend(QMediaService *service) { bool backendAvailable = false; - foreach (QObject *instance, videoBackendFactoryLoader()->instances(QLatin1String("declarativevideobackend"))) { + const auto instances = videoBackendFactoryLoader()->instances(QLatin1String("declarativevideobackend")); + for (QObject *instance : instances) { if (QDeclarativeVideoBackendFactoryInterface *plugin = qobject_cast<QDeclarativeVideoBackendFactoryInterface*>(instance)) { m_backend.reset(plugin->create(this)); if (m_backend && m_backend->init(service)) { diff --git a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp index 70d48dd97..36572f613 100644 --- a/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp +++ b/src/qtmultimediaquicktools/qdeclarativevideooutput_render.cpp @@ -64,7 +64,8 @@ QDeclarativeVideoRendererBackend::QDeclarativeVideoRendererBackend(QDeclarativeV // Prioritize the plugin requested by the environment QString requestedVideoNode = QString::fromLatin1(qgetenv("QT_VIDEONODE")); - foreach (const QString &key, videoNodeFactoryLoader()->keys()) { + const auto keys = videoNodeFactoryLoader()->keys(); + for (const QString &key : keys) { QObject *instance = videoNodeFactoryLoader()->instance(key); QSGVideoNodeFactoryInterface* plugin = qobject_cast<QSGVideoNodeFactoryInterface*>(instance); if (plugin) { @@ -124,7 +125,7 @@ class FilterRunnableDeleter : public QRunnable public: FilterRunnableDeleter(const QList<QVideoFilterRunnable *> &runnables) : m_runnables(runnables) { } void run() Q_DECL_OVERRIDE { - foreach (QVideoFilterRunnable *runnable, m_runnables) + for (QVideoFilterRunnable *runnable : qAsConst(m_runnables)) delete runnable; } private: @@ -335,7 +336,7 @@ QSGNode *QDeclarativeVideoRendererBackend::updatePaintNode(QSGNode *oldNode, } if (!videoNode) { - foreach (QSGVideoNodeFactoryInterface* factory, m_videoNodeFactories) { + for (QSGVideoNodeFactoryInterface* factory : qAsConst(m_videoNodeFactories)) { // Get a node that supports our frame. The surface is irrelevant, our // QSGVideoItemSurface supports (logically) anything. videoNode = factory->createNode(QVideoSurfaceFormat(m_frame.size(), m_frame.pixelFormat(), m_frame.handleType())); @@ -437,7 +438,7 @@ QList<QVideoFrame::PixelFormat> QSGVideoItemSurface::supportedPixelFormats( return formats; } - foreach (QSGVideoNodeFactoryInterface* factory, m_backend->m_videoNodeFactories) + for (QSGVideoNodeFactoryInterface* factory : qAsConst(m_backend->m_videoNodeFactories)) formats.append(factory->supportedPixelFormats(handleType)); return formats; |