Loading media/libstagefright/httplive/M3UParser.cpp +13 −9 Original line number Original line Diff line number Diff line Loading @@ -615,7 +615,7 @@ status_t M3UParser::parse(const void *_data, size_t size) { if (mIsVariantPlaylist) { if (mIsVariantPlaylist) { return ERROR_MALFORMED; return ERROR_MALFORMED; } } err = parseCipherInfo(line, &itemMeta, mBaseURI); err = parseCipherInfo(line, &itemMeta); } else if (line.startsWith("#EXT-X-ENDLIST")) { } else if (line.startsWith("#EXT-X-ENDLIST")) { mIsComplete = true; mIsComplete = true; } else if (line.startsWith("#EXT-X-PLAYLIST-TYPE:EVENT")) { } else if (line.startsWith("#EXT-X-PLAYLIST-TYPE:EVENT")) { Loading Loading @@ -936,7 +936,7 @@ status_t M3UParser::parseStreamInf( // static // static status_t M3UParser::parseCipherInfo( status_t M3UParser::parseCipherInfo( const AString &line, sp<AMessage> *meta, const AString &baseURI) { const AString &line, sp<AMessage> *meta) { ssize_t colonPos = line.find(":"); ssize_t colonPos = line.find(":"); if (colonPos < 0) { if (colonPos < 0) { Loading Loading @@ -985,13 +985,9 @@ status_t M3UParser::parseCipherInfo( val = tmp; val = tmp; } } AString absURI; // To save space, we only store the partial Uri here if (MakeURL(baseURI.c_str(), val.c_str(), &absURI)) { // The full Uri will be constructed from this plus val = absURI; // the base Uri as needed by PlaylistFetcher } else { ALOGE("failed to make absolute url for %s.", uriDebugString(baseURI).c_str()); } } } key.insert(AString("cipher-"), 0); key.insert(AString("cipher-"), 0); Loading @@ -1003,6 +999,14 @@ status_t M3UParser::parseCipherInfo( return OK; return OK; } } AString M3UParser::getFullCipherUri(const AString &partial) { AString full; if (MakeURL(mBaseURI.c_str(), partial.c_str(), &full)) { return full; } return AString(""); } // static // static status_t M3UParser::parseByteRange( status_t M3UParser::parseByteRange( const AString &line, uint64_t curOffset, const AString &line, uint64_t curOffset, Loading media/libstagefright/httplive/M3UParser.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,8 @@ struct M3UParser : public RefBase { bool getTypeURI(size_t index, const char *key, AString *uri) const; bool getTypeURI(size_t index, const char *key, AString *uri) const; bool hasType(size_t index, const char *key) const; bool hasType(size_t index, const char *key) const; AString getFullCipherUri(const AString &partial); protected: protected: virtual ~M3UParser(); virtual ~M3UParser(); Loading Loading @@ -99,7 +101,7 @@ private: const AString &line, sp<AMessage> *meta) const; const AString &line, sp<AMessage> *meta) const; static status_t parseCipherInfo( static status_t parseCipherInfo( const AString &line, sp<AMessage> *meta, const AString &baseURI); const AString &line, sp<AMessage> *meta); static status_t parseByteRange( static status_t parseByteRange( const AString &line, uint64_t curOffset, const AString &line, uint64_t curOffset, Loading media/libstagefright/httplive/PlaylistFetcher.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -345,6 +345,7 @@ status_t PlaylistFetcher::decryptBuffer( ALOGE("Missing key uri"); ALOGE("Missing key uri"); return ERROR_MALFORMED; return ERROR_MALFORMED; } } keyURI = mPlaylist->getFullCipherUri(keyURI); ssize_t index = mAESKeyForURI.indexOfKey(keyURI); ssize_t index = mAESKeyForURI.indexOfKey(keyURI); Loading Loading
media/libstagefright/httplive/M3UParser.cpp +13 −9 Original line number Original line Diff line number Diff line Loading @@ -615,7 +615,7 @@ status_t M3UParser::parse(const void *_data, size_t size) { if (mIsVariantPlaylist) { if (mIsVariantPlaylist) { return ERROR_MALFORMED; return ERROR_MALFORMED; } } err = parseCipherInfo(line, &itemMeta, mBaseURI); err = parseCipherInfo(line, &itemMeta); } else if (line.startsWith("#EXT-X-ENDLIST")) { } else if (line.startsWith("#EXT-X-ENDLIST")) { mIsComplete = true; mIsComplete = true; } else if (line.startsWith("#EXT-X-PLAYLIST-TYPE:EVENT")) { } else if (line.startsWith("#EXT-X-PLAYLIST-TYPE:EVENT")) { Loading Loading @@ -936,7 +936,7 @@ status_t M3UParser::parseStreamInf( // static // static status_t M3UParser::parseCipherInfo( status_t M3UParser::parseCipherInfo( const AString &line, sp<AMessage> *meta, const AString &baseURI) { const AString &line, sp<AMessage> *meta) { ssize_t colonPos = line.find(":"); ssize_t colonPos = line.find(":"); if (colonPos < 0) { if (colonPos < 0) { Loading Loading @@ -985,13 +985,9 @@ status_t M3UParser::parseCipherInfo( val = tmp; val = tmp; } } AString absURI; // To save space, we only store the partial Uri here if (MakeURL(baseURI.c_str(), val.c_str(), &absURI)) { // The full Uri will be constructed from this plus val = absURI; // the base Uri as needed by PlaylistFetcher } else { ALOGE("failed to make absolute url for %s.", uriDebugString(baseURI).c_str()); } } } key.insert(AString("cipher-"), 0); key.insert(AString("cipher-"), 0); Loading @@ -1003,6 +999,14 @@ status_t M3UParser::parseCipherInfo( return OK; return OK; } } AString M3UParser::getFullCipherUri(const AString &partial) { AString full; if (MakeURL(mBaseURI.c_str(), partial.c_str(), &full)) { return full; } return AString(""); } // static // static status_t M3UParser::parseByteRange( status_t M3UParser::parseByteRange( const AString &line, uint64_t curOffset, const AString &line, uint64_t curOffset, Loading
media/libstagefright/httplive/M3UParser.h +3 −1 Original line number Original line Diff line number Diff line Loading @@ -55,6 +55,8 @@ struct M3UParser : public RefBase { bool getTypeURI(size_t index, const char *key, AString *uri) const; bool getTypeURI(size_t index, const char *key, AString *uri) const; bool hasType(size_t index, const char *key) const; bool hasType(size_t index, const char *key) const; AString getFullCipherUri(const AString &partial); protected: protected: virtual ~M3UParser(); virtual ~M3UParser(); Loading Loading @@ -99,7 +101,7 @@ private: const AString &line, sp<AMessage> *meta) const; const AString &line, sp<AMessage> *meta) const; static status_t parseCipherInfo( static status_t parseCipherInfo( const AString &line, sp<AMessage> *meta, const AString &baseURI); const AString &line, sp<AMessage> *meta); static status_t parseByteRange( static status_t parseByteRange( const AString &line, uint64_t curOffset, const AString &line, uint64_t curOffset, Loading
media/libstagefright/httplive/PlaylistFetcher.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -345,6 +345,7 @@ status_t PlaylistFetcher::decryptBuffer( ALOGE("Missing key uri"); ALOGE("Missing key uri"); return ERROR_MALFORMED; return ERROR_MALFORMED; } } keyURI = mPlaylist->getFullCipherUri(keyURI); ssize_t index = mAESKeyForURI.indexOfKey(keyURI); ssize_t index = mAESKeyForURI.indexOfKey(keyURI); Loading