Bug 1034444 - Unit tests for GetBuffered() and Interval; r=cpearce
authorAnthony Jones <ajones@mozilla.com>
Mon, 02 Jun 2014 17:38:04 +0200
changeset 211627 e4679c01892baa756e9d3b423222fd8a7dc431b0
parent 211626 5d7e28f80b98707eb584a843e3ea9a5d51618462
child 211628 5a21befb60a1026fd310da32cd612452476bfdcd
push id50752
push userajones@mozilla.com
push dateWed, 22 Oct 2014 01:59:22 +0000
treeherdermozilla-inbound@e4679c01892b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerscpearce
bugs1034444
milestone36.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1034444 - Unit tests for GetBuffered() and Interval; r=cpearce
content/media/fmp4/BlankDecoderModule.cpp
content/media/gtest/MockMediaDecoderOwner.h
content/media/gtest/MockMediaResource.cpp
content/media/gtest/MockMediaResource.h
content/media/gtest/TestMP4Reader.cpp
content/media/gtest/mediasource_test.mp4
content/media/gtest/moz.build
media/libstagefright/gtest/TestInterval.cpp
media/libstagefright/gtest/moz.build
media/libstagefright/moz.build
--- a/content/media/fmp4/BlankDecoderModule.cpp
+++ b/content/media/fmp4/BlankDecoderModule.cpp
@@ -68,16 +68,17 @@ public:
     // with it, so the OutputEvent stores it in an nsAutoPtr and deletes
     // it once it's run.
     RefPtr<nsIRunnable> r(new OutputEvent(aSample, mCallback, mCreator));
     mTaskQueue->Dispatch(r);
     return NS_OK;
   }
 
   virtual nsresult Flush() MOZ_OVERRIDE {
+    mTaskQueue->Flush();
     return NS_OK;
   }
 
   virtual nsresult Drain() MOZ_OVERRIDE {
     mCallback->DrainComplete();
     return NS_OK;
   }
 
new file mode 100644
--- /dev/null
+++ b/content/media/gtest/MockMediaDecoderOwner.h
@@ -0,0 +1,52 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOCK_MEDIA_DECODER_OWNER_H_
+#define MOCK_MEDIA_DECODER_OWNER_H_
+
+#include "MediaDecoderOwner.h"
+
+namespace mozilla
+{
+
+class MockMediaDecoderOwner : public MediaDecoderOwner
+{
+public:
+  virtual void DownloadStalled() MOZ_OVERRIDE {}
+  virtual nsresult DispatchEvent(const nsAString& aName) MOZ_OVERRIDE
+  {
+    return NS_OK;
+  }
+  virtual nsresult DispatchAsyncEvent(const nsAString& aName) MOZ_OVERRIDE
+  {
+    return NS_OK;
+  }
+  virtual void FireTimeUpdate(bool aPeriodic) MOZ_OVERRIDE {}
+  virtual bool GetPaused() MOZ_OVERRIDE { return false; }
+  virtual void MetadataLoaded(const MediaInfo* aInfo, const MetadataTags* aTags)
+    MOZ_OVERRIDE
+  {
+  }
+  virtual void NetworkError() MOZ_OVERRIDE {}
+  virtual void DecodeError() MOZ_OVERRIDE {}
+  virtual void LoadAborted() MOZ_OVERRIDE {}
+  virtual void PlaybackEnded() MOZ_OVERRIDE {}
+  virtual void SeekStarted() MOZ_OVERRIDE {}
+  virtual void SeekCompleted() MOZ_OVERRIDE {}
+  virtual void DownloadSuspended() MOZ_OVERRIDE {}
+  virtual void DownloadResumed(bool aForceNetworkLoading) MOZ_OVERRIDE {}
+  virtual void NotifySuspendedByCache(bool aIsSuspended) MOZ_OVERRIDE {}
+  virtual void NotifyDecoderPrincipalChanged() MOZ_OVERRIDE {}
+  virtual void UpdateReadyStateForData(NextFrameStatus aNextFrame) MOZ_OVERRIDE
+  {
+  }
+  virtual VideoFrameContainer* GetVideoFrameContainer() MOZ_OVERRIDE
+  {
+    return nullptr;
+  }
+  virtual void ResetConnectionState() MOZ_OVERRIDE {}
+};
+}
+
+#endif
new file mode 100644
--- /dev/null
+++ b/content/media/gtest/MockMediaResource.cpp
@@ -0,0 +1,110 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "MockMediaResource.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+
+namespace mozilla
+{
+
+MockMediaResource::MockMediaResource(const char* aFileName)
+  : mFileName(aFileName)
+  , mContentType(NS_LITERAL_CSTRING("video/mp4"))
+{
+}
+
+nsresult
+MockMediaResource::Open(nsIStreamListener** aStreamListener)
+{
+  mFileHandle = fopen(mFileName, "rb");
+  if (mFileHandle == nullptr) {
+    printf_stderr("Can't open %s\n", mFileName);
+    return NS_ERROR_FAILURE;
+  }
+  return NS_OK;
+}
+
+MockMediaResource::~MockMediaResource()
+{
+  if (mFileHandle != nullptr) {
+    fclose(mFileHandle);
+  }
+}
+
+nsresult
+MockMediaResource::ReadAt(int64_t aOffset, char* aBuffer, uint32_t aCount,
+                          uint32_t* aBytes)
+{
+  if (mFileHandle == nullptr) {
+    return NS_ERROR_FAILURE;
+  }
+
+  // Make it fail if we're re-entrant
+  if (mEntry++) {
+    MOZ_ASSERT(false);
+    return NS_ERROR_FAILURE;
+  }
+
+  fseek(mFileHandle, aOffset, SEEK_SET);
+  *aBytes = (uint32_t) fread(aBuffer, aCount, 1, mFileHandle);
+
+  mEntry--;
+
+  return ferror(mFileHandle) ? NS_ERROR_FAILURE : NS_OK;
+}
+
+int64_t
+MockMediaResource::GetLength()
+{
+  return fseek(mFileHandle, 0, SEEK_END);
+}
+
+void
+MockMediaResource::MockClearBufferedRanges()
+{
+  mRanges.Clear();
+}
+
+void
+MockMediaResource::MockAddBufferedRange(int64_t aStart, int64_t aEnd)
+{
+  mRanges.AppendElement(MediaByteRange(aStart, aEnd));
+}
+
+int64_t
+MockMediaResource::GetNextCachedData(int64_t aOffset)
+{
+  if (!aOffset) {
+    return mRanges.Length() ? mRanges[0].mStart : -1;
+  }
+  for (size_t i = 0; i < mRanges.Length(); i++) {
+    if (aOffset == mRanges[i].mStart) {
+      ++i;
+      return i < mRanges.Length() ? mRanges[i].mStart : -1;
+    }
+  }
+  return -1;
+}
+
+int64_t
+MockMediaResource::GetCachedDataEnd(int64_t aOffset)
+{
+  for (size_t i = 0; i < mRanges.Length(); i++) {
+    if (aOffset == mRanges[i].mStart) {
+      return mRanges[i].mEnd;
+    }
+  }
+  return -1;
+}
+
+nsresult
+MockMediaResource::GetCachedRanges(nsTArray<MediaByteRange>& aRanges)
+{
+  aRanges.Clear();
+  aRanges.AppendElements(mRanges);
+  return NS_OK;
+}
+}
new file mode 100644
--- /dev/null
+++ b/content/media/gtest/MockMediaResource.h
@@ -0,0 +1,86 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOCK_MEDIA_RESOURCE_H_
+#define MOCK_MEDIA_RESOURCE_H_
+
+#include "MediaResource.h"
+#include "nsTArray.h"
+#include "mozilla/Atomics.h"
+
+namespace mozilla
+{
+
+class MockMediaResource : public MediaResource
+{
+public:
+  MockMediaResource(const char* aFileName);
+  virtual nsIURI* URI() const MOZ_OVERRIDE { return nullptr; }
+  virtual nsresult Close() MOZ_OVERRIDE { return NS_OK; }
+  virtual void Suspend(bool aCloseImmediately) MOZ_OVERRIDE {}
+  virtual void Resume() MOZ_OVERRIDE {}
+  virtual already_AddRefed<nsIPrincipal> GetCurrentPrincipal() MOZ_OVERRIDE
+  {
+    return nullptr;
+  }
+  virtual bool CanClone() MOZ_OVERRIDE { return false; }
+  virtual already_AddRefed<MediaResource> CloneData(MediaDecoder* aDecoder)
+    MOZ_OVERRIDE
+  {
+    return nullptr;
+  }
+  virtual void SetReadMode(MediaCacheStream::ReadMode aMode) MOZ_OVERRIDE {}
+  virtual void SetPlaybackRate(uint32_t aBytesPerSecond) MOZ_OVERRIDE {}
+  virtual nsresult Read(char* aBuffer, uint32_t aCount, uint32_t* aBytes)
+    MOZ_OVERRIDE
+  {
+    return NS_OK;
+  }
+  virtual nsresult ReadAt(int64_t aOffset, char* aBuffer, uint32_t aCount,
+                          uint32_t* aBytes);
+  virtual nsresult Seek(int32_t aWhence, int64_t aOffset) MOZ_OVERRIDE
+  {
+    return NS_OK;
+  }
+  virtual int64_t Tell() MOZ_OVERRIDE { return 0; }
+  virtual void Pin() MOZ_OVERRIDE {}
+  virtual void Unpin() MOZ_OVERRIDE {}
+  virtual double GetDownloadRate(bool* aIsReliable) MOZ_OVERRIDE { return 0; }
+  virtual int64_t GetLength() MOZ_OVERRIDE;
+  virtual int64_t GetNextCachedData(int64_t aOffset) MOZ_OVERRIDE;
+  virtual int64_t GetCachedDataEnd(int64_t aOffset) MOZ_OVERRIDE;
+  virtual bool IsDataCachedToEndOfResource(int64_t aOffset) MOZ_OVERRIDE
+  {
+    return false;
+  }
+  virtual bool IsSuspendedByCache() MOZ_OVERRIDE { return false; }
+  virtual bool IsSuspended() MOZ_OVERRIDE { return false; }
+  virtual nsresult ReadFromCache(char* aBuffer, int64_t aOffset,
+                                 uint32_t aCount)
+  {
+    return NS_OK;
+  }
+  virtual bool IsTransportSeekable() MOZ_OVERRIDE { return true; }
+  virtual nsresult Open(nsIStreamListener** aStreamListener) MOZ_OVERRIDE;
+  virtual nsresult GetCachedRanges(nsTArray<MediaByteRange>& aRanges)
+    MOZ_OVERRIDE;
+  virtual const nsCString& GetContentType() const MOZ_OVERRIDE
+  {
+    return mContentType;
+  }
+
+  void MockClearBufferedRanges();
+  void MockAddBufferedRange(int64_t aStart, int64_t aEnd);
+
+private:
+  virtual ~MockMediaResource();
+  FILE* mFileHandle;
+  const char* mFileName;
+  nsTArray<MediaByteRange> mRanges;
+  Atomic<int> mEntry;
+  nsCString mContentType;
+};
+}
+
+#endif
new file mode 100644
--- /dev/null
+++ b/content/media/gtest/TestMP4Reader.cpp
@@ -0,0 +1,226 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "gtest/gtest.h"
+#include "MP4Reader.h"
+#include "MP4Decoder.h"
+#include "SharedThreadPool.h"
+#include "MockMediaResource.h"
+#include "MockMediaDecoderOwner.h"
+#include "mozilla/Preferences.h"
+#include "mozilla/dom/TimeRanges.h"
+#include "mtransport/runnable_utils.h"
+
+using namespace mozilla;
+using namespace mozilla::dom;
+
+class TestBinding
+{
+public:
+  nsRefPtr<MP4Decoder> decoder;
+  nsRefPtr<MockMediaResource> resource;
+  nsRefPtr<MP4Reader> reader;
+
+  TestBinding(const char* aFileName = "gizmo.mp4")
+    : decoder(new MP4Decoder())
+    , resource(new MockMediaResource(aFileName))
+    , reader(new MP4Reader(decoder))
+  {
+    EXPECT_EQ(NS_OK, Preferences::SetBool(
+                       "media.fragmented-mp4.use-blank-decoder", true));
+
+    EXPECT_EQ(NS_OK, resource->Open(nullptr));
+    decoder->SetResource(resource);
+
+    reader->Init(nullptr);
+
+    nsCOMPtr<nsIThread> thread;
+    nsresult rv = NS_NewThread(getter_AddRefs(thread),
+                               WrapRunnable(this, &TestBinding::ReadMetadata));
+    EXPECT_EQ(NS_OK, rv);
+    thread->Shutdown();
+  }
+
+  virtual ~TestBinding()
+  {
+    decoder = nullptr;
+    resource = nullptr;
+    reader = nullptr;
+    SharedThreadPool::SpinUntilShutdown();
+  }
+
+private:
+  void ReadMetadata()
+  {
+    MediaInfo info;
+    MetadataTags* tags;
+    EXPECT_EQ(NS_OK, reader->ReadMetadata(&info, &tags));
+  }
+};
+
+TEST(MP4Reader, BufferedRange)
+{
+  TestBinding b;
+
+  // Video 3-4 sec, audio 2.986666-4.010666 sec
+  b.resource->MockAddBufferedRange(248400, 327455);
+
+  nsRefPtr<TimeRanges> ranges = new TimeRanges();
+  EXPECT_EQ(NS_OK, b.reader->GetBuffered(ranges, 0));
+  EXPECT_EQ(1U, ranges->Length());
+  double start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(0, &start));
+  EXPECT_NEAR(270000 / 90000.0, start, 0.000001);
+  double end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(0, &end));
+  EXPECT_NEAR(360000 / 90000.0, end, 0.000001);
+}
+
+TEST(MP4Reader, BufferedRangeMissingLastByte)
+{
+  TestBinding b;
+
+  // Dropping the last byte of the video
+  b.resource->MockClearBufferedRanges();
+  b.resource->MockAddBufferedRange(248400, 324912);
+  b.resource->MockAddBufferedRange(324913, 327455);
+
+  nsRefPtr<TimeRanges> ranges = new TimeRanges();
+  EXPECT_EQ(NS_OK, b.reader->GetBuffered(ranges, 0));
+  EXPECT_EQ(1U, ranges->Length());
+  double start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(0, &start));
+  EXPECT_NEAR(270000.0 / 90000.0, start, 0.000001);
+  double end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(0, &end));
+  EXPECT_NEAR(357000 / 90000.0, end, 0.000001);
+}
+
+TEST(MP4Reader, BufferedRangeSyncFrame)
+{
+  TestBinding b;
+
+  // Check that missing the first byte at 2 seconds skips right through to 3
+  // seconds because of a missing sync frame
+  b.resource->MockClearBufferedRanges();
+  b.resource->MockAddBufferedRange(146336, 327455);
+
+  nsRefPtr<TimeRanges> ranges = new TimeRanges();
+  EXPECT_EQ(NS_OK, b.reader->GetBuffered(ranges, 0));
+  EXPECT_EQ(1U, ranges->Length());
+  double start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(0, &start));
+  EXPECT_NEAR(270000.0 / 90000.0, start, 0.000001);
+  double end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(0, &end));
+  EXPECT_NEAR(360000 / 90000.0, end, 0.000001);
+}
+
+TEST(MP4Reader, CompositionOrder)
+{
+  TestBinding b("mediasource_test.mp4");
+
+  // The first 5 video samples of this file are:
+  // Video timescale=2500
+  // Frame Start  Size  Time  Duration  Sync
+  //     1    48  5455   166        83  Yes
+  //     2  5503   145   249        83
+  //     3  6228   575   581        83
+  //     4  7383   235   415        83
+  //     5  8779   183   332        83
+  //     6  9543   191   498        83
+  //
+  // Audio timescale=44100
+  //     1  5648   580     0      1024  Yes
+  //     2  6803   580  1024      1058  Yes
+  //     3  7618   581  2082      1014  Yes
+  //     4  8199   580  3096      1015  Yes
+  //     5  8962   581  4111      1014  Yes
+  //     6  9734   580  5125      1014  Yes
+  //     7 10314   581  6139      1059  Yes
+  //     8 11207   580  7198      1014  Yes
+  //     9 12035   581  8212      1014  Yes
+  //    10 12616   580  9226      1015  Yes
+  //    11 13220   581  10241     1014  Yes
+
+  b.resource->MockClearBufferedRanges();
+  // First two frames in decoding + first audio frame
+  b.resource->MockAddBufferedRange(48, 5503);   // Video 1
+  b.resource->MockAddBufferedRange(5503, 5648); // Video 2
+  b.resource->MockAddBufferedRange(6228, 6803); // Video 3
+
+  // Audio - 5 frames; 0 - 139206 us
+  b.resource->MockAddBufferedRange(5648, 6228);
+  b.resource->MockAddBufferedRange(6803, 7383);
+  b.resource->MockAddBufferedRange(7618, 8199);
+  b.resource->MockAddBufferedRange(8199, 8779);
+  b.resource->MockAddBufferedRange(8962, 9563);
+  b.resource->MockAddBufferedRange(9734, 10314);
+  b.resource->MockAddBufferedRange(10314, 10895);
+  b.resource->MockAddBufferedRange(11207, 11787);
+  b.resource->MockAddBufferedRange(12035, 12616);
+  b.resource->MockAddBufferedRange(12616, 13196);
+  b.resource->MockAddBufferedRange(13220, 13901);
+
+  nsRefPtr<TimeRanges> ranges = new TimeRanges();
+  EXPECT_EQ(NS_OK, b.reader->GetBuffered(ranges, 0));
+  EXPECT_EQ(2U, ranges->Length());
+
+  double start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(0, &start));
+  EXPECT_NEAR(166.0 / 2500.0, start, 0.000001);
+  double end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(0, &end));
+  EXPECT_NEAR(332.0 / 2500.0, end, 0.000001);
+
+  start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(1, &start));
+  EXPECT_NEAR(581.0 / 2500.0, start, 0.000001);
+  end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(1, &end));
+  EXPECT_NEAR(11255.0 / 44100.0, end, 0.000001);
+}
+
+TEST(MP4Reader, Normalised)
+{
+  TestBinding b("mediasource_test.mp4");
+
+  // The first 5 video samples of this file are:
+  // Video timescale=2500
+  // Frame Start  Size  Time  Duration  Sync
+  //     1    48  5455   166        83  Yes
+  //     2  5503   145   249        83
+  //     3  6228   575   581        83
+  //     4  7383   235   415        83
+  //     5  8779   183   332        83
+  //     6  9543   191   498        83
+  //
+  // Audio timescale=44100
+  //     1  5648   580     0      1024  Yes
+  //     2  6803   580  1024      1058  Yes
+  //     3  7618   581  2082      1014  Yes
+  //     4  8199   580  3096      1015  Yes
+  //     5  8962   581  4111      1014  Yes
+  //     6  9734   580  5125      1014  Yes
+  //     7 10314   581  6139      1059  Yes
+  //     8 11207   580  7198      1014  Yes
+  //     9 12035   581  8212      1014  Yes
+  //    10 12616   580  9226      1015  Yes
+  //    11 13220   581  10241     1014  Yes
+
+  b.resource->MockClearBufferedRanges();
+  b.resource->MockAddBufferedRange(48, 13901);
+
+  nsRefPtr<TimeRanges> ranges = new TimeRanges();
+  EXPECT_EQ(NS_OK, b.reader->GetBuffered(ranges, 0));
+  EXPECT_EQ(1U, ranges->Length());
+
+  double start = 0;
+  EXPECT_EQ(NS_OK, ranges->Start(0, &start));
+  EXPECT_NEAR(166.0 / 2500.0, start, 0.000001);
+  double end = 0;
+  EXPECT_EQ(NS_OK, ranges->End(0, &end));
+  EXPECT_NEAR(11255.0 / 44100.0, end, 0.000001);
+}
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..63707a9146b9b07510f332cf0bb5adf8b9c502c5
GIT binary patch
literal 209832
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
Q_J~xMJ)?QHBPreaPgo#K!T<mO
--- a/content/media/gtest/moz.build
+++ b/content/media/gtest/moz.build
@@ -1,36 +1,42 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 UNIFIED_SOURCES += [
+    'MockMediaResource.cpp',
     'TestAudioCompactor.cpp',
     'TestGMPCrossOrigin.cpp',
+    'TestMP4Reader.cpp',
     'TestTrackEncoder.cpp',
     'TestVideoSegment.cpp',
-    'TestWebMBuffered.cpp'
+    'TestWebMBuffered.cpp',
 ]
 
 TEST_HARNESS_FILES.gtest += [
-    'test.webm'
+    '../test/gizmo.mp4',
+    'mediasource_test.mp4',
+    'test.webm',
 ]
 
 if CONFIG['MOZ_WEBM_ENCODER']:
     UNIFIED_SOURCES += ['TestVideoTrackEncoder.cpp',
                         'TestVorbisTrackEncoder.cpp',
                         'TestWebMWriter.cpp',
 ]
 
 include('/ipc/chromium/chromium-config.mozbuild')
 
 LOCAL_INCLUDES += [
+    '/content/media',
     '/content/media/encoder',
+    '/content/media/fmp4',
     '/content/media/gmp',
     '/security/certverifier',
     '/security/pkix/include',
 ]
 
 FINAL_LIBRARY = 'xul-gtest'
 
 FAIL_ON_WARNINGS = True
new file mode 100644
--- /dev/null
+++ b/media/libstagefright/gtest/TestInterval.cpp
@@ -0,0 +1,89 @@
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "gtest/gtest.h"
+#include "mp4_demuxer/Interval.h"
+
+using namespace mp4_demuxer;
+using namespace mozilla;
+
+TEST(Interval, Length)
+{
+  Interval<int> i(15, 25);
+  EXPECT_EQ(10, i.Length());
+}
+
+TEST(Interval, Intersection)
+{
+  Interval<int> i0(10, 20);
+  Interval<int> i1(15, 25);
+  Interval<int> i = i0.Intersection(i1);
+  EXPECT_EQ(15, i.start);
+  EXPECT_EQ(20, i.end);
+}
+
+TEST(Interval, Equals)
+{
+  Interval<int> i0(10, 20);
+  Interval<int> i1(10, 20);
+  EXPECT_EQ(i0, i1);
+
+  Interval<int> i2(5, 20);
+  EXPECT_NE(i0, i2);
+
+  Interval<int> i3(10, 15);
+  EXPECT_NE(i0, i2);
+}
+
+TEST(Interval, IntersectionVector)
+{
+  nsTArray<Interval<int>> i0;
+  i0.AppendElement(Interval<int>(5, 10));
+  i0.AppendElement(Interval<int>(20, 25));
+  i0.AppendElement(Interval<int>(40, 60));
+
+  nsTArray<Interval<int>> i1;
+  i1.AppendElement(Interval<int>(7, 15));
+  i1.AppendElement(Interval<int>(16, 27));
+  i1.AppendElement(Interval<int>(45, 50));
+  i1.AppendElement(Interval<int>(53, 57));
+
+  nsTArray<Interval<int>> i;
+  Interval<int>::Intersection(i0, i1, &i);
+
+  EXPECT_EQ(4u, i.Length());
+
+  EXPECT_EQ(7, i[0].start);
+  EXPECT_EQ(10, i[0].end);
+
+  EXPECT_EQ(20, i[1].start);
+  EXPECT_EQ(25, i[1].end);
+
+  EXPECT_EQ(45, i[2].start);
+  EXPECT_EQ(50, i[2].end);
+
+  EXPECT_EQ(53, i[3].start);
+  EXPECT_EQ(57, i[3].end);
+}
+
+TEST(Interval, Normalize)
+{
+  nsTArray<Interval<int>> i;
+  i.AppendElement(Interval<int>(20, 30));
+  i.AppendElement(Interval<int>(1, 8));
+  i.AppendElement(Interval<int>(5, 10));
+  i.AppendElement(Interval<int>(2, 7));
+
+  nsTArray<Interval<int>> o;
+  Interval<int>::Normalize(i, &o);
+
+  EXPECT_EQ(2u, o.Length());
+
+  EXPECT_EQ(1, o[0].start);
+  EXPECT_EQ(10, o[0].end);
+
+  EXPECT_EQ(20, o[1].start);
+  EXPECT_EQ(30, o[1].end);
+}
new file mode 100644
--- /dev/null
+++ b/media/libstagefright/gtest/moz.build
@@ -0,0 +1,15 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+Library('stagefright_gtest')
+
+SOURCES += [
+    'TestInterval.cpp',
+]
+
+FINAL_LIBRARY = 'xul-gtest'
+
+FAIL_ON_WARNINGS = True
--- a/media/libstagefright/moz.build
+++ b/media/libstagefright/moz.build
@@ -100,16 +100,20 @@ LOCAL_INCLUDES += [
     'frameworks/av/include/media/stagefright/foundation',
     'frameworks/av/media/libstagefright/',
     'stubs/empty',
     'stubs/include',
     'stubs/include/media/stagefright/foundation',
     'system/core/include',
 ]
 
+TEST_DIRS += [
+    'gtest',
+]
+
 FINAL_LIBRARY = 'xul'
 
 # Suppress warnings in third-party code.
 if CONFIG['_MSC_VER']:
     CFLAGS += [
         '-wd4013', # 'function' undefined; assuming extern returning int
         '-wd4101', # unreferenced local variable
     ]