From 1913c1aeabc1ff8d288c2be269fc50f010ad5f0f Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Mon, 4 Oct 2010 11:09:31 -0700 Subject: [PATCH] Don't retrieve metadata unless necessary for ogg-vorbis ringtone auto-looping. Change-Id: Iaf5880bb3376f9cbf22aefe198878eaf6f3f08c7 related-to-bug: 3037389 --- media/libstagefright/AwesomePlayer.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index c955ac3d1fe0d..39758669c7583 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -317,11 +317,17 @@ status_t AwesomePlayer::setDataSource_l(const sp &extractor) { setAudioSource(extractor->getTrack(i)); haveAudio = true; - sp fileMeta = extractor->getMetaData(); - int32_t loop; - if (fileMeta != NULL - && fileMeta->findInt32(kKeyAutoLoop, &loop) && loop != 0) { - mFlags |= AUTO_LOOPING; + if (!strcasecmp(mime, MEDIA_MIMETYPE_AUDIO_VORBIS)) { + // Only do this for vorbis audio, none of the other audio + // formats even support this ringtone specific hack and + // retrieving the metadata on some extractors may turn out + // to be very expensive. + sp fileMeta = extractor->getMetaData(); + int32_t loop; + if (fileMeta != NULL + && fileMeta->findInt32(kKeyAutoLoop, &loop) && loop != 0) { + mFlags |= AUTO_LOOPING; + } } }