Loading media/extractors/mp4/MPEG4Extractor.cpp +8 −96 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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 Loading Loading @@ -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(); Loading Loading @@ -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 Loading media/libmediaextractor/MediaBuffer.cpp +3 −22 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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); Loading Loading @@ -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() { Loading Loading @@ -162,11 +159,6 @@ MediaBuffer::~MediaBuffer() { mData = NULL; } if (mOriginal != NULL) { mOriginal->release(); mOriginal = NULL; } if (mMemory.get() != nullptr) { getSharedControl()->setDeadObject(); } Loading @@ -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 media/libmediaextractor/include/media/stagefright/MediaBuffer.h +0 −7 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -158,8 +153,6 @@ private: MetaDataBase* mMetaData; MediaBuffer *mOriginal; static std::atomic_int_least32_t mUseSharedMemory; MediaBuffer(const MediaBuffer &); Loading media/libmediaextractor/include/media/stagefright/MediaBufferBase.h +0 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading
media/extractors/mp4/MPEG4Extractor.cpp +8 −96 Original line number Diff line number Diff line Loading @@ -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. Loading Loading @@ -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 Loading Loading @@ -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(); Loading Loading @@ -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 Loading
media/libmediaextractor/MediaBuffer.cpp +3 −22 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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); Loading Loading @@ -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() { Loading Loading @@ -162,11 +159,6 @@ MediaBuffer::~MediaBuffer() { mData = NULL; } if (mOriginal != NULL) { mOriginal->release(); mOriginal = NULL; } if (mMemory.get() != nullptr) { getSharedControl()->setDeadObject(); } Loading @@ -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
media/libmediaextractor/include/media/stagefright/MediaBuffer.h +0 −7 Original line number Diff line number Diff line Loading @@ -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 { Loading Loading @@ -158,8 +153,6 @@ private: MetaDataBase* mMetaData; MediaBuffer *mOriginal; static std::atomic_int_least32_t mUseSharedMemory; MediaBuffer(const MediaBuffer &); Loading
media/libmediaextractor/include/media/stagefright/MediaBufferBase.h +0 −5 Original line number Diff line number Diff line Loading @@ -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; Loading