Loading media/libstagefright/httplive/LiveSession.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -1509,14 +1509,15 @@ void LiveSession::onChangeConfiguration3(const sp<AMessage> &msg) { if (meta != NULL && !meta->findInt32("discontinuity", &type)) { int64_t tmpUs; int64_t tmpSegmentUs; CHECK(meta->findInt64("timeUs", &tmpUs)); if (startTimeUs < 0 || tmpUs < startTimeUs) { CHECK(meta->findInt64("segmentStartTimeUs", &tmpSegmentUs)); if (startTimeUs < 0 || tmpSegmentUs < segmentStartTimeUs) { startTimeUs = tmpUs; segmentStartTimeUs = tmpSegmentUs; } else if (tmpSegmentUs == segmentStartTimeUs && tmpUs < startTimeUs) { startTimeUs = tmpUs; } CHECK(meta->findInt64("segmentStartTimeUs", &tmpUs)); if (segmentStartTimeUs < 0 || tmpUs < segmentStartTimeUs) { segmentStartTimeUs = tmpUs; } int32_t seq; Loading media/libstagefright/httplive/PlaylistFetcher.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -758,6 +758,9 @@ void PlaylistFetcher::onDownloadNext() { mSeqNumber = firstSeqNumberInPlaylist; } } else { // When seeking mSegmentStartTimeUs is unavailable (< 0), we // use mStartTimeUs (client supplied timestamp) to determine both start segment // and relative position inside a segment mSeqNumber = getSeqNumberForTime(mStartTimeUs); mStartTimeUs -= getSegmentStartTimeUs(mSeqNumber); } Loading @@ -766,6 +769,10 @@ void PlaylistFetcher::onDownloadNext() { mStartTimeUs, mSeqNumber, firstSeqNumberInPlaylist, lastSeqNumberInPlaylist); } else { // When adapting or track switching, mSegmentStartTimeUs (relative // to media time 0) is used to determine the start segment; mStartTimeUs (absolute // timestamps coming from the media container) is used to determine the position // inside a segments. mSeqNumber = getSeqNumberForTime(mSegmentStartTimeUs); if (mAdaptive) { // avoid double fetch/decode Loading Loading
media/libstagefright/httplive/LiveSession.cpp +7 −6 Original line number Diff line number Diff line Loading @@ -1509,14 +1509,15 @@ void LiveSession::onChangeConfiguration3(const sp<AMessage> &msg) { if (meta != NULL && !meta->findInt32("discontinuity", &type)) { int64_t tmpUs; int64_t tmpSegmentUs; CHECK(meta->findInt64("timeUs", &tmpUs)); if (startTimeUs < 0 || tmpUs < startTimeUs) { CHECK(meta->findInt64("segmentStartTimeUs", &tmpSegmentUs)); if (startTimeUs < 0 || tmpSegmentUs < segmentStartTimeUs) { startTimeUs = tmpUs; segmentStartTimeUs = tmpSegmentUs; } else if (tmpSegmentUs == segmentStartTimeUs && tmpUs < startTimeUs) { startTimeUs = tmpUs; } CHECK(meta->findInt64("segmentStartTimeUs", &tmpUs)); if (segmentStartTimeUs < 0 || tmpUs < segmentStartTimeUs) { segmentStartTimeUs = tmpUs; } int32_t seq; Loading
media/libstagefright/httplive/PlaylistFetcher.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -758,6 +758,9 @@ void PlaylistFetcher::onDownloadNext() { mSeqNumber = firstSeqNumberInPlaylist; } } else { // When seeking mSegmentStartTimeUs is unavailable (< 0), we // use mStartTimeUs (client supplied timestamp) to determine both start segment // and relative position inside a segment mSeqNumber = getSeqNumberForTime(mStartTimeUs); mStartTimeUs -= getSegmentStartTimeUs(mSeqNumber); } Loading @@ -766,6 +769,10 @@ void PlaylistFetcher::onDownloadNext() { mStartTimeUs, mSeqNumber, firstSeqNumberInPlaylist, lastSeqNumberInPlaylist); } else { // When adapting or track switching, mSegmentStartTimeUs (relative // to media time 0) is used to determine the start segment; mStartTimeUs (absolute // timestamps coming from the media container) is used to determine the position // inside a segments. mSeqNumber = getSeqNumberForTime(mSegmentStartTimeUs); if (mAdaptive) { // avoid double fetch/decode Loading