summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
authorJean-Michel Trivi <jmtrivi@google.com>2012-02-02 09:06:31 -0800
committerJean-Michel Trivi <jmtrivi@google.com>2012-02-13 12:39:54 -0800
commit7a8b0ed6419e57dd8b41d3806893d63d3df91aab (patch)
treeda2076d221f7eb3e26db190d51173c04a91e0788 /media/libstagefright
parent1f5ce8b0941c9c6baadd40d151634145f6d5a35c (diff)
downloadframeworks_av-7a8b0ed6419e57dd8b41d3806893d63d3df91aab.zip
frameworks_av-7a8b0ed6419e57dd8b41d3806893d63d3df91aab.tar.gz
frameworks_av-7a8b0ed6419e57dd8b41d3806893d63d3df91aab.tar.bz2
Playback rate on MediaPlayer
Add support for modifying the playback rate of a MediaPlayer by altering the sample rate of its AudioTrack. The playback rate is expressed in permille, where 1000 is the playback at normal speed. Change-Id: I981d060ab32f7bae7a767e82c60c88ae635dceed
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/AudioPlayer.cpp10
-rw-r--r--media/libstagefright/AwesomePlayer.cpp8
2 files changed, 18 insertions, 0 deletions
diff --git a/media/libstagefright/AudioPlayer.cpp b/media/libstagefright/AudioPlayer.cpp
index 9a9c3ef..df27566 100644
--- a/media/libstagefright/AudioPlayer.cpp
+++ b/media/libstagefright/AudioPlayer.cpp
@@ -268,6 +268,16 @@ bool AudioPlayer::reachedEOS(status_t *finalStatus) {
return mReachedEOS;
}
+status_t AudioPlayer::setPlaybackRatePermille(int32_t ratePermille) {
+ if (mAudioSink.get() != NULL) {
+ return mAudioSink->setPlaybackRatePermille(ratePermille);
+ } else if (mAudioTrack != NULL){
+ return mAudioTrack->setSampleRate(ratePermille * mSampleRate / 1000);
+ } else {
+ return NO_INIT;
+ }
+}
+
// static
size_t AudioPlayer::AudioSinkCallback(
MediaPlayerBase::AudioSink *audioSink,
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index 85b7979..70945e3 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -2251,6 +2251,14 @@ status_t AwesomePlayer::setParameter(int key, const Parcel &request) {
{
return setCacheStatCollectFreq(request);
}
+ case KEY_PARAMETER_PLAYBACK_RATE_PERMILLE:
+ {
+ if (mAudioPlayer != NULL) {
+ return mAudioPlayer->setPlaybackRatePermille(request.readInt32());
+ } else {
+ return NO_INIT;
+ }
+ }
default:
{
return ERROR_UNSUPPORTED;