Loading media/java/android/media/MediaFile.java +1 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,7 @@ public class MediaFile { addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("M3U", FILE_TYPE_M3U, "application/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); addFileType("M3U8", FILE_TYPE_HTTPLIVE, "application/vnd.apple.mpegurl"); Loading media/libstagefright/AwesomePlayer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -426,7 +426,8 @@ status_t AwesomePlayer::setDataSource_l( // Hack to support http live. size_t len = strlen(uri); if (!strcasecmp(&uri[len - 5], ".m3u8")) { if (!strcasecmp(&uri[len - 5], ".m3u8") || strstr(&uri[7], "m3u8") != NULL) { mUri = "httplive://"; mUri.append(&uri[7]); } Loading media/libstagefright/httplive/LiveSource.cpp +0 −8 Original line number Diff line number Diff line Loading @@ -359,14 +359,6 @@ bool LiveSource::setupCipher() { return false; } if (keyURI.size() >= 2 && keyURI.c_str()[0] == '"' && keyURI.c_str()[keyURI.size() - 1] == '"') { // Remove surrounding quotes. AString tmp(keyURI, 1, keyURI.size() - 2); keyURI = tmp; } ssize_t index = mAESKeyForURI.indexOfKey(keyURI); sp<ABuffer> key; Loading media/libstagefright/httplive/M3UParser.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -162,7 +162,7 @@ status_t M3UParser::parse(const void *_data, size_t size) { if (mIsVariantPlaylist) { return ERROR_MALFORMED; } err = parseCipherInfo(line, &itemMeta); err = parseCipherInfo(line, &itemMeta, mBaseURI); } else if (line.startsWith("#EXT-X-ENDLIST")) { mIsComplete = true; } else if (line.startsWith("#EXTINF")) { Loading Loading @@ -298,7 +298,7 @@ status_t M3UParser::parseStreamInf( // static status_t M3UParser::parseCipherInfo( const AString &line, sp<AMessage> *meta) { const AString &line, sp<AMessage> *meta, const AString &baseURI) { ssize_t colonPos = line.find(":"); if (colonPos < 0) { Loading Loading @@ -338,6 +338,24 @@ status_t M3UParser::parseCipherInfo( *meta = new AMessage; } if (key == "uri") { if (val.size() >= 2 && val.c_str()[0] == '"' && val.c_str()[val.size() - 1] == '"') { // Remove surrounding quotes. AString tmp(val, 1, val.size() - 2); val = tmp; } AString absURI; if (MakeURL(baseURI.c_str(), val.c_str(), &absURI)) { val = absURI; } else { LOGE("failed to make absolute url for '%s'.", val.c_str()); } } key.insert(AString("cipher-"), 0); (*meta)->setString(key.c_str(), val.c_str(), val.size()); Loading media/libstagefright/include/M3UParser.h +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ private: const AString &line, sp<AMessage> *meta); static status_t parseCipherInfo( const AString &line, sp<AMessage> *meta); const AString &line, sp<AMessage> *meta, const AString &baseURI); static status_t ParseInt32(const char *s, int32_t *x); Loading Loading
media/java/android/media/MediaFile.java +1 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,7 @@ public class MediaFile { addFileType("WBMP", FILE_TYPE_WBMP, "image/vnd.wap.wbmp"); addFileType("M3U", FILE_TYPE_M3U, "audio/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("M3U", FILE_TYPE_M3U, "application/x-mpegurl", MtpConstants.FORMAT_M3U_PLAYLIST); addFileType("PLS", FILE_TYPE_PLS, "audio/x-scpls", MtpConstants.FORMAT_PLS_PLAYLIST); addFileType("WPL", FILE_TYPE_WPL, "application/vnd.ms-wpl", MtpConstants.FORMAT_WPL_PLAYLIST); addFileType("M3U8", FILE_TYPE_HTTPLIVE, "application/vnd.apple.mpegurl"); Loading
media/libstagefright/AwesomePlayer.cpp +2 −1 Original line number Diff line number Diff line Loading @@ -426,7 +426,8 @@ status_t AwesomePlayer::setDataSource_l( // Hack to support http live. size_t len = strlen(uri); if (!strcasecmp(&uri[len - 5], ".m3u8")) { if (!strcasecmp(&uri[len - 5], ".m3u8") || strstr(&uri[7], "m3u8") != NULL) { mUri = "httplive://"; mUri.append(&uri[7]); } Loading
media/libstagefright/httplive/LiveSource.cpp +0 −8 Original line number Diff line number Diff line Loading @@ -359,14 +359,6 @@ bool LiveSource::setupCipher() { return false; } if (keyURI.size() >= 2 && keyURI.c_str()[0] == '"' && keyURI.c_str()[keyURI.size() - 1] == '"') { // Remove surrounding quotes. AString tmp(keyURI, 1, keyURI.size() - 2); keyURI = tmp; } ssize_t index = mAESKeyForURI.indexOfKey(keyURI); sp<ABuffer> key; Loading
media/libstagefright/httplive/M3UParser.cpp +20 −2 Original line number Diff line number Diff line Loading @@ -162,7 +162,7 @@ status_t M3UParser::parse(const void *_data, size_t size) { if (mIsVariantPlaylist) { return ERROR_MALFORMED; } err = parseCipherInfo(line, &itemMeta); err = parseCipherInfo(line, &itemMeta, mBaseURI); } else if (line.startsWith("#EXT-X-ENDLIST")) { mIsComplete = true; } else if (line.startsWith("#EXTINF")) { Loading Loading @@ -298,7 +298,7 @@ status_t M3UParser::parseStreamInf( // static status_t M3UParser::parseCipherInfo( const AString &line, sp<AMessage> *meta) { const AString &line, sp<AMessage> *meta, const AString &baseURI) { ssize_t colonPos = line.find(":"); if (colonPos < 0) { Loading Loading @@ -338,6 +338,24 @@ status_t M3UParser::parseCipherInfo( *meta = new AMessage; } if (key == "uri") { if (val.size() >= 2 && val.c_str()[0] == '"' && val.c_str()[val.size() - 1] == '"') { // Remove surrounding quotes. AString tmp(val, 1, val.size() - 2); val = tmp; } AString absURI; if (MakeURL(baseURI.c_str(), val.c_str(), &absURI)) { val = absURI; } else { LOGE("failed to make absolute url for '%s'.", val.c_str()); } } key.insert(AString("cipher-"), 0); (*meta)->setString(key.c_str(), val.c_str(), val.size()); Loading
media/libstagefright/include/M3UParser.h +1 −1 Original line number Diff line number Diff line Loading @@ -67,7 +67,7 @@ private: const AString &line, sp<AMessage> *meta); static status_t parseCipherInfo( const AString &line, sp<AMessage> *meta); const AString &line, sp<AMessage> *meta, const AString &baseURI); static status_t ParseInt32(const char *s, int32_t *x); Loading