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

Commit 670ba929 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: eb36bac9

Change-Id: I1a401b30afed8fccdf48c9b41ae414f7410520a9
parents 0967b342 eb36bac9
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);
                    }
                }
            }
        }
    }