Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f657644 authored by Robert Shih's avatar Robert Shih
Browse files

Update DataSourceBase::getAvailableSize signature

For more consistency:
+ Add offset parameter to correspond with readAt
+ return status_t like getSize.

Bug: 109928575
Test: android.media.cts#StreamingMediaPlayer2Test
Change-Id: I3f330283ca3b53cba158615650152701113f58df
parent dd355609
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
    }

+12 −4
Original line number Diff line number Diff line
@@ -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;
}
+2 −3
Original line number Diff line number Diff line
@@ -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
+2 −4
Original line number Diff line number Diff line
@@ -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);