Merge "Do not call getEstimatedBandwidth if the streaming is not HTTP-based"

This commit is contained in:
James Dong
2011-06-02 10:22:50 -07:00
committed by Android (Google) Code Review
6 changed files with 22 additions and 9 deletions

View File

@@ -38,6 +38,7 @@ public:
kWantsPrefetching = 1,
kStreamedFromLocalHost = 2,
kIsCachingDataSource = 4,
kIsHTTPBasedSource = 8,
};
static sp<DataSource> CreateFromURI(

View File

@@ -715,7 +715,7 @@ void AwesomePlayer::onBufferingUpdate() {
void AwesomePlayer::sendCacheStats() {
sp<MediaPlayerBase> listener = mListener.promote();
if (listener != NULL) {
if (listener != NULL && mCachedSource != NULL) {
int32_t kbps = 0;
status_t err = mCachedSource->getEstimatedBandwidthKbps(&kbps);
if (err == OK) {

View File

@@ -203,13 +203,19 @@ NuCachedSource2::~NuCachedSource2() {
}
status_t NuCachedSource2::getEstimatedBandwidthKbps(int32_t *kbps) {
HTTPBase* source = static_cast<HTTPBase *>(mSource.get());
return source->getEstimatedBandwidthKbps(kbps);
if (mSource->flags() & kIsHTTPBasedSource) {
HTTPBase* source = static_cast<HTTPBase *>(mSource.get());
return source->getEstimatedBandwidthKbps(kbps);
}
return ERROR_UNSUPPORTED;
}
status_t NuCachedSource2::setCacheStatCollectFreq(int32_t freqMs) {
HTTPBase *source = static_cast<HTTPBase *>(mSource.get());
return source->setBandwidthStatCollectFreq(freqMs);
if (mSource->flags() & kIsHTTPBasedSource) {
HTTPBase *source = static_cast<HTTPBase *>(mSource.get());
return source->setBandwidthStatCollectFreq(freqMs);
}
return ERROR_UNSUPPORTED;
}
status_t NuCachedSource2::initCheck() const {
@@ -221,7 +227,9 @@ status_t NuCachedSource2::getSize(off64_t *size) {
}
uint32_t NuCachedSource2::flags() {
return (mSource->flags() & ~kWantsPrefetching) | kIsCachingDataSource;
// Remove HTTP related flags since NuCachedSource2 is not HTTP-based.
uint32_t flags = mSource->flags() & ~(kWantsPrefetching | kIsHTTPBasedSource);
return (flags | kIsCachingDataSource);
}
void NuCachedSource2::onMessageReceived(const sp<AMessage> &msg) {

View File

@@ -464,7 +464,7 @@ status_t NuHTTPDataSource::getSize(off64_t *size) {
}
uint32_t NuHTTPDataSource::flags() {
return kWantsPrefetching;
return kWantsPrefetching | kIsHTTPBasedSource;
}
// static

View File

@@ -218,7 +218,7 @@ status_t ChromiumHTTPDataSource::getSize(off64_t *size) {
}
uint32_t ChromiumHTTPDataSource::flags() {
return kWantsPrefetching;
return kWantsPrefetching | kIsHTTPBasedSource;
}
// static

View File

@@ -47,10 +47,14 @@ struct NuCachedSource2 : public DataSource {
size_t cachedSize();
size_t approxDataRemaining(status_t *finalStatus);
status_t setCacheStatCollectFreq(int32_t freqMs);
void resumeFetchingIfNecessary();
// The following methods are supported only if the
// data source is HTTP-based; otherwise, ERROR_UNSUPPORTED
// is returned.
status_t getEstimatedBandwidthKbps(int32_t *kbps);
status_t setCacheStatCollectFreq(int32_t freqMs);
protected:
virtual ~NuCachedSource2();