Loading media/libstagefright/httplive/PlaylistFetcher.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ PlaylistFetcher::PlaylistFetcher( mNumRetries(0), mStartup(true), mPrepared(false), mSkipToFirstIDRAfterConnect(false), mNextPTSTimeUs(-1ll), mMonitorQueueGeneration(0), mRefreshState(INITIAL_MINIMUM_RELOAD_DELAY), Loading Loading @@ -1097,12 +1098,30 @@ status_t PlaylistFetcher::extractAndQueueAccessUnitsFromTs(const sp<ABuffer> &bu continue; } if (stream == LiveSession::STREAMTYPE_VIDEO && mVideoMime.empty()) { const char *mime; if (source->getFormat()->findCString(kKeyMIMEType, &mime)) { mVideoMime.setTo(mime); if (!strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_AVC)) { mSkipToFirstIDRAfterConnect = true; } } } int64_t timeUs; sp<ABuffer> accessUnit; status_t finalResult; while (source->hasBufferAvailable(&finalResult) && source->dequeueAccessUnit(&accessUnit) == OK) { if (stream == LiveSession::STREAMTYPE_VIDEO && mSkipToFirstIDRAfterConnect) { if (!IsIDR(accessUnit)) { continue; } else { mSkipToFirstIDRAfterConnect = false; } } CHECK(accessUnit->meta()->findInt64("timeUs", &timeUs)); if (mMinStartTimeUs > 0) { if (timeUs < mMinStartTimeUs) { Loading media/libstagefright/httplive/PlaylistFetcher.h +2 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ private: sp<LiveSession> mSession; AString mURI; AString mVideoMime; uint32_t mStreamTypeMask; int64_t mStartTimeUs; Loading @@ -116,6 +117,7 @@ private: int32_t mNumRetries; bool mStartup; bool mPrepared; bool mSkipToFirstIDRAfterConnect; int64_t mNextPTSTimeUs; int32_t mMonitorQueueGeneration; Loading Loading
media/libstagefright/httplive/PlaylistFetcher.cpp +19 −0 Original line number Diff line number Diff line Loading @@ -69,6 +69,7 @@ PlaylistFetcher::PlaylistFetcher( mNumRetries(0), mStartup(true), mPrepared(false), mSkipToFirstIDRAfterConnect(false), mNextPTSTimeUs(-1ll), mMonitorQueueGeneration(0), mRefreshState(INITIAL_MINIMUM_RELOAD_DELAY), Loading Loading @@ -1097,12 +1098,30 @@ status_t PlaylistFetcher::extractAndQueueAccessUnitsFromTs(const sp<ABuffer> &bu continue; } if (stream == LiveSession::STREAMTYPE_VIDEO && mVideoMime.empty()) { const char *mime; if (source->getFormat()->findCString(kKeyMIMEType, &mime)) { mVideoMime.setTo(mime); if (!strcasecmp(mime, MEDIA_MIMETYPE_VIDEO_AVC)) { mSkipToFirstIDRAfterConnect = true; } } } int64_t timeUs; sp<ABuffer> accessUnit; status_t finalResult; while (source->hasBufferAvailable(&finalResult) && source->dequeueAccessUnit(&accessUnit) == OK) { if (stream == LiveSession::STREAMTYPE_VIDEO && mSkipToFirstIDRAfterConnect) { if (!IsIDR(accessUnit)) { continue; } else { mSkipToFirstIDRAfterConnect = false; } } CHECK(accessUnit->meta()->findInt64("timeUs", &timeUs)); if (mMinStartTimeUs > 0) { if (timeUs < mMinStartTimeUs) { Loading
media/libstagefright/httplive/PlaylistFetcher.h +2 −0 Original line number Diff line number Diff line Loading @@ -99,6 +99,7 @@ private: sp<LiveSession> mSession; AString mURI; AString mVideoMime; uint32_t mStreamTypeMask; int64_t mStartTimeUs; Loading @@ -116,6 +117,7 @@ private: int32_t mNumRetries; bool mStartup; bool mPrepared; bool mSkipToFirstIDRAfterConnect; int64_t mNextPTSTimeUs; int32_t mMonitorQueueGeneration; Loading