Merge "Update DataSourceBase::getAvailableSize signature"

gugelfrei
Robert Shih 6 years ago committed by Android (Google) Code Review
commit 66b4c2c748

@ -66,7 +66,7 @@ public:
virtual void close() {};
virtual ssize_t getAvailableSize(status_t * /*err*/) {
virtual status_t getAvailableSize(off64_t /*offset*/, off64_t * /*size*/) {
return -1;
}

@ -571,12 +571,19 @@ size_t NuCachedSource2::cachedSize() {
return mCacheOffset + mCache->totalSize();
}
status_t NuCachedSource2::getAvailableSize(off64_t offset, off64_t *size) {
Mutex::Autolock autoLock(mLock);
status_t finalStatus = UNKNOWN_ERROR;
*size = approxDataRemaining_l(offset, &finalStatus);
return finalStatus;
}
size_t NuCachedSource2::approxDataRemaining(status_t *finalStatus) const {
Mutex::Autolock autoLock(mLock);
return approxDataRemaining_l(finalStatus);
return approxDataRemaining_l(mLastAccessPos, finalStatus);
}
size_t NuCachedSource2::approxDataRemaining_l(status_t *finalStatus) const {
size_t NuCachedSource2::approxDataRemaining_l(off64_t offset, status_t *finalStatus) const {
*finalStatus = mFinalStatus;
if (mFinalStatus != OK && mNumRetriesLeft > 0) {
@ -584,9 +591,10 @@ size_t NuCachedSource2::approxDataRemaining_l(status_t *finalStatus) const {
*finalStatus = OK;
}
offset = offset >= 0 ? offset : mLastAccessPos;
off64_t lastBytePosCached = mCacheOffset + mCache->totalSize();
if (mLastAccessPos < lastBytePosCached) {
return lastBytePosCached - mLastAccessPos;
if (offset < lastBytePosCached) {
return lastBytePosCached - offset;
}
return 0;
}

@ -780,9 +780,8 @@ bool NuMediaExtractor::getCachedDuration(
int64_t *durationUs, bool *eos) const {
Mutex::Autolock autoLock(mLock);
status_t finalStatus;
ssize_t cachedDataRemaining =
mDataSource->getAvailableSize(&finalStatus);
off64_t cachedDataRemaining = -1;
status_t finalStatus = mDataSource->getAvailableSize(-1, &cachedDataRemaining);
int64_t bitrate;
if (cachedDataRemaining >= 0

@ -53,9 +53,7 @@ struct NuCachedSource2 : public DataSource {
return mName;
}
ssize_t getAvailableSize(status_t *finalStatus) {
return approxDataRemaining(finalStatus);
}
status_t getAvailableSize(off64_t offset, off64_t *size);
////////////////////////////////////////////////////////////////////////////
@ -141,7 +139,7 @@ private:
ssize_t readInternal(off64_t offset, void *data, size_t size);
status_t seekInternal_l(off64_t offset);
size_t approxDataRemaining_l(status_t *finalStatus) const;
size_t approxDataRemaining_l(off64_t offset, status_t *finalStatus) const;
void restartPrefetcherIfNecessary_l(
bool ignoreLowWaterThreshold = false, bool force = false);

Loading…
Cancel
Save