diff options
| -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 aca701d40498..e6e98aa3e422 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;          } |