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

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

Merge "Modifying MetaData invalidates previous char*" into nyc-dev am:...

Merge "Modifying MetaData invalidates previous char*" into nyc-dev am: eb36bac9 am: 670ba929 am: 8bcf9aa2 am: e0541111 am: 3be14c2e am: 38ad5e22
am: 7299bc8b

Change-Id: I460de96eebece259bb4dcab3baccc37f9e3a2870
parents 3562812a 7299bc8b
Loading
Loading
Loading
Loading
+16 −16
Original line number Diff line number Diff line
@@ -469,6 +469,22 @@ sp<MetaData> MPEG4Extractor::getTrackMetaData(
        const char *mime;
        CHECK(track->meta->findCString(kKeyMIMEType, &mime));
        if (!strncasecmp("video/", mime, 6)) {
            // MPEG2 tracks do not provide CSD, so read the stream header
            if (!strcmp(mime, MEDIA_MIMETYPE_VIDEO_MPEG2)) {
                off64_t offset;
                size_t size;
                if (track->sampleTable->getMetaDataForSample(
                            0 /* sampleIndex */, &offset, &size, NULL /* sampleTime */) == OK) {
                    if (size > kMaxTrackHeaderSize) {
                        size = kMaxTrackHeaderSize;
                    }
                    uint8_t header[kMaxTrackHeaderSize];
                    if (mDataSource->readAt(offset, &header, size) == (ssize_t)size) {
                        track->meta->setData(kKeyStreamHeader, 'mdat', header, size);
                    }
                }
            }

            if (mMoofOffset > 0) {
                int64_t duration;
                if (track->meta->findInt64(kKeyDuration, &duration)) {
@@ -489,22 +505,6 @@ sp<MetaData> MPEG4Extractor::getTrackMetaData(
                            ((int64_t)sampleTime * 1000000) / track->timescale);
                }
            }

            // MPEG2 tracks do not provide CSD, so read the stream header
            if (!strcmp(mime, MEDIA_MIMETYPE_VIDEO_MPEG2)) {
                off64_t offset;
                size_t size;
                if (track->sampleTable->getMetaDataForSample(
                            0 /* sampleIndex */, &offset, &size, NULL /* sampleTime */) == OK) {
                    if (size > kMaxTrackHeaderSize) {
                        size = kMaxTrackHeaderSize;
                    }
                    uint8_t header[kMaxTrackHeaderSize];
                    if (mDataSource->readAt(offset, &header, size) == (ssize_t)size) {
                        track->meta->setData(kKeyStreamHeader, 'mdat', header, size);
                    }
                }
            }
        }
    }