summaryrefslogtreecommitdiffstats
path: root/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp')
-rw-r--r--src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp73
1 files changed, 24 insertions, 49 deletions
diff --git a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
index 4794dd3e0..85b4e3df4 100644
--- a/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
+++ b/src/multimedia/platform/android/mediaplayer/qandroidmediaplayercontrol.cpp
@@ -42,6 +42,8 @@
#include "qandroidvideooutput_p.h"
#include "qandroidmetadata_p.h"
#include "qandroidmediaplayervideorenderercontrol_p.h"
+#include "qandroidaudiooutput_p.h"
+#include "qaudiooutput.h"
QT_BEGIN_NAMESPACE
@@ -184,12 +186,7 @@ void QAndroidMediaPlayerControl::setPosition(qint64 position)
Q_EMIT positionChanged(seekPosition);
}
-int QAndroidMediaPlayerControl::volume() const
-{
- return (mPendingVolume == -1) ? mMediaPlayer->volume() : mPendingVolume;
-}
-
-void QAndroidMediaPlayerControl::setVolume(int volume)
+void QAndroidMediaPlayerControl::setVolume(float volume)
{
if ((mState & (AndroidMediaPlayer::Idle
| AndroidMediaPlayer::Initialized
@@ -198,26 +195,12 @@ void QAndroidMediaPlayerControl::setVolume(int volume)
| AndroidMediaPlayer::Started
| AndroidMediaPlayer::Paused
| AndroidMediaPlayer::PlaybackCompleted)) == 0) {
- if (mPendingVolume != volume) {
- mPendingVolume = volume;
- Q_EMIT volumeChanged(volume);
- }
- return;
- }
-
- mMediaPlayer->setVolume(volume);
-
- if (mPendingVolume != -1) {
- mPendingVolume = -1;
+ mPendingVolume = volume;
return;
}
- Q_EMIT volumeChanged(volume);
-}
-
-bool QAndroidMediaPlayerControl::isMuted() const
-{
- return (mPendingMute == -1) ? mMediaPlayer->isMuted() : (mPendingMute == 1);
+ mMediaPlayer->setVolume(qRound(volume*100.));
+ mPendingVolume = -1;
}
void QAndroidMediaPlayerControl::setMuted(bool muted)
@@ -229,21 +212,12 @@ void QAndroidMediaPlayerControl::setMuted(bool muted)
| AndroidMediaPlayer::Started
| AndroidMediaPlayer::Paused
| AndroidMediaPlayer::PlaybackCompleted)) == 0) {
- if (mPendingMute != muted) {
- mPendingMute = muted;
- Q_EMIT mutedChanged(muted);
- }
+ mPendingMute = muted;
return;
}
mMediaPlayer->setMuted(muted);
-
- if (mPendingMute != -1) {
- mPendingMute = -1;
- return;
- }
-
- Q_EMIT mutedChanged(muted);
+ mPendingMute = -1;
}
void QAndroidMediaPlayerControl::setAudioRole(QAudio::Role role)
@@ -251,20 +225,6 @@ void QAndroidMediaPlayerControl::setAudioRole(QAudio::Role role)
mMediaPlayer->setAudioRole(role);
}
-QList<QAudio::Role> QAndroidMediaPlayerControl::supportedAudioRoles() const
-{
- return QList<QAudio::Role>()
- << QAudio::VoiceCommunicationRole
- << QAudio::MusicRole
- << QAudio::VideoRole
- << QAudio::SonificationRole
- << QAudio::AlarmRole
- << QAudio::NotificationRole
- << QAudio::RingtoneRole
- << QAudio::AccessibilityRole
- << QAudio::GameRole;
-}
-
QMediaMetaData QAndroidMediaPlayerControl::metaData() const
{
return QAndroidMetaData::extractMetadata(mMediaContent);
@@ -429,6 +389,21 @@ void QAndroidMediaPlayerControl::setVideoSink(QVideoSink *sink)
mVideoRendererControl->setSurface(sink);
}
+void QAndroidMediaPlayerControl::setAudioOutput(QPlatformAudioOutput *output)
+{
+ if (m_audioOutput == output)
+ return;
+ if (m_audioOutput)
+ m_audioOutput->q->disconnect(this);
+ m_audioOutput = static_cast<QAndroidAudioOutput *>(output);
+ if (m_audioOutput) {
+ // #### Implement device changes: connect(m_audioOutput->q, &QAudioOutput::deviceChanged, this, XXXX);
+ connect(m_audioOutput->q, &QAudioOutput::volumeChanged, this, &QAndroidMediaPlayerControl::setVolume);
+ connect(m_audioOutput->q, &QAudioOutput::mutedChanged, this, &QAndroidMediaPlayerControl::setMuted);
+ connect(m_audioOutput->q, &QAudioOutput::audioRoleChanged, this, &QAndroidMediaPlayerControl::setAudioRole);
+ }
+}
+
void QAndroidMediaPlayerControl::play()
{
StateChangeNotifier notifier(this);
@@ -772,7 +747,7 @@ void QAndroidMediaPlayerControl::flushPendingStates()
if (mPendingPosition != -1)
setPosition(mPendingPosition);
- if (mPendingVolume != -1)
+ if (mPendingVolume >= 0)
setVolume(mPendingVolume);
if (mPendingMute != -1)
setMuted((mPendingMute == 1));