summaryrefslogtreecommitdiff
path: root/src/3rdparty/phonon/mmf/audioplayer.cpp
diff options
context:
space:
mode:
authorGareth Stockwell <ext-gareth.stockwell@nokia.com>2009-12-01 17:55:30 +0000
committerGareth Stockwell <ext-gareth.stockwell@nokia.com>2009-12-08 11:15:28 +0000
commitbed33ac62d87073120d56ff75a3d2356c99c64ea (patch)
tree5a949097061061981afe3d92a32855591ebcd8bd /src/3rdparty/phonon/mmf/audioplayer.cpp
parent3117e3a6a9c1bf95fc30ebee4d8d11b646cb7125 (diff)
downloadqt4-tools-bed33ac62d87073120d56ff75a3d2356c99c64ea.tar.gz
Implemented buffer status notifications in Phonon MMF backend
When clips are buffering (either at the start of playback, or during playback, when buffer levels drop due to e.g. CPU, file system or network load), the backend receives notification from the MMF. While buffering is ongoing, the backend periodically queries the filling status and emits a signal. Task-number: QTBUG-4660 Reviewed-by: Frans Englich
Diffstat (limited to 'src/3rdparty/phonon/mmf/audioplayer.cpp')
-rw-r--r--src/3rdparty/phonon/mmf/audioplayer.cpp25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/3rdparty/phonon/mmf/audioplayer.cpp b/src/3rdparty/phonon/mmf/audioplayer.cpp
index 2d618b8f09..0967a27dcc 100644
--- a/src/3rdparty/phonon/mmf/audioplayer.cpp
+++ b/src/3rdparty/phonon/mmf/audioplayer.cpp
@@ -53,6 +53,7 @@ void MMF::AudioPlayer::construct()
CPlayerType *player = 0;
QT_TRAP_THROWING(player = CPlayerType::NewL(*this, 0, EMdaPriorityPreferenceNone));
m_player.reset(player);
+ m_player->RegisterForAudioLoadingNotification(*this);
TRACE_EXIT_0();
}
@@ -135,6 +136,13 @@ int MMF::AudioPlayer::openUrl(const QString& /*url*/)
return 0;
}
+int MMF::AudioPlayer::bufferStatus() const
+{
+ int result = 0;
+ TRAP_IGNORE(m_player->GetAudioLoadingProgressL(result));
+ return result;
+}
+
void MMF::AudioPlayer::close()
{
m_player->Close();
@@ -211,8 +219,6 @@ void MMF::AudioPlayer::MapcPlayComplete(TInt aError)
TRACE_CONTEXT(AudioPlayer::MapcPlayComplete, EAudioInternal);
TRACE_ENTRY("state %d error %d", state(), aError);
- stopTickTimer();
-
if (KErrNone == aError) {
changeState(StoppedState);
// TODO: move on to m_nextSource
@@ -260,6 +266,21 @@ void MMF::AudioPlayer::MaloLoadingComplete()
//-----------------------------------------------------------------------------
+// MAudioLoadingObserver callbacks
+//-----------------------------------------------------------------------------
+
+void MMF::AudioPlayer::MaloLoadingStarted()
+{
+ bufferingStarted();
+}
+
+void MMF::AudioPlayer::MaloLoadingComplete()
+{
+ bufferingComplete();
+}
+
+
+//-----------------------------------------------------------------------------
// Private functions
//-----------------------------------------------------------------------------