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

Commit 502acbeb authored by Marco Nelissen's avatar Marco Nelissen Committed by Android (Google) Code Review
Browse files

Merge changes I8b56e58b,I709db10c,I398f1d86,Ifdc05e6b into qt-aml-media-dev

* changes:
  Fix native exception occurred when seeking mp4 file
  Fix a noise issue caused by random value of byteOrder
  Fix exception when delete an uninitialized object
  Fix memory leak in MPEG2PSExtractor
parents e32a1d7c 36eacff1
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -144,6 +144,7 @@ static bool SniffAMR(

AMRExtractor::AMRExtractor(DataSourceHelper *source)
    : mDataSource(source),
      mMeta(NULL),
      mInitCheck(NO_INIT),
      mOffsetTableLength(0) {
    float confidence;
@@ -191,8 +192,10 @@ AMRExtractor::AMRExtractor(DataSourceHelper *source)

AMRExtractor::~AMRExtractor() {
    delete mDataSource;
    if (mMeta) {
        AMediaFormat_delete(mMeta);
    }
}

media_status_t AMRExtractor::getMetaData(AMediaFormat *meta) {
    AMediaFormat_clear(meta);
+3 −3
Original line number Diff line number Diff line
@@ -5775,11 +5775,11 @@ media_status_t MPEG4Source::read(
                      meta, AMEDIAFORMAT_KEY_TIME_US, ((long double)cts * 1000000) / mTimescale);
                AMediaFormat_setInt32(meta, AMEDIAFORMAT_KEY_IS_SYNC_FRAME, 1);

                int32_t byteOrder;
                AMediaFormat_getInt32(mFormat,
                int32_t byteOrder = 0;
                bool isGetBigEndian = AMediaFormat_getInt32(mFormat,
                        AMEDIAFORMAT_KEY_PCM_BIG_ENDIAN, &byteOrder);

                if (byteOrder == 1) {
                if (isGetBigEndian && byteOrder == 1) {
                    // Big-endian -> little-endian
                    uint16_t *dstData = (uint16_t *)buf;
                    uint16_t *srcData = (uint16_t *)buf;
+1 −0
Original line number Diff line number Diff line
@@ -655,6 +655,7 @@ void SampleTable::buildSampleEntriesTable() {
    }

    mSampleTimeEntries = new (std::nothrow) SampleTimeEntry[mNumSampleSizes];
    memset(mSampleTimeEntries, 0, sizeof(SampleTimeEntry) * mNumSampleSizes);
    if (!mSampleTimeEntries) {
        ALOGE("Cannot allocate sample entry table with %llu entries.",
                (unsigned long long)mNumSampleSizes);
+9 −1
Original line number Diff line number Diff line
@@ -111,8 +111,10 @@ MPEG2PSExtractor::MPEG2PSExtractor(DataSourceHelper *source)
    AMediaFormat *meta = AMediaFormat_new();
    for (size_t i = mTracks.size(); i > 0;) {
        i--;
        if (mTracks.valueAt(i)->getFormat(meta) != AMEDIA_OK) {
        Track *track = mTracks.valueAt(i);
        if (track->getFormat(meta) != AMEDIA_OK) {
            mTracks.removeItemsAt(i);
            delete track;
        }
    }
    AMediaFormat_delete(meta);
@@ -122,6 +124,10 @@ MPEG2PSExtractor::MPEG2PSExtractor(DataSourceHelper *source)

MPEG2PSExtractor::~MPEG2PSExtractor() {
    delete mDataSource;
    for (size_t i = mTracks.size(); i > 0;) {
        i--;
        delete mTracks.valueAt(i);
    }
}

size_t MPEG2PSExtractor::countTracks() {
@@ -793,7 +799,9 @@ MPEG2PSExtractor::WrappedTrack::~WrappedTrack() {
}

media_status_t MPEG2PSExtractor::WrappedTrack::start() {
    delete mTrack->mBufferGroup;
    mTrack->mBufferGroup = mBufferGroup;
    mBufferGroup = nullptr;
    return mTrack->start();
}