summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorJames Dong <jdong@google.com>2011-01-19 00:13:55 -0800
committerJames Dong <jdong@google.com>2011-01-19 10:20:59 -0800
commit113a95462d2018c62b9e6bc86e7f643ff46f29cf (patch)
tree136c2efa65fdbbb1d4057e9aaf9ec6dbc66e4ae9 /media
parente75ceba6e3f009118c5debbbe2de268beb350c9a (diff)
downloadframeworks_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.cpp17
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;
}