Loading media/libmediaplayerservice/nuplayer/GenericSource.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -290,7 +290,7 @@ void NuPlayer::GenericSource::onMessageReceived(const sp<AMessage> &msg) { int64_t timeUs, actualTimeUs; const bool formatChange = true; sp<AMessage> latestMeta = track->mPackets->getLatestMeta(); sp<AMessage> latestMeta = track->mPackets->getLatestEnqueuedMeta(); CHECK(latestMeta != NULL && latestMeta->findInt64("timeUs", &timeUs)); readBuffer(trackType, timeUs, &actualTimeUs, formatChange); readBuffer(counterpartType, -1, NULL, formatChange); Loading media/libstagefright/httplive/LiveSession.cpp +220 −59 File changed.Preview size limit exceeded, changes collapsed. Show changes media/libstagefright/httplive/LiveSession.h +21 −3 Original line number Diff line number Diff line Loading @@ -125,8 +125,19 @@ private: struct StreamItem { const char *mType; AString mUri; StreamItem() : mType("") {} StreamItem(const char *type) : mType(type) {} size_t mCurDiscontinuitySeq; int64_t mLastDequeuedTimeUs; int64_t mLastSampleDurationUs; StreamItem() : mType(""), mCurDiscontinuitySeq(0), mLastDequeuedTimeUs(0), mLastSampleDurationUs(0) {} StreamItem(const char *type) : mType(type), mCurDiscontinuitySeq(0), mLastDequeuedTimeUs(0), mLastSampleDurationUs(0) {} AString uriKey() { AString key(mType); key.append("URI"); Loading @@ -147,7 +158,7 @@ private: AString mMasterURL; Vector<BandwidthItem> mBandwidthItems; ssize_t mPrevBandwidthIndex; ssize_t mCurBandwidthIndex; sp<M3UParser> mPlaylist; Loading @@ -163,6 +174,7 @@ private: // we use this to track reconfiguration progress. uint32_t mSwapMask; KeyedVector<StreamType, sp<AnotherPacketSource> > mDiscontinuities; KeyedVector<StreamType, sp<AnotherPacketSource> > mPacketSources; // A second set of packet sources that buffer content for the variant we're switching to. KeyedVector<StreamType, sp<AnotherPacketSource> > mPacketSources2; Loading @@ -187,6 +199,12 @@ private: uint32_t mDisconnectReplyID; uint32_t mSeekReplyID; bool mFirstTimeUsValid; int64_t mFirstTimeUs; int64_t mLastSeekTimeUs; KeyedVector<size_t, int64_t> mDiscontinuityAbsStartTimesUs; KeyedVector<size_t, int64_t> mDiscontinuityOffsetTimesUs; sp<PlaylistFetcher> addFetcher(const char *uri); void onConnect(const sp<AMessage> &msg); Loading media/libstagefright/httplive/M3UParser.cpp +37 −2 Original line number Diff line number Diff line Loading @@ -157,8 +157,8 @@ void M3UParser::MediaGroup::pickRandomMediaItems() { } status_t M3UParser::MediaGroup::selectTrack(size_t index, bool select) { if (mType != TYPE_SUBS) { ALOGE("only select subtitile tracks for now!"); if (mType != TYPE_SUBS && mType != TYPE_AUDIO) { ALOGE("only select subtitile/audio tracks for now!"); return INVALID_OPERATION; } Loading Loading @@ -246,6 +246,7 @@ M3UParser::M3UParser( mIsVariantPlaylist(false), mIsComplete(false), mIsEvent(false), mDiscontinuitySeq(0), mSelectedIndex(-1) { mInitCheck = parse(data, size); } Loading Loading @@ -273,6 +274,10 @@ bool M3UParser::isEvent() const { return mIsEvent; } size_t M3UParser::getDiscontinuitySeq() const { return mDiscontinuitySeq; } sp<AMessage> M3UParser::meta() { return mMeta; } Loading Loading @@ -567,6 +572,12 @@ status_t M3UParser::parse(const void *_data, size_t size) { } } else if (line.startsWith("#EXT-X-MEDIA")) { err = parseMedia(line); } else if (line.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE")) { size_t seq; err = parseDiscontinuitySequence(line, &seq); if (err == OK) { mDiscontinuitySeq = seq; } } if (err != OK) { Loading Loading @@ -1109,6 +1120,30 @@ status_t M3UParser::parseMedia(const AString &line) { flags); } // static status_t M3UParser::parseDiscontinuitySequence(const AString &line, size_t *seq) { ssize_t colonPos = line.find(":"); if (colonPos < 0) { return ERROR_MALFORMED; } int32_t x; status_t err = ParseInt32(line.c_str() + colonPos + 1, &x); if (err != OK) { return err; } if (x < 0) { return ERROR_MALFORMED; } if (seq) { *seq = x; } return OK; } // static status_t M3UParser::ParseInt32(const char *s, int32_t *x) { char *end; Loading media/libstagefright/httplive/M3UParser.h +4 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ struct M3UParser : public RefBase { bool isVariantPlaylist() const; bool isComplete() const; bool isEvent() const; size_t getDiscontinuitySeq() const; sp<AMessage> meta(); Loading Loading @@ -66,6 +67,7 @@ private: bool mIsVariantPlaylist; bool mIsComplete; bool mIsEvent; size_t mDiscontinuitySeq; sp<AMessage> mMeta; Vector<Item> mItems; Loading Loading @@ -94,6 +96,8 @@ private: status_t parseMedia(const AString &line); static status_t parseDiscontinuitySequence(const AString &line, size_t *seq); static status_t ParseInt32(const char *s, int32_t *x); static status_t ParseDouble(const char *s, double *x); Loading Loading
media/libmediaplayerservice/nuplayer/GenericSource.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -290,7 +290,7 @@ void NuPlayer::GenericSource::onMessageReceived(const sp<AMessage> &msg) { int64_t timeUs, actualTimeUs; const bool formatChange = true; sp<AMessage> latestMeta = track->mPackets->getLatestMeta(); sp<AMessage> latestMeta = track->mPackets->getLatestEnqueuedMeta(); CHECK(latestMeta != NULL && latestMeta->findInt64("timeUs", &timeUs)); readBuffer(trackType, timeUs, &actualTimeUs, formatChange); readBuffer(counterpartType, -1, NULL, formatChange); Loading
media/libstagefright/httplive/LiveSession.cpp +220 −59 File changed.Preview size limit exceeded, changes collapsed. Show changes
media/libstagefright/httplive/LiveSession.h +21 −3 Original line number Diff line number Diff line Loading @@ -125,8 +125,19 @@ private: struct StreamItem { const char *mType; AString mUri; StreamItem() : mType("") {} StreamItem(const char *type) : mType(type) {} size_t mCurDiscontinuitySeq; int64_t mLastDequeuedTimeUs; int64_t mLastSampleDurationUs; StreamItem() : mType(""), mCurDiscontinuitySeq(0), mLastDequeuedTimeUs(0), mLastSampleDurationUs(0) {} StreamItem(const char *type) : mType(type), mCurDiscontinuitySeq(0), mLastDequeuedTimeUs(0), mLastSampleDurationUs(0) {} AString uriKey() { AString key(mType); key.append("URI"); Loading @@ -147,7 +158,7 @@ private: AString mMasterURL; Vector<BandwidthItem> mBandwidthItems; ssize_t mPrevBandwidthIndex; ssize_t mCurBandwidthIndex; sp<M3UParser> mPlaylist; Loading @@ -163,6 +174,7 @@ private: // we use this to track reconfiguration progress. uint32_t mSwapMask; KeyedVector<StreamType, sp<AnotherPacketSource> > mDiscontinuities; KeyedVector<StreamType, sp<AnotherPacketSource> > mPacketSources; // A second set of packet sources that buffer content for the variant we're switching to. KeyedVector<StreamType, sp<AnotherPacketSource> > mPacketSources2; Loading @@ -187,6 +199,12 @@ private: uint32_t mDisconnectReplyID; uint32_t mSeekReplyID; bool mFirstTimeUsValid; int64_t mFirstTimeUs; int64_t mLastSeekTimeUs; KeyedVector<size_t, int64_t> mDiscontinuityAbsStartTimesUs; KeyedVector<size_t, int64_t> mDiscontinuityOffsetTimesUs; sp<PlaylistFetcher> addFetcher(const char *uri); void onConnect(const sp<AMessage> &msg); Loading
media/libstagefright/httplive/M3UParser.cpp +37 −2 Original line number Diff line number Diff line Loading @@ -157,8 +157,8 @@ void M3UParser::MediaGroup::pickRandomMediaItems() { } status_t M3UParser::MediaGroup::selectTrack(size_t index, bool select) { if (mType != TYPE_SUBS) { ALOGE("only select subtitile tracks for now!"); if (mType != TYPE_SUBS && mType != TYPE_AUDIO) { ALOGE("only select subtitile/audio tracks for now!"); return INVALID_OPERATION; } Loading Loading @@ -246,6 +246,7 @@ M3UParser::M3UParser( mIsVariantPlaylist(false), mIsComplete(false), mIsEvent(false), mDiscontinuitySeq(0), mSelectedIndex(-1) { mInitCheck = parse(data, size); } Loading Loading @@ -273,6 +274,10 @@ bool M3UParser::isEvent() const { return mIsEvent; } size_t M3UParser::getDiscontinuitySeq() const { return mDiscontinuitySeq; } sp<AMessage> M3UParser::meta() { return mMeta; } Loading Loading @@ -567,6 +572,12 @@ status_t M3UParser::parse(const void *_data, size_t size) { } } else if (line.startsWith("#EXT-X-MEDIA")) { err = parseMedia(line); } else if (line.startsWith("#EXT-X-DISCONTINUITY-SEQUENCE")) { size_t seq; err = parseDiscontinuitySequence(line, &seq); if (err == OK) { mDiscontinuitySeq = seq; } } if (err != OK) { Loading Loading @@ -1109,6 +1120,30 @@ status_t M3UParser::parseMedia(const AString &line) { flags); } // static status_t M3UParser::parseDiscontinuitySequence(const AString &line, size_t *seq) { ssize_t colonPos = line.find(":"); if (colonPos < 0) { return ERROR_MALFORMED; } int32_t x; status_t err = ParseInt32(line.c_str() + colonPos + 1, &x); if (err != OK) { return err; } if (x < 0) { return ERROR_MALFORMED; } if (seq) { *seq = x; } return OK; } // static status_t M3UParser::ParseInt32(const char *s, int32_t *x) { char *end; Loading
media/libstagefright/httplive/M3UParser.h +4 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ struct M3UParser : public RefBase { bool isVariantPlaylist() const; bool isComplete() const; bool isEvent() const; size_t getDiscontinuitySeq() const; sp<AMessage> meta(); Loading Loading @@ -66,6 +67,7 @@ private: bool mIsVariantPlaylist; bool mIsComplete; bool mIsEvent; size_t mDiscontinuitySeq; sp<AMessage> mMeta; Vector<Item> mItems; Loading Loading @@ -94,6 +96,8 @@ private: status_t parseMedia(const AString &line); static status_t parseDiscontinuitySequence(const AString &line, size_t *seq); static status_t ParseInt32(const char *s, int32_t *x); static status_t ParseDouble(const char *s, double *x); Loading