diff options
author | James Dong <jdong@google.com> | 2011-01-19 00:13:55 -0800 |
---|---|---|
committer | James Dong <jdong@google.com> | 2011-01-19 10:20:59 -0800 |
commit | 113a95462d2018c62b9e6bc86e7f643ff46f29cf (patch) | |
tree | 136c2efa65fdbbb1d4057e9aaf9ec6dbc66e4ae9 /media | |
parent | e75ceba6e3f009118c5debbbe2de268beb350c9a (diff) | |
download | frameworks_av-113a95462d2018c62b9e6bc86e7f643ff46f29cf.zip frameworks_av-113a95462d2018c62b9e6bc86e7f643ff46f29cf.tar.gz frameworks_av-113a95462d2018c62b9e6bc86e7f643ff46f29cf.tar.bz2 |
Expose average video frame rate via MPEG4Extractor
bug - 3362483
Change-Id: Ifcbb75c1e8b80cb06c4b8fe7f5ff99bc6f18af69
Diffstat (limited to 'media')
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index aca701d..e6e98aa 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -1040,8 +1040,23 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) { // have a 4 byte header (0x00 0x00 0x00 0x01) after conversion, // and thus will grow by 2 bytes per fragment. mLastTrack->meta->setInt32(kKeyMaxInputSize, max_size + 10 * 2); - *offset += chunk_size; + + // Calculate average frame rate. + const char *mime; + CHECK(mLastTrack->meta->findCString(kKeyMIMEType, &mime)); + if (!strncasecmp("video/", mime, 6)) { + size_t nSamples = mLastTrack->sampleTable->countSamples(); + int64_t durationUs; + if (mLastTrack->meta->findInt64(kKeyDuration, &durationUs)) { + if (durationUs > 0) { + int32_t frameRate = (nSamples * 1000000LL + + (durationUs >> 1)) / durationUs; + mLastTrack->meta->setInt32(kKeyFrameRate, frameRate); + } + } + } + break; } |