HLS: allow audio/subtitles to appear after bitrate variants
i.e. allow EXT-X-MEDIA to appear after EXT-X-STREAM-INF.
Bug: 29266320
Change-Id: I080a64672a768efdc63abdb9892b8fdd97ffc56f
diff --git a/media/libstagefright/httplive/M3UParser.cpp b/media/libstagefright/httplive/M3UParser.cpp
index 935f1dc..c04549a 100644
--- a/media/libstagefright/httplive/M3UParser.cpp
+++ b/media/libstagefright/httplive/M3UParser.cpp
@@ -701,6 +701,22 @@
mLastSeqNumber = mFirstSeqNumber + mItems.size() - 1;
}
+ for (size_t i = 0; i < mItems.size(); ++i) {
+ sp<AMessage> meta = mItems.itemAt(i).mMeta;
+ const char *keys[] = {"audio", "video", "subtitles"};
+ for (size_t j = 0; j < sizeof(keys) / sizeof(const char *); ++j) {
+ AString groupID;
+ if (meta->findString(keys[j], &groupID)) {
+ ssize_t groupIndex = mMediaGroups.indexOfKey(groupID);
+ if (groupIndex < 0) {
+ ALOGE("Undefined media group '%s' referenced in stream info.",
+ groupID.c_str());
+ return ERROR_MALFORMED;
+ }
+ }
+ }
+ }
+
return OK;
}
@@ -873,15 +889,6 @@
}
const AString &groupID = unquoteString(val);
- ssize_t groupIndex = mMediaGroups.indexOfKey(groupID);
-
- if (groupIndex < 0) {
- ALOGE("Undefined media group '%s' referenced in stream info.",
- groupID.c_str());
-
- return ERROR_MALFORMED;
- }
-
key.tolower();
if (meta->get() == NULL) {
*meta = new AMessage;