Loading media/libstagefright/MPEG4Extractor.cpp +16 −16 Original line number Original line Diff line number Diff line Loading @@ -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)) { Loading @@ -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); } } } } } } } Loading Loading
media/libstagefright/MPEG4Extractor.cpp +16 −16 Original line number Original line Diff line number Diff line Loading @@ -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)) { Loading @@ -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); } } } } } } } Loading