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

Commit 32f45bfc authored by Marco Nelissen's avatar Marco Nelissen
Browse files

Remove MediaBuffer::clone and other dead code.

Change I570374f936e434b214e9cd55e2a72f12ebeafad2 removed some dead code,
but in turn created more dead code. Remove that too.

Bug: 111407253
Test: manual, CTS
Change-Id: I4ac01935c03257857456d8e460f98f6d4f7eb430
parent 59c920b7
Loading
Loading
Loading
Loading
+8 −96
Original line number Diff line number Diff line
@@ -5352,7 +5352,7 @@ media_status_t MPEG4Source::read(
        }
    }

    if ((!mIsAVC && !mIsHEVC && !mIsAC4)) {
    if (!mIsAVC && !mIsHEVC && !mIsAC4) {
        if (newBuffer) {
            if (mIsPcm) {
                // The twos' PCM block reader assumes that all samples has the same size.
@@ -5429,58 +5429,11 @@ media_status_t MPEG4Source::read(
            }
        }

        if (!mIsAVC && !mIsHEVC && !mIsAC4) {
        *out = mBuffer;
        mBuffer = NULL;

        return AMEDIA_OK;
        }

        if (mIsAC4) {
            mBuffer->release();
            mBuffer = NULL;

            return AMEDIA_ERROR_IO;
        }

        // Each NAL unit is split up into its constituent fragments and
        // each one of them returned in its own buffer.

        CHECK(mBuffer->range_length() >= mNALLengthSize);

        const uint8_t *src =
            (const uint8_t *)mBuffer->data() + mBuffer->range_offset();

        size_t nal_size = parseNALSize(src);
        if (mNALLengthSize > SIZE_MAX - nal_size) {
            ALOGE("b/24441553, b/24445122");
        }
        if (mBuffer->range_length() - mNALLengthSize < nal_size) {
            ALOGE("incomplete NAL unit.");

            mBuffer->release();
            mBuffer = NULL;

            return AMEDIA_ERROR_MALFORMED;
        }

        MediaBufferBase *clone = mBuffer->clone();
        CHECK(clone != NULL);
        clone->set_range(mBuffer->range_offset() + mNALLengthSize, nal_size);

        CHECK(mBuffer != NULL);
        mBuffer->set_range(
                mBuffer->range_offset() + mNALLengthSize + nal_size,
                mBuffer->range_length() - mNALLengthSize - nal_size);

        if (mBuffer->range_length() == 0) {
            mBuffer->release();
            mBuffer = NULL;
        }

        *out = clone;

        return AMEDIA_OK;
    } else if (mIsAC4) {
        CHECK(mBuffer != NULL);
        // Make sure there is enough space to write the sync header and the raw frame
@@ -5773,7 +5726,7 @@ media_status_t MPEG4Source::fragmentedRead(

    }

    if ((!mIsAVC && !mIsHEVC)) {
    if (!mIsAVC && !mIsHEVC) {
        if (newBuffer) {
            if (!isInRange((size_t)0u, mBuffer->size(), size)) {
                mBuffer->release();
@@ -5825,52 +5778,11 @@ media_status_t MPEG4Source::fragmentedRead(
            ++mCurrentSampleIndex;
        }

        if (!mIsAVC && !mIsHEVC) {
        *out = mBuffer;
        mBuffer = NULL;

        return AMEDIA_OK;
        }

        // Each NAL unit is split up into its constituent fragments and
        // each one of them returned in its own buffer.

        CHECK(mBuffer->range_length() >= mNALLengthSize);

        const uint8_t *src =
            (const uint8_t *)mBuffer->data() + mBuffer->range_offset();

        size_t nal_size = parseNALSize(src);
        if (mNALLengthSize > SIZE_MAX - nal_size) {
            ALOGE("b/24441553, b/24445122");
        }

        if (mBuffer->range_length() - mNALLengthSize < nal_size) {
            ALOGE("incomplete NAL unit.");

            mBuffer->release();
            mBuffer = NULL;

            return AMEDIA_ERROR_MALFORMED;
        }

        MediaBufferBase *clone = mBuffer->clone();
        CHECK(clone != NULL);
        clone->set_range(mBuffer->range_offset() + mNALLengthSize, nal_size);

        CHECK(mBuffer != NULL);
        mBuffer->set_range(
                mBuffer->range_offset() + mNALLengthSize + nal_size,
                mBuffer->range_length() - mNALLengthSize - nal_size);

        if (mBuffer->range_length() == 0) {
            mBuffer->release();
            mBuffer = NULL;
        }

        *out = clone;

        return AMEDIA_OK;
    } else {
        ALOGV("whole NAL");
        // Whole NAL units are returned but each fragment is prefixed by
+3 −22
Original line number Diff line number Diff line
@@ -39,8 +39,7 @@ MediaBuffer::MediaBuffer(void *data, size_t size)
      mRangeOffset(0),
      mRangeLength(size),
      mOwnsData(false),
      mMetaData(new MetaDataBase),
      mOriginal(NULL) {
      mMetaData(new MetaDataBase) {
}

MediaBuffer::MediaBuffer(size_t size)
@@ -51,8 +50,7 @@ MediaBuffer::MediaBuffer(size_t size)
      mRangeOffset(0),
      mRangeLength(size),
      mOwnsData(true),
      mMetaData(new MetaDataBase),
      mOriginal(NULL) {
      mMetaData(new MetaDataBase) {
    if (size < kSharedMemThreshold
            || std::atomic_load_explicit(&mUseSharedMemory, std::memory_order_seq_cst) == 0) {
        mData = malloc(size);
@@ -84,8 +82,7 @@ MediaBuffer::MediaBuffer(const sp<ABuffer> &buffer)
      mRangeLength(mSize),
      mBuffer(buffer),
      mOwnsData(false),
      mMetaData(new MetaDataBase),
      mOriginal(NULL) {
      mMetaData(new MetaDataBase) {
}

void MediaBuffer::release() {
@@ -162,11 +159,6 @@ MediaBuffer::~MediaBuffer() {
        mData = NULL;
    }

    if (mOriginal != NULL) {
        mOriginal->release();
        mOriginal = NULL;
    }

   if (mMemory.get() != nullptr) {
       getSharedControl()->setDeadObject();
   }
@@ -178,15 +170,4 @@ void MediaBuffer::setObserver(MediaBufferObserver *observer) {
    mObserver = observer;
}

MediaBufferBase *MediaBuffer::clone() {
    MediaBuffer *buffer = new MediaBuffer(mData, mSize);
    buffer->set_range(mRangeOffset, mRangeLength);
    buffer->mMetaData = new MetaDataBase(*mMetaData);

    add_ref();
    buffer->mOriginal = this;

    return buffer;
}

}  // namespace android
+0 −7
Original line number Diff line number Diff line
@@ -80,11 +80,6 @@ public:

    virtual void setObserver(MediaBufferObserver *group);

    // Returns a clone of this MediaBuffer increasing its reference count.
    // The clone references the same data but has its own range and
    // MetaData.
    virtual MediaBufferBase *clone();

    // sum of localRefcount() and remoteRefcount()
    // Result should be treated as approximate unless the result precludes concurrent accesses.
    virtual int refcount() const {
@@ -158,8 +153,6 @@ private:

    MetaDataBase* mMetaData;

    MediaBuffer *mOriginal;

    static std::atomic_int_least32_t mUseSharedMemory;

    MediaBuffer(const MediaBuffer &);
+0 −5
Original line number Diff line number Diff line
@@ -70,11 +70,6 @@ public:

    virtual void setObserver(MediaBufferObserver *group) = 0;

    // Returns a clone of this MediaBufferBase increasing its reference
    // count. The clone references the same data but has its own range and
    // MetaData.
    virtual MediaBufferBase *clone() = 0;

    virtual int refcount() const = 0;

    virtual int localRefcount() const = 0;