Merge cherrypicks of [4562103, 4560827, 4563998, 4563999, 4564000, 4564001, 4564351, 4564352, 4564333, 4564033, 4560455, 4564034, 4560674, 4560675, 4563620, 4561607, 4561062, 4561063] into pi-release

Change-Id: I05ac67d96b8d82db43c7b94578ac3bbf6830525c
diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp
index 52791b9..9bdf895 100644
--- a/media/libstagefright/httplive/M3UParser.cpp
+++ b/media/libstagefright/httplive/M3UParser.cpp
@@ -57,7 +57,7 @@
             const char *language,
             uint32_t flags);
 
-    bool getActiveURI(AString *uri, const char *baseURL) const;
+    bool getActiveURI(AString *uri) const;
 
     void pickRandomMediaItems();
     status_t selectTrack(size_t index, bool select);
@@ -76,7 +76,6 @@
         AString mURI;
         AString mLanguage;
         uint32_t mFlags;
-        AString makeURL(const char *baseURL) const;
     };
 
     Type mType;
@@ -229,12 +228,12 @@
     return format;
 }
 
-bool M3UParser::MediaGroup::getActiveURI(AString *uri, const char *baseURL) const {
+bool M3UParser::MediaGroup::getActiveURI(AString *uri) const {
     for (size_t i = 0; i < mMediaItems.size(); ++i) {
         if (mSelectedIndex >= 0 && i == (size_t)mSelectedIndex) {
             const Media &item = mMediaItems.itemAt(i);
 
-            *uri = item.makeURL(baseURL);
+            *uri = item.mURI;
             return true;
         }
     }
@@ -323,7 +322,7 @@
     }
 
     if (uri) {
-        *uri = mItems.itemAt(index).makeURL(mBaseURI.c_str());
+        *uri = mItems.itemAt(index).mURI;
     }
 
     if (meta) {
@@ -429,7 +428,7 @@
     AString groupID;
     if (!meta->findString(key, &groupID)) {
         if (uri != NULL) {
-            *uri = mItems.itemAt(index).makeURL(mBaseURI.c_str());
+            *uri = mItems.itemAt(index).mURI;
         }
 
         AString codecs;
@@ -460,7 +459,7 @@
     // don't care about the active URI (or if there is an active one)
     if (uri != NULL) {
         sp<MediaGroup> group = mMediaGroups.valueFor(groupID);
-        if (!group->getActiveURI(uri, mBaseURI.c_str())) {
+        if (!group->getActiveURI(uri)) {
             return false;
         }
 
@@ -549,18 +548,6 @@
     return true;
 }
 
-AString M3UParser::Item::makeURL(const char *baseURL) const {
-    AString out;
-    CHECK(MakeURL(baseURL, mURI.c_str(), &out));
-    return out;
-}
-
-AString M3UParser::MediaGroup::Media::makeURL(const char *baseURL) const {
-    AString out;
-    CHECK(MakeURL(baseURL, mURI.c_str(), &out));
-    return out;
-}
-
 status_t M3UParser::parse(const void *_data, size_t size) {
     int32_t lineNo = 0;
 
@@ -691,7 +678,7 @@
             mItems.push();
             Item *item = &mItems.editItemAt(mItems.size() - 1);
 
-            item->mURI = line;
+            CHECK(MakeURL(mBaseURI.c_str(), line.c_str(), &item->mURI));
 
             item->mMeta = itemMeta;
 
@@ -1203,7 +1190,9 @@
 
             AString tmp(val, 1, val.size() - 2);
 
-            groupURI = tmp;
+            if (!MakeURL(mBaseURI.c_str(), tmp.c_str(), &groupURI)) {
+                ALOGI("Failed to make absolute URI from '%s'.", tmp.c_str());
+            }
 
             haveGroupURI = true;
         }
diff --git a/media/libstagefright/httplive/M3UParser.h b/media/libstagefright/httplive/M3UParser.h
index c85335a..fa648ed 100644
--- a/media/libstagefright/httplive/M3UParser.h
+++ b/media/libstagefright/httplive/M3UParser.h
@@ -64,7 +64,6 @@
     struct Item {
         AString mURI;
         sp<AMessage> mMeta;
-        AString makeURL(const char *baseURL) const;
     };
 
     status_t mInitCheck;