Loading include/media/stagefright/MetaData.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ enum { kKeyFrameRate = 'frmR', // int32_t (video frame rate fps) kKeyBitRate = 'brte', // int32_t (bps) kKeyMaxBitRate = 'mxBr', // int32_t (bps) kKeyStreamHeader = 'stHd', // raw data kKeyESDS = 'esds', // raw data kKeyAACProfile = 'aacp', // int32_t kKeyAVCC = 'avcc', // raw data Loading media/libstagefright/MPEG4Extractor.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,11 @@ namespace android { enum { // max track header chunk to return kMaxTrackHeaderSize = 32, }; class MPEG4Source : public MediaSource { public: // Caller retains ownership of both "dataSource" and "sampleTable". Loading Loading @@ -476,6 +481,22 @@ 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); } } } } } Loading Loading
include/media/stagefright/MetaData.h +1 −0 Original line number Diff line number Diff line Loading @@ -53,6 +53,7 @@ enum { kKeyFrameRate = 'frmR', // int32_t (video frame rate fps) kKeyBitRate = 'brte', // int32_t (bps) kKeyMaxBitRate = 'mxBr', // int32_t (bps) kKeyStreamHeader = 'stHd', // raw data kKeyESDS = 'esds', // raw data kKeyAACProfile = 'aacp', // int32_t kKeyAVCC = 'avcc', // raw data Loading
media/libstagefright/MPEG4Extractor.cpp +21 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,11 @@ namespace android { enum { // max track header chunk to return kMaxTrackHeaderSize = 32, }; class MPEG4Source : public MediaSource { public: // Caller retains ownership of both "dataSource" and "sampleTable". Loading Loading @@ -476,6 +481,22 @@ 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); } } } } } Loading