diff options
author | James Dong <jdong@google.com> | 2011-05-25 19:37:03 -0700 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-05-31 15:23:25 -0700 |
commit | 5b1b8a93a07326f1cbc627f09e02988375189e0a (patch) | |
tree | 1da7ba8c401fb96b4de5fab790fba8e51eea78f6 /media/libstagefright/AwesomePlayer.cpp | |
parent | 65580f9adf6c4d98449ad0716488f9fe3869aa5a (diff) | |
download | frameworks_av-5b1b8a93a07326f1cbc627f09e02988375189e0a.zip frameworks_av-5b1b8a93a07326f1cbc627f09e02988375189e0a.tar.gz frameworks_av-5b1b8a93a07326f1cbc627f09e02988375189e0a.tar.bz2 |
Send estimated bandwidth value as informational event when cache fetcher pauses
o Application can make informed decision about the available network bandwidth
when cache fetcher pauses.
o Application can also adjust how frequently the bandwidth is estimated within
a range from one second to one minute.
Change-Id: I90068001343e79da1886de03c565537787e1580b
Diffstat (limited to 'media/libstagefright/AwesomePlayer.cpp')
-rw-r--r-- | media/libstagefright/AwesomePlayer.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp index 3d270f8..07a47e5 100644 --- a/media/libstagefright/AwesomePlayer.cpp +++ b/media/libstagefright/AwesomePlayer.cpp @@ -634,6 +634,7 @@ void AwesomePlayer::onBufferingUpdate() { mFlags |= CACHE_UNDERRUN; pause_l(); ensureCacheIsFetching_l(); + sendCacheStats(); notifyListener_l(MEDIA_INFO, MEDIA_INFO_BUFFERING_START); } else if (eos || cachedDataRemaining > kHighWaterMarkBytes) { if (mFlags & CACHE_UNDERRUN) { @@ -692,6 +693,7 @@ void AwesomePlayer::onBufferingUpdate() { mFlags |= CACHE_UNDERRUN; pause_l(); ensureCacheIsFetching_l(); + sendCacheStats(); notifyListener_l(MEDIA_INFO, MEDIA_INFO_BUFFERING_START); } else if (eos || cachedDurationUs > highWaterMarkUs) { if (mFlags & CACHE_UNDERRUN) { @@ -711,6 +713,18 @@ void AwesomePlayer::onBufferingUpdate() { postBufferingEvent_l(); } +void AwesomePlayer::sendCacheStats() { + sp<MediaPlayerBase> listener = mListener.promote(); + if (listener != NULL) { + int32_t kbps = 0; + status_t err = mCachedSource->getEstimatedBandwidthKbps(&kbps); + if (err == OK) { + listener->sendEvent( + MEDIA_INFO, MEDIA_INFO_NETWORK_BANDWIDTH, kbps); + } + } +} + void AwesomePlayer::onStreamDone() { // Posted whenever any stream finishes playing. @@ -2083,6 +2097,10 @@ status_t AwesomePlayer::setParameter(int key, const Parcel &request) { return mTextPlayer->setParameter(key, request); } + case KEY_PARAMETER_CACHE_STAT_COLLECT_FREQ_MS: + { + return setCacheStatCollectFreq(request); + } default: { return ERROR_UNSUPPORTED; @@ -2090,6 +2108,16 @@ status_t AwesomePlayer::setParameter(int key, const Parcel &request) { } } +status_t AwesomePlayer::setCacheStatCollectFreq(const Parcel &request) { + if (mCachedSource != NULL) { + int32_t freqMs = request.readInt32(); + LOGD("Request to keep cache stats in the past %d ms", + freqMs); + return mCachedSource->setCacheStatCollectFreq(freqMs); + } + return ERROR_UNSUPPORTED; +} + status_t AwesomePlayer::getParameter(int key, Parcel *reply) { return OK; } |