Merge "Allow directly setting a DataSource for NuMediaExtractor" into jb-mr1-dev
diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp
index 8620856..58e4723 100644
--- a/media/libmediaplayerservice/MediaPlayerService.cpp
+++ b/media/libmediaplayerservice/MediaPlayerService.cpp
@@ -1046,7 +1046,8 @@
{
Mutex::Autolock l(client->mLock);
if (msg == MEDIA_PLAYBACK_COMPLETE && client->mNextClient != NULL) {
- client->mAudioOutput->switchToNextOutput();
+ if (client->mAudioOutput != NULL)
+ client->mAudioOutput->switchToNextOutput();
client->mNextClient->start();
client->mNextClient->mClient->notify(MEDIA_INFO, MEDIA_INFO_STARTED_AS_NEXT, 0, obj);
}
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.
diff --git a/media/libstagefright/matroska/MatroskaExtractor.cpp b/media/libstagefright/matroska/MatroskaExtractor.cpp
index feb8e40..8f7d12b 100644
--- a/media/libstagefright/matroska/MatroskaExtractor.cpp
+++ b/media/libstagefright/matroska/MatroskaExtractor.cpp
@@ -902,8 +902,8 @@
++j;
size_t blockSize = 0;
- for (int i = 0; i < iter.block()->GetFrameCount(); ++i) {
- blockSize += iter.block()->GetFrame(i).len;
+ for (int k = 0; k < iter.block()->GetFrameCount(); ++k) {
+ blockSize += iter.block()->GetFrame(k).len;
}
if (blockSize > maxBlockSize) {
diff --git a/media/libstagefright/rtsp/ARTPConnection.cpp b/media/libstagefright/rtsp/ARTPConnection.cpp
index 44988a3..501a970 100644
--- a/media/libstagefright/rtsp/ARTPConnection.cpp
+++ b/media/libstagefright/rtsp/ARTPConnection.cpp
@@ -18,6 +18,7 @@
#define LOG_TAG "ARTPConnection"
#include <utils/Log.h>
+#include "ARTPAssembler.h"
#include "ARTPConnection.h"
#include "ARTPSource.h"