summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/AwesomePlayer.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-09-03 14:09:21 -0700
committerAndreas Huber <andih@google.com>2010-09-03 14:31:50 -0700
commit8ae49d87b98d57d6758b0c51b95e28a6581a79f1 (patch)
tree933481633972404d9b57c3afee53d686dd4e1226 /media/libstagefright/AwesomePlayer.cpp
parent1a4c79eada496dc43918440608f15410eaecd28c (diff)
downloadframeworks_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.cpp13
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 =