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

Commit c0b4ce00 authored by Marco Nelissen's avatar Marco Nelissen Committed by android-build-merger
Browse files

Don't initialize sync sample parameters until the end am: a9660fe1 am:...

Don't initialize sync sample parameters until the end am: a9660fe1 am: 22386993 am: 902d8e90 am: 25a057e4 am: c3ea68a1 am: a59dca66 am: 5cc0712c
am: 835c7ec0

Change-Id: I334a6748dfa61ee40d9b57eb2da8f178888d708e
parents 1d2f9320 835c7ec0
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -517,8 +517,6 @@ status_t SampleTable::setSyncSampleParams(off64_t data_offset, size_t data_size)
        return ERROR_MALFORMED;
    }

    mSyncSampleOffset = data_offset;

    uint8_t header[8];
    if (mDataSource->readAt(
                data_offset, header, sizeof(header)) < (ssize_t)sizeof(header)) {
@@ -530,13 +528,13 @@ status_t SampleTable::setSyncSampleParams(off64_t data_offset, size_t data_size)
        return ERROR_MALFORMED;
    }

    mNumSyncSamples = U32_AT(&header[4]);
    uint32_t numSyncSamples = U32_AT(&header[4]);

    if (mNumSyncSamples < 2) {
    if (numSyncSamples < 2) {
        ALOGV("Table of sync samples is empty or has only a single entry!");
    }

    uint64_t allocSize = (uint64_t)mNumSyncSamples * sizeof(uint32_t);
    uint64_t allocSize = (uint64_t)numSyncSamples * sizeof(uint32_t);
    if (allocSize > kMaxTotalSize) {
        ALOGE("Sync sample table size too large.");
        return ERROR_OUT_OF_RANGE;
@@ -554,22 +552,27 @@ status_t SampleTable::setSyncSampleParams(off64_t data_offset, size_t data_size)
        return ERROR_OUT_OF_RANGE;
    }

    mSyncSamples = new (std::nothrow) uint32_t[mNumSyncSamples];
    mSyncSamples = new (std::nothrow) uint32_t[numSyncSamples];
    if (!mSyncSamples) {
        ALOGE("Cannot allocate sync sample table with %llu entries.",
                (unsigned long long)mNumSyncSamples);
                (unsigned long long)numSyncSamples);
        return ERROR_OUT_OF_RANGE;
    }

    if (mDataSource->readAt(mSyncSampleOffset + 8, mSyncSamples,
    if (mDataSource->readAt(data_offset + 8, mSyncSamples,
            (size_t)allocSize) != (ssize_t)allocSize) {
        delete mSyncSamples;
        mSyncSamples = NULL;
        return ERROR_IO;
    }

    for (size_t i = 0; i < mNumSyncSamples; ++i) {
    for (size_t i = 0; i < numSyncSamples; ++i) {
        mSyncSamples[i] = ntohl(mSyncSamples[i]) - 1;
    }

    mSyncSampleOffset = data_offset;
    mNumSyncSamples = numSyncSamples;

    return OK;
}