am ce8dcdf5: am 031c93df: Merge "Bug fix for the MediaPlayer::prepare() api."

* commit 'ce8dcdf5361dd5de8c86cf5b0308c71d519f98ca':
  Bug fix for the MediaPlayer::prepare() api.
diff --git a/media/libstagefright/MP3Extractor.cpp b/media/libstagefright/MP3Extractor.cpp
index d94054b..380dab4 100644
--- a/media/libstagefright/MP3Extractor.cpp
+++ b/media/libstagefright/MP3Extractor.cpp
@@ -350,8 +350,10 @@
 
     mInitCheck = OK;
 
-    // get iTunes-style gapless info if present
-    ID3 id3(mDataSource);
+    // Get iTunes-style gapless info if present.
+    // When getting the id3 tag, skip the V1 tags to prevent the source cache
+    // from being iterated to the end of the file.
+    ID3 id3(mDataSource, true);
     if (id3.isValid()) {
         ID3::Iterator *com = new ID3::Iterator(id3, "COM");
         if (com->done()) {
diff --git a/media/libstagefright/id3/ID3.cpp b/media/libstagefright/id3/ID3.cpp
index 69274ca..22c2f5a 100644
--- a/media/libstagefright/id3/ID3.cpp
+++ b/media/libstagefright/id3/ID3.cpp
@@ -30,7 +30,7 @@
 
 static const size_t kMaxMetadataSize = 3 * 1024 * 1024;
 
-ID3::ID3(const sp<DataSource> &source)
+ID3::ID3(const sp<DataSource> &source, bool ignoreV1)
     : mIsValid(false),
       mData(NULL),
       mSize(0),
@@ -38,7 +38,7 @@
       mVersion(ID3_UNKNOWN) {
     mIsValid = parseV2(source);
 
-    if (!mIsValid) {
+    if (!mIsValid && !ignoreV1) {
         mIsValid = parseV1(source);
     }
 }
diff --git a/media/libstagefright/include/ID3.h b/media/libstagefright/include/ID3.h
index 8714008..3028f56 100644
--- a/media/libstagefright/include/ID3.h
+++ b/media/libstagefright/include/ID3.h
@@ -35,7 +35,7 @@
         ID3_V2_4,
     };
 
-    ID3(const sp<DataSource> &source);
+    ID3(const sp<DataSource> &source, bool ignoreV1 = false);
     ~ID3();
 
     bool isValid() const;