am 4b9a895d: am d8d4d666: Merge "Send current bandwidth info event when buffering occurs" into jb-mr1-dev

* commit '4b9a895d8bda928351e7169319dd73891873f929':
  Send current bandwidth info event when buffering occurs
diff --git a/media/libstagefright/AwesomePlayer.cpp b/media/libstagefright/AwesomePlayer.cpp
index e18fcbc..04f78eb 100644
--- a/media/libstagefright/AwesomePlayer.cpp
+++ b/media/libstagefright/AwesomePlayer.cpp
@@ -756,8 +756,8 @@
                       cachedDurationUs / 1E6);
                 pause_l();
                 ensureCacheIsFetching_l();
-                sendCacheStats();
             }
+            sendCacheStats();
             notifyListener_l(MEDIA_INFO, MEDIA_INFO_BUFFERING_START);
         } else if (eos || cachedDurationUs > kHighWaterMarkUs) {
             if (mFlags & CACHE_UNDERRUN) {
@@ -780,9 +780,14 @@
 
 void AwesomePlayer::sendCacheStats() {
     sp<MediaPlayerBase> listener = mListener.promote();
-    if (listener != NULL && mCachedSource != NULL) {
+    if (listener != NULL) {
         int32_t kbps = 0;
-        status_t err = mCachedSource->getEstimatedBandwidthKbps(&kbps);
+        status_t err = UNKNOWN_ERROR;
+        if (mCachedSource != NULL) {
+            err = mCachedSource->getEstimatedBandwidthKbps(&kbps);
+        } else if (mWVMExtractor != NULL) {
+            err = mWVMExtractor->getEstimatedBandwidthKbps(&kbps);
+        }
         if (err == OK) {
             listener->sendEvent(
                 MEDIA_INFO, MEDIA_INFO_NETWORK_BANDWIDTH, kbps);
diff --git a/media/libstagefright/WVMExtractor.cpp b/media/libstagefright/WVMExtractor.cpp
index 08d2ae2..d94fc65 100644
--- a/media/libstagefright/WVMExtractor.cpp
+++ b/media/libstagefright/WVMExtractor.cpp
@@ -121,6 +121,15 @@
     return mImpl->getCachedDurationUs(finalStatus);
 }
 
+status_t WVMExtractor::getEstimatedBandwidthKbps(int32_t *kbps) {
+    if (mImpl == NULL) {
+        return UNKNOWN_ERROR;
+    }
+
+    return mImpl->getEstimatedBandwidthKbps(kbps);
+}
+
+
 void WVMExtractor::setAdaptiveStreamingMode(bool adaptive) {
     if (mImpl != NULL) {
         mImpl->setAdaptiveStreamingMode(adaptive);
diff --git a/media/libstagefright/include/WVMExtractor.h b/media/libstagefright/include/WVMExtractor.h
index 2b952e2..c43c801 100644
--- a/media/libstagefright/include/WVMExtractor.h
+++ b/media/libstagefright/include/WVMExtractor.h
@@ -33,6 +33,7 @@
     virtual ~WVMLoadableExtractor() {}
 
     virtual int64_t getCachedDurationUs(status_t *finalStatus) = 0;
+    virtual status_t getEstimatedBandwidthKbps(int32_t *kbps) = 0;
     virtual void setAdaptiveStreamingMode(bool adaptive) = 0;
     virtual void setCryptoPluginMode(bool cryptoPluginMode) = 0;
     virtual void setUID(uid_t uid) = 0;
@@ -55,6 +56,9 @@
     // *finalStatus == ERROR_END_OF_STREAM
     int64_t getCachedDurationUs(status_t *finalStatus);
 
+    // Return the current estimated bandwidth
+    status_t getEstimatedBandwidthKbps(int32_t *kbps);
+
     // Set to use adaptive streaming mode by the WV component.
     // If adaptive == true, adaptive streaming mode will be used.
     // Default mode is non-adaptive streaming mode.