summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2014-06-17 14:48:32 -0700
committerMarco Nelissen <marcone@google.com>2014-06-23 10:24:14 -0700
commitc1f4b2b73fe9432cb75ce1dd368475a2867e70ed (patch)
tree88b7af43ca9c2d1752a28c602bacb4adc38e6172 /media/libmediaplayerservice
parent7a4d7d6670f1766442b54045fb420dbf42b75750 (diff)
downloadframeworks_av-c1f4b2b73fe9432cb75ce1dd368475a2867e70ed.zip
frameworks_av-c1f4b2b73fe9432cb75ce1dd368475a2867e70ed.tar.gz
frameworks_av-c1f4b2b73fe9432cb75ce1dd368475a2867e70ed.tar.bz2
Parse trex and mehd boxes
Also get duration from mvhd if available, use that in addition to track durations to determine total length of file, clear track header struct so we don't read uninitialized garbage from it, and take composition time offset into account for proper ordering when B frames are used. b/15669839 Change-Id: Ibf3e35b5c7299bac11d0e78a391545fc325dd2d0
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r--media/libmediaplayerservice/nuplayer/GenericSource.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/media/libmediaplayerservice/nuplayer/GenericSource.cpp b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
index 06aac33..5cf9238 100644
--- a/media/libmediaplayerservice/nuplayer/GenericSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/GenericSource.cpp
@@ -67,6 +67,14 @@ void NuPlayer::GenericSource::initFromDataSource(
CHECK(extractor != NULL);
+ sp<MetaData> fileMeta = extractor->getMetaData();
+ if (fileMeta != NULL) {
+ int64_t duration;
+ if (fileMeta->findInt64(kKeyDuration, &duration)) {
+ mDurationUs = duration;
+ }
+ }
+
for (size_t i = 0; i < extractor->countTracks(); ++i) {
sp<MetaData> meta = extractor->getTrackMetaData(i);