From 5339aed040d58f8486205df1525508b8c02faa9c Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 9 Apr 2014 19:13:45 +0200 Subject: Moved QMediaStorageLocation out of the Android plugin. It's now a private API in the QtMultimedia library in order to be accessible in other plugins. Change-Id: I63541de1e8c540cebc210f9037646ce74d866c6f Reviewed-by: Christian Stromme --- src/multimedia/multimedia.pro | 4 +- src/multimedia/qmediastoragelocation.cpp | 146 +++++++++++++++++++++++++++++++ src/multimedia/qmediastoragelocation_p.h | 80 +++++++++++++++++ 3 files changed, 229 insertions(+), 1 deletion(-) create mode 100644 src/multimedia/qmediastoragelocation.cpp create mode 100644 src/multimedia/qmediastoragelocation_p.h (limited to 'src/multimedia') diff --git a/src/multimedia/multimedia.pro b/src/multimedia/multimedia.pro index 23cca2537..0f3ced913 100644 --- a/src/multimedia/multimedia.pro +++ b/src/multimedia/multimedia.pro @@ -21,7 +21,8 @@ PRIVATE_HEADERS += \ qmediaserviceprovider_p.h \ qmediaresourcepolicyplugin_p.h \ qmediaresourcepolicy_p.h \ - qmediaresourceset_p.h + qmediaresourceset_p.h \ + qmediastoragelocation_p.h PUBLIC_HEADERS += \ qmediabindableinterface.h \ @@ -47,6 +48,7 @@ SOURCES += \ qmediaresourcepolicyplugin_p.cpp \ qmediaresourcepolicy_p.cpp \ qmediaresourceset_p.cpp \ + qmediastoragelocation.cpp \ qmultimedia.cpp include(audio/audio.pri) diff --git a/src/multimedia/qmediastoragelocation.cpp b/src/multimedia/qmediastoragelocation.cpp new file mode 100644 index 000000000..877c12138 --- /dev/null +++ b/src/multimedia/qmediastoragelocation.cpp @@ -0,0 +1,146 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qmediastoragelocation_p.h" + +#include + +QT_BEGIN_NAMESPACE + +QMediaStorageLocation::QMediaStorageLocation() +{ +} + +void QMediaStorageLocation::addStorageLocation(MediaType type, const QString &location) +{ + m_customLocations[type].append(location); +} + +QDir QMediaStorageLocation::defaultLocation(MediaType type) const +{ + QStringList dirCandidates; + + dirCandidates << m_customLocations.value(type); + + switch (type) { + case Movies: + dirCandidates << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation); + break; + case Music: + dirCandidates << QStandardPaths::writableLocation(QStandardPaths::MusicLocation); + break; + case Pictures: + dirCandidates << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation); + default: + break; + } + + dirCandidates << QDir::homePath(); + dirCandidates << QDir::currentPath(); + dirCandidates << QDir::tempPath(); + + Q_FOREACH (const QString &path, dirCandidates) { + if (QFileInfo(path).isWritable()) + return QDir(path); + } + + return QDir(); +} + +QString QMediaStorageLocation::generateFileName(const QString &requestedName, + MediaType type, + const QString &prefix, + const QString &extension) const +{ + if (requestedName.isEmpty()) + return generateFileName(prefix, defaultLocation(type), extension); + + QString path = requestedName; + + if (QFileInfo(path).isRelative()) + path = defaultLocation(type).absoluteFilePath(path); + + if (QFileInfo(path).isDir()) + return generateFileName(prefix, QDir(path), extension); + + if (!path.endsWith(extension)) + path.append(QString(QLatin1String(".%1")).arg(extension)); + + return path; +} + +QString QMediaStorageLocation::generateFileName(const QString &prefix, + const QDir &dir, + const QString &extension) const +{ + QMutexLocker lock(&m_mutex); + + const QString lastMediaKey = dir.absolutePath() + QLatin1Char(' ') + prefix + QLatin1Char(' ') + extension; + qint64 lastMediaIndex = m_lastUsedIndex.value(lastMediaKey, 0); + + 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 qint64 mediaIndex = fileName.midRef(prefix.length(), fileName.size() - prefix.length() - extension.length() - 1).toInt(); + lastMediaIndex = qMax(lastMediaIndex, mediaIndex); + } + } + + // don't just rely on cached lastMediaIndex value, + // someone else may create a file after camera started + while (true) { + const QString name = QString(QLatin1String("%1%2.%3")).arg(prefix) + .arg(lastMediaIndex + 1, 8, 10, QLatin1Char('0')) + .arg(extension); + + const QString path = dir.absoluteFilePath(name); + if (!QFileInfo(path).exists()) { + m_lastUsedIndex[lastMediaKey] = lastMediaIndex + 1; + return path; + } + + lastMediaIndex++; + } + + return QString(); +} + +QT_END_NAMESPACE diff --git a/src/multimedia/qmediastoragelocation_p.h b/src/multimedia/qmediastoragelocation_p.h new file mode 100644 index 000000000..600fb63ff --- /dev/null +++ b/src/multimedia/qmediastoragelocation_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QMEDIASTORAGELOCATION_H +#define QMEDIASTORAGELOCATION_H + +#include +#include +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class Q_MULTIMEDIA_EXPORT QMediaStorageLocation +{ +public: + enum MediaType { + Movies, + Music, + Pictures, + Sounds + }; + + QMediaStorageLocation(); + + void addStorageLocation(MediaType type, const QString &location); + + QDir defaultLocation(MediaType type) const; + + QString generateFileName(const QString &requestedName, MediaType type, const QString &prefix, const QString &extension) const; + QString generateFileName(const QString &prefix, const QDir &dir, const QString &extension) const; + +private: + mutable QMutex m_mutex; + mutable QHash m_lastUsedIndex; + QMap m_customLocations; +}; + +QT_END_NAMESPACE + +#endif // QMEDIASTORAGELOCATION_H -- cgit v1.2.3 From 364258abfcc438f79908e8c47fd0fd68cfecee36 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 9 May 2014 15:31:33 +0200 Subject: PLS parser: Don't translate entries. Each entry in a PLS file uses the keywords 'File', 'Title' and 'Length' in English, it should not be translated to the user's locale... Task-number: QTBUG-38755 Change-Id: Ibd5bee18a856b3ebc1fdb177241db7a39b65d264 Reviewed-by: Christian Stromme --- src/multimedia/playback/playlistfileparser.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/playback/playlistfileparser.cpp b/src/multimedia/playback/playlistfileparser.cpp index ae14d2159..1254d6131 100644 --- a/src/multimedia/playback/playlistfileparser.cpp +++ b/src/multimedia/playback/playlistfileparser.cpp @@ -307,9 +307,9 @@ Version=2 void setCount(int count) { m_count = count; - m_fileName = QString(tr("File%1")).arg(count); - m_titleName = QString(tr("Title%1")).arg(count); - m_lengthName = QString(tr("Length%1")).arg(count); + m_fileName = QStringLiteral("File%1").arg(count); + m_titleName = QStringLiteral("Title%1").arg(count); + m_lengthName = QStringLiteral("Length%1").arg(count); m_item.clear(); m_readFlags = 0; } -- cgit v1.2.3 From 9cf77e3bb531320f3c982a88ee31df8a75482f13 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 12 May 2014 16:50:30 +0200 Subject: Improve documentation for the QMediaPlayer::bufferStatus property. The corresponding properties in the Audio and MediaPlayer QML elements are also updated. Change-Id: I7104d274d431e7712db2f045c375756e8c2ac03a Reviewed-by: Jerome Pasion --- src/multimedia/playback/qmediaplayer.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index bf6294a1e..cb054fe52 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -1238,12 +1238,14 @@ QMultimedia::AvailabilityStatus QMediaPlayer::availability() const /*! \property QMediaPlayer::bufferStatus - \brief the percentage of the temporary buffer filled before playback begins. + \brief the percentage of the temporary buffer filled before playback begins or resumes, from + \c 0 (empty) to \c 100 (full). When the player object is buffering; this property holds the percentage of the temporary buffer that is filled. The buffer will need to reach 100% - filled before playback can resume, at which time the MediaStatus will be - BufferedMedia. + filled before playback can start or resume, at which time mediaStatus() will return + BufferedMedia or BufferingMedia. If the value is anything lower than \c 100, mediaStatus() will + return StalledMedia. \sa mediaStatus() */ -- cgit v1.2.3 From efa4628e7489677166aadde5f94376d5e41146f9 Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Mon, 26 May 2014 16:20:49 +0200 Subject: Use Q_CONSTRUCTOR_FUNCTION macro to register multimedia meta types. Task-number: QTBUG-39131 Change-Id: I2493c9e3e6f0065d0441a74ff240d7d91fbe059c Reviewed-by: Christian Stromme --- src/multimedia/audio/qaudio.cpp | 20 +++++---------- src/multimedia/audio/qaudiobuffer.cpp | 14 ++++------- src/multimedia/audio/qaudiodecoder.cpp | 15 ++++------- src/multimedia/audio/qaudiodeviceinfo.cpp | 13 +++------- src/multimedia/audio/qaudioformat.cpp | 16 ++++-------- src/multimedia/camera/qcamera.cpp | 29 +++++++++------------- src/multimedia/camera/qcameraexposure.cpp | 16 ++++-------- src/multimedia/camera/qcamerafocus.cpp | 16 +++++------- src/multimedia/camera/qcameraimagecapture.cpp | 17 +++++-------- src/multimedia/camera/qcameraimageprocessing.cpp | 13 +++------- .../controls/qcameraimageprocessingcontrol.cpp | 13 +++------- src/multimedia/controls/qmediastreamscontrol.cpp | 14 ++++------- src/multimedia/playback/qmediacontent.cpp | 13 +++------- src/multimedia/playback/qmediaplayer.cpp | 18 ++++++-------- src/multimedia/playback/qmediaplaylist.cpp | 17 +++++-------- src/multimedia/playback/qmediaresource.cpp | 18 ++++++-------- src/multimedia/qmultimedia.cpp | 20 ++++++--------- src/multimedia/radio/qradiodata.cpp | 17 +++++-------- src/multimedia/radio/qradiotuner.cpp | 23 +++++++---------- src/multimedia/recording/qmediaencodersettings.cpp | 18 ++++++-------- src/multimedia/recording/qmediarecorder.cpp | 18 ++++++-------- src/multimedia/video/qabstractvideobuffer.cpp | 16 +++++------- src/multimedia/video/qabstractvideosurface.cpp | 13 +++------- src/multimedia/video/qvideoframe.cpp | 17 +++++-------- src/multimedia/video/qvideosurfaceformat.cpp | 17 +++++-------- 25 files changed, 150 insertions(+), 271 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/audio/qaudio.cpp b/src/multimedia/audio/qaudio.cpp index 13cc2947f..5039729be 100644 --- a/src/multimedia/audio/qaudio.cpp +++ b/src/multimedia/audio/qaudio.cpp @@ -45,23 +45,15 @@ QT_BEGIN_NAMESPACE -namespace QAudio +static void qRegisterAudioMetaTypes() { - -class RegisterMetaTypes -{ -public: - RegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } - -} _register; - + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAudioMetaTypes) + /*! \namespace QAudio \brief The QAudio namespace contains enums used by the audio classes. diff --git a/src/multimedia/audio/qaudiobuffer.cpp b/src/multimedia/audio/qaudiobuffer.cpp index 586ab4490..3d7346a97 100644 --- a/src/multimedia/audio/qaudiobuffer.cpp +++ b/src/multimedia/audio/qaudiobuffer.cpp @@ -47,18 +47,14 @@ QT_BEGIN_NAMESPACE -namespace + +static void qRegisterAudioBufferMetaTypes() { - class QAudioBufferPrivateRegisterMetaTypes - { - public: - QAudioBufferPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAudioBufferMetaTypes) + class QAudioBufferPrivate : public QSharedData { diff --git a/src/multimedia/audio/qaudiodecoder.cpp b/src/multimedia/audio/qaudiodecoder.cpp index 3f0fcd4dd..9397d7419 100644 --- a/src/multimedia/audio/qaudiodecoder.cpp +++ b/src/multimedia/audio/qaudiodecoder.cpp @@ -72,19 +72,14 @@ QT_BEGIN_NAMESPACE \sa QAudioBuffer */ -namespace +static void qRegisterAudioDecoderMetaTypes() { -class AudioDecoderRegisterMetaTypes -{ -public: - AudioDecoderRegisterMetaTypes() - { - qRegisterMetaType("QAudioDecoder::State"); - qRegisterMetaType("QAudioDecoder::Error"); - } -} _registerPlayerMetaTypes; + qRegisterMetaType("QAudioDecoder::State"); + qRegisterMetaType("QAudioDecoder::Error"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAudioDecoderMetaTypes) + class QAudioDecoderPrivate : public QMediaObjectPrivate { Q_DECLARE_NON_CONST_PUBLIC(QAudioDecoder) diff --git a/src/multimedia/audio/qaudiodeviceinfo.cpp b/src/multimedia/audio/qaudiodeviceinfo.cpp index ff31f3534..ca42373e2 100644 --- a/src/multimedia/audio/qaudiodeviceinfo.cpp +++ b/src/multimedia/audio/qaudiodeviceinfo.cpp @@ -47,18 +47,13 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterAudioDeviceInfoMetaTypes() { - class QAudioInfoPrivateRegisterMetaTypes - { - public: - QAudioInfoPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAudioDeviceInfoMetaTypes) + class QAudioDeviceInfoPrivate : public QSharedData { public: diff --git a/src/multimedia/audio/qaudioformat.cpp b/src/multimedia/audio/qaudioformat.cpp index b83256a10..6992bf992 100644 --- a/src/multimedia/audio/qaudioformat.cpp +++ b/src/multimedia/audio/qaudioformat.cpp @@ -44,20 +44,14 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterAudioFormatMetaTypes() { - class QAudioFormatPrivateRegisterMetaTypes - { - public: - QAudioFormatPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAudioFormatMetaTypes) class QAudioFormatPrivate : public QSharedData { diff --git a/src/multimedia/camera/qcamera.cpp b/src/multimedia/camera/qcamera.cpp index 32bab0019..84833c6a3 100644 --- a/src/multimedia/camera/qcamera.cpp +++ b/src/multimedia/camera/qcamera.cpp @@ -56,26 +56,21 @@ #include -namespace -{ -class CameraRegisterMetaTypes +QT_BEGIN_NAMESPACE + +static void qRegisterCameraMetaTypes() { -public: - CameraRegisterMetaTypes() - { - qRegisterMetaType("QCamera::Error"); - qRegisterMetaType("QCamera::State"); - qRegisterMetaType("QCamera::Status"); - qRegisterMetaType("QCamera::CaptureModes"); - qRegisterMetaType("QCamera::LockType"); - qRegisterMetaType("QCamera::LockStatus"); - qRegisterMetaType("QCamera::LockChangeReason"); - qRegisterMetaType("QCamera::Position"); - } -} _registerCameraMetaTypes; + qRegisterMetaType("QCamera::Error"); + qRegisterMetaType("QCamera::State"); + qRegisterMetaType("QCamera::Status"); + qRegisterMetaType("QCamera::CaptureModes"); + qRegisterMetaType("QCamera::LockType"); + qRegisterMetaType("QCamera::LockStatus"); + qRegisterMetaType("QCamera::LockChangeReason"); + qRegisterMetaType("QCamera::Position"); } -QT_BEGIN_NAMESPACE +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraMetaTypes) /*! \class QCamera diff --git a/src/multimedia/camera/qcameraexposure.cpp b/src/multimedia/camera/qcameraexposure.cpp index 4385cd4a4..7f1ef842a 100644 --- a/src/multimedia/camera/qcameraexposure.cpp +++ b/src/multimedia/camera/qcameraexposure.cpp @@ -65,20 +65,14 @@ QT_BEGIN_NAMESPACE //#define DEBUG_EXPOSURE_CHANGES 1 -namespace +static void qRegisterCameraExposureMetaTypes() { -class CameraExposureRegisterMetaTypes -{ -public: - CameraExposureRegisterMetaTypes() - { - qRegisterMetaType("QCameraExposure::ExposureMode"); - qRegisterMetaType("QCameraExposure::FlashModes"); - qRegisterMetaType("QCameraExposure::MeteringMode"); - } -} _registerCameraExposureMetaTypes; + qRegisterMetaType("QCameraExposure::ExposureMode"); + qRegisterMetaType("QCameraExposure::FlashModes"); + qRegisterMetaType("QCameraExposure::MeteringMode"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraExposureMetaTypes) class QCameraExposurePrivate diff --git a/src/multimedia/camera/qcamerafocus.cpp b/src/multimedia/camera/qcamerafocus.cpp index cae285167..0b6d331b4 100644 --- a/src/multimedia/camera/qcamerafocus.cpp +++ b/src/multimedia/camera/qcamerafocus.cpp @@ -55,19 +55,15 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterCameraFocusMetaTypes() { -class CameraFocusRegisterMetaTypes -{ -public: - CameraFocusRegisterMetaTypes() - { - qRegisterMetaType("QCameraFocus::FocusModes"); - qRegisterMetaType("QCameraFocus::FocusPointMode"); - } -} _registerCameraFocusMetaTypes; + qRegisterMetaType("QCameraFocus::FocusModes"); + qRegisterMetaType("QCameraFocus::FocusPointMode"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraFocusMetaTypes) + + class QCameraFocusFakeZoomControl : public QCameraZoomControl { public: diff --git a/src/multimedia/camera/qcameraimagecapture.cpp b/src/multimedia/camera/qcameraimagecapture.cpp index 409db4947..400c2b925 100644 --- a/src/multimedia/camera/qcameraimagecapture.cpp +++ b/src/multimedia/camera/qcameraimagecapture.cpp @@ -83,20 +83,15 @@ QT_BEGIN_NAMESPACE \value CaptureToBuffer Capture the image to a buffer for further processing. */ -namespace +static void qRegisterCameraImageCaptureMetaTypes() { -class MediaRecorderRegisterMetaTypes -{ -public: - MediaRecorderRegisterMetaTypes() - { - qRegisterMetaType("QCameraImageCapture::Error"); - qRegisterMetaType("QCameraImageCapture::CaptureDestination"); - qRegisterMetaType("QCameraImageCapture::CaptureDestinations"); - } -} _registerRecorderMetaTypes; + qRegisterMetaType("QCameraImageCapture::Error"); + qRegisterMetaType("QCameraImageCapture::CaptureDestination"); + qRegisterMetaType("QCameraImageCapture::CaptureDestinations"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraImageCaptureMetaTypes) + class QCameraImageCapturePrivate { diff --git a/src/multimedia/camera/qcameraimageprocessing.cpp b/src/multimedia/camera/qcameraimageprocessing.cpp index 7df222458..6f08b7860 100644 --- a/src/multimedia/camera/qcameraimageprocessing.cpp +++ b/src/multimedia/camera/qcameraimageprocessing.cpp @@ -52,20 +52,15 @@ #include -namespace -{ - class QCameraImageProcessingPrivateRegisterMetaTypes - { - public: - QCameraImageProcessingPrivateRegisterMetaTypes() +QT_BEGIN_NAMESPACE + +static void qRegisterCameraImageProcessingMetaTypes() { qRegisterMetaType(); } - } _registerMetaTypes; -} +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraImageProcessingMetaTypes) -QT_BEGIN_NAMESPACE /*! \class QCameraImageProcessing diff --git a/src/multimedia/controls/qcameraimageprocessingcontrol.cpp b/src/multimedia/controls/qcameraimageprocessingcontrol.cpp index f9cb8c86f..944b09643 100644 --- a/src/multimedia/controls/qcameraimageprocessingcontrol.cpp +++ b/src/multimedia/controls/qcameraimageprocessingcontrol.cpp @@ -44,18 +44,13 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterCameraImageProcessingControlMetaTypes() { - class QCameraImageProcessingControlPrivateRegisterMetaTypes - { - public: - QCameraImageProcessingControlPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterCameraImageProcessingControlMetaTypes) + /*! \class QCameraImageProcessingControl \inmodule QtMultimedia diff --git a/src/multimedia/controls/qmediastreamscontrol.cpp b/src/multimedia/controls/qmediastreamscontrol.cpp index a054289f7..11d31599d 100644 --- a/src/multimedia/controls/qmediastreamscontrol.cpp +++ b/src/multimedia/controls/qmediastreamscontrol.cpp @@ -44,18 +44,14 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterMediaStreamControlMetaTypes() { - class QMediaStreamsControlPrivateRegisterMetaTypes - { - public: - QMediaStreamsControlPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaStreamControlMetaTypes) + + /*! \class QMediaStreamsControl \inmodule QtMultimedia diff --git a/src/multimedia/playback/qmediacontent.cpp b/src/multimedia/playback/qmediacontent.cpp index 4c32128f5..ff3ed28d3 100644 --- a/src/multimedia/playback/qmediacontent.cpp +++ b/src/multimedia/playback/qmediacontent.cpp @@ -48,18 +48,13 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterMediaContentMetaTypes() { - class QMediaContentPrivateRegisterMetaTypes - { - public: - QMediaContentPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaContentMetaTypes) + class QMediaContentPrivate : public QSharedData { diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index cb054fe52..e8899ddff 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -90,20 +90,16 @@ QT_BEGIN_NAMESPACE \sa QMediaObject, QMediaService, QVideoWidget, QMediaPlaylist */ -namespace +static void qRegisterMediaPlayerMetaTypes() { -class MediaPlayerRegisterMetaTypes -{ -public: - MediaPlayerRegisterMetaTypes() - { - qRegisterMetaType("QMediaPlayer::State"); - qRegisterMetaType("QMediaPlayer::MediaStatus"); - qRegisterMetaType("QMediaPlayer::Error"); - } -} _registerPlayerMetaTypes; + qRegisterMetaType("QMediaPlayer::State"); + qRegisterMetaType("QMediaPlayer::MediaStatus"); + qRegisterMetaType("QMediaPlayer::Error"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaPlayerMetaTypes) + + #define MAX_NESTED_PLAYLISTS 16 class QMediaPlayerPrivate : public QMediaObjectPrivate diff --git a/src/multimedia/playback/qmediaplaylist.cpp b/src/multimedia/playback/qmediaplaylist.cpp index 68a8917f5..a81681079 100644 --- a/src/multimedia/playback/qmediaplaylist.cpp +++ b/src/multimedia/playback/qmediaplaylist.cpp @@ -61,19 +61,14 @@ QT_BEGIN_NAMESPACE Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, playlistIOLoader, (QMediaPlaylistIOInterface_iid, QLatin1String("playlistformats"), Qt::CaseInsensitive)) -namespace -{ - class QMediaPlaylistPrivateRegisterMetaTypes - { - public: - QMediaPlaylistPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; +static void qRegisterMediaPlaylistMetaTypes() +{ + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaPlaylistMetaTypes) + /*! \class QMediaPlaylist diff --git a/src/multimedia/playback/qmediaresource.cpp b/src/multimedia/playback/qmediaresource.cpp index 62c982ca7..4997620a9 100644 --- a/src/multimedia/playback/qmediaresource.cpp +++ b/src/multimedia/playback/qmediaresource.cpp @@ -47,19 +47,15 @@ QT_BEGIN_NAMESPACE -namespace -{ - class QMediaResourcePrivateRegisterMetaTypes - { - public: - QMediaResourcePrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; +static void qRegisterMediaResourceMetaTypes() +{ + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaResourceMetaTypes) + + /*! \class QMediaResource diff --git a/src/multimedia/qmultimedia.cpp b/src/multimedia/qmultimedia.cpp index 0f4d98f7f..140d4a348 100644 --- a/src/multimedia/qmultimedia.cpp +++ b/src/multimedia/qmultimedia.cpp @@ -41,21 +41,17 @@ QT_BEGIN_NAMESPACE */ -namespace +static void qRegisterMultimediaMetaTypes() { - class QMultimediaNamespacePrivateRegisterMetaTypes - { - public: - QMultimediaNamespacePrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMultimediaMetaTypes) + + /*! \enum QMultimedia::SupportEstimate diff --git a/src/multimedia/radio/qradiodata.cpp b/src/multimedia/radio/qradiodata.cpp index 66b051a47..d6bde35ba 100644 --- a/src/multimedia/radio/qradiodata.cpp +++ b/src/multimedia/radio/qradiodata.cpp @@ -50,20 +50,15 @@ QT_BEGIN_NAMESPACE - -namespace +static void qRegisterRadioDataMetaTypes() { - class QRadioDataPrivateRegisterMetaTypes - { - public: - QRadioDataPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterRadioDataMetaTypes) + + /*! \class QRadioData \brief The QRadioData class provides interfaces to the RDS functionality of the system radio. diff --git a/src/multimedia/radio/qradiotuner.cpp b/src/multimedia/radio/qradiotuner.cpp index 9255783d0..29a0d6d37 100644 --- a/src/multimedia/radio/qradiotuner.cpp +++ b/src/multimedia/radio/qradiotuner.cpp @@ -52,22 +52,17 @@ QT_BEGIN_NAMESPACE -namespace -{ - class QRadioTunerPrivateRegisterMetaTypes - { - public: - QRadioTunerPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; +static void qRegisterRadioTunerMetaTypes() +{ + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterRadioTunerMetaTypes) + /*! \class QRadioTuner diff --git a/src/multimedia/recording/qmediaencodersettings.cpp b/src/multimedia/recording/qmediaencodersettings.cpp index 731692643..e75115116 100644 --- a/src/multimedia/recording/qmediaencodersettings.cpp +++ b/src/multimedia/recording/qmediaencodersettings.cpp @@ -43,20 +43,16 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterEncoderSettingsMetaTypes() { -class QMediaEncoderSettingsPrivateRegisterMetaTypes -{ -public: - QMediaEncoderSettingsPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } -} _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterEncoderSettingsMetaTypes) + + class QAudioEncoderSettingsPrivate : public QSharedData { public: diff --git a/src/multimedia/recording/qmediarecorder.cpp b/src/multimedia/recording/qmediarecorder.cpp index f38de025c..7c28caf98 100644 --- a/src/multimedia/recording/qmediarecorder.cpp +++ b/src/multimedia/recording/qmediarecorder.cpp @@ -80,20 +80,16 @@ QT_BEGIN_NAMESPACE \sa QAudioRecorder */ -namespace +static void qRegisterMediaRecorderMetaTypes() { -class MediaRecorderRegisterMetaTypes -{ -public: - MediaRecorderRegisterMetaTypes() - { - qRegisterMetaType("QMediaRecorder::State"); - qRegisterMetaType("QMediaRecorder::Status"); - qRegisterMetaType("QMediaRecorder::Error"); - } -} _registerRecorderMetaTypes; + qRegisterMetaType("QMediaRecorder::State"); + qRegisterMetaType("QMediaRecorder::Status"); + qRegisterMetaType("QMediaRecorder::Error"); } +Q_CONSTRUCTOR_FUNCTION(qRegisterMediaRecorderMetaTypes) + + QMediaRecorderPrivate::QMediaRecorderPrivate(): mediaObject(0), control(0), diff --git a/src/multimedia/video/qabstractvideobuffer.cpp b/src/multimedia/video/qabstractvideobuffer.cpp index 5f69382e3..79da6f9b7 100644 --- a/src/multimedia/video/qabstractvideobuffer.cpp +++ b/src/multimedia/video/qabstractvideobuffer.cpp @@ -48,19 +48,15 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterAbstractVideoBufferMetaTypes() { - class QAbstractVideoBufferPrivateRegisterMetaTypes - { - public: - QAbstractVideoBufferPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAbstractVideoBufferMetaTypes) + + /*! \class QAbstractVideoBuffer \brief The QAbstractVideoBuffer class is an abstraction for video data. diff --git a/src/multimedia/video/qabstractvideosurface.cpp b/src/multimedia/video/qabstractvideosurface.cpp index e62c514d7..ff9356122 100644 --- a/src/multimedia/video/qabstractvideosurface.cpp +++ b/src/multimedia/video/qabstractvideosurface.cpp @@ -50,18 +50,13 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterAbstractVideoSurfaceMetaTypes() { - class QAbstractVideoSurfacePrivateRegisterMetaTypes - { - public: - QAbstractVideoSurfacePrivateRegisterMetaTypes() - { - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterAbstractVideoSurfaceMetaTypes) + class QAbstractVideoSurfacePrivate { public: diff --git a/src/multimedia/video/qvideoframe.cpp b/src/multimedia/video/qvideoframe.cpp index 29f6e4731..ad81c80e7 100644 --- a/src/multimedia/video/qvideoframe.cpp +++ b/src/multimedia/video/qvideoframe.cpp @@ -55,20 +55,15 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterVideoFrameMetaTypes() { -class QVideoFramePrivateRegisterMetaTypes -{ -public: - QVideoFramePrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } -} _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterVideoFrameMetaTypes) + class QVideoFramePrivate : public QSharedData { diff --git a/src/multimedia/video/qvideosurfaceformat.cpp b/src/multimedia/video/qvideosurfaceformat.cpp index 5806f3b9b..56814f478 100644 --- a/src/multimedia/video/qvideosurfaceformat.cpp +++ b/src/multimedia/video/qvideosurfaceformat.cpp @@ -49,20 +49,15 @@ QT_BEGIN_NAMESPACE -namespace +static void qRegisterVideoSurfaceFormatMetaTypes() { - class QVideoSurfaceFormatPrivateRegisterMetaTypes - { - public: - QVideoSurfaceFormatPrivateRegisterMetaTypes() - { - qRegisterMetaType(); - qRegisterMetaType(); - qRegisterMetaType(); - } - } _registerMetaTypes; + qRegisterMetaType(); + qRegisterMetaType(); + qRegisterMetaType(); } +Q_CONSTRUCTOR_FUNCTION(qRegisterVideoSurfaceFormatMetaTypes) + class QVideoSurfaceFormatPrivate : public QSharedData { -- cgit v1.2.3 From cb6b4e2079d561bdb4e4e7d661c74c2f6ad15040 Mon Sep 17 00:00:00 2001 From: Topi Reinio Date: Wed, 4 Jun 2014 11:08:13 +0200 Subject: Doc: Remove comment about preliminary API for Qt 5.0 Task-number: QTBUG-39195 Change-Id: I193321a29d06760e4ad5aa2eaca99d98b2e1f65a Reviewed-by: Jerome Pasion --- src/multimedia/doc/src/audiooverview.qdoc | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/doc/src/audiooverview.qdoc b/src/multimedia/doc/src/audiooverview.qdoc index 54735da6c..32556543b 100644 --- a/src/multimedia/doc/src/audiooverview.qdoc +++ b/src/multimedia/doc/src/audiooverview.qdoc @@ -116,18 +116,14 @@ code but more buffering, which may affect latency. \section2 Decoding Compressed Audio to Memory In some cases you may want to decode a compressed audio file and do further -processing yourself (like mix multiple samples, or some custom digital signal -processing algorithms). Qt Multimedia 5.0 offers a preliminary API for this -case - the \l QAudioDecoder class. QAudioDecoder supports decoding local files -or from a QIODevice instances. +processing yourself (for example, mixing multiple samples or using custom +digital signal processing algorithms). QAudioDecoder supports decoding local +files or data streams from QIODevice instances. Here's an example of decoding a local file: \snippet multimedia-snippets/audio.cpp Local audio decoding -Note: This API is preliminary at this time - the API may change or be -removed before the final 5.0 release. - \section1 Examples There are both C++ and QML examples available. -- cgit v1.2.3 From d71aaca893a27a8a9a6712a59313300b87226a4f Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Tue, 20 May 2014 15:52:54 +0200 Subject: Improve default audio plugin selection. When no audio plugin is marked as default, use the first plugin available. Change-Id: Ide8db0fe55f43c4881c24505c1e2821b0fc176f6 Reviewed-by: Dyami Caliri Reviewed-by: Christian Stromme --- src/multimedia/audio/qaudiodevicefactory.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'src/multimedia') diff --git a/src/multimedia/audio/qaudiodevicefactory.cpp b/src/multimedia/audio/qaudiodevicefactory.cpp index a36ab3932..50f4a7676 100644 --- a/src/multimedia/audio/qaudiodevicefactory.cpp +++ b/src/multimedia/audio/qaudiodevicefactory.cpp @@ -49,6 +49,11 @@ QT_BEGIN_NAMESPACE +static QString defaultKey() +{ + return QStringLiteral("default"); +} + #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, audioLoader, (QAudioSystemFactoryInterface_iid, QLatin1String("audio"), Qt::CaseInsensitive)) @@ -137,13 +142,18 @@ QList QAudioDeviceFactory::availableDevices(QAudio::Mode mode) QAudioDeviceInfo QAudioDeviceFactory::defaultInputDevice() { #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) - QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(QLatin1String("default"))); - + QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(defaultKey())); if (plugin) { QList list = plugin->availableDevices(QAudio::AudioInput); if (list.size() > 0) - return QAudioDeviceInfo(QLatin1String("default"), list.at(0), QAudio::AudioInput); + return QAudioDeviceInfo(defaultKey(), list.at(0), QAudio::AudioInput); } + + // if no plugin is marked as default or if the default plugin doesn't have any input device, + // return the first input available from other plugins. + QList inputDevices = availableDevices(QAudio::AudioInput); + if (!inputDevices.isEmpty()) + return inputDevices.first(); #endif return QAudioDeviceInfo(); @@ -152,13 +162,18 @@ QAudioDeviceInfo QAudioDeviceFactory::defaultInputDevice() QAudioDeviceInfo QAudioDeviceFactory::defaultOutputDevice() { #if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS) - QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(QLatin1String("default"))); - + QAudioSystemFactoryInterface* plugin = qobject_cast(audioLoader()->instance(defaultKey())); if (plugin) { QList list = plugin->availableDevices(QAudio::AudioOutput); if (list.size() > 0) - return QAudioDeviceInfo(QLatin1String("default"), list.at(0), QAudio::AudioOutput); + return QAudioDeviceInfo(defaultKey(), list.at(0), QAudio::AudioOutput); } + + // if no plugin is marked as default or if the default plugin doesn't have any output device, + // return the first output available from other plugins. + QList outputDevices = availableDevices(QAudio::AudioOutput); + if (!outputDevices.isEmpty()) + return outputDevices.first(); #endif return QAudioDeviceInfo(); -- cgit v1.2.3