summaryrefslogtreecommitdiffstats
path: root/media/libmedia/mediaplayer.cpp
diff options
context:
space:
mode:
authorWei Jia <wjia@google.com>2015-02-04 17:01:11 -0800
committerWei Jia <wjia@google.com>2015-02-24 16:34:11 -0800
commit9816016afb2a13c6a866cd047d57020566a8b9a9 (patch)
tree176a616a7d5da21447e880158cef57516efee9c3 /media/libmedia/mediaplayer.cpp
parent658fc18d8e632441cd5d83a4f74b53620cbac1fe (diff)
downloadframeworks_av-9816016afb2a13c6a866cd047d57020566a8b9a9.zip
frameworks_av-9816016afb2a13c6a866cd047d57020566a8b9a9.tar.gz
frameworks_av-9816016afb2a13c6a866cd047d57020566a8b9a9.tar.bz2
mediaplayer: support dynamic playback rate
Bug: 19196501 Change-Id: I856b1507d5fa2cedfb645706d2435683a7d3e050
Diffstat (limited to 'media/libmedia/mediaplayer.cpp')
-rw-r--r--media/libmedia/mediaplayer.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp
index 432ecda..d1d51cc 100644
--- a/media/libmedia/mediaplayer.cpp
+++ b/media/libmedia/mediaplayer.cpp
@@ -59,6 +59,7 @@ MediaPlayer::MediaPlayer()
mLoop = false;
mLeftVolume = mRightVolume = 1.0;
mVideoWidth = mVideoHeight = 0;
+ mPlaybackRate = 1.0;
mLockThreadId = 0;
mAudioSessionId = AudioSystem::newAudioUniqueId();
AudioSystem::acquireAudioSessionId(mAudioSessionId, -1);
@@ -378,6 +379,24 @@ bool MediaPlayer::isPlaying()
return false;
}
+status_t MediaPlayer::setPlaybackRate(float rate)
+{
+ ALOGV("setPlaybackRate: %f", rate);
+ if (rate <= 0.0) {
+ return BAD_VALUE;
+ }
+ Mutex::Autolock _l(mLock);
+ if (mPlayer != 0) {
+ if (mPlaybackRate == rate) {
+ return NO_ERROR;
+ }
+ mPlaybackRate = rate;
+ return mPlayer->setPlaybackRate(rate);
+ }
+ ALOGV("setPlaybackRate: no active player");
+ return INVALID_OPERATION;
+}
+
status_t MediaPlayer::getVideoWidth(int *w)
{
ALOGV("getVideoWidth");