diff options
author | Lars Knoll <lars.knoll@qt.io> | 2021-04-13 13:12:07 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2021-04-16 11:00:53 +0000 |
commit | 24e4fb4cbcb73c2268b3232e5704bcc32e7f6a23 (patch) | |
tree | e5a69fd914a20b61ddfe47c5ec6bfc026cfebb76 /src/imports | |
parent | 516fcd10d203fb02eb067b3911fcbf507693059b (diff) |
Get rid of QDeclarativeAudio
The class was a wrapper class for QMediaPlayer used for
the MediaPlayer and Audio QML types. Remove it, as
QMediaPlayer can be exposed directly.
Change-Id: I46a13741ceb170db57c8bb54b7a922e483eab537
Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Reviewed-by: Doris Verria <doris.verria@qt.io>
Diffstat (limited to 'src/imports')
-rw-r--r-- | src/imports/multimedia/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/imports/multimedia/mediaplayer.qdoc (renamed from src/imports/multimedia/qdeclarativeaudio.cpp) | 524 | ||||
-rw-r--r-- | src/imports/multimedia/multimedia.cpp | 20 | ||||
-rw-r--r-- | src/imports/multimedia/qdeclarativeaudio_p.h | 282 |
4 files changed, 12 insertions, 815 deletions
diff --git a/src/imports/multimedia/CMakeLists.txt b/src/imports/multimedia/CMakeLists.txt index 55b1234a9..0cfa7f902 100644 --- a/src/imports/multimedia/CMakeLists.txt +++ b/src/imports/multimedia/CMakeLists.txt @@ -10,7 +10,6 @@ qt_internal_add_qml_module(declarative_multimedia CLASSNAME QMultimediaDeclarativeModule SOURCES multimedia.cpp - qdeclarativeaudio.cpp qdeclarativeaudio_p.h qdeclarativecamera.cpp qdeclarativecamera_p.h qdeclarativecameracapture.cpp qdeclarativecameracapture_p.h qdeclarativecameraexposure.cpp qdeclarativecameraexposure_p.h diff --git a/src/imports/multimedia/qdeclarativeaudio.cpp b/src/imports/multimedia/mediaplayer.qdoc index ea3a9121e..7721a2d5c 100644 --- a/src/imports/multimedia/qdeclarativeaudio.cpp +++ b/src/imports/multimedia/mediaplayer.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Toolkit. @@ -36,25 +36,10 @@ ** $QT_END_LICENSE$ ** ****************************************************************************/ -#include <QtQml/qqmlinfo.h> - -#include "qdeclarativeaudio_p.h" - -#include <private/qplatformmediaplayer_p.h> - -#include <private/qdeclarativevideooutput_p.h> -#include <qvideosink.h> - -#include "qdeclarativemediametadata_p.h" - -#include <QTimerEvent> -#include <QtQml/qqmlengine.h> - -QT_BEGIN_NAMESPACE /*! \qmltype Audio - \instantiates QDeclarativeAudio + \instantiates QMediaPlayer \brief Add audio playback to a scene. \inqmlmodule QtMultimedia @@ -82,41 +67,6 @@ QT_BEGIN_NAMESPACE \sa Video */ -void QDeclarativeAudio::_q_error(QMediaPlayer::Error errorCode) -{ - m_error = errorCode; - m_errorString = m_player->errorString(); - - emit error(Error(errorCode), m_errorString); - emit errorChanged(); -} - -QDeclarativeAudio::QDeclarativeAudio(QObject *parent) - : QObject(parent) - , m_autoPlay(false) - , m_autoLoad(true) - , m_loaded(false) - , m_muted(false) - , m_complete(false) - , m_loopCount(1) - , m_runningCount(0) - , m_position(0) - , m_vol(1.0) - , m_playbackRate(1.0) - , m_audioRole(UnknownRole) - , m_playbackState(QMediaPlayer::StoppedState) - , m_status(QMediaPlayer::NoMedia) - , m_error(QMediaPlayer::ServiceMissingError) - , m_player(nullptr) -{ -} - -QDeclarativeAudio::~QDeclarativeAudio() -{ - m_metaData.reset(); - delete m_player; -} - /*! \since 5.15 \qmlproperty url QtMultimedia::MediaPlayer::videoOutput @@ -129,62 +79,11 @@ QDeclarativeAudio::~QDeclarativeAudio() \sa QMediaPlayer::setVideoOutput() */ -QVariant QDeclarativeAudio::videoOutput() const -{ - return m_videoOutput; -} - -void QDeclarativeAudio::setVideoOutput(const QVariant &v) -{ - if (m_videoOutput == v) - return; - - QVideoSink *sink = nullptr; - auto vo = v.value<QDeclarativeVideoOutput *>(); - if (vo) - sink = vo->videoSink(); - else - sink = v.value<QVideoSink *>(); - - // If only one object has been passed. - if (sink) { - m_player->setVideoOutput(sink); - } else { - QList<QVideoSink *> sinks; - // Check if it is an array. - auto arr = v.value<QJSValue>(); - if (!arr.isNull()) { - const int len = arr.property("length").toInt(); - for (int i = 0; i < len; ++i) { - auto &&v = arr.property(i); - if (v.isQObject()) { - auto obj = v.toQObject(); - vo = qobject_cast<QDeclarativeVideoOutput *>(obj); - sink = vo ? vo->videoSink() : qobject_cast<QVideoSink *>(obj); - if (sink) - sinks.append(sink); - } - } - } - - m_player->setVideoOutput(sinks); - } - - m_videoOutput = v; - emit videoOutputChanged(); -} - /*! \qmlproperty bool QtMultimedia::Audio::isAvailable Returns the availability state of the media player. */ -bool QDeclarativeAudio::isAvailable() const -{ - if (!m_player) - return false; - return m_player->isAvailable(); -} /*! \qmlproperty enumeration QtMultimedia::Audio::audioRole @@ -213,23 +112,6 @@ bool QDeclarativeAudio::isAvailable() const \since 5.6 */ -QDeclarativeAudio::AudioRole QDeclarativeAudio::audioRole() const -{ - return !m_complete ? m_audioRole : AudioRole(m_player->audioRole()); -} - -void QDeclarativeAudio::setAudioRole(QDeclarativeAudio::AudioRole audioRole) -{ - if (this->audioRole() == audioRole) - return; - - if (m_complete) { - m_player->setAudioRole(QAudio::Role(audioRole)); - } else { - m_audioRole = audioRole; - emit audioRoleChanged(); - } -} /*! \qmlmethod list<int> QtMultimedia::Audio::supportedAudioRoles() @@ -241,222 +123,6 @@ void QDeclarativeAudio::setAudioRole(QDeclarativeAudio::AudioRole audioRole) \since 5.6 \sa audioRole */ -QJSValue QDeclarativeAudio::supportedAudioRoles() const -{ - QJSEngine *engine = qmlEngine(this); - - if (!m_complete) - return engine->newArray(); - - QList<QAudio::Role> roles = m_player->supportedAudioRoles(); - int size = roles.size(); - - QJSValue result = engine->newArray(size); - for (int i = 0; i < size; ++i) - result.setProperty(i, roles.at(i)); - - return result; -} - -QUrl QDeclarativeAudio::source() const -{ - return m_source; -} - -bool QDeclarativeAudio::autoPlay() const -{ - return m_autoPlay; -} - -void QDeclarativeAudio::setAutoPlay(bool autoplay) -{ - if (m_autoPlay == autoplay) - return; - - m_autoPlay = autoplay; - emit autoPlayChanged(); -} - - -void QDeclarativeAudio::setSource(const QUrl &url) -{ - if (url == m_source) - return; - - m_source = url; - m_loaded = false; - if (m_complete && (m_autoLoad || m_source.isEmpty() || m_autoPlay)) { - if (m_error != QMediaPlayer::ServiceMissingError && m_error != QMediaPlayer::NoError) { - m_error = QMediaPlayer::NoError; - m_errorString = QString(); - - emit errorChanged(); - } - - m_player->setSource(m_source, nullptr); - m_loaded = true; - } - else - emit sourceChanged(); - - if (m_autoPlay) - m_player->play(); -} - -bool QDeclarativeAudio::isAutoLoad() const -{ - return m_autoLoad; -} - -void QDeclarativeAudio::setAutoLoad(bool autoLoad) -{ - if (m_autoLoad == autoLoad) - return; - - m_autoLoad = autoLoad; - emit autoLoadChanged(); -} - -int QDeclarativeAudio::loopCount() const -{ - return m_loopCount; -} - -void QDeclarativeAudio::setLoopCount(int loopCount) -{ - if (loopCount == 0) - loopCount = 1; - else if (loopCount < -1) - loopCount = -1; - - if (m_loopCount == loopCount) { - return; - } - m_loopCount = loopCount; - m_runningCount = loopCount - 1; - emit loopCountChanged(); -} - -void QDeclarativeAudio::setPlaybackState(QMediaPlayer::PlaybackState playbackState) -{ - if (m_playbackState == playbackState) - return; - - if (m_complete) { - switch (playbackState){ - case (QMediaPlayer::PlayingState): - if (!m_loaded) { - m_player->setSource(m_source, nullptr); - m_player->setPosition(m_position); - m_loaded = true; - } - m_player->play(); - break; - - case (QMediaPlayer::PausedState): - if (!m_loaded) { - m_player->setSource(m_source, nullptr); - m_player->setPosition(m_position); - m_loaded = true; - } - m_player->pause(); - break; - - case (QMediaPlayer::StoppedState): - m_player->stop(); - } - } -} - -int QDeclarativeAudio::duration() const -{ - return !m_complete ? 0 : m_player->duration(); -} - -int QDeclarativeAudio::position() const -{ - return !m_complete ? m_position : m_player->position(); -} - -qreal QDeclarativeAudio::volume() const -{ - return !m_complete ? m_vol : qreal(m_player->volume()) / 100; -} - -void QDeclarativeAudio::setVolume(qreal volume) -{ - if (volume < 0 || volume > 1) { - qmlWarning(this) << tr("volume should be between 0.0 and 1.0"); - return; - } - - if (this->volume() == volume) - return; - - if (m_complete) { - m_player->setVolume(qRound(volume * 100)); - } else { - m_vol = volume; - emit volumeChanged(); - } -} - -bool QDeclarativeAudio::isMuted() const -{ - return !m_complete ? m_muted : m_player->isMuted(); -} - -void QDeclarativeAudio::setMuted(bool muted) -{ - if (isMuted() == muted) - return; - - if (m_complete) { - m_player->setMuted(muted); - } else { - m_muted = muted; - emit mutedChanged(); - } -} - -qreal QDeclarativeAudio::bufferProgress() const -{ - return !m_complete ? 0 : qreal(m_player->bufferProgress()) / 100; -} - -bool QDeclarativeAudio::isSeekable() const -{ - return !m_complete ? false : m_player->isSeekable(); -} - -qreal QDeclarativeAudio::playbackRate() const -{ - return m_complete ? m_player->playbackRate() : m_playbackRate; -} - -void QDeclarativeAudio::setPlaybackRate(qreal rate) -{ - if (playbackRate() == rate) - return; - - if (m_complete) { - m_player->setPlaybackRate(rate); - } else { - m_playbackRate = rate; - emit playbackRateChanged(); - } -} - -QString QDeclarativeAudio::errorString() const -{ - return m_errorString; -} - -QDeclarativeMediaMetaData *QDeclarativeAudio::metaData() const -{ - return m_metaData.data(); -} - /*! \qmlmethod QtMultimedia::Audio::play() @@ -466,14 +132,6 @@ QDeclarativeMediaMetaData *QDeclarativeAudio::metaData() const Sets the \l playbackState property to PlayingState. */ -void QDeclarativeAudio::play() -{ - if (!m_complete) - return; - - setPlaybackState(QMediaPlayer::PlayingState); -} - /*! \qmlmethod QtMultimedia::Audio::pause() @@ -482,14 +140,6 @@ void QDeclarativeAudio::play() Sets the \l playbackState property to PausedState. */ -void QDeclarativeAudio::pause() -{ - if (!m_complete) - return; - - setPlaybackState(QMediaPlayer::PausedState); -} - /*! \qmlmethod QtMultimedia::Audio::stop() @@ -498,14 +148,6 @@ void QDeclarativeAudio::pause() Sets the \l playbackState property to StoppedState. */ -void QDeclarativeAudio::stop() -{ - if (!m_complete) - return; - - setPlaybackState(QMediaPlayer::StoppedState); -} - /*! \qmlmethod QtMultimedia::Audio::seek(offset) @@ -517,22 +159,6 @@ void QDeclarativeAudio::stop() \sa seekable, position */ -void QDeclarativeAudio::seek(int position) -{ - // QMediaPlayer clamps this to positive numbers - if (position < 0) - position = 0; - - if (this->position() == position) - return; - - if (m_complete) { - m_player->setPosition(position); - } else { - m_position = position; - emit positionChanged(); - } -} /*! \qmlproperty url QtMultimedia::Audio::source @@ -611,12 +237,6 @@ void QDeclarativeAudio::seek(int position) \endlist */ -QDeclarativeAudio::Status QDeclarativeAudio::status() const -{ - return Status(m_status); -} - - /*! \qmlproperty enumeration QtMultimedia::Audio::playbackState @@ -629,11 +249,6 @@ QDeclarativeAudio::Status QDeclarativeAudio::status() const \endlist */ -QDeclarativeAudio::PlaybackState QDeclarativeAudio::playbackState() const -{ - return PlaybackState(m_playbackState); -} - /*! \qmlproperty bool QtMultimedia::Audio::autoPlay @@ -690,22 +305,12 @@ QDeclarativeAudio::PlaybackState QDeclarativeAudio::playbackState() const This property holds whether the media contains audio. */ -bool QDeclarativeAudio::hasAudio() const -{ - return !m_complete ? false : m_player->hasAudio(); -} - /*! \qmlproperty bool QtMultimedia::Audio::hasVideo This property holds whether the media contains video. */ -bool QDeclarativeAudio::hasVideo() const -{ - return !m_complete ? false : m_player->hasVideo(); -} - /*! \qmlproperty real QtMultimedia::Audio::bufferProgress @@ -758,125 +363,6 @@ bool QDeclarativeAudio::hasVideo() const \endtable */ -QDeclarativeAudio::Error QDeclarativeAudio::error() const -{ - return Error(m_error); -} - -void QDeclarativeAudio::classBegin() -{ - m_player = new QMediaPlayer(this); - - connect(m_player, SIGNAL(stateChanged(QMediaPlayer::State)), - this, SLOT(_q_statusChanged())); - connect(m_player, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), - this, SLOT(_q_statusChanged())); - connect(m_player, SIGNAL(mediaChanged(const QUrl&)), - this, SLOT(_q_mediaChanged(const QUrl&))); - connect(m_player, SIGNAL(durationChanged(qint64)), - this, SIGNAL(durationChanged())); - connect(m_player, SIGNAL(positionChanged(qint64)), - this, SIGNAL(positionChanged())); - connect(m_player, SIGNAL(volumeChanged(int)), - this, SIGNAL(volumeChanged())); - connect(m_player, SIGNAL(mutedChanged(bool)), - this, SIGNAL(mutedChanged())); - connect(m_player, SIGNAL(bufferProgressChanged(float)), - this, SIGNAL(bufferProgressChanged())); - connect(m_player, SIGNAL(seekableChanged(bool)), - this, SIGNAL(seekableChanged())); - connect(m_player, SIGNAL(playbackRateChanged(qreal)), - this, SIGNAL(playbackRateChanged())); - connect(m_player, SIGNAL(error(QMediaPlayer::Error)), - this, SLOT(_q_error(QMediaPlayer::Error))); - connect(m_player, SIGNAL(audioAvailableChanged(bool)), - this, SIGNAL(hasAudioChanged())); - connect(m_player, SIGNAL(videoAvailableChanged(bool)), - this, SIGNAL(hasVideoChanged())); - connect(m_player, SIGNAL(audioRoleChanged(QAudio::Role)), - this, SIGNAL(audioRoleChanged())); - - m_error = !m_player->isAvailable() ? QMediaPlayer::ServiceMissingError : QMediaPlayer::NoError; - - m_metaData.reset(new QDeclarativeMediaMetaData(m_player)); - - connect(m_player, SIGNAL(metaDataChanged()), - m_metaData.data(), SIGNAL(metaDataChanged())); -} - -void QDeclarativeAudio::componentComplete() -{ - if (!qFuzzyCompare(m_vol, qreal(1.0))) - m_player->setVolume(m_vol * 100); - if (m_muted) - m_player->setMuted(m_muted); - if (!qFuzzyCompare(m_playbackRate, qreal(1.0))) - m_player->setPlaybackRate(m_playbackRate); - if (m_audioRole != UnknownRole) - m_player->setAudioRole(QAudio::Role(m_audioRole)); - - if (!m_source.isEmpty() && (m_autoLoad || m_autoPlay)) { - m_player->setSource(m_source, nullptr); - m_loaded = true; - if (m_position > 0) - m_player->setPosition(m_position); - } - - m_complete = true; - - if (m_autoPlay) { - if (m_source.isEmpty()) { - m_player->stop(); - } else { - m_player->play(); - } - } -} - -void QDeclarativeAudio::_q_statusChanged() -{ - if (m_player->mediaStatus() == QMediaPlayer::EndOfMedia && m_runningCount != 0) { - m_runningCount = std::max(m_runningCount - 1, -2); - m_player->play(); - } - const QMediaPlayer::MediaStatus oldStatus = m_status; - const QMediaPlayer::PlaybackState lastPlaybackState = m_playbackState; - - const QMediaPlayer::PlaybackState state = m_player->playbackState(); - - m_playbackState = state; - - m_status = m_player->mediaStatus(); - - if (m_status != oldStatus) - emit statusChanged(); - - if (lastPlaybackState != state) { - - if (lastPlaybackState == QMediaPlayer::StoppedState) - m_runningCount = m_loopCount - 1; - - switch (state) { - case QMediaPlayer::StoppedState: - emit stopped(); - break; - case QMediaPlayer::PausedState: - emit paused(); - break; - case QMediaPlayer::PlayingState: - emit playing(); - break; - } - - emit playbackStateChanged(); - } -} - -void QDeclarativeAudio::_q_mediaChanged(const QUrl &) -{ - emit sourceChanged(); -} - /*! \qmlproperty string QtMultimedia::Audio::errorString @@ -1510,9 +996,3 @@ void QDeclarativeAudio::_q_mediaChanged(const QUrl &) \sa {QMediaMetaData} */ - -QT_END_NAMESPACE - -#include "moc_qdeclarativeaudio_p.cpp" - - diff --git a/src/imports/multimedia/multimedia.cpp b/src/imports/multimedia/multimedia.cpp index d98921dc1..b2f3d45c4 100644 --- a/src/imports/multimedia/multimedia.cpp +++ b/src/imports/multimedia/multimedia.cpp @@ -42,12 +42,12 @@ #include <QtQml/qqmlengine.h> #include <QtQml/qqmlcomponent.h> #include "qsoundeffect.h" +#include "qmediaplayer.h" #include <private/qdeclarativevideooutput_p.h> #include "qdeclarativemultimediaglobal_p.h" #include "qdeclarativemediametadata_p.h" -#include "qdeclarativeaudio_p.h" #include "qdeclarativeplaylist_p.h" #include "qdeclarativecamera_p.h" #include "qdeclarativecamerapreviewprovider_p.h" @@ -80,8 +80,8 @@ public: // 5.0 types qmlRegisterType<QSoundEffect>(uri, 5, 0, "SoundEffect"); - qmlRegisterType<QDeclarativeAudio>(uri, 5, 0, "Audio"); - qmlRegisterType<QDeclarativeAudio>(uri, 5, 0, "MediaPlayer"); + qmlRegisterType<QMediaPlayer>(uri, 5, 0, "Audio"); + qmlRegisterType<QMediaPlayer>(uri, 5, 0, "MediaPlayer"); qmlRegisterType<QDeclarativeVideoOutput>(uri, 5, 0, "VideoOutput"); qmlRegisterType<QDeclarativeCamera>(uri, 5, 0, "Camera"); qmlRegisterUncreatableType<QDeclarativeCameraCapture>(uri, 5, 0, "CameraCapture", @@ -116,8 +116,8 @@ public: qmlRegisterType<QDeclarativeCamera, 2>(uri, 5, 5, "Camera"); // 5.6 types - qmlRegisterType<QDeclarativeAudio, 1>(uri, 5, 6, "Audio"); - qmlRegisterType<QDeclarativeAudio, 1>(uri, 5, 6, "MediaPlayer"); + qmlRegisterType<QMediaPlayer, 1>(uri, 5, 6, "Audio"); + qmlRegisterType<QMediaPlayer, 1>(uri, 5, 6, "MediaPlayer"); qmlRegisterType<QDeclarativePlaylist>(uri, 5, 6, "Playlist"); qmlRegisterType<QDeclarativePlaylistItem>(uri, 5, 6, "PlaylistItem"); @@ -130,16 +130,16 @@ public: qmlRegisterType<QSoundEffect>(uri, 5, 8, "SoundEffect"); // 5.9 types - qmlRegisterType<QDeclarativeAudio, 2>(uri, 5, 9, "Audio"); - qmlRegisterType<QDeclarativeAudio, 2>(uri, 5, 9, "MediaPlayer"); + qmlRegisterType<QMediaPlayer, 2>(uri, 5, 9, "Audio"); + qmlRegisterType<QMediaPlayer, 2>(uri, 5, 9, "MediaPlayer"); qmlRegisterUncreatableType<QDeclarativeCameraCapture, 1>(uri, 5, 9, "CameraCapture", tr("CameraCapture is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraFlash, 1>(uri, 5, 9, "CameraFlash", tr("CameraFlash is provided by Camera")); // 5.11 types - qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "Audio"); - qmlRegisterType<QDeclarativeAudio, 3>(uri, 5, 11, "MediaPlayer"); + qmlRegisterType<QMediaPlayer, 3>(uri, 5, 11, "Audio"); + qmlRegisterType<QMediaPlayer, 3>(uri, 5, 11, "MediaPlayer"); qmlRegisterUncreatableType<QDeclarativeCameraFocus, 1>(uri, 5, 11, "CameraFocus", tr("CameraFocus is provided by Camera")); qmlRegisterUncreatableType<QDeclarativeCameraExposure, 1>(uri, 5, 11, "CameraExposure", @@ -153,7 +153,7 @@ public: qmlRegisterType<QDeclarativeVideoOutput, 13>(uri, 5, 13, "VideoOutput"); // 5.15 types - qmlRegisterType<QDeclarativeAudio, 15>(uri, 5, 15, "MediaPlayer"); + qmlRegisterType<QMediaPlayer, 15>(uri, 5, 15, "MediaPlayer"); qmlRegisterType<QDeclarativeVideoOutput, 15>(uri, 5, 15, "VideoOutput"); // The minor version used to be the current Qt 5 minor. For compatibility it is the last diff --git a/src/imports/multimedia/qdeclarativeaudio_p.h b/src/imports/multimedia/qdeclarativeaudio_p.h deleted file mode 100644 index 9d64929e3..000000000 --- a/src/imports/multimedia/qdeclarativeaudio_p.h +++ /dev/null @@ -1,282 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** 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 The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QDECLARATIVEAUDIO_P_H -#define QDECLARATIVEAUDIO_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of other Qt classes. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/qbasictimer.h> -#include <QtQml/qqmlparserstatus.h> -#include <QtQml/qqml.h> -#include <QtQml/qjsvalue.h> - -#include <qmediaplayer.h> - -QT_BEGIN_NAMESPACE - -class QTimerEvent; -class QPlatformMediaPlayer; -class QDeclarativeMediaBaseAnimation; -class QDeclarativeMediaMetaData; - -class QDeclarativeAudio : public QObject, public QQmlParserStatus -{ - Q_OBJECT - Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) - Q_PROPERTY(int duration READ duration NOTIFY durationChanged) - Q_PROPERTY(int position READ position NOTIFY positionChanged) - Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) - Q_PROPERTY(Status status READ status NOTIFY statusChanged) // MediaStatus in QMediaPlayer - Q_PROPERTY(bool autoPlay READ autoPlay WRITE setAutoPlay NOTIFY autoPlayChanged) - Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged) - Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) - Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) - Q_PROPERTY(bool seekable READ isSeekable NOTIFY seekableChanged) - Q_PROPERTY(qreal playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged) - Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) - Q_PROPERTY(Error error READ error NOTIFY errorChanged) - Q_PROPERTY(AudioRole audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged REVISION 1) - Q_PROPERTY(qreal bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) - - Q_PROPERTY(int loops READ loopCount WRITE setLoopCount NOTIFY loopCountChanged) // not needed - Q_PROPERTY(bool autoLoad READ isAutoLoad WRITE setAutoLoad NOTIFY autoLoadChanged) // not needed - Q_PROPERTY(QDeclarativeMediaMetaData *metaData READ metaData CONSTANT) - Q_PROPERTY(QVariant videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged REVISION 15) - Q_ENUMS(Status) - Q_ENUMS(Error) - Q_ENUMS(Loop) - Q_ENUMS(PlaybackState) - Q_ENUMS(AudioRole) - Q_INTERFACES(QQmlParserStatus) -public: - enum Status - { - UnknownStatus = QMediaPlayer::UnknownMediaStatus, - NoMedia = QMediaPlayer::NoMedia, - Loading = QMediaPlayer::LoadingMedia, - Loaded = QMediaPlayer::LoadedMedia, - Stalled = QMediaPlayer::StalledMedia, - Buffering = QMediaPlayer::BufferingMedia, - Buffered = QMediaPlayer::BufferedMedia, - EndOfMedia = QMediaPlayer::EndOfMedia, - InvalidMedia = QMediaPlayer::InvalidMedia - }; - - enum Error - { - NoError = QMediaPlayer::NoError, - ResourceError = QMediaPlayer::ResourceError, - FormatError = QMediaPlayer::FormatError, - NetworkError = QMediaPlayer::NetworkError, - AccessDenied = QMediaPlayer::AccessDeniedError, - ServiceMissing = QMediaPlayer::ServiceMissingError - }; - - enum Loop - { - Infinite = -1 - }; - - enum PlaybackState - { - PlayingState = QMediaPlayer::PlayingState, - PausedState = QMediaPlayer::PausedState, - StoppedState = QMediaPlayer::StoppedState - }; - - enum AudioRole { - UnknownRole = QAudio::UnknownRole, - AccessibilityRole = QAudio::AccessibilityRole, - AlarmRole = QAudio::AlarmRole, - GameRole = QAudio::GameRole, - MusicRole = QAudio::MusicRole, - NotificationRole = QAudio::NotificationRole, - RingtoneRole = QAudio::RingtoneRole, - SonificationRole = QAudio::SonificationRole, - VideoRole = QAudio::VideoRole, - VoiceCommunicationRole = QAudio::VoiceCommunicationRole - }; - - QDeclarativeAudio(QObject *parent = 0); - ~QDeclarativeAudio(); - - QVariant videoOutput() const; - void setVideoOutput(const QVariant &); - - bool hasAudio() const; - bool hasVideo() const; - - Status status() const; - Error error() const; - PlaybackState playbackState() const; - void setPlaybackState(QMediaPlayer::PlaybackState playbackState); - - void classBegin() override; - void componentComplete() override; - - bool isAvailable() const; - - AudioRole audioRole() const; - void setAudioRole(AudioRole audioRole); - - QUrl source() const; - void setSource(const QUrl &url); - - int loopCount() const; - void setLoopCount(int loopCount); - - int duration() const; - - int position() const; - - qreal volume() const; - void setVolume(qreal volume); - - bool isMuted() const; - void setMuted(bool muted); - - qreal bufferProgress() const; - - bool isSeekable() const; - - qreal playbackRate() const; - void setPlaybackRate(qreal rate); - - QString errorString() const; - - QDeclarativeMediaMetaData *metaData() const; - - bool isAutoLoad() const; - void setAutoLoad(bool autoLoad); - - bool autoPlay() const; - void setAutoPlay(bool autoplay); - -public Q_SLOTS: - void play(); - void pause(); - void stop(); - void seek(int position); - - Q_REVISION(1) QJSValue supportedAudioRoles() const; - -Q_SIGNALS: - void sourceChanged(); - void autoLoadChanged(); - void loopCountChanged(); - - void playbackStateChanged(); - void autoPlayChanged(); - - void paused(); - void stopped(); - void playing(); - - void statusChanged(); - - void durationChanged(); - void positionChanged(); - - void volumeChanged(); - void mutedChanged(); - void hasAudioChanged(); - void hasVideoChanged(); - - void bufferProgressChanged(); - - void seekableChanged(); - void playbackRateChanged(); - - Q_REVISION(1) void audioRoleChanged(); - - void errorChanged(); - void error(QDeclarativeAudio::Error error, const QString &errorString); - - Q_REVISION(15) void videoOutputChanged(); - -private Q_SLOTS: - void _q_error(QMediaPlayer::Error); - void _q_statusChanged(); - void _q_mediaChanged(const QUrl&); - -private: - Q_DISABLE_COPY(QDeclarativeAudio) - - bool m_autoPlay; - bool m_autoLoad; - bool m_loaded; - bool m_muted; - bool m_complete; - int m_loopCount; - int m_runningCount; - int m_position; - qreal m_vol; - qreal m_playbackRate; - AudioRole m_audioRole; - - QMediaPlayer::PlaybackState m_playbackState; - QMediaPlayer::MediaStatus m_status; - QMediaPlayer::Error m_error; - QString m_errorString; - QUrl m_source; - - QScopedPointer<QDeclarativeMediaMetaData> m_metaData; - - QMediaPlayer *m_player; - QVariant m_videoOutput; - - friend class QDeclarativeMediaBaseAnimation; -}; - -QT_END_NAMESPACE - -QML_DECLARE_TYPE(QT_PREPEND_NAMESPACE(QDeclarativeAudio)) - -#endif |