Bug 1415809 - update gtest. r?kinetik draft
authorAlfredo.Yang <ayang@mozilla.com>
Mon, 13 Nov 2017 16:50:02 +0800
changeset 697577 6290c9e827116ceb2311ab3ff4e43410f3a2ed03
parent 697576 17f5ebeec0883b97490e6642140b97fed358006b
child 697578 1c5847a03e01c31310752377d9b86638cc5881c3
push id89046
push userbmo:ayang@mozilla.com
push dateTue, 14 Nov 2017 08:24:44 +0000
reviewerskinetik
bugs1415809
milestone59.0a1
Bug 1415809 - update gtest. r?kinetik MozReview-Commit-ID: Ck94z9GhXZa
media/libstagefright/gtest/TestParser.cpp
--- a/media/libstagefright/gtest/TestParser.cpp
+++ b/media/libstagefright/gtest/TestParser.cpp
@@ -157,225 +157,183 @@ ReadTestFile(const char* aFilename)
   }
 
   return buffer;
 }
 
 struct TestFileData
 {
   const char* mFilename;
+  bool mParseResult;
   uint32_t mNumberVideoTracks;
   bool mHasVideoIndice;
   int64_t mVideoDuration; // For first video track, -1 if N/A.
   int32_t mWidth;
   int32_t mHeight;
   uint32_t mNumberAudioTracks;
   int64_t mAudioDuration; // For first audio track, -1 if N/A.
   bool mHasCrypto;
   uint64_t mMoofReachedOffset; // or 0 for the end.
   bool mValidMoof;
   bool mHeader;
   int8_t mAudioProfile;
 };
+
 static const TestFileData testFiles[] = {
-  // filename                      #V V-ind   dur   w    h  #A dur  crypt  off   moof  headr  audio_profile
-  { "test_case_1156505.mp4",        0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },
-  { "test_case_1181213.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181215.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181220.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181223.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181719.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1185230.mp4",        1, true, 416666,
-                                           320, 240, 1,  5, false,   0, false, false, 2 },
-  { "test_case_1187067.mp4",        1, true, 80000,
+  // filename                     parse #V dur   w    h  #A dur  crypt  off   moof  headr  audio_profile
+  { "test_case_1156505.mp4",      false, 0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },  // invalid ''trak box
+  { "test_case_1181213.mp4",      true, 1, true, 416666,
+                                           320, 240, 1, 477460,
+                                                             true,   0, false, false, 2 },
+  { "test_case_1181215.mp4",      true, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1181220.mp4",      false, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },  // invalid audio 'sinf' box
+  { "test_case_1181223.mp4",      false, 0, false, 416666,
+                                           320, 240, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1181719.mp4",      false, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1185230.mp4",      true, 2, true, 416666,
+                                           320, 240, 2,  5, false,   0, false, false, 2 },
+  { "test_case_1187067.mp4",      true, 1, true, 80000,
                                            160,  90, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1200326.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1204580.mp4",        1, true, 502500,
+  { "test_case_1200326.mp4",      false, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1204580.mp4",      true, 1, true, 502500,
                                            320, 180, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1216748.mp4",        0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },
-  { "test_case_1296473.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1296532.mp4",        1, true, 5589333,
+  { "test_case_1216748.mp4",      false, 0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },  // invalid 'trak' box
+  { "test_case_1296473.mp4",      false, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1296532.mp4",      true, 1, true, 5589333,
                                            560, 320, 1, 5589333,
                                                             true,    0, true,  true,  2  },
-  { "test_case_1301065.mp4",        0, false, -1,   0,   0, 1, 100079991719000000,
-                                                            false,   0, false, false, 2 },
-  { "test_case_1301065-u32max.mp4", 0, false, -1,   0,   0, 1, 97391548639,
-                                                            false,   0, false, false, 2 },
-  { "test_case_1301065-max-ez.mp4", 0, false, -1,   0,   0, 1, 209146758205306,
-                                                            false,   0, false, false, 2 },
-  { "test_case_1301065-harder.mp4", 0, false, -1,   0,   0, 1, 209146758205328,
+  { "test_case_1301065.mp4",      true, 0, false, -1,   0,   0, 1, 100079991719000000,
                                                             false,   0, false, false, 2 },
-  { "test_case_1301065-max-ok.mp4", 0, false, -1,   0,   0, 1, 9223372036854775804,
+  { "test_case_1301065-u32max.mp4", true, 0, false, -1,   0,   0, 1, 97391548639,
                                                             false,   0, false, false, 2 },
-  { "test_case_1301065-overfl.mp4", 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1301065-i64max.mp4", 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1301065-i64min.mp4", 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1301065-u64max.mp4", 0, false, -1,   0,   0, 1,  0, false,   0, false, false, 2 },
-  { "test_case_1329061.mov",        0, false, -1,   0,   0, 1,  234567981,
+  { "test_case_1301065-max-ez.mp4", true, 0, false, -1,   0,   0, 1, 209146758205306,
                                                             false,   0, false, false, 2 },
-  { "test_case_1351094.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, true,  true,  0 },
-};
-
-static const TestFileData rustTestFiles[] = {
-  // filename                      #V dur   w    h  #A dur  crypt  off   moof  headr  audio_profile
-  { "test_case_1156505.mp4",        0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },
-  { "test_case_1181213.mp4",        1, true, 416666,
-                                           320, 240, 1, 477460,
-                                                             true,   0, false, false, 2 },
-  { "test_case_1181215.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181220.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181223.mp4",        0, false, 416666,
-                                           320, 240, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1181719.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1185230.mp4",        2, true, 416666,
-                                           320, 240, 2,  5, false,   0, false, false, 2 },
-  { "test_case_1187067.mp4",        1, true, 80000,
-                                           160,  90, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1200326.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1204580.mp4",        1, true, 502500,
-                                           320, 180, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1216748.mp4",        0, false, -1,   0,   0, 0, -1, false, 152, false, false, 0 },
-  { "test_case_1296473.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1296532.mp4",        1, true, 5589333,
-                                           560, 320, 1, 5589333,
-                                                            true,    0, true,  true,  2  },
-  { "test_case_1301065.mp4",        0, false, -1,   0,   0, 1, 100079991719000000,
+  { "test_case_1301065-harder.mp4", true, 0, false, -1,   0,   0, 1, 209146758205328,
                                                             false,   0, false, false, 2 },
-  { "test_case_1301065-u32max.mp4", 0, false, -1,   0,   0, 1, 97391548639,
-                                                            false,   0, false, false, 2 },
-  { "test_case_1301065-max-ez.mp4", 0, false, -1,   0,   0, 1, 209146758205306,
+  { "test_case_1301065-max-ok.mp4", true, 0, false, -1,   0,   0, 1, 9223372036854775804,
                                                             false,   0, false, false, 2 },
-  { "test_case_1301065-harder.mp4", 0, false, -1,   0,   0, 1, 209146758205328,
-                                                            false,   0, false, false, 2 },
-  { "test_case_1301065-max-ok.mp4", 0, false, -1,   0,   0, 1, 9223372036854775804,
-                                                            false,   0, false, false, 2 },
-  // The duration is overflow for int64_t in TestFileData, rust parser uses uint64_t so
+  // The duration is overflow for int64_t in TestFileData, parser uses uint64_t so
   // this file is ignore.
   //{ "test_case_1301065-overfl.mp4", 0, -1,   0,   0, 1, 9223372036854775827,
   //                                                          false,   0, false, false, 2 },
-  { "test_case_1301065-i64max.mp4", 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1301065-i64min.mp4", 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
-  { "test_case_1301065-u64max.mp4", 0, false, -1,   0,   0, 1,  0, false,   0, false, false, 2 },
-  { "test_case_1329061.mov",        0, false, -1,   0,   0, 1,  234567981,
+  { "test_case_1301065-i64max.mp4", true, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1301065-i64min.mp4", true, 0, false, -1,   0,   0, 0, -1, false,   0, false, false, 0 },
+  { "test_case_1301065-u64max.mp4", true, 0, false, -1,   0,   0, 1,  0, false,   0, false, false, 2 },
+  { "test_case_1329061.mov",        false, 0, false, -1,   0,   0, 1,  234567981,
                                                             false,   0, false, false, 2 },
-  { "test_case_1351094.mp4",        0, false, -1,   0,   0, 0, -1, false,   0, true,  true,  0 },
-  { "test_case_1389299.mp4",        1, true, 5589333,
+  { "test_case_1351094.mp4",        true, 0, false, -1,   0,   0, 0, -1, false,   0, true,  true,  0 },
+  { "test_case_1389299.mp4",        true, 1, true, 5589333,
                                            560, 320, 1, 5589333,
                                                             true,    0, true,  true,  2  },
 
-  { "test_case_1389527.mp4",        1, false, 5005000,
+  { "test_case_1389527.mp4",        true, 1, false, 5005000,
                                             80, 128, 1, 4992000, false,   0, false, false, 2 },
-  { "test_case_1395244.mp4",        1, true, 416666,
+  { "test_case_1395244.mp4",        true, 1, true, 416666,
                                            320, 240, 1,477460, false,0, false, false, 2 },
-  { "test_case_1388991.mp4",        0, false, -1, 0, 0, 1, 30000181, false, 0, false, false, 2 },
-  { "test_case_1380468.mp4",        0, false,  0,   0,   0, 0,  0, false,   0, false, false, 0 },
-  { "test_case_1410565.mp4",        1, true, 0,
-                                           320, 180, 1, 0, false, 955100, true,  true,  2 },
+  { "test_case_1388991.mp4",        true, 0, false, -1, 0, 0, 1, 30000181, false, 0, false, false, 2 },
+  { "test_case_1380468.mp4",        false, 0, false,  0,   0,   0, 0,  0, false,   0, false, false, 0 },
+  { "test_case_1410565.mp4",        false, 0, false, 0, 0, 0, 0, 0, false, 955100, true, true, 2 },    // negative 'timescale'
 };
+
 TEST(stagefright_MPEG4Metadata, test_case_mp4)
 {
-  for (bool rust : { !MediaPrefs::EnableRustMP4Parser(),
-                     MediaPrefs::EnableRustMP4Parser() }) {
-    mozilla::Preferences::SetBool("media.rust.mp4parser", rust);
-    ASSERT_EQ(rust, MediaPrefs::EnableRustMP4Parser());
+  const TestFileData* tests = nullptr;
+  size_t length = 0;
+
+  tests = testFiles;
+  length = ArrayLength(testFiles);
+
+  for (size_t test = 0; test < length; ++test) {
+    nsTArray<uint8_t> buffer = ReadTestFile(tests[test].mFilename);
+    ASSERT_FALSE(buffer.IsEmpty());
+    RefPtr<Stream> stream = new TestStream(buffer.Elements(), buffer.Length());
 
-    const TestFileData* tests = nullptr;
-    size_t length = 0;
+    MP4Metadata::ResultAndByteBuffer metadataBuffer =
+      MP4Metadata::Metadata(stream);
+    EXPECT_EQ(NS_OK, metadataBuffer.Result());
+    EXPECT_TRUE(metadataBuffer.Ref());
 
-    if (rust) {
-      tests = rustTestFiles;
-      length = ArrayLength(rustTestFiles);
-    } else {
-      tests = testFiles;
-      length = ArrayLength(testFiles);
+    MP4Metadata metadata(stream);
+    nsresult res = metadata.Parse();
+    EXPECT_EQ(tests[test].mParseResult, NS_SUCCEEDED(res)) << tests[test].mFilename;
+    if (!tests[test].mParseResult) {
+      continue;
     }
 
-    for (size_t test = 0; test < length; ++test) {
-      nsTArray<uint8_t> buffer = ReadTestFile(tests[test].mFilename);
-      ASSERT_FALSE(buffer.IsEmpty());
-      RefPtr<Stream> stream = new TestStream(buffer.Elements(), buffer.Length());
-
-      MP4Metadata::ResultAndByteBuffer metadataBuffer =
-        MP4Metadata::Metadata(stream);
-      EXPECT_EQ(NS_OK, metadataBuffer.Result());
-      EXPECT_TRUE(metadataBuffer.Ref());
+    EXPECT_EQ(tests[test].mNumberAudioTracks,
+              metadata.GetNumberTracks(TrackInfo::kAudioTrack).Ref())
+      << tests[test].mFilename;
+    EXPECT_EQ(tests[test].mNumberVideoTracks,
+              metadata.GetNumberTracks(TrackInfo::kVideoTrack).Ref())
+      << tests[test].mFilename;
+    // If there is an error, we should expect an error code instead of zero
+    // for non-Audio/Video tracks.
+    const uint32_t None = (tests[test].mNumberVideoTracks == E) ? E : 0;
+    EXPECT_EQ(None, metadata.GetNumberTracks(TrackInfo::kUndefinedTrack).Ref())
+      << tests[test].mFilename;
+    EXPECT_EQ(None, metadata.GetNumberTracks(TrackInfo::kTextTrack).Ref())
+      << tests[test].mFilename;
+    EXPECT_FALSE(metadata.GetTrackInfo(TrackInfo::kUndefinedTrack, 0).Ref());
+    MP4Metadata::ResultAndTrackInfo trackInfo =
+      metadata.GetTrackInfo(TrackInfo::kVideoTrack, 0);
+    if (!!tests[test].mNumberVideoTracks) {
+      ASSERT_TRUE(!!trackInfo.Ref());
+      const VideoInfo* videoInfo = trackInfo.Ref()->GetAsVideoInfo();
+      ASSERT_TRUE(!!videoInfo);
+      EXPECT_TRUE(videoInfo->IsValid()) << tests[test].mFilename;
+      EXPECT_TRUE(videoInfo->IsVideo()) << tests[test].mFilename;
+      EXPECT_EQ(tests[test].mVideoDuration,
+                videoInfo->mDuration.ToMicroseconds()) << tests[test].mFilename;
+      EXPECT_EQ(tests[test].mWidth, videoInfo->mDisplay.width) << tests[test].mFilename;
+      EXPECT_EQ(tests[test].mHeight, videoInfo->mDisplay.height) << tests[test].mFilename;
 
-      MP4Metadata metadata(stream);
-      EXPECT_EQ(tests[test].mNumberAudioTracks,
-                metadata.GetNumberTracks(TrackInfo::kAudioTrack).Ref())
-        << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      EXPECT_EQ(tests[test].mNumberVideoTracks,
-                metadata.GetNumberTracks(TrackInfo::kVideoTrack).Ref())
-        << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      // If there is an error, we should expect an error code instead of zero
-      // for non-Audio/Video tracks.
-      const uint32_t None = (tests[test].mNumberVideoTracks == E) ? E : 0;
-      EXPECT_EQ(None, metadata.GetNumberTracks(TrackInfo::kUndefinedTrack).Ref())
-        << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      EXPECT_EQ(None, metadata.GetNumberTracks(TrackInfo::kTextTrack).Ref())
-        << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      EXPECT_FALSE(metadata.GetTrackInfo(TrackInfo::kUndefinedTrack, 0).Ref());
-      MP4Metadata::ResultAndTrackInfo trackInfo =
-        metadata.GetTrackInfo(TrackInfo::kVideoTrack, 0);
-      if (!!tests[test].mNumberVideoTracks) {
-        ASSERT_TRUE(!!trackInfo.Ref());
-        const VideoInfo* videoInfo = trackInfo.Ref()->GetAsVideoInfo();
-        ASSERT_TRUE(!!videoInfo);
-        EXPECT_TRUE(videoInfo->IsValid()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_TRUE(videoInfo->IsVideo()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_EQ(tests[test].mVideoDuration,
-                  videoInfo->mDuration.ToMicroseconds()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_EQ(tests[test].mWidth, videoInfo->mDisplay.width) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_EQ(tests[test].mHeight, videoInfo->mDisplay.height) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-
-        MP4Metadata::ResultAndIndice indices =
-          metadata.GetTrackIndice(videoInfo->mTrackId);
-        EXPECT_EQ(!!indices.Ref(), tests[test].mHasVideoIndice) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        if (tests[test].mHasVideoIndice) {
-          for (size_t i = 0; i < indices.Ref()->Length(); i++) {
-            Index::Indice data;
-            EXPECT_TRUE(indices.Ref()->GetIndice(i, data)) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-            EXPECT_TRUE(data.start_offset <= data.end_offset) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-            EXPECT_TRUE(data.start_composition <= data.end_composition) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-          }
+      MP4Metadata::ResultAndIndice indices =
+        metadata.GetTrackIndice(videoInfo->mTrackId);
+      EXPECT_EQ(!!indices.Ref(), tests[test].mHasVideoIndice) << tests[test].mFilename;
+      if (tests[test].mHasVideoIndice) {
+        for (size_t i = 0; i < indices.Ref()->Length(); i++) {
+          Index::Indice data;
+          EXPECT_TRUE(indices.Ref()->GetIndice(i, data)) << tests[test].mFilename;
+          EXPECT_TRUE(data.start_offset <= data.end_offset) << tests[test].mFilename;
+          EXPECT_TRUE(data.start_composition <= data.end_composition) << tests[test].mFilename;
         }
       }
-      trackInfo = metadata.GetTrackInfo(TrackInfo::kAudioTrack, 0);
-      if (tests[test].mNumberAudioTracks == 0 ||
-          tests[test].mNumberAudioTracks == E) {
-        EXPECT_TRUE(!trackInfo.Ref()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      } else {
-        ASSERT_TRUE(!!trackInfo.Ref());
-        const AudioInfo* audioInfo = trackInfo.Ref()->GetAsAudioInfo();
-        ASSERT_TRUE(!!audioInfo);
-        EXPECT_TRUE(audioInfo->IsValid()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_TRUE(audioInfo->IsAudio()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_EQ(tests[test].mAudioDuration,
-                  audioInfo->mDuration.ToMicroseconds()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        EXPECT_EQ(tests[test].mAudioProfile, audioInfo->mProfile) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        if (tests[test].mAudioDuration !=
-            audioInfo->mDuration.ToMicroseconds()) {
-          MOZ_RELEASE_ASSERT(false);
-        }
+    }
+    trackInfo = metadata.GetTrackInfo(TrackInfo::kAudioTrack, 0);
+    if (tests[test].mNumberAudioTracks == 0 ||
+        tests[test].mNumberAudioTracks == E) {
+      EXPECT_TRUE(!trackInfo.Ref()) << tests[test].mFilename;
+    } else {
+      ASSERT_TRUE(!!trackInfo.Ref());
+      const AudioInfo* audioInfo = trackInfo.Ref()->GetAsAudioInfo();
+      ASSERT_TRUE(!!audioInfo);
+      EXPECT_TRUE(audioInfo->IsValid()) << tests[test].mFilename;
+      EXPECT_TRUE(audioInfo->IsAudio()) << tests[test].mFilename;
+      EXPECT_EQ(tests[test].mAudioDuration,
+                audioInfo->mDuration.ToMicroseconds()) << tests[test].mFilename;
+      EXPECT_EQ(tests[test].mAudioProfile, audioInfo->mProfile) << tests[test].mFilename;
+      if (tests[test].mAudioDuration !=
+          audioInfo->mDuration.ToMicroseconds()) {
+        MOZ_RELEASE_ASSERT(false);
+      }
 
-        MP4Metadata::ResultAndIndice indices =
-          metadata.GetTrackIndice(audioInfo->mTrackId);
-        EXPECT_TRUE(!!indices.Ref()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        for (size_t i = 0; i < indices.Ref()->Length(); i++) {
-          Index::Indice data;
-          EXPECT_TRUE(indices.Ref()->GetIndice(i, data)) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-          EXPECT_TRUE(data.start_offset <= data.end_offset) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-          EXPECT_TRUE(int64_t(data.start_composition) <= int64_t(data.end_composition)) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-        }
+      MP4Metadata::ResultAndIndice indices =
+        metadata.GetTrackIndice(audioInfo->mTrackId);
+      EXPECT_TRUE(!!indices.Ref()) << tests[test].mFilename;
+      for (size_t i = 0; i < indices.Ref()->Length(); i++) {
+        Index::Indice data;
+        EXPECT_TRUE(indices.Ref()->GetIndice(i, data)) << tests[test].mFilename;
+        EXPECT_TRUE(data.start_offset <= data.end_offset) << tests[test].mFilename;
+        EXPECT_TRUE(int64_t(data.start_composition) <= int64_t(data.end_composition)) << tests[test].mFilename;
       }
-      EXPECT_FALSE(metadata.GetTrackInfo(TrackInfo::kTextTrack, 0).Ref()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      // We can see anywhere in any MPEG4.
-      EXPECT_TRUE(metadata.CanSeek()) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
-      EXPECT_EQ(tests[test].mHasCrypto, metadata.Crypto().Ref()->valid) << (rust ? "rust/" : "stagefright/") << tests[test].mFilename;
     }
+    EXPECT_FALSE(metadata.GetTrackInfo(TrackInfo::kTextTrack, 0).Ref()) << tests[test].mFilename;
+    // We can see anywhere in any MPEG4.
+    EXPECT_TRUE(metadata.CanSeek()) << tests[test].mFilename;
+    EXPECT_EQ(tests[test].mHasCrypto, metadata.Crypto().Ref()->valid) << tests[test].mFilename;
   }
 }
 
 // Bug 1224019: This test produces way to much output, disabling for now.
 #if 0
 TEST(stagefright_MPEG4Metadata, test_case_mp4_subsets)
 {
   static const size_t step = 1u;
@@ -410,65 +368,54 @@ TEST(stagefright_MPEG4Metadata, test_cas
       }
     }
   }
 }
 #endif
 
 TEST(stagefright_MoofParser, test_case_mp4)
 {
-  for (bool rust : { !MediaPrefs::EnableRustMP4Parser(),
-                     MediaPrefs::EnableRustMP4Parser() }) {
-    mozilla::Preferences::SetBool("media.rust.mp4parser", rust);
-    ASSERT_EQ(rust, MediaPrefs::EnableRustMP4Parser());
+  const TestFileData* tests = nullptr;
+  size_t length = 0;
+
+  tests = testFiles;
+  length = ArrayLength(testFiles);
+
+  for (size_t test = 0; test < length; ++test) {
+    nsTArray<uint8_t> buffer = ReadTestFile(tests[test].mFilename);
+    ASSERT_FALSE(buffer.IsEmpty());
+    RefPtr<Stream> stream = new TestStream(buffer.Elements(), buffer.Length());
+
+    MoofParser parser(stream, 0, false);
+    EXPECT_EQ(0u, parser.mOffset) << tests[test].mFilename;
+    EXPECT_FALSE(parser.ReachedEnd()) << tests[test].mFilename;
+    EXPECT_TRUE(parser.mInitRange.IsEmpty()) << tests[test].mFilename;
 
-    const TestFileData* tests = nullptr;
-    size_t length = 0;
+    EXPECT_TRUE(parser.HasMetadata()) << tests[test].mFilename;
+    RefPtr<MediaByteBuffer> metadataBuffer = parser.Metadata();
+    EXPECT_TRUE(metadataBuffer) << tests[test].mFilename;
 
-    if (rust) {
-      tests = rustTestFiles;
-      length = ArrayLength(rustTestFiles);
+    EXPECT_FALSE(parser.mInitRange.IsEmpty()) << tests[test].mFilename;
+    const MediaByteRangeSet byteRanges(
+      MediaByteRange(0, int64_t(buffer.Length())));
+    EXPECT_EQ(tests[test].mValidMoof,
+              parser.RebuildFragmentedIndex(byteRanges))  << tests[test].mFilename;
+    if (tests[test].mMoofReachedOffset == 0) {
+      EXPECT_EQ(buffer.Length(), parser.mOffset) << tests[test].mFilename;
+      EXPECT_TRUE(parser.ReachedEnd()) << tests[test].mFilename;
     } else {
-      tests = testFiles;
-      length = ArrayLength(testFiles);
+      EXPECT_EQ(tests[test].mMoofReachedOffset, parser.mOffset) << tests[test].mFilename;
+      EXPECT_FALSE(parser.ReachedEnd()) << tests[test].mFilename;
     }
 
-    for (size_t test = 0; test < length; ++test) {
-      nsTArray<uint8_t> buffer = ReadTestFile(tests[test].mFilename);
-      ASSERT_FALSE(buffer.IsEmpty());
-      RefPtr<Stream> stream = new TestStream(buffer.Elements(), buffer.Length());
-
-      MoofParser parser(stream, 0, false);
-      EXPECT_EQ(0u, parser.mOffset);
-      EXPECT_FALSE(parser.ReachedEnd());
-      EXPECT_TRUE(parser.mInitRange.IsEmpty());
-
-      EXPECT_TRUE(parser.HasMetadata());
-      RefPtr<MediaByteBuffer> metadataBuffer = parser.Metadata();
-      EXPECT_TRUE(metadataBuffer);
-
-      EXPECT_FALSE(parser.mInitRange.IsEmpty());
-      const MediaByteRangeSet byteRanges(
-        MediaByteRange(0, int64_t(buffer.Length())));
-      EXPECT_EQ(tests[test].mValidMoof,
-                parser.RebuildFragmentedIndex(byteRanges));
-      if (tests[test].mMoofReachedOffset == 0) {
-        EXPECT_EQ(buffer.Length(), parser.mOffset);
-        EXPECT_TRUE(parser.ReachedEnd());
-      } else {
-        EXPECT_EQ(tests[test].mMoofReachedOffset, parser.mOffset);
-        EXPECT_FALSE(parser.ReachedEnd());
-      }
-
-      EXPECT_FALSE(parser.mInitRange.IsEmpty());
-      EXPECT_TRUE(parser.GetCompositionRange(byteRanges).IsNull());
-      EXPECT_TRUE(parser.FirstCompleteMediaSegment().IsEmpty());
-      EXPECT_EQ(tests[test].mHeader,
-                !parser.FirstCompleteMediaHeader().IsEmpty());
-    }
+    EXPECT_FALSE(parser.mInitRange.IsEmpty()) << tests[test].mFilename;
+    EXPECT_TRUE(parser.GetCompositionRange(byteRanges).IsNull()) << tests[test].mFilename;
+    EXPECT_TRUE(parser.FirstCompleteMediaSegment().IsEmpty()) << tests[test].mFilename;
+    EXPECT_EQ(tests[test].mHeader,
+              !parser.FirstCompleteMediaHeader().IsEmpty()) << tests[test].mFilename;
   }
 }
 
 // Bug 1224019: This test produces way to much output, disabling for now.
 #if 0
 TEST(stagefright_MoofParser, test_case_mp4_subsets)
 {
   const size_t step = 1u;
@@ -506,17 +453,17 @@ TEST(stagefright_MoofParser, test_case_m
           size -= 1;
         }
       }
     }
   }
 }
 #endif
 
-uint8_t media_libstagefright_gtest_video_init_mp4[] = {
+uint8_t media_gtest_video_init_mp4[] = {
   0x00, 0x00, 0x00, 0x18, 0x66, 0x74, 0x79, 0x70, 0x69, 0x73, 0x6f, 0x6d,
   0x00, 0x00, 0x00, 0x01, 0x69, 0x73, 0x6f, 0x6d, 0x61, 0x76, 0x63, 0x31,
   0x00, 0x00, 0x02, 0xd1, 0x6d, 0x6f, 0x6f, 0x76, 0x00, 0x00, 0x00, 0x6c,
   0x6d, 0x76, 0x68, 0x64, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x49, 0x73, 0xf8,
   0xc8, 0x4a, 0xc5, 0x7a, 0x00, 0x00, 0x02, 0x58, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
@@ -572,31 +519,31 @@ uint8_t media_libstagefright_gtest_video
   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6d, 0x76, 0x65,
   0x78, 0x00, 0x00, 0x00, 0x10, 0x6d, 0x65, 0x68, 0x64, 0x00, 0x00, 0x00,
   0x00, 0x00, 0x05, 0x76, 0x18, 0x00, 0x00, 0x00, 0x20, 0x74, 0x72, 0x65,
   0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
   0x01, 0x00, 0x00, 0x03, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
   0x00
 };
 
-const uint32_t media_libstagefright_gtest_video_init_mp4_len = 745;
+const uint32_t media_gtest_video_init_mp4_len = 745;
 
 TEST(stagefright_MP4Metadata, EmptyCTTS)
 {
-  RefPtr<MediaByteBuffer> buffer = new MediaByteBuffer(media_libstagefright_gtest_video_init_mp4_len);
-  buffer->AppendElements(media_libstagefright_gtest_video_init_mp4, media_libstagefright_gtest_video_init_mp4_len);
+  RefPtr<MediaByteBuffer> buffer = new MediaByteBuffer(media_gtest_video_init_mp4_len);
+  buffer->AppendElements(media_gtest_video_init_mp4, media_gtest_video_init_mp4_len);
   RefPtr<BufferStream> stream = new BufferStream(buffer);
 
   MP4Metadata::ResultAndByteBuffer metadataBuffer =
     MP4Metadata::Metadata(stream);
   EXPECT_EQ(NS_OK, metadataBuffer.Result());
   EXPECT_TRUE(metadataBuffer.Ref());
 
   MP4Metadata metadata(stream);
-
+  EXPECT_EQ(metadata.Parse(), NS_OK);
   EXPECT_EQ(1u, metadata.GetNumberTracks(TrackInfo::kVideoTrack).Ref());
   MP4Metadata::ResultAndTrackInfo track = metadata.GetTrackInfo(TrackInfo::kVideoTrack, 0);
   EXPECT_TRUE(track.Ref() != nullptr);
   // We can seek anywhere in any MPEG4.
   EXPECT_TRUE(metadata.CanSeek());
   EXPECT_FALSE(metadata.Crypto().Ref()->valid);
 }