Merge "Do not call getEstimatedBandwidth if the streaming is not HTTP-based"
This commit is contained in:
@@ -38,6 +38,7 @@ public:
|
||||
kWantsPrefetching = 1,
|
||||
kStreamedFromLocalHost = 2,
|
||||
kIsCachingDataSource = 4,
|
||||
kIsHTTPBasedSource = 8,
|
||||
};
|
||||
|
||||
static sp<DataSource> CreateFromURI(
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -464,7 +464,7 @@ status_t NuHTTPDataSource::getSize(off64_t *size) {
|
||||
}
|
||||
|
||||
uint32_t NuHTTPDataSource::flags() {
|
||||
return kWantsPrefetching;
|
||||
return kWantsPrefetching | kIsHTTPBasedSource;
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
@@ -218,7 +218,7 @@ status_t ChromiumHTTPDataSource::getSize(off64_t *size) {
|
||||
}
|
||||
|
||||
uint32_t ChromiumHTTPDataSource::flags() {
|
||||
return kWantsPrefetching;
|
||||
return kWantsPrefetching | kIsHTTPBasedSource;
|
||||
}
|
||||
|
||||
// static
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user