summaryrefslogtreecommitdiffstats
path: root/src/multimedia/playback
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/playback')
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp156
-rw-r--r--src/multimedia/playback/qmediaplayer.h24
-rw-r--r--src/multimedia/playback/qmediaplayer_p.h3
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;