diff options
author | Lajos Molnar <lajos@google.com> | 2015-01-29 00:27:50 -0800 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2015-01-29 00:27:50 -0800 |
commit | ea5c0286e8a18e71608e6c6e5758b167fe0d6c26 (patch) | |
tree | 7c60a14509723c3bc7a54c0225e686fd8d14860d | |
parent | 6dafb81dc699672f218915fa2895f8ee012203a9 (diff) | |
parent | 44a2390bb707f2bc55265c43010f3cd092e233db (diff) | |
download | frameworks_av-ea5c0286e8a18e71608e6c6e5758b167fe0d6c26.zip frameworks_av-ea5c0286e8a18e71608e6c6e5758b167fe0d6c26.tar.gz frameworks_av-ea5c0286e8a18e71608e6c6e5758b167fe0d6c26.tar.bz2 |
resolved conflicts for merge of 44a2390b to lmp-mr1-dev-plus-aosp
Change-Id: I39fdc2e8895e1e943749b9a2628656a8fa5bb72b
-rw-r--r-- | media/libstagefright/HTTPBase.cpp | 9 | ||||
-rw-r--r-- | media/libstagefright/httplive/LiveSession.cpp | 32 | ||||
-rw-r--r-- | media/libstagefright/httplive/LiveSession.h | 2 | ||||
-rw-r--r-- | media/libstagefright/httplive/PlaylistFetcher.cpp | 21 | ||||
-rw-r--r-- | media/libstagefright/httplive/PlaylistFetcher.h | 5 | ||||
-rw-r--r-- | media/libstagefright/include/HTTPBase.h | 5 | ||||
-rw-r--r-- | media/libstagefright/mpeg2ts/AnotherPacketSource.cpp | 11 |
7 files changed, 14 insertions, 71 deletions
diff --git a/media/libstagefright/HTTPBase.cpp b/media/libstagefright/HTTPBase.cpp index 0c2ff15..32291c8 100644 --- a/media/libstagefright/HTTPBase.cpp +++ b/media/libstagefright/HTTPBase.cpp @@ -36,8 +36,7 @@ HTTPBase::HTTPBase() mTotalTransferBytes(0), mPrevBandwidthMeasureTimeUs(0), mPrevEstimatedBandWidthKbps(0), - mBandWidthCollectFreqMs(5000), - mMaxBandwidthHistoryItems(100) { + mBandWidthCollectFreqMs(5000) { } void HTTPBase::addBandwidthMeasurement( @@ -51,7 +50,7 @@ void HTTPBase::addBandwidthMeasurement( mTotalTransferBytes += numBytes; mBandwidthHistory.push_back(entry); - if (++mNumBandwidthHistoryItems > mMaxBandwidthHistoryItems) { + if (++mNumBandwidthHistoryItems > 100) { BandwidthEntry *entry = &*mBandwidthHistory.begin(); mTotalTransferTimeUs -= entry->mDelayUs; mTotalTransferBytes -= entry->mNumBytes; @@ -105,10 +104,6 @@ status_t HTTPBase::setBandwidthStatCollectFreq(int32_t freqMs) { return OK; } -void HTTPBase::setBandwidthHistorySize(size_t numHistoryItems) { - mMaxBandwidthHistoryItems = numHistoryItems; -} - // static void HTTPBase::RegisterSocketUserTag(int sockfd, uid_t uid, uint32_t kTag) { int res = qtaguid_tagSocket(sockfd, kTag, uid); diff --git a/media/libstagefright/httplive/LiveSession.cpp b/media/libstagefright/httplive/LiveSession.cpp index 190188a..04005bd 100644 --- a/media/libstagefright/httplive/LiveSession.cpp +++ b/media/libstagefright/httplive/LiveSession.cpp @@ -49,9 +49,6 @@ namespace android { -// Number of recently-read bytes to use for bandwidth estimation -const size_t LiveSession::kBandwidthHistoryBytes = 200 * 1024; - LiveSession::LiveSession( const sp<AMessage> ¬ify, uint32_t flags, const sp<IMediaHTTPService> &httpService) @@ -87,13 +84,6 @@ LiveSession::LiveSession( mPacketSources2.add(indexToType(i), new AnotherPacketSource(NULL /* meta */)); mBuffering[i] = false; } - - size_t numHistoryItems = kBandwidthHistoryBytes / - PlaylistFetcher::kDownloadBlockSize + 1; - if (numHistoryItems < 5) { - numHistoryItems = 5; - } - mHTTPDataSource->setBandwidthHistorySize(numHistoryItems); } LiveSession::~LiveSession() { @@ -155,24 +145,10 @@ status_t LiveSession::dequeueAccessUnit( } } - int32_t targetDuration = 0; - sp<AMessage> meta = packetSource->getLatestEnqueuedMeta(); - if (meta != NULL) { - meta->findInt32("targetDuration", &targetDuration); - } - - int64_t targetDurationUs = targetDuration * 1000000ll; - if (targetDurationUs == 0 || - targetDurationUs > PlaylistFetcher::kMinBufferedDurationUs) { - // Fetchers limit buffering to - // min(3 * targetDuration, kMinBufferedDurationUs) - targetDurationUs = PlaylistFetcher::kMinBufferedDurationUs; - } - if (mBuffering[idx]) { if (mSwitchInProgress || packetSource->isFinished(0) - || packetSource->getEstimatedDurationUs() > targetDurationUs) { + || packetSource->getEstimatedDurationUs() > 10000000ll) { mBuffering[idx] = false; } } @@ -882,11 +858,7 @@ ssize_t LiveSession::fetchFile( // Only resize when we don't know the size. size_t bufferRemaining = buffer->capacity() - buffer->size(); if (bufferRemaining == 0 && getSizeErr != OK) { - size_t bufferIncrement = buffer->size() / 2; - if (bufferIncrement < 32768) { - bufferIncrement = 32768; - } - bufferRemaining = bufferIncrement; + bufferRemaining = 32768; ALOGV("increasing download buffer to %zu bytes", buffer->size() + bufferRemaining); diff --git a/media/libstagefright/httplive/LiveSession.h b/media/libstagefright/httplive/LiveSession.h index dfb5e59..896a8fc 100644 --- a/media/libstagefright/httplive/LiveSession.h +++ b/media/libstagefright/httplive/LiveSession.h @@ -114,8 +114,6 @@ private: kWhatSwitchDown = 'sDwn', }; - static const size_t kBandwidthHistoryBytes; - struct BandwidthItem { size_t mPlaylistIndex; unsigned long mBandwidth; diff --git a/media/libstagefright/httplive/PlaylistFetcher.cpp b/media/libstagefright/httplive/PlaylistFetcher.cpp index 1526af1..c0c7ed9 100644 --- a/media/libstagefright/httplive/PlaylistFetcher.cpp +++ b/media/libstagefright/httplive/PlaylistFetcher.cpp @@ -49,9 +49,8 @@ namespace android { // static const int64_t PlaylistFetcher::kMinBufferedDurationUs = 10000000ll; const int64_t PlaylistFetcher::kMaxMonitorDelayUs = 3000000ll; -// LCM of 188 (size of a TS packet) & 1k works well -const int32_t PlaylistFetcher::kDownloadBlockSize = 47 * 1024; -const int32_t PlaylistFetcher::kNumSkipFrames = 5; +const int32_t PlaylistFetcher::kDownloadBlockSize = 2048; +const int32_t PlaylistFetcher::kNumSkipFrames = 10; PlaylistFetcher::PlaylistFetcher( const sp<AMessage> ¬ify, @@ -561,7 +560,7 @@ status_t PlaylistFetcher::onResumeUntil(const sp<AMessage> &msg) { // Don't resume if we would stop within a resume threshold. int32_t discontinuitySeq; int64_t latestTimeUs = 0, stopTimeUs = 0; - sp<AMessage> latestMeta = packetSource->getLatestEnqueuedMeta(); + sp<AMessage> latestMeta = packetSource->getLatestDequeuedMeta(); if (latestMeta != NULL && latestMeta->findInt32("discontinuitySeq", &discontinuitySeq) && discontinuitySeq == mDiscontinuitySeq @@ -610,12 +609,7 @@ void PlaylistFetcher::onMonitorQueue() { int32_t targetDurationSecs; int64_t targetDurationUs = kMinBufferedDurationUs; if (mPlaylist != NULL) { - if (mPlaylist->meta() == NULL || !mPlaylist->meta()->findInt32( - "target-duration", &targetDurationSecs)) { - ALOGE("Playlist is missing required EXT-X-TARGETDURATION tag"); - notifyError(ERROR_MALFORMED); - return; - } + CHECK(mPlaylist->meta()->findInt32("target-duration", &targetDurationSecs)); targetDurationUs = targetDurationSecs * 1000000ll; } @@ -1164,11 +1158,6 @@ const sp<ABuffer> &PlaylistFetcher::setAccessUnitProperties( accessUnit->meta()->setInt32("discard", discard); } - int32_t targetDurationSecs; - if (mPlaylist->meta()->findInt32("target-duration", &targetDurationSecs)) { - accessUnit->meta()->setInt32("targetDuration", targetDurationSecs); - } - accessUnit->meta()->setInt32("discontinuitySeq", mDiscontinuitySeq); accessUnit->meta()->setInt64("segmentStartTimeUs", getSegmentStartTimeUs(mSeqNumber)); return accessUnit; @@ -1678,7 +1667,7 @@ void PlaylistFetcher::updateDuration() { int64_t PlaylistFetcher::resumeThreshold(const sp<AMessage> &msg) { int64_t durationUs; - if (msg->findInt64("durationUs", &durationUs) && durationUs > 0) { + if (msg->findInt64("durationUs", &durationUs)) { return kNumSkipFrames * durationUs; } diff --git a/media/libstagefright/httplive/PlaylistFetcher.h b/media/libstagefright/httplive/PlaylistFetcher.h index 4e15f85..76cc852 100644 --- a/media/libstagefright/httplive/PlaylistFetcher.h +++ b/media/libstagefright/httplive/PlaylistFetcher.h @@ -34,9 +34,6 @@ struct M3UParser; class String8; struct PlaylistFetcher : public AHandler { - static const int64_t kMinBufferedDurationUs; - static const int32_t kDownloadBlockSize; - enum { kWhatStarted, kWhatPaused, @@ -95,7 +92,9 @@ private: kWhatDownloadNext = 'dlnx', }; + static const int64_t kMinBufferedDurationUs; static const int64_t kMaxMonitorDelayUs; + static const int32_t kDownloadBlockSize; static const int32_t kNumSkipFrames; static bool bufferStartsWithTsSyncByte(const sp<ABuffer>& buffer); diff --git a/media/libstagefright/include/HTTPBase.h b/media/libstagefright/include/HTTPBase.h index 0c66e27..1c3cd5e 100644 --- a/media/libstagefright/include/HTTPBase.h +++ b/media/libstagefright/include/HTTPBase.h @@ -48,8 +48,6 @@ struct HTTPBase : public DataSource { virtual status_t setBandwidthStatCollectFreq(int32_t freqMs); - virtual void setBandwidthHistorySize(size_t numHistoryItems); - static void RegisterSocketUserTag(int sockfd, uid_t uid, uint32_t kTag); static void UnRegisterSocketUserTag(int sockfd); @@ -57,7 +55,7 @@ struct HTTPBase : public DataSource { static void UnRegisterSocketUserMark(int sockfd); protected: - virtual void addBandwidthMeasurement(size_t numBytes, int64_t delayUs); + void addBandwidthMeasurement(size_t numBytes, int64_t delayUs); private: struct BandwidthEntry { @@ -71,7 +69,6 @@ private: size_t mNumBandwidthHistoryItems; int64_t mTotalTransferTimeUs; size_t mTotalTransferBytes; - size_t mMaxBandwidthHistoryItems; enum { kMinBandwidthCollectFreqMs = 1000, // 1 second diff --git a/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp b/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp index f266fe7..c579d4c 100644 --- a/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp +++ b/media/libstagefright/mpeg2ts/AnotherPacketSource.cpp @@ -218,19 +218,12 @@ void AnotherPacketSource::queueAccessUnit(const sp<ABuffer> &buffer) { } if (mLatestEnqueuedMeta == NULL) { - mLatestEnqueuedMeta = buffer->meta()->dup(); + mLatestEnqueuedMeta = buffer->meta(); } else { int64_t latestTimeUs = 0; - int64_t frameDeltaUs = 0; CHECK(mLatestEnqueuedMeta->findInt64("timeUs", &latestTimeUs)); if (lastQueuedTimeUs > latestTimeUs) { - mLatestEnqueuedMeta = buffer->meta()->dup(); - frameDeltaUs = lastQueuedTimeUs - latestTimeUs; - mLatestEnqueuedMeta->setInt64("durationUs", frameDeltaUs); - } else if (!mLatestEnqueuedMeta->findInt64("durationUs", &frameDeltaUs)) { - // For B frames - frameDeltaUs = latestTimeUs - lastQueuedTimeUs; - mLatestEnqueuedMeta->setInt64("durationUs", frameDeltaUs); + mLatestEnqueuedMeta = buffer->meta(); } } } |