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

Commit 7299bc8b 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

Change-Id: I948bca4f9ef0c8160102e9a0185a984cbdfb0f63
parents b69caa46 38ad5e22
Loading
Loading
Loading
Loading
+16 −16
Original line number Original line Diff line number Diff line
@@ -469,6 +469,22 @@ sp<MetaData> MPEG4Extractor::getTrackMetaData(
        const char *mime;
        const char *mime;
        CHECK(track->meta->findCString(kKeyMIMEType, &mime));
        CHECK(track->meta->findCString(kKeyMIMEType, &mime));
        if (!strncasecmp("video/", mime, 6)) {
        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) {
            if (mMoofOffset > 0) {
                int64_t duration;
                int64_t duration;
                if (track->meta->findInt64(kKeyDuration, &duration)) {
                if (track->meta->findInt64(kKeyDuration, &duration)) {
@@ -489,22 +505,6 @@ sp<MetaData> MPEG4Extractor::getTrackMetaData(
                            ((int64_t)sampleTime * 1000000) / track->timescale);
                            ((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);
                    }
                }
            }
        }
        }
    }
    }