diff options
author | Andreas Huber <andih@google.com> | 2010-09-03 14:09:21 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-09-03 14:31:50 -0700 |
commit | 8ae49d87b98d57d6758b0c51b95e28a6581a79f1 (patch) | |
tree | 933481633972404d9b57c3afee53d686dd4e1226 /media/libstagefright/AwesomePlayer.cpp | |
parent | 1a4c79eada496dc43918440608f15410eaecd28c (diff) | |
download | frameworks_av-8ae49d87b98d57d6758b0c51b95e28a6581a79f1.zip frameworks_av-8ae49d87b98d57d6758b0c51b95e28a6581a79f1.tar.gz frameworks_av-8ae49d87b98d57d6758b0c51b95e28a6581a79f1.tar.bz2 |
Ogg files can be tagged to be automatically looping, this setting always overrides the MediaPlayer's setLooping setting.
Change-Id: Ifb564c6cdf6137eac14869f9ca7d471f05a5556a
related-to-bug: 2974691
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index c13726b..8507afc 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -330,6 +330,13 @@ status_t AwesomePlayer::setDataSource_l(const sp<MediaExtractor> &extractor) { } else if (!haveAudio && !strncasecmp(mime, "audio/", 6)) { setAudioSource(extractor->getTrack(i)); haveAudio = true; + + sp<MetaData> fileMeta = extractor->getMetaData(); + int32_t loop; + if (fileMeta != NULL + && fileMeta->findInt32(kKeyAutoLoop, &loop) && loop != 0) { + mFlags |= AUTO_LOOPING; + } } if (haveAudio && haveVideo) { @@ -587,7 +594,7 @@ void AwesomePlayer::onStreamDone() { return; } - if (mFlags & LOOPING) { + if (mFlags & (LOOPING | AUTO_LOOPING)) { seekTo_l(0); if (mVideoSource != NULL) { @@ -1560,7 +1567,7 @@ status_t AwesomePlayer::suspend() { state->mUriHeaders = mUriHeaders; state->mFileSource = mFileSource; - state->mFlags = mFlags & (PLAYING | LOOPING | AT_EOS); + state->mFlags = mFlags & (PLAYING | AUTO_LOOPING | LOOPING | AT_EOS); getPosition(&state->mPositionUs); if (mLastVideoBuffer) { @@ -1621,7 +1628,7 @@ status_t AwesomePlayer::resume() { seekTo_l(state->mPositionUs); - mFlags = state->mFlags & (LOOPING | AT_EOS); + mFlags = state->mFlags & (AUTO_LOOPING | LOOPING | AT_EOS); if (state->mLastVideoFrame && mISurface != NULL) { mVideoRenderer = |