diff options
Diffstat (limited to 'src/multimedia/playback')
-rw-r--r-- | src/multimedia/playback/qmediaplayer.cpp | 156 | ||||
-rw-r--r-- | src/multimedia/playback/qmediaplayer.h | 24 | ||||
-rw-r--r-- | src/multimedia/playback/qmediaplayer_p.h | 3 |
3 files changed, 17 insertions, 166 deletions
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp index 38e8aff0e..4ee85506a 100644 --- a/src/multimedia/playback/qmediaplayer.cpp +++ b/src/multimedia/playback/qmediaplayer.cpp @@ -41,6 +41,7 @@ #include <private/qplatformmediaintegration_p.h> #include <qvideosink.h> +#include <qaudiooutput.h> #include <QtCore/qcoreevent.h> #include <QtCore/qmetaobject.h> @@ -294,32 +295,6 @@ qint64 QMediaPlayer::position() const } /*! - Returns the playback volume. Valid numbers are between 0 and 100. -*/ -int QMediaPlayer::volume() const -{ - Q_D(const QMediaPlayer); - - if (d->control != nullptr) - return d->control->volume(); - - return 0; -} - -/*! - Returns true if playback is currently muted. -*/ -bool QMediaPlayer::isMuted() const -{ - Q_D(const QMediaPlayer); - - if (d->control != nullptr) - return d->control->isMuted(); - - return false; -} - -/*! Returns a number betwee 0 and 1 when buffering data. 0 means that there is no buffered data available, playback is usually @@ -469,30 +444,6 @@ void QMediaPlayer::setPosition(qint64 position) d->control->setPosition(qMax(position, 0ll)); } -void QMediaPlayer::setVolume(int v) -{ - Q_D(QMediaPlayer); - - if (d->control == nullptr) - return; - - int clamped = qBound(0, v, 100); - if (clamped == volume()) - return; - - d->control->setVolume(clamped); -} - -void QMediaPlayer::setMuted(bool muted) -{ - Q_D(QMediaPlayer); - - if (d->control == nullptr || muted == isMuted()) - return; - - d->control->setMuted(muted); -} - /*! If \a autoPlay is set to true, playback will start immediately after calling setSource() on the media player. Otherwise the media player will enter the @@ -558,16 +509,20 @@ void QMediaPlayer::setSource(const QUrl &source, QIODevice *stream) Returns true if the output could be changed, false otherwise. */ -bool QMediaPlayer::setAudioOutput(const QAudioDevice &device) +void QMediaPlayer::setAudioOutput(QAudioOutput *output) { Q_D(QMediaPlayer); - return d->control->setAudioOutput(device); + if (d->audioOutput == output) + return; + d->audioOutput = output; + d->control->setAudioOutput(output ? output->handle() : nullptr); + emit audioOutputChanged(); } -QAudioDevice QMediaPlayer::audioOutput() const +QAudioOutput *QMediaPlayer::audioOutput() const { Q_D(const QMediaPlayer); - return d->control->audioOutput(); + return d->audioOutput; } /*! @@ -769,45 +724,6 @@ QMediaMetaData QMediaPlayer::metaData() const return d->control->metaData(); } -/*! - Returns the currently set audio role. - - Audio roles can be used to tell the system what kind of media is being - played back, so that it can be associated with a correct mixer channel. -*/ -QAudio::Role QMediaPlayer::audioRole() const -{ - Q_D(const QMediaPlayer); - return d->audioRole; -} - -void QMediaPlayer::setAudioRole(QAudio::Role audioRole) -{ - Q_D(QMediaPlayer); - if (d->audioRole == audioRole) - return; - - d->audioRole = audioRole; - d->control->setAudioRole(audioRole); - emit audioRoleChanged(audioRole); - -} - -/*! - Returns a list of supported audio roles. - - If setting the audio role is not supported, an empty list is returned. - - \since 5.6 - \sa audioRole -*/ -QList<QAudio::Role> QMediaPlayer::supportedAudioRoles() const -{ - Q_D(const QMediaPlayer); - - return d->control->supportedAudioRoles(); -} - bool QMediaPlayer::autoPlay() const { Q_D(const QMediaPlayer); @@ -910,14 +826,6 @@ bool QMediaPlayer::autoPlay() const Signals the \a seekable status of the player object has changed. */ -/*! - \fn void QMediaPlayer::audioRoleChanged(QAudio::Role role) - - Signals that the audio \a role of the media player has changed. - - \since 5.6 -*/ - // Properties /*! \property QMediaPlayer::state @@ -983,27 +891,6 @@ bool QMediaPlayer::autoPlay() const */ /*! - \property QMediaPlayer::volume - \brief the current playback volume. - - The playback volume is scaled linearly, ranging from \c 0 (silence) to \c 100 (full volume). - Values outside this range will be clamped. - - By default the volume is \c 100. - - UI volume controls should usually be scaled nonlinearly. For example, using a logarithmic scale - will produce linear changes in perceived loudness, which is what a user would normally expect - from a volume control. See QAudio::convertVolume() for more details. -*/ - -/*! - \property QMediaPlayer::muted - \brief the muted state of the current media. - - The value will be true if the playback volume is muted; otherwise false. -*/ - -/*! \property QMediaPlayer::bufferProgress \brief the percentage of the temporary buffer filled before playback begins or resumes, from \c 0 (empty) to \c 100 (full). @@ -1063,19 +950,6 @@ bool QMediaPlayer::autoPlay() const */ /*! - \property QMediaPlayer::audioRole - \brief the role of the audio stream played by the media player. - - It can be set to specify the type of audio being played, allowing the system to make - appropriate decisions when it comes to volume, routing or post-processing. - - The audio role must be set before calling setMedia(). - - \since 5.6 - \sa supportedAudioRoles() -*/ - -/*! \fn void QMediaPlayer::durationChanged(qint64 duration) Signal the duration of the content has changed to \a duration, expressed in milliseconds. @@ -1089,18 +963,6 @@ bool QMediaPlayer::autoPlay() const */ /*! - \fn void QMediaPlayer::volumeChanged(int volume) - - Signal the playback volume has changed to \a volume. -*/ - -/*! - \fn void QMediaPlayer::mutedChanged(bool muted) - - Signal the mute state has changed to \a muted. -*/ - -/*! \fn void QMediaPlayer::videoAvailableChanged(bool videoAvailable) Signal the availability of visual content has changed to \a videoAvailable. diff --git a/src/multimedia/playback/qmediaplayer.h b/src/multimedia/playback/qmediaplayer.h index 5903356b8..7eb66ea1f 100644 --- a/src/multimedia/playback/qmediaplayer.h +++ b/src/multimedia/playback/qmediaplayer.h @@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE class QVideoSink; +class QAudioOutput; class QAudioDevice; class QMediaMetaData; class QMediaTimeRange; @@ -59,8 +60,6 @@ class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QObject Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged) Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged) Q_PROPERTY(qint64 position READ position WRITE setPosition NOTIFY positionChanged) - Q_PROPERTY(int volume READ volume WRITE setVolume NOTIFY volumeChanged) - Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) Q_PROPERTY(float bufferProgress READ bufferProgress NOTIFY bufferProgressChanged) Q_PROPERTY(bool hasAudio READ hasAudio NOTIFY hasAudioChanged) Q_PROPERTY(bool hasVideo READ hasVideo NOTIFY hasVideoChanged) @@ -69,11 +68,11 @@ class Q_MULTIMEDIA_EXPORT QMediaPlayer : public QObject Q_PROPERTY(PlaybackState playbackState READ playbackState NOTIFY playbackStateChanged) Q_PROPERTY(bool autoPlay READ autoPlay WRITE setAutoPlay NOTIFY autoPlayChanged) Q_PROPERTY(MediaStatus mediaStatus READ mediaStatus NOTIFY mediaStatusChanged) - Q_PROPERTY(QAudio::Role audioRole READ audioRole WRITE setAudioRole NOTIFY audioRoleChanged) Q_PROPERTY(QMediaMetaData metaData READ metaData NOTIFY metaDataChanged) Q_PROPERTY(Error error READ error NOTIFY errorChanged) Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged) Q_PROPERTY(QObject *videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged) + Q_PROPERTY(QAudioOutput *audioOutput READ audioOutput WRITE setAudioOutput NOTIFY audioOutputChanged) public: enum PlaybackState @@ -114,9 +113,6 @@ public: // bool enableLowLatencyPlayback(bool tryEnable); // bool isLowLatencyPlaybackEnabled() const; - bool setAudioOutput(const QAudioDevice &device); - QAudioDevice audioOutput() const; - QList<QMediaMetaData> audioTracks() const; QList<QMediaMetaData> videoTracks() const; QList<QMediaMetaData> subtitleTracks() const; @@ -129,6 +125,9 @@ public: void setActiveVideoTrack(int index); void setActiveSubtitleTrack(int index); + void setAudioOutput(QAudioOutput *output); + QAudioOutput *audioOutput() const; + void setVideoOutput(QObject *); QObject *videoOutput() const; #if 0 @@ -147,8 +146,6 @@ public: qint64 duration() const; qint64 position() const; - int volume() const; - bool isMuted() const; bool hasAudio() const; bool hasVideo() const; @@ -164,10 +161,6 @@ public: bool isAvailable() const; QMediaMetaData metaData() const; - QAudio::Role audioRole() const; - void setAudioRole(QAudio::Role audioRole); - QList<QAudio::Role> supportedAudioRoles() const; - bool autoPlay() const; public Q_SLOTS: @@ -176,8 +169,6 @@ public Q_SLOTS: void stop(); void setPosition(qint64 position); - void setVolume(int volume); - void setMuted(bool muted); void setAutoPlay(bool autoPlay); void setPlaybackRate(qreal rate); @@ -192,8 +183,6 @@ Q_SIGNALS: void durationChanged(qint64 duration); void positionChanged(qint64 position); - void volumeChanged(int volume); - void mutedChanged(bool muted); void autoPlayChanged(bool autoPlay); void hasAudioChanged(bool available); void hasVideoChanged(bool videoAvailable); @@ -203,10 +192,9 @@ Q_SIGNALS: void seekableChanged(bool seekable); void playbackRateChanged(qreal rate); - void audioRoleChanged(QAudio::Role role); - void metaDataChanged(); void videoOutputChanged(); + void audioOutputChanged(); void tracksChanged(); void activeTracksChanged(); diff --git a/src/multimedia/playback/qmediaplayer_p.h b/src/multimedia/playback/qmediaplayer_p.h index ee519fb86..f6b5a3eac 100644 --- a/src/multimedia/playback/qmediaplayer_p.h +++ b/src/multimedia/playback/qmediaplayer_p.h @@ -54,6 +54,7 @@ #include "qmediaplayer.h" #include "qmediametadata.h" #include "qvideosink.h" +#include "qaudiooutput.h" #include <private/qplatformmediaplayer_p.h> #include "private/qobject_p.h" @@ -63,7 +64,6 @@ #include <QtCore/qurl.h> #include <QtCore/qfile.h> #include <QtCore/qtimer.h> - QT_BEGIN_NAMESPACE class QPlatformMediaPlayer; @@ -77,6 +77,7 @@ public: QPlatformMediaPlayer* control = nullptr; QString errorString; + QAudioOutput *audioOutput = nullptr; QVideoSink *videoSink = nullptr; QPointer<QObject> videoOutput; QUrl qrcMedia; |