Bug 1304254 - Use fragment_duration as track duration. r=rillian draft
authorAlfredo.Yang <ayang@mozilla.com>
Thu, 22 Sep 2016 19:30:11 +0800
changeset 419955 dcce69cfee361edd92fdcb3d41d198a915bc3a48
parent 419914 7c576fe3279d87543f0a03b844eba7bc215e17f1
child 532685 aee8009561a85a548e747c2534fa834855cafd78
push id31052
push userbmo:ayang@mozilla.com
push dateMon, 03 Oct 2016 02:03:03 +0000
reviewersrillian
bugs1304254
milestone52.0a1
Bug 1304254 - Use fragment_duration as track duration. r=rillian MozReview-Commit-ID: 6Y8kFiDmE1y
media/libstagefright/binding/MP4Metadata.cpp
--- a/media/libstagefright/binding/MP4Metadata.cpp
+++ b/media/libstagefright/binding/MP4Metadata.cpp
@@ -800,16 +800,25 @@ MP4MetadataRust::GetTrackInfo(mozilla::T
     }
     break;
     default:
       MOZ_LOG(sLog, LogLevel::Warning, ("unhandled track type %d", aType));
       return nullptr;
       break;
   }
 
+  // No duration in track, use fragment_duration.
+  if (e && !e->mDuration) {
+    mp4parse_fragment_info info;
+    auto rv = mp4parse_get_fragment_info(mRustParser.get(), &info);
+    if (rv == MP4PARSE_OK) {
+      e->mDuration = info.fragment_duration;
+    }
+  }
+
   if (e && e->IsValid()) {
     return e;
   }
   MOZ_LOG(sLog, LogLevel::Debug, ("TrackInfo didn't validate"));
 
   return nullptr;
 }