summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2011-03-22 08:55:51 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-22 08:55:51 -0700
commit71ba7d34bc1c900a872d5353e3f04c3751fa95f8 (patch)
tree4c82d7658994f2d786d25261c66859d1b032bf7d
parentc81d7e0ae802626e9e7a09bdc70afe4952c2ac96 (diff)
parent3da107288d5ae112073875ac10317def3c299818 (diff)
downloadframeworks_base-71ba7d34bc1c900a872d5353e3f04c3751fa95f8.zip
frameworks_base-71ba7d34bc1c900a872d5353e3f04c3751fa95f8.tar.gz
frameworks_base-71ba7d34bc1c900a872d5353e3f04c3751fa95f8.tar.bz2
am 3da10728: am 453c0d5f: Merge "DO NOT MERGE: Enable http-live support for https:// urls, fix a parsing issue." into honeycomb-mr1
* commit '3da107288d5ae112073875ac10317def3c299818': DO NOT MERGE: Enable http-live support for https:// urls, fix a parsing issue.
-rw-r--r--media/libmediaplayerservice/MediaPlayerService.cpp3
-rw-r--r--media/libstagefright/httplive/M3UParser.cpp27
2 files changed, 27 insertions, 3 deletions
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index a42cca5..0156634 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -744,7 +744,8 @@ player_type getPlayerType(const char* url)
return TEST_PLAYER;
}
- if (!strncasecmp("http://", url, 7)) {
+ if (!strncasecmp("http://", url, 7)
+ || !strncasecmp("https://", url, 8)) {
size_t len = strlen(url);
if (len >= 5 && !strcasecmp(".m3u8", &url[len - 5])) {
return NU_PLAYER;
diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp
index 95f6741..2eb180a 100644
--- a/media/libstagefright/httplive/M3UParser.cpp
+++ b/media/libstagefright/httplive/M3UParser.cpp
@@ -20,8 +20,8 @@
#include "include/M3UParser.h"
+#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
-#include <media/stagefright/MediaDebug.h>
#include <media/stagefright/MediaErrors.h>
namespace android {
@@ -306,6 +306,29 @@ status_t M3UParser::parseStreamInf(
return OK;
}
+// Find the next occurence of the character "what" at or after "offset",
+// but ignore occurences between quotation marks.
+// Return the index of the occurrence or -1 if not found.
+static ssize_t FindNextUnquoted(
+ const AString &line, char what, size_t offset) {
+ CHECK_NE((int)what, (int)'"');
+
+ bool quoted = false;
+ while (offset < line.size()) {
+ char c = line.c_str()[offset];
+
+ if (c == '"') {
+ quoted = !quoted;
+ } else if (c == what && !quoted) {
+ return offset;
+ }
+
+ ++offset;
+ }
+
+ return -1;
+}
+
// static
status_t M3UParser::parseCipherInfo(
const AString &line, sp<AMessage> *meta, const AString &baseURI) {
@@ -318,7 +341,7 @@ status_t M3UParser::parseCipherInfo(
size_t offset = colonPos + 1;
while (offset < line.size()) {
- ssize_t end = line.find(",", offset);
+ ssize_t end = FindNextUnquoted(line, ',', offset);
if (end < 0) {
end = line.size();
}