Bug 935349 - Remove disabled DASH code. r=doublec
authorMatthew Gregan <kinetik@flim.org>
Thu, 07 Nov 2013 17:08:30 +1300
changeset 153905 f34eba861b9dee7c8eb6c9628dc38075cc552ca0
parent 153904 fecd10f0466372369fdb9f714acbdd40090f13bc
child 153906 2dae9a04d903687e6036cb4decefb0067625fe63
push idunknown
push userunknown
push dateunknown
reviewersdoublec
bugs935349
milestone28.0a1
Bug 935349 - Remove disabled DASH code. r=doublec
configure.in
content/media/dash/DASHDecoder.cpp
content/media/dash/DASHDecoder.h
content/media/dash/DASHReader.cpp
content/media/dash/DASHReader.h
content/media/dash/DASHRepDecoder.cpp
content/media/dash/DASHRepDecoder.h
content/media/dash/DASHRepReader.h
content/media/dash/Makefile.in
content/media/dash/moz.build
content/media/moz.build
layout/build/Makefile.in
layout/build/nsContentDLF.h
modules/libpref/src/init/all.js
netwerk/build/Makefile.in
netwerk/dash/moz.build
netwerk/dash/mpd/AdaptationSet.cpp
netwerk/dash/mpd/AdaptationSet.h
netwerk/dash/mpd/IMPDManager.cpp
netwerk/dash/mpd/IMPDManager.h
netwerk/dash/mpd/IMPDParser.h
netwerk/dash/mpd/MPD.cpp
netwerk/dash/mpd/MPD.h
netwerk/dash/mpd/Makefile.in
netwerk/dash/mpd/Period.cpp
netwerk/dash/mpd/Period.h
netwerk/dash/mpd/Representation.cpp
netwerk/dash/mpd/Representation.h
netwerk/dash/mpd/SegmentBase.cpp
netwerk/dash/mpd/SegmentBase.h
netwerk/dash/mpd/moz.build
netwerk/dash/mpd/nsDASHMPDParser.cpp
netwerk/dash/mpd/nsDASHMPDParser.h
netwerk/dash/mpd/nsDASHWebMODManager.cpp
netwerk/dash/mpd/nsDASHWebMODManager.h
netwerk/dash/mpd/nsDASHWebMODParser.cpp
netwerk/dash/mpd/nsDASHWebMODParser.h
netwerk/mime/nsMimeTypes.h
netwerk/moz.build
uriloader/exthandler/nsExternalHelperAppService.cpp
--- a/configure.in
+++ b/configure.in
@@ -3924,17 +3924,16 @@ MOZ_SOUNDTOUCH=1
 MOZ_CUBEB=
 MOZ_VORBIS=
 MOZ_TREMOR=
 MOZ_WAVE=1
 MOZ_SAMPLE_TYPE_FLOAT32=
 MOZ_SAMPLE_TYPE_S16=
 MOZ_OPUS=1
 MOZ_WEBM=1
-MOZ_DASH=
 MOZ_DIRECTSHOW=
 MOZ_WMF=
 MOZ_WEBRTC=1
 MOZ_PEERCONNECTION=
 MOZ_SRTP=
 MOZ_WEBRTC_SIGNALING=
 MOZ_WEBRTC_ASSERT_ALWAYS=1
 MOZ_SCTP=
@@ -8628,17 +8627,16 @@ AC_SUBST(MOZ_APP_EXTRA_LIBS)
 AC_SUBST(MOZ_SPEEX_RESAMPLER)
 AC_SUBST(MOZ_SOUNDTOUCH)
 AC_SUBST(MOZ_CUBEB)
 AC_SUBST(MOZ_WAVE)
 AC_SUBST(MOZ_VORBIS)
 AC_SUBST(MOZ_TREMOR)
 AC_SUBST(MOZ_OPUS)
 AC_SUBST(MOZ_WEBM)
-AC_SUBST(MOZ_DASH)
 AC_SUBST(MOZ_WMF)
 AC_SUBST(MOZ_DIRECTSHOW)
 AC_SUBST(MOZ_MEDIA_PLUGINS)
 AC_SUBST(MOZ_APPLEMEDIA)
 AC_SUBST(MOZ_OMX_PLUGIN)
 AC_SUBST(MOZ_VP8_ERROR_CONCEALMENT)
 AC_SUBST(MOZ_VP8_ENCODER)
 AC_SUBST(MOZ_VP8)
deleted file mode 100644
--- a/content/media/dash/DASHDecoder.cpp
+++ /dev/null
@@ -1,1387 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * Interaction with MediaDecoderStateMachine, HTMLMediaElement,
- * ChannelMediaResource and sub-decoders (WebMDecoder).
- *
- *
- *        MediaDecoderStateMachine      HTMLMediaElement
- *               1 /           \ 1           / 1
- *                /             \           /
- *             1 /               \ 1       / 1
- * DASHReader ------ DASHDecoder ------------ ChannelMediaResource
- *          |1          1      1     |1      \1             (for MPD Manifest)
- *          |                        |        ------------
- *          |*                       |*                   \*
- *     WebMReader ------- DASHRepDecoder ------- ChannelMediaResource
- *                 1       1                      1       1 (for media streams)
- *
- * One decoder and state-machine, as with current, non-DASH decoders.
- *
- * DASH adds multiple readers, decoders and resources, in order to manage
- * download and decode of the MPD manifest and individual media streams.
- *
- * Rep/|Representation| is for an individual media stream, e.g. audio
- * DASHRepDecoder is the decoder for a rep/|Representation|.
- *
- * FLOW
- *
- * 1 - Download and parse the MPD (DASH XML-based manifest).
- *
- * Media element creates new |DASHDecoder| object:
- *   member var initialization to default values, including a/v sub-decoders.
- *   MediaDecoder and MediaDecoder constructors are called.
- *   MediaDecoder::Init() is called.
- *
- * Media element creates new |ChannelMediaResource|:
- *   used to download MPD manifest.
- *
- * Media element calls |DASHDecoder|->Load() to download the MPD file:
- *   creates an |DASHReader| object to forward calls to multiple
- *     WebMReaders (corresponding to MPD |Representation|s i.e. streams).
- *     Note: 1 |DASHReader| per DASH/WebM MPD.
- *
- *   also calls |ChannelMediaResource|::Open().
- *     uses nsHttpChannel to download MPD; notifies DASHDecoder.
- *
- * Meanwhile, back in |DASHDecoder|->Load():
- *   MediaDecoderStateMachine is created.
- *     has ref to |DASHReader| object.
- *     state machine is scheduled.
- *
- * Media element finishes decoder setup:
- *   element added to media URI table etc.
- *
- * -- At this point, objects are waiting on HTTP returning MPD data.
- *
- * MPD Download (Async |ChannelMediaResource| channel callbacks):
- *   calls DASHDecoder::|NotifyDownloadEnded|().
- *     DASHDecoder parses MPD XML to DOM to MPD classes.
- *       gets |Segment| URLs from MPD for audio and video streams.
- *       creates |nsIChannel|s, |ChannelMediaResource|s.
- *         stores resources as member vars (to forward function calls later).
- *       creates |WebMReader|s and |DASHRepDecoder|s.
- *         DASHreader creates |WebMReader|s.
- *         |Representation| decoders are connected to the |ChannelMediaResource|s.
- *
- *     |DASHDecoder|->|LoadRepresentations|() starts download and decode.
- *
- *
- * 2 - Media Stream, Byte Range downloads.
- *
- * -- At this point the Segment media stream downloads are managed by
- *    individual |ChannelMediaResource|s and |WebMReader|s.
- *    A single |DASHDecoder| and |MediaDecoderStateMachine| manage them
- *    and communicate to |HTMLMediaElement|.
- *
- * Each |DASHRepDecoder| gets init range and index range from its MPD
- * |Representation|. |DASHRepDecoder| uses ChannelMediaResource to start the
- * byte range downloads, calling |OpenByteRange| with a |MediaByteRange|
- * object.
- * Once the init and index segments have been downloaded and |ReadMetadata| has
- * completed, each |WebMReader| notifies it's peer |DASHRepDecoder|.
- * Note: the decoder must wait until index data is parsed because it needs to
- *       get the offsets of the subsegments (WebM clusters) from the media file
- *       itself.
- * Since byte ranges for subsegments are obtained, |nsDASHRepdecoder| continues
- * downloading the files in byte range chunks.
- *
- * XXX Note that this implementation of DASHRepDecoder is focused on DASH
- *     WebM On Demand profile: on the todo list is an action item to make this
- *     more abstract.
- *
- * Note on |Seek|: Currently, |MediaCache| requires that seeking start at the
- *                 beginning of the block in which the desired offset would be
- *                 found. As such, when |ChannelMediaResource| does a seek
- *                 using DASH WebM subsegments (clusters), it requests a start
- *                 offset that corresponds to the beginning of the block, not
- *                 the start offset of the cluster. For DASH Webm, which has
- *                 media encoded in single files, this is fine. Future work on
- *                 other profiles will require this to be re-examined.
- */
-
-#include <limits>
-#include <prdtoa.h>
-#include "nsIURI.h"
-#include "nsIFileURL.h"
-#include "nsNetUtil.h"
-#include "VideoUtils.h"
-#include "nsThreadUtils.h"
-#include "nsContentUtils.h"
-#include "nsIContentPolicy.h"
-#include "nsIContentSecurityPolicy.h"
-#include "nsICachingChannel.h"
-#include "MediaDecoderStateMachine.h"
-#include "WebMDecoder.h"
-#include "WebMReader.h"
-#include "DASHReader.h"
-#include "nsDASHMPDParser.h"
-#include "DASHRepDecoder.h"
-#include "DASHDecoder.h"
-#include <algorithm>
-
-namespace mozilla {
-
-#ifdef PR_LOGGING
-extern PRLogModuleInfo* gMediaDecoderLog;
-#define LOG(msg, ...) PR_LOG(gMediaDecoderLog, PR_LOG_DEBUG, \
-                             ("%p [DASHDecoder] " msg, this, __VA_ARGS__))
-#define LOG1(msg) PR_LOG(gMediaDecoderLog, PR_LOG_DEBUG, \
-                         ("%p [DASHDecoder] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-DASHDecoder::DASHDecoder() :
-  MediaDecoder(),
-  mNotifiedLoadAborted(false),
-  mBuffer(nullptr),
-  mBufferLength(0),
-  mMPDReaderThread(nullptr),
-  mPrincipal(nullptr),
-  mDASHReader(nullptr),
-  mVideoAdaptSetIdx(-1),
-  mAudioRepDecoderIdx(-1),
-  mVideoRepDecoderIdx(-1),
-  mAudioSubsegmentIdx(0),
-  mVideoSubsegmentIdx(0),
-  mAudioMetadataReadCount(0),
-  mVideoMetadataReadCount(0),
-  mSeeking(false),
-  mStatisticsLock("DASHDecoder.mStatisticsLock")
-{
-  MOZ_COUNT_CTOR(DASHDecoder);
-  mAudioStatistics = new MediaChannelStatistics();
-  mVideoStatistics = new MediaChannelStatistics();
-}
-
-DASHDecoder::~DASHDecoder()
-{
-  MOZ_COUNT_DTOR(DASHDecoder);
-}
-
-MediaDecoderStateMachine*
-DASHDecoder::CreateStateMachine()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  return new MediaDecoderStateMachine(this, mDASHReader);
-}
-
-void
-DASHDecoder::ReleaseStateMachine()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Must be on main thread.");
-
-  // Since state machine owns mDASHReader, remove reference to it.
-  mDASHReader = nullptr;
-
-  MediaDecoder::ReleaseStateMachine();
-  for (uint i = 0; i < mAudioRepDecoders.Length(); i++) {
-    mAudioRepDecoders[i]->ReleaseStateMachine();
-  }
-  for (uint i = 0; i < mVideoRepDecoders.Length(); i++) {
-    mVideoRepDecoders[i]->ReleaseStateMachine();
-  }
-}
-
-nsresult
-DASHDecoder::Load(nsIStreamListener** aStreamListener,
-                  MediaDecoder* aCloneDonor)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  mDASHReader = new DASHReader(this);
-
-  nsresult rv = OpenResource(aStreamListener);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  mDecoderStateMachine = CreateStateMachine();
-  if (!mDecoderStateMachine) {
-    LOG1("Failed to create state machine!");
-    return NS_ERROR_FAILURE;
-  }
-  return NS_OK;
-}
-
-void
-DASHDecoder::NotifyDownloadEnded(nsresult aStatus)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  // Should be no download ended notification if MPD Manager exists.
-  if (mMPDManager) {
-    LOG("Network Error! Repeated MPD download notification but MPD Manager "
-        "[%p] already exists!", mMPDManager.get());
-    NetworkError();
-    return;
-  }
-
-  if (NS_SUCCEEDED(aStatus)) {
-    LOG1("MPD downloaded.");
-
-    // mPrincipal must be set on main thread before dispatch to parser thread.
-    mPrincipal = GetCurrentPrincipal();
-
-    // Create reader thread for |ChannelMediaResource|::|Read|.
-    nsCOMPtr<nsIRunnable> event =
-      NS_NewRunnableMethod(this, &DASHDecoder::ReadMPDBuffer);
-    NS_ENSURE_TRUE_VOID(event);
-
-    nsresult rv = NS_NewNamedThread("DASH MPD Reader",
-                                    getter_AddRefs(mMPDReaderThread),
-                                    event,
-                                    MEDIA_THREAD_STACK_SIZE);
-    if (NS_FAILED(rv) || !mMPDReaderThread) {
-      LOG("Error creating MPD reader thread: rv[%x] thread [%p].",
-          rv, mMPDReaderThread.get());
-      DecodeError();
-      return;
-    }
-  } else if (aStatus == NS_BINDING_ABORTED) {
-    LOG("MPD download has been cancelled by the user: aStatus [%x].", aStatus);
-    if (mOwner) {
-      mOwner->LoadAborted();
-    }
-    return;
-  } else if (aStatus != NS_BASE_STREAM_CLOSED) {
-    LOG("Network error trying to download MPD: aStatus [%x].", aStatus);
-    NetworkError();
-  }
-}
-
-void
-DASHDecoder::ReadMPDBuffer()
-{
-  NS_ASSERTION(!NS_IsMainThread(), "Should not be on main thread.");
-
-  LOG1("Started reading from the MPD buffer.");
-
-  int64_t length = mResource->GetLength();
-  if (length <= 0 || length > DASH_MAX_MPD_SIZE) {
-    LOG("MPD is larger than [%d]MB.", DASH_MAX_MPD_SIZE/(1024*1024));
-    DecodeError();
-    return;
-  }
-
-  mBuffer = new char[length];
-
-  uint32_t count = 0;
-  nsresult rv = mResource->Read(mBuffer, length, &count);
-  // By this point, all bytes should be available for reading.
-  if (NS_FAILED(rv) || count != length) {
-    LOG("Error reading MPD buffer: rv [%x] count [%d] length [%d].",
-        rv, count, length);
-    DecodeError();
-    return;
-  }
-  // Store buffer length for processing on main thread.
-  mBufferLength = static_cast<uint32_t>(length);
-
-  LOG1("Finished reading MPD buffer; back to main thread for parsing.");
-
-  // Dispatch event to Main thread to parse MPD buffer.
-  nsCOMPtr<nsIRunnable> event =
-    NS_NewRunnableMethod(this, &DASHDecoder::OnReadMPDBufferCompleted);
-  rv = NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
-  if (NS_FAILED(rv)) {
-    LOG("Error dispatching parse event to main thread: rv[%x]", rv);
-    DecodeError();
-    return;
-  }
-}
-
-void
-DASHDecoder::OnReadMPDBufferCompleted()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  if (mShuttingDown) {
-    LOG1("Shutting down! Ignoring OnReadMPDBufferCompleted().");
-    return;
-  }
-
-  // Shutdown the thread.
-  if (!mMPDReaderThread) {
-    LOG1("Error: MPD reader thread does not exist!");
-    DecodeError();
-    return;
-  }
-  nsresult rv = mMPDReaderThread->Shutdown();
-  if (NS_FAILED(rv)) {
-    LOG("MPD reader thread did not shutdown correctly! rv [%x]", rv);
-    DecodeError();
-    return;
-  }
-  mMPDReaderThread = nullptr;
-
-  // Start parsing the MPD data and loading the media.
-  rv = ParseMPDBuffer();
-  if (NS_FAILED(rv)) {
-    LOG("Error parsing MPD buffer! rv [%x]", rv);
-    DecodeError();
-    return;
-  }
-  rv = CreateRepDecoders();
-  if (NS_FAILED(rv)) {
-    LOG("Error creating decoders for Representations! rv [%x]", rv);
-    DecodeError();
-    return;
-  }
-
-  rv = LoadRepresentations();
-  if (NS_FAILED(rv)) {
-    LOG("Error loading Representations! rv [%x]", rv);
-    NetworkError();
-    return;
-  }
-
-  // Notify reader that it can start reading metadata. Sub-readers will still
-  // block until sub-resources have downloaded data into the media cache.
-  mDASHReader->ReadyToReadMetadata();
-}
-
-nsresult
-DASHDecoder::ParseMPDBuffer()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE(mBuffer, NS_ERROR_NULL_POINTER);
-
-  LOG1("Started parsing the MPD buffer.");
-
-  // Parse MPD buffer and get root DOM element.
-  nsAutoPtr<nsDASHMPDParser> parser;
-  parser = new nsDASHMPDParser(mBuffer.forget(), mBufferLength, mPrincipal,
-                               mResource->URI());
-  mozilla::net::DASHMPDProfile profile;
-  parser->Parse(getter_Transfers(mMPDManager), &profile);
-  mBuffer = nullptr;
-  NS_ENSURE_TRUE(mMPDManager, NS_ERROR_NULL_POINTER);
-
-  LOG("Finished parsing the MPD buffer. Profile is [%d].", profile);
-
-  return NS_OK;
-}
-
-nsresult
-DASHDecoder::CreateRepDecoders()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE(mMPDManager, NS_ERROR_NULL_POINTER);
-
-  // Global settings for the presentation.
-  int64_t startTime = mMPDManager->GetStartTime();
-  SetDuration(mMPDManager->GetDuration());
-  NS_ENSURE_TRUE(startTime >= 0 && mDuration > 0, NS_ERROR_ILLEGAL_VALUE);
-
-  // For each audio/video stream, create a |ChannelMediaResource| object.
-
-  for (uint32_t i = 0; i < mMPDManager->GetNumAdaptationSets(); i++) {
-    IMPDManager::AdaptationSetType asType = mMPDManager->GetAdaptationSetType(i);
-    if (asType == IMPDManager::DASH_VIDEO_STREAM) {
-      mVideoAdaptSetIdx = i;
-    }
-    for (uint32_t j = 0; j < mMPDManager->GetNumRepresentations(i); j++) {
-      // Get URL string.
-      nsAutoString segmentUrl;
-      nsresult rv = mMPDManager->GetFirstSegmentUrl(i, j, segmentUrl);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      // Get segment |nsIURI|; use MPD's base URI in case of relative paths.
-      nsCOMPtr<nsIURI> url;
-      rv = NS_NewURI(getter_AddRefs(url), segmentUrl, nullptr, mResource->URI());
-      NS_ENSURE_SUCCESS(rv, rv);
-#ifdef PR_LOGGING
-      nsAutoCString newUrl;
-      rv = url->GetSpec(newUrl);
-      NS_ENSURE_SUCCESS(rv, rv);
-      LOG("Using URL=\"%s\" for AdaptationSet [%d] Representation [%d]",
-          newUrl.get(), i, j);
-#endif
-
-      // 'file://' URLs are not supported.
-      nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(url);
-      NS_ENSURE_FALSE(fileURL, NS_ERROR_ILLEGAL_VALUE);
-
-      // Create |DASHRepDecoder| objects for each representation.
-      if (asType == IMPDManager::DASH_VIDEO_STREAM) {
-        Representation const * rep = mMPDManager->GetRepresentation(i, j);
-        NS_ENSURE_TRUE(rep, NS_ERROR_NULL_POINTER);
-        rv = CreateVideoRepDecoder(url, rep);
-        NS_ENSURE_SUCCESS(rv, rv);
-      } else if (asType == IMPDManager::DASH_AUDIO_STREAM) {
-        Representation const * rep = mMPDManager->GetRepresentation(i, j);
-        NS_ENSURE_TRUE(rep, NS_ERROR_NULL_POINTER);
-        rv = CreateAudioRepDecoder(url, rep);
-        NS_ENSURE_SUCCESS(rv, rv);
-      }
-    }
-  }
-
-  NS_ENSURE_TRUE(VideoRepDecoder(), NS_ERROR_NOT_INITIALIZED);
-  NS_ENSURE_TRUE(AudioRepDecoder(), NS_ERROR_NOT_INITIALIZED);
-
-  return NS_OK;
-}
-
-nsresult
-DASHDecoder::CreateAudioRepDecoder(nsIURI* aUrl,
-                                   mozilla::net::Representation const * aRep)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_ARG(aUrl);
-  NS_ENSURE_ARG(aRep);
-  NS_ENSURE_TRUE(mOwner, NS_ERROR_NOT_INITIALIZED);
-
-  // Create subdecoder and init with media element.
-  DASHRepDecoder* audioDecoder = new DASHRepDecoder(this);
-  NS_ENSURE_TRUE(audioDecoder->Init(mOwner), NS_ERROR_NOT_INITIALIZED);
-
-  // Set current decoder to the first one created.
-  if (mAudioRepDecoderIdx == -1) {
-    mAudioRepDecoderIdx = 0;
-  }
-  mAudioRepDecoders.AppendElement(audioDecoder);
-
-  // Create sub-reader; attach to DASH reader and sub-decoder.
-  WebMReader* audioReader = new WebMReader(audioDecoder);
-  if (mDASHReader) {
-    audioReader->SetMainReader(mDASHReader);
-    mDASHReader->AddAudioReader(audioReader);
-  }
-  audioDecoder->SetReader(audioReader);
-
-  // Create media resource with URL and connect to sub-decoder.
-  MediaResource* audioResource
-    = CreateAudioSubResource(aUrl, static_cast<MediaDecoder*>(audioDecoder));
-  NS_ENSURE_TRUE(audioResource, NS_ERROR_NOT_INITIALIZED);
-
-  audioDecoder->SetResource(audioResource);
-  audioDecoder->SetMPDRepresentation(aRep);
-
-  LOG("Created audio DASHRepDecoder [%p]", audioDecoder);
-
-  return NS_OK;
-}
-
-nsresult
-DASHDecoder::CreateVideoRepDecoder(nsIURI* aUrl,
-                                   mozilla::net::Representation const * aRep)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_ARG(aUrl);
-  NS_ENSURE_ARG(aRep);
-  NS_ENSURE_TRUE(mOwner, NS_ERROR_NOT_INITIALIZED);
-
-  // Create subdecoder and init with media element.
-  DASHRepDecoder* videoDecoder = new DASHRepDecoder(this);
-  NS_ENSURE_TRUE(videoDecoder->Init(mOwner), NS_ERROR_NOT_INITIALIZED);
-
-  // Set current decoder to the first one created.
-  if (mVideoRepDecoderIdx == -1) {
-    mVideoRepDecoderIdx = 0;
-  }
-  mVideoRepDecoders.AppendElement(videoDecoder);
-
-  // Create sub-reader; attach to DASH reader and sub-decoder.
-  WebMReader* videoReader = new WebMReader(videoDecoder);
-  if (mDASHReader) {
-    videoReader->SetMainReader(mDASHReader);
-    mDASHReader->AddVideoReader(videoReader);
-  }
-  videoDecoder->SetReader(videoReader);
-
-  // Create media resource with URL and connect to sub-decoder.
-  MediaResource* videoResource
-    = CreateVideoSubResource(aUrl, static_cast<MediaDecoder*>(videoDecoder));
-  NS_ENSURE_TRUE(videoResource, NS_ERROR_NOT_INITIALIZED);
-
-  videoDecoder->SetResource(videoResource);
-  videoDecoder->SetMPDRepresentation(aRep);
-
-  LOG("Created video DASHRepDecoder [%p]", videoDecoder);
-
-  return NS_OK;
-}
-
-MediaResource*
-DASHDecoder::CreateAudioSubResource(nsIURI* aUrl,
-                                    MediaDecoder* aAudioDecoder)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE(aUrl, nullptr);
-  NS_ENSURE_TRUE(aAudioDecoder, nullptr);
-
-  // Create channel for representation.
-  nsCOMPtr<nsIChannel> channel;
-  nsresult rv = CreateSubChannel(aUrl, getter_AddRefs(channel));
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  // Create resource for representation.
-  MediaResource* audioResource
-    = MediaResource::Create(aAudioDecoder, channel);
-  NS_ENSURE_TRUE(audioResource, nullptr);
-
-  audioResource->RecordStatisticsTo(mAudioStatistics);
-  return audioResource;
-}
-
-MediaResource*
-DASHDecoder::CreateVideoSubResource(nsIURI* aUrl,
-                                    MediaDecoder* aVideoDecoder)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE(aUrl, nullptr);
-  NS_ENSURE_TRUE(aVideoDecoder, nullptr);
-
-  // Create channel for representation.
-  nsCOMPtr<nsIChannel> channel;
-  nsresult rv = CreateSubChannel(aUrl, getter_AddRefs(channel));
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  // Create resource for representation.
-  MediaResource* videoResource
-    = MediaResource::Create(aVideoDecoder, channel);
-  NS_ENSURE_TRUE(videoResource, nullptr);
-
-  videoResource->RecordStatisticsTo(mVideoStatistics);
-  return videoResource;
-}
-
-nsresult
-DASHDecoder::CreateSubChannel(nsIURI* aUrl, nsIChannel** aChannel)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_ARG(aUrl);
-
-  NS_ENSURE_TRUE(mOwner, NS_ERROR_NULL_POINTER);
-  HTMLMediaElement* element = mOwner->GetMediaElement();
-  NS_ENSURE_TRUE(element, NS_ERROR_NULL_POINTER);
-
-  nsCOMPtr<nsILoadGroup> loadGroup =
-    element->GetDocumentLoadGroup();
-  NS_ENSURE_TRUE(loadGroup, NS_ERROR_NULL_POINTER);
-
-  // Check for a Content Security Policy to pass down to the channel
-  // created to load the media content.
-  nsCOMPtr<nsIChannelPolicy> channelPolicy;
-  nsCOMPtr<nsIContentSecurityPolicy> csp;
-  nsresult rv = element->NodePrincipal()->GetCsp(getter_AddRefs(csp));
-  NS_ENSURE_SUCCESS(rv,rv);
-  if (csp) {
-    channelPolicy = do_CreateInstance("@mozilla.org/nschannelpolicy;1");
-    channelPolicy->SetContentSecurityPolicy(csp);
-    channelPolicy->SetLoadType(nsIContentPolicy::TYPE_MEDIA);
-  }
-  nsCOMPtr<nsIChannel> channel;
-  rv = NS_NewChannel(getter_AddRefs(channel),
-                     aUrl,
-                     nullptr,
-                     loadGroup,
-                     nullptr,
-                     nsICachingChannel::LOAD_BYPASS_LOCAL_CACHE_IF_BUSY,
-                     channelPolicy);
-  NS_ENSURE_SUCCESS(rv,rv);
-  NS_ENSURE_TRUE(channel, NS_ERROR_NULL_POINTER);
-
-  NS_ADDREF(*aChannel = channel);
-  return NS_OK;
-}
-
-nsresult
-DASHDecoder::LoadRepresentations()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  nsresult rv;
-  {
-    // Hold the lock while we do this to set proper lock ordering
-    // expectations for dynamic deadlock detectors: decoder lock(s)
-    // should be grabbed before the cache lock.
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-    // Load the decoders for each |Representation|'s media streams.
-    // XXX Prob ok to load all audio decoders, since there should only be one
-    //     created, but need to review the rest of the file.
-    if (AudioRepDecoder()) {
-      rv = AudioRepDecoder()->Load();
-      NS_ENSURE_SUCCESS(rv, rv);
-      mAudioMetadataReadCount++;
-    }
-    // Load all video decoders.
-    for (uint32_t i = 0; i < mVideoRepDecoders.Length(); i++) {
-      rv = mVideoRepDecoders[i]->Load();
-      NS_ENSURE_SUCCESS(rv, rv);
-      mVideoMetadataReadCount++;
-    }
-    if (AudioRepDecoder()) {
-      AudioRepDecoder()->SetStateMachine(mDecoderStateMachine);
-    }
-    for (uint32_t i = 0; i < mVideoRepDecoders.Length(); i++) {
-      mVideoRepDecoders[i]->SetStateMachine(mDecoderStateMachine);
-    }
-  }
-
-  // Ensure decoder is set to play if its already been requested.
-  if (mPlayState == PLAY_STATE_PLAYING) {
-    mNextState = PLAY_STATE_PLAYING;
-  }
-
-  // Now that subreaders are init'd, it's ok to init state machine.
-  return InitializeStateMachine(nullptr);
-}
-
-void
-DASHDecoder::NotifyDownloadEnded(DASHRepDecoder* aRepDecoder,
-                                 nsresult aStatus,
-                                 int32_t const aSubsegmentIdx)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  if (mShuttingDown) {
-    LOG1("Shutting down! Ignoring NotifyDownloadEnded().");
-    return;
-  }
-
-  // MPD Manager must exist, indicating MPD has been downloaded and parsed.
-  if (!mMPDManager) {
-    LOG1("Network Error! MPD Manager must exist, indicating MPD has been "
-        "downloaded and parsed");
-    NetworkError();
-    return;
-  }
-
-  // Decoder for the media |Representation| must not be null.
-  if (!aRepDecoder) {
-    LOG1("Decoder for Representation is reported as null.");
-    DecodeError();
-    return;
-  }
-
-  if (NS_SUCCEEDED(aStatus)) {
-    LOG("Byte range downloaded: decoder [%p] subsegmentIdx [%d]",
-        aRepDecoder, aSubsegmentIdx);
-
-    if (aSubsegmentIdx < 0) {
-      LOG("Last subsegment for decoder [%p] was downloaded",
-          aRepDecoder);
-      return;
-    }
-
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    nsRefPtr<DASHRepDecoder> decoder = aRepDecoder;
-    {
-      if (!IsDecoderAllowedToDownloadSubsegment(aRepDecoder,
-                                                aSubsegmentIdx)) {
-        NS_WARNING("Decoder downloaded subsegment but it is not allowed!");
-        LOG("Error! Decoder [%p] downloaded subsegment [%d] but it is not "
-            "allowed!", aRepDecoder, aSubsegmentIdx);
-        return;
-      }
-
-      if (aRepDecoder == VideoRepDecoder() &&
-          mVideoSubsegmentIdx == aSubsegmentIdx) {
-        IncrementSubsegmentIndex(aRepDecoder);
-      } else if (aRepDecoder == AudioRepDecoder() &&
-          mAudioSubsegmentIdx == aSubsegmentIdx) {
-        IncrementSubsegmentIndex(aRepDecoder);
-      } else {
-        return;
-      }
-
-      // Do Stream Switching here before loading next bytes.
-      // Audio stream switching not supported.
-      if (aRepDecoder == VideoRepDecoder() &&
-          (uint32_t)mVideoSubsegmentIdx < VideoRepDecoder()->GetNumDataByteRanges()) {
-        nsresult rv = PossiblySwitchDecoder(aRepDecoder);
-        if (NS_FAILED(rv)) {
-          LOG("Failed possibly switching decoder rv[0x%x]", rv);
-          DecodeError();
-          return;
-        }
-        decoder = VideoRepDecoder();
-      }
-    }
-
-    // Check that decoder is valid.
-    if (!decoder || (decoder != AudioRepDecoder() &&
-                     decoder != VideoRepDecoder())) {
-      LOG("Invalid decoder [%p]: video idx [%d] audio idx [%d]",
-          decoder.get(), AudioRepDecoder(), VideoRepDecoder());
-      DecodeError();
-      return;
-    }
-
-    // Before loading, note the index of the decoder which will downloaded the
-    // next video subsegment.
-    if (decoder == VideoRepDecoder()) {
-      if (mVideoSubsegmentLoads.IsEmpty() ||
-          (uint32_t)mVideoSubsegmentIdx >= mVideoSubsegmentLoads.Length()) {
-        LOG("Appending decoder [%d] [%p] to mVideoSubsegmentLoads at index "
-            "[%d] before load; mVideoSubsegmentIdx[%d].",
-            mVideoRepDecoderIdx, VideoRepDecoder(),
-            mVideoSubsegmentLoads.Length(), mVideoSubsegmentIdx);
-        mVideoSubsegmentLoads.AppendElement(mVideoRepDecoderIdx);
-      } else {
-        // Change an existing load, and keep subsequent entries to help
-        // determine if subsegments are cached already.
-        LOG("Setting decoder [%d] [%p] in mVideoSubsegmentLoads at index "
-            "[%d] before load; mVideoSubsegmentIdx[%d].",
-            mVideoRepDecoderIdx, VideoRepDecoder(),
-            mVideoSubsegmentIdx, mVideoSubsegmentIdx);
-        mVideoSubsegmentLoads[mVideoSubsegmentIdx] = mVideoRepDecoderIdx;
-      }
-      LOG("Notifying switch decided for video subsegment [%d]",
-          mVideoSubsegmentIdx);
-      mon.NotifyAll();
-    }
-
-    // Load the next range of data bytes. If the range is already cached,
-    // this function will be called again to adaptively download the next
-    // subsegment.
-    bool resourceLoaded = false;
-    if (decoder.get() == AudioRepDecoder()) {
-      LOG("Requesting load for audio decoder [%p] subsegment [%d].",
-        decoder.get(), mAudioSubsegmentIdx);
-      if (mAudioSubsegmentIdx >= decoder->GetNumDataByteRanges()) {
-        resourceLoaded = true;
-      }
-    } else if (decoder.get() == VideoRepDecoder()) {
-      LOG("Requesting load for video decoder [%p] subsegment [%d].",
-        decoder.get(), mVideoSubsegmentIdx);
-      if (mVideoSubsegmentIdx >= decoder->GetNumDataByteRanges()) {
-        resourceLoaded = true;
-      }
-    }
-    if (resourceLoaded) {
-      ResourceLoaded();
-      return;
-    }
-    decoder->LoadNextByteRange();
-  } else if (aStatus == NS_BINDING_ABORTED) {
-    LOG("Media download has been cancelled by the user: aStatus[%x]", aStatus);
-    if (mOwner) {
-      mOwner->LoadAborted();
-    }
-    return;
-  } else if (aStatus != NS_BASE_STREAM_CLOSED) {
-    LOG("Network error trying to download MPD: aStatus [%x].", aStatus);
-    NetworkError();
-  }
-}
-
-void
-DASHDecoder::LoadAborted()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  if (!mNotifiedLoadAborted && mOwner) {
-    LOG1("Load Aborted! Notifying media element.");
-    mOwner->LoadAborted();
-    mNotifiedLoadAborted = true;
-  }
-}
-
-void
-DASHDecoder::Suspend()
-{
-  MOZ_ASSERT(NS_IsMainThread());
-  // Suspend MPD download if not yet complete.
-  if (!mMPDManager && mResource) {
-    LOG1("Suspending MPD download.");
-    mResource->Suspend(true);
-    return;
-  }
-
-  // Otherwise, forward |Suspend| to active rep decoders.
-  if (AudioRepDecoder()) {
-    LOG("Suspending download for audio decoder [%p].", AudioRepDecoder());
-    AudioRepDecoder()->Suspend();
-  }
-  if (VideoRepDecoder()) {
-    LOG("Suspending download for video decoder [%p].", VideoRepDecoder());
-    VideoRepDecoder()->Suspend();
-  }
-}
-
-void
-DASHDecoder::Resume(bool aForceBuffering)
-{
-  MOZ_ASSERT(NS_IsMainThread());
-  // Resume MPD download if not yet complete.
-  if (!mMPDManager) {
-    if (mResource) {
-      LOG1("Resuming MPD download.");
-      mResource->Resume();
-    }
-    if (aForceBuffering) {
-      ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-      if (mDecoderStateMachine) {
-        mDecoderStateMachine->StartBuffering();
-      }
-    }
-  }
-
-  // Otherwise, forward |Resume| to active rep decoders.
-  if (AudioRepDecoder()) {
-    LOG("Resuming download for audio decoder [%p].", AudioRepDecoder());
-    AudioRepDecoder()->Resume(aForceBuffering);
-  }
-  if (VideoRepDecoder()) {
-    LOG("Resuming download for video decoder [%p].", VideoRepDecoder());
-    VideoRepDecoder()->Resume(aForceBuffering);
-  }
-}
-
-void
-DASHDecoder::Shutdown()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  LOG1("Shutting down.");
-
-  // Notify reader of shutdown first.
-  if (mDASHReader) {
-    mDASHReader->NotifyDecoderShuttingDown();
-  }
-
-  // Call parent class shutdown.
-  MediaDecoder::Shutdown();
-  NS_ENSURE_TRUE_VOID(mShuttingDown);
-
-  // Shutdown reader thread if not already done.
-  if (mMPDReaderThread) {
-    nsresult rv = mMPDReaderThread->Shutdown();
-    NS_ENSURE_SUCCESS_VOID(rv);
-    mMPDReaderThread = nullptr;
-  }
-
-  // Forward to sub-decoders.
-  for (uint i = 0; i < mAudioRepDecoders.Length(); i++) {
-    if (mAudioRepDecoders[i]) {
-      mAudioRepDecoders[i]->Shutdown();
-    }
-  }
-  for (uint i = 0; i < mVideoRepDecoders.Length(); i++) {
-    if (mVideoRepDecoders[i]) {
-      mVideoRepDecoders[i]->Shutdown();
-    }
-  }
-}
-
-void
-DASHDecoder::DecodeError()
-{
-  if (NS_IsMainThread()) {
-    MediaDecoder::DecodeError();
-  } else {
-    nsCOMPtr<nsIRunnable> event =
-      NS_NewRunnableMethod(this, &MediaDecoder::DecodeError);
-    nsresult rv = NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
-    if (NS_FAILED(rv)) {
-      LOG("Error dispatching DecodeError event to main thread: rv[%x]", rv);
-    }
-  }
-}
-
-void
-DASHDecoder::OnReadMetadataCompleted(DASHRepDecoder* aRepDecoder)
-{
-  if (mShuttingDown) {
-    LOG1("Shutting down! Ignoring OnReadMetadataCompleted().");
-    return;
-  }
-
-  NS_ASSERTION(aRepDecoder, "aRepDecoder is null!");
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-
-  LOG("Metadata loaded for decoder[%p]", aRepDecoder);
-
-  // Decrement audio|video metadata read counter and get ref to active decoder.
-  nsRefPtr<DASHRepDecoder> activeDecoder;
-  {
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    for (uint32_t i = 0; i < mAudioRepDecoders.Length(); i++) {
-      if (aRepDecoder == mAudioRepDecoders[i]) {
-        --mAudioMetadataReadCount;
-        break;
-      }
-    }
-    for (uint32_t i = 0; i < mVideoRepDecoders.Length(); i++) {
-      if (aRepDecoder == mVideoRepDecoders[i]) {
-        --mVideoMetadataReadCount;
-        break;
-      }
-    }
-  }
-
-  // Once all metadata is downloaded for audio|video decoders, start loading
-  // data for the active decoder.
-  if (mAudioMetadataReadCount == 0 && mVideoMetadataReadCount == 0) {
-    if (AudioRepDecoder()) {
-      LOG("Dispatching load event for audio decoder [%p]", AudioRepDecoder());
-      nsCOMPtr<nsIRunnable> event =
-        NS_NewRunnableMethod(AudioRepDecoder(), &DASHRepDecoder::LoadNextByteRange);
-      nsresult rv = NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
-      if (NS_FAILED(rv)) {
-        LOG("Error dispatching audio decoder [%p] load event to main thread: "
-            "rv[%x]", AudioRepDecoder(), rv);
-        DecodeError();
-        return;
-      }
-    }
-    if (VideoRepDecoder()) {
-      LOG("Dispatching load event for video decoder [%p]", VideoRepDecoder());
-      // Add decoder to subsegment load history.
-      NS_ASSERTION(mVideoSubsegmentLoads.IsEmpty(),
-                   "No subsegment loads should be recorded at this stage!");
-      NS_ASSERTION(mVideoSubsegmentIdx == 0,
-                   "Current subsegment should be 0 at this stage!");
-      LOG("Appending decoder [%d] [%p] to mVideoSubsegmentLoads at index "
-          "[%d] before load; mVideoSubsegmentIdx[%d].",
-          mVideoRepDecoderIdx, VideoRepDecoder(),
-          (uint32_t)mVideoSubsegmentLoads.Length(), mVideoSubsegmentIdx);
-      mVideoSubsegmentLoads.AppendElement(mVideoRepDecoderIdx);
-
-      nsCOMPtr<nsIRunnable> event =
-        NS_NewRunnableMethod(VideoRepDecoder(), &DASHRepDecoder::LoadNextByteRange);
-      nsresult rv = NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
-      if (NS_FAILED(rv)) {
-        LOG("Error dispatching video decoder [%p] load event to main thread: "
-            "rv[%x]", VideoRepDecoder(), rv);
-        DecodeError();
-        return;
-      }
-    }
-  }
-}
-
-nsresult
-DASHDecoder::PossiblySwitchDecoder(DASHRepDecoder* aRepDecoder)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_FALSE(mShuttingDown, NS_ERROR_UNEXPECTED);
-  NS_ENSURE_TRUE(aRepDecoder == VideoRepDecoder(), NS_ERROR_ILLEGAL_VALUE);
-  NS_ASSERTION((uint32_t)mVideoRepDecoderIdx < mVideoRepDecoders.Length(),
-               "Index for video decoder is out of bounds!");
-  NS_ASSERTION((uint32_t)mVideoSubsegmentIdx < VideoRepDecoder()->GetNumDataByteRanges(),
-               "Can't switch to a byte range out of bounds.");
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-  // Now, determine if and which decoder to switch to.
-  // XXX This download rate is averaged over time, and only refers to the bytes
-  // downloaded for the video decoder. A running average would be better, and
-  // something that includes all downloads. But this will do for now.
-  NS_ASSERTION(VideoRepDecoder(), "Video decoder should not be null.");
-  NS_ASSERTION(VideoRepDecoder()->GetResource(),
-               "Video resource should not be null");
-  bool reliable = false;
-  double downloadRate = 0;
-  {
-    MutexAutoLock lock(mStatisticsLock);
-    downloadRate = mVideoStatistics->GetRate(&reliable);
-  }
-  uint32_t bestRepIdx = UINT32_MAX;
-  bool noRepAvailable = !mMPDManager->GetBestRepForBandwidth(mVideoAdaptSetIdx,
-                                                             downloadRate,
-                                                             bestRepIdx);
-  LOG("downloadRate [%0.2f kbps] reliable [%s] bestRepIdx [%d] noRepAvailable [%s]",
-      downloadRate/1000.0, (reliable ? "yes" : "no"), bestRepIdx,
-      (noRepAvailable ? "yes" : "no"));
-
-  // If there is a higher bitrate stream that can be downloaded with the
-  // current estimated bandwidth, step up to the next stream, for a graceful
-  // increase in quality.
-  uint32_t toDecoderIdx = mVideoRepDecoderIdx;
-  if (bestRepIdx > toDecoderIdx) {
-    toDecoderIdx = std::min(toDecoderIdx+1, mVideoRepDecoders.Length()-1);
-  } else if (toDecoderIdx < bestRepIdx) {
-    // If the bitrate is too much for the current bandwidth, just use that
-    // stream directly.
-    toDecoderIdx = bestRepIdx;
-  }
-
-  // Upgrade |toDecoderIdx| if a better subsegment was previously downloaded and
-  // is still cached.
-  if (mVideoSubsegmentIdx < mVideoSubsegmentLoads.Length() &&
-      toDecoderIdx < mVideoSubsegmentLoads[mVideoSubsegmentIdx]) {
-    // Check if the subsegment is cached.
-    uint32_t betterRepIdx = mVideoSubsegmentLoads[mVideoSubsegmentIdx];
-    if (mVideoRepDecoders[betterRepIdx]->IsSubsegmentCached(mVideoSubsegmentIdx)) {
-      toDecoderIdx = betterRepIdx;
-    }
-  }
-
-  NS_ENSURE_TRUE(toDecoderIdx < mVideoRepDecoders.Length(),
-                 NS_ERROR_ILLEGAL_VALUE);
-
-  // Notify reader and sub decoders and do the switch.
-  if (toDecoderIdx != (uint32_t)mVideoRepDecoderIdx) {
-    LOG("*** Switching video decoder from [%d] [%p] to [%d] [%p] at "
-        "subsegment [%d]", mVideoRepDecoderIdx, VideoRepDecoder(),
-        toDecoderIdx, mVideoRepDecoders[toDecoderIdx].get(),
-        mVideoSubsegmentIdx);
-
-    // Tell main reader to switch subreaders at |subsegmentIdx| - equates to
-    // switching data source for reading.
-    mDASHReader->RequestVideoReaderSwitch(mVideoRepDecoderIdx, toDecoderIdx,
-                                          mVideoSubsegmentIdx);
-    // Notify decoder it is about to be switched.
-    mVideoRepDecoders[mVideoRepDecoderIdx]->PrepareForSwitch();
-    // Switch video decoders - equates to switching download source.
-    mVideoRepDecoderIdx = toDecoderIdx;
-  }
-
-  return NS_OK;
-}
-
-nsresult
-DASHDecoder::Seek(double aTime)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_FALSE(mShuttingDown, NS_ERROR_UNEXPECTED);
-
-  LOG("Seeking to [%.2fs]", aTime);
-
-  {
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    // Set the seeking flag, so that when current subsegments download (if
-    // any), the next subsegment will not be downloaded.
-    mSeeking = true;
-  }
-
-  return MediaDecoder::Seek(aTime);
-}
-
-void
-DASHDecoder::NotifySeekInVideoSubsegment(int32_t aRepDecoderIdx,
-                                         int32_t aSubsegmentIdx)
-{
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-  NS_ASSERTION(0 <= aRepDecoderIdx &&
-               aRepDecoderIdx < mVideoRepDecoders.Length(),
-               "Video decoder index is out of bounds");
-
-  // Reset current subsegment to match the one being seeked.
-  mVideoSubsegmentIdx = aSubsegmentIdx;
-  // Reset current decoder to match the one returned by
-  // |GetRepIdxForVideoSubsegmentLoad|.
-  mVideoRepDecoderIdx = aRepDecoderIdx;
-
-  mSeeking = false;
-
-  LOG("Dispatching load for video decoder [%d] [%p]: seek in subsegment [%d]",
-      mVideoRepDecoderIdx, VideoRepDecoder(), aSubsegmentIdx);
-
-  nsCOMPtr<nsIRunnable> event =
-    NS_NewRunnableMethod(VideoRepDecoder(),
-                         &DASHRepDecoder::LoadNextByteRange);
-  nsresult rv = NS_DispatchToMainThread(event);
-  if (NS_FAILED(rv)) {
-    LOG("Error dispatching video byte range load: rv[0x%x].",
-        rv);
-    NetworkError();
-    return;
-  }
-}
-
-void
-DASHDecoder::NotifySeekInAudioSubsegment(int32_t aSubsegmentIdx)
-{
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-  // Reset current subsegment to match the one being seeked.
-  mAudioSubsegmentIdx = aSubsegmentIdx;
-
-  LOG("Dispatching seeking load for audio decoder [%d] [%p]: subsegment [%d]",
-     mAudioRepDecoderIdx, AudioRepDecoder(), aSubsegmentIdx);
-
-  nsCOMPtr<nsIRunnable> event =
-    NS_NewRunnableMethod(AudioRepDecoder(),
-                         &DASHRepDecoder::LoadNextByteRange);
-  nsresult rv = NS_DispatchToMainThread(event);
-  if (NS_FAILED(rv)) {
-    LOG("Error dispatching audio byte range load: rv[0x%x].",
-        rv);
-    NetworkError();
-    return;
-  }
-}
-
-bool
-DASHDecoder::IsDecoderAllowedToDownloadData(DASHRepDecoder* aRepDecoder)
-{
-  NS_ASSERTION(aRepDecoder, "DASHRepDecoder pointer is null.");
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  LOG("Checking aRepDecoder [%p] with AudioRepDecoder [%p] metadataReadCount "
-      "[%d] and VideoRepDecoder [%p] metadataReadCount [%d]",
-      aRepDecoder, AudioRepDecoder(), mAudioMetadataReadCount,
-      VideoRepDecoder(), mVideoMetadataReadCount);
-  // Only return true if |aRepDecoder| is active and metadata for all
-  // representations has been downloaded.
-  return ((aRepDecoder == AudioRepDecoder() && mAudioMetadataReadCount == 0) ||
-          (aRepDecoder == VideoRepDecoder() && mVideoMetadataReadCount == 0));
-}
-
-bool
-DASHDecoder::IsDecoderAllowedToDownloadSubsegment(DASHRepDecoder* aRepDecoder,
-                                                  int32_t const aSubsegmentIdx)
-{
-  NS_ASSERTION(aRepDecoder, "DASHRepDecoder pointer is null.");
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-  // Forbid any downloads until we've been told what subsegment to seek to.
-  if (mSeeking) {
-    return false;
-  }
-  // Return false if there is still metadata to be downloaded.
-  if (mAudioMetadataReadCount != 0 || mVideoMetadataReadCount != 0) {
-    return false;
-  }
-  // No audio switching; allow the audio decoder to download all subsegments.
-  if (aRepDecoder == AudioRepDecoder()) {
-    return true;
-  }
-
-  int32_t videoDecoderIdx = GetRepIdxForVideoSubsegmentLoad(aSubsegmentIdx);
-  if (aRepDecoder == mVideoRepDecoders[videoDecoderIdx]) {
-    return true;
-  }
-  return false;
-}
-
-void
-DASHDecoder::SetSubsegmentIndex(DASHRepDecoder* aRepDecoder,
-                                int32_t aSubsegmentIdx)
-{
-  NS_ASSERTION(0 <= aSubsegmentIdx,
-               "Subsegment index should not be negative!");
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  if (aRepDecoder == AudioRepDecoder()) {
-    mAudioSubsegmentIdx = aSubsegmentIdx;
-  } else if (aRepDecoder == VideoRepDecoder()) {
-    // If this is called in the context of a Seek, we need to cancel downloads
-    // from other rep decoders, or all rep decoders if we're not seeking in the
-    // current subsegment.
-    // Note: NotifySeekInSubsegment called from DASHReader will already have
-    // set the current decoder.
-    mVideoSubsegmentIdx = aSubsegmentIdx;
-  }
-}
-
-double
-DASHDecoder::ComputePlaybackRate(bool* aReliable)
-{
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  MOZ_ASSERT(NS_IsMainThread() || OnStateMachineThread());
-  NS_ASSERTION(aReliable, "Bool pointer aRelible should not be null!");
-
-  // While downloading the MPD, return 0; do not count manifest as media data.
-  if (mResource && !mMPDManager) {
-    return 0;
-  }
-
-  // Once MPD is downloaded, use the rate from the video decoder.
-  // XXX Not ideal, but since playback rate is used to estimate if we have
-  // enough data to continue playing, this should be sufficient.
-  double videoRate = 0;
-  if (VideoRepDecoder()) {
-    videoRate = VideoRepDecoder()->ComputePlaybackRate(aReliable);
-  }
-  return videoRate;
-}
-
-void
-DASHDecoder::UpdatePlaybackRate()
-{
-  MOZ_ASSERT(NS_IsMainThread() || OnStateMachineThread());
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  // While downloading the MPD, return silently; playback rate has no meaning
-  // for the manifest.
-  if (mResource && !mMPDManager) {
-    return;
-  }
-  // Once MPD is downloaded and audio/video decoder(s) are loading, forward to
-  // active rep decoders.
-  if (AudioRepDecoder()) {
-    AudioRepDecoder()->UpdatePlaybackRate();
-  }
-  if (VideoRepDecoder()) {
-    VideoRepDecoder()->UpdatePlaybackRate();
-  }
-}
-
-void
-DASHDecoder::NotifyPlaybackStarted()
-{
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  // While downloading the MPD, return silently; playback rate has no meaning
-  // for the manifest.
-  if (mResource && !mMPDManager) {
-    return;
-  }
-  // Once MPD is downloaded and audio/video decoder(s) are loading, forward to
-  // active rep decoders.
-  if (AudioRepDecoder()) {
-    AudioRepDecoder()->NotifyPlaybackStarted();
-  }
-  if (VideoRepDecoder()) {
-    VideoRepDecoder()->NotifyPlaybackStarted();
-  }
-}
-
-void
-DASHDecoder::NotifyPlaybackStopped()
-{
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  // While downloading the MPD, return silently; playback rate has no meaning
-  // for the manifest.
-  if (mResource && !mMPDManager) {
-    return;
-  }
-  // Once  // Once MPD is downloaded and audio/video decoder(s) are loading, forward to
-  // active rep decoders.
-  if (AudioRepDecoder()) {
-    AudioRepDecoder()->NotifyPlaybackStopped();
-  }
-  if (VideoRepDecoder()) {
-    VideoRepDecoder()->NotifyPlaybackStopped();
-  }
-}
-
-MediaDecoder::Statistics
-DASHDecoder::GetStatistics()
-{
-  MOZ_ASSERT(NS_IsMainThread() || OnStateMachineThread());
-  Statistics result;
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  if (mResource && !mMPDManager) {
-    return MediaDecoder::GetStatistics();
-  }
-
-  // XXX Use video decoder and its media resource to get stats.
-  // This assumes that the following getter functions are getting relevant
-  // video data only.
-  if (VideoRepDecoder() && VideoRepDecoder()->GetResource()) {
-    MediaResource *resource = VideoRepDecoder()->GetResource();
-    // Note: this rate reflects the rate observed for all video downloads.
-    result.mDownloadRate =
-      resource->GetDownloadRate(&result.mDownloadRateReliable);
-    result.mDownloadPosition =
-      resource->GetCachedDataEnd(VideoRepDecoder()->mDecoderPosition);
-    result.mTotalBytes = resource->GetLength();
-    result.mPlaybackRate = ComputePlaybackRate(&result.mPlaybackRateReliable);
-    result.mDecoderPosition = VideoRepDecoder()->mDecoderPosition;
-    result.mPlaybackPosition = VideoRepDecoder()->mPlaybackPosition;
-  }
-  else {
-    result.mDownloadRate = 0;
-    result.mDownloadRateReliable = true;
-    result.mPlaybackRate = 0;
-    result.mPlaybackRateReliable = true;
-    result.mDecoderPosition = 0;
-    result.mPlaybackPosition = 0;
-    result.mDownloadPosition = 0;
-    result.mTotalBytes = 0;
-  }
-
-  return result;
-}
-
-bool
-DASHDecoder::IsDataCachedToEndOfResource()
-{
-  NS_ASSERTION(!mShuttingDown, "Don't call during shutdown!");
-  GetReentrantMonitor().AssertCurrentThreadIn();
-
-  if (!mMPDManager || !mResource) {
-    return false;
-  }
-
-  bool resourceIsLoaded = false;
-  if (VideoRepDecoder()) {
-    resourceIsLoaded = VideoRepDecoder()->IsDataCachedToEndOfResource();
-    LOG("IsDataCachedToEndOfResource for VideoRepDecoder %p = %s",
-       VideoRepDecoder(), resourceIsLoaded ? "yes" : "no");
-  }
-  if (AudioRepDecoder()) {
-    bool isAudioResourceLoaded =
-      AudioRepDecoder()->IsDataCachedToEndOfResource();
-    LOG("IsDataCachedToEndOfResource for AudioRepDecoder %p = %s",
-       AudioRepDecoder(), isAudioResourceLoaded ? "yes" : "no");
-    resourceIsLoaded = resourceIsLoaded && isAudioResourceLoaded;
-  }
-
-  return resourceIsLoaded;
-}
-
-void
-DASHDecoder::StopProgressUpdates()
-{
-  MOZ_ASSERT(OnStateMachineThread() || OnDecodeThread());
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  mIgnoreProgressData = true;
-  for (uint32_t i = 0; i < mVideoRepDecoders.Length(); i++) {
-    mVideoRepDecoders[i]->StopProgressUpdates();
-  }
-  for (uint32_t i = 0; i < mAudioRepDecoders.Length(); i++) {
-    mAudioRepDecoders[i]->StopProgressUpdates();
-  }
-}
-
-void
-DASHDecoder::StartProgressUpdates()
-{
-  MOZ_ASSERT(OnStateMachineThread() || OnDecodeThread());
-  GetReentrantMonitor().AssertCurrentThreadIn();
-  mIgnoreProgressData = false;
-  for (uint32_t i = 0; i < mVideoRepDecoders.Length(); i++) {
-    mVideoRepDecoders[i]->StartProgressUpdates();
-  }
-  for (uint32_t i = 0; i < mAudioRepDecoders.Length(); i++) {
-    mAudioRepDecoders[i]->StartProgressUpdates();
-  }
-}
-
-int32_t
-DASHDecoder::GetRepIdxForVideoSubsegmentLoadAfterSeek(int32_t aSubsegmentIndex)
-{
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  // Should not be requesting decoder index for the first subsegment, nor any
-  // after the final subsegment.
-  if (aSubsegmentIndex < 1 ||
-      aSubsegmentIndex >= VideoRepDecoder()->GetNumDataByteRanges()) {
-    return -1;
-  }
-  // Wait if we are still loading the subsegment previous to the one that was
-  // queried. Note: |mVideoSubsegmentIdx| should have been updated to reflect
-  // loads of the seeked subsegment before |DASHRepReader|::|Seek| was called,
-  // i.e. before this function was called.
-  while (mVideoSubsegmentIdx == aSubsegmentIndex-1) {
-    LOG("Waiting for switching decision for video subsegment [%d].",
-        aSubsegmentIndex);
-    mon.Wait();
-  }
-
-  return mVideoSubsegmentLoads[aSubsegmentIndex];
-}
-
-} // namespace mozilla
deleted file mode 100644
--- a/content/media/dash/DASHDecoder.h
+++ /dev/null
@@ -1,412 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.*/
-
-#if !defined(DASHDecoder_h_)
-#define DASHDecoder_h_
-
-#include "nsTArray.h"
-#include "nsIURI.h"
-#include "nsITimer.h"
-#include "MediaDecoder.h"
-#include "DASHReader.h"
-
-namespace mozilla {
-namespace net {
-class IMPDManager;
-class nsDASHMPDParser;
-class Representation;
-}// net
-
-class DASHRepDecoder;
-
-class DASHDecoder : public MediaDecoder
-{
-public:
-  typedef class mozilla::net::IMPDManager IMPDManager;
-  typedef class mozilla::net::nsDASHMPDParser nsDASHMPDParser;
-  typedef class mozilla::net::Representation Representation;
-
-  // XXX Arbitrary max file size for MPD. 50MB seems generously large.
-  static const uint32_t DASH_MAX_MPD_SIZE = 50*1024*1024;
-
-  DASHDecoder();
-  ~DASHDecoder();
-
-  MediaDecoder* Clone() MOZ_OVERRIDE {
-    if (!IsDASHEnabled()) {
-      return nullptr;
-    }
-    return new DASHDecoder();
-  }
-
-  // Creates a single state machine for all stream decoders.
-  // Called from Load on the main thread only.
-  MediaDecoderStateMachine* CreateStateMachine();
-
-  // Loads the MPD from the network and subsequently loads the media streams.
-  // Called from the main thread only.
-  virtual nsresult Load(nsIStreamListener** aListener,
-                        MediaDecoder* aCloneDonor) MOZ_OVERRIDE;
-
-  // Notifies download of MPD file has ended.
-  // Called on the main thread only.
-  void NotifyDownloadEnded(nsresult aStatus);
-
-  // Notification from |DASHReader| that a seek has occurred in
-  // |aSubsegmentIdx|. Passes notification onto subdecoder which downloaded
-  // the subsegment already, if download is in the past. Otherwise, it returns.
-  void NotifySeekInVideoSubsegment(int32_t aRepDecoderIdx,
-                                   int32_t aSubsegmentIdx);
-  void NotifySeekInAudioSubsegment(int32_t aSubsegmentIdx);
-
-  // Notifies that a byte range download has ended. As per the DASH spec, this
-  // allows for stream switching at the boundaries of the byte ranges.
-  // Called on the main thread only.
-  void NotifyDownloadEnded(DASHRepDecoder* aRepDecoder,
-                           nsresult aStatus,
-                           int32_t const aSubsegmentIdx);
-
-  // Notification from an |MediaDecoderReader| class that metadata has been
-  // read. Declared here to allow overloading.
-  void OnReadMetadataCompleted() MOZ_OVERRIDE { }
-
-  // Seeks to aTime in seconds
-  nsresult Seek(double aTime) MOZ_OVERRIDE;
-
-  // Notification from |DASHRepDecoder| that a metadata has been read.
-  // |DASHDecoder| will initiate load of data bytes for active audio/video
-  // decoders. Called on the decode thread.
-  void OnReadMetadataCompleted(DASHRepDecoder* aRepDecoder);
-
-  // Returns true if all subsegments from current decode position are
-  // downloaded. Must be in monitor. Call from any thread.
-  bool IsDataCachedToEndOfResource() MOZ_OVERRIDE;
-
-  // Refers to downloading data bytes, i.e. non metadata.
-  // Returns true if |aRepDecoder| is an active audio or video sub decoder AND
-  // if metadata for all audio or video decoders has been read.
-  // Could be called from any thread; enters decoder monitor.
-  bool IsDecoderAllowedToDownloadData(DASHRepDecoder* aRepDecoder);
-
-  // Refers to downloading data bytes during SEEKING.
-  // Returns true if |aRepDecoder| is the active audio sub decoder, OR if
-  // it is a video decoder and is allowed to download this subsegment.
-  // Returns false if there is still some metadata to download.
-  // Could be called from any thread; enters decoder monitor.
-  bool IsDecoderAllowedToDownloadSubsegment(DASHRepDecoder* aRepDecoder,
-                                            int32_t const aSubsegmentIdx);
-
-  // Determines if rep/sub decoders should be switched, and if so switches
-  // them. Notifies |DASHReader| if and when it should switch readers.
-  // Returns a pointer to the new active decoder.
-  // Called on the main thread.
-  nsresult PossiblySwitchDecoder(DASHRepDecoder* aRepDecoder);
-
-  // Sets the byte range index for audio|video downloads. Will only increment
-  // for current active decoders. Could be called from any thread.
-  // Requires monitor because of write to |mAudioSubsegmentIdx| or
-  // |mVideoSubsegmentIdx|.
-  void SetSubsegmentIndex(DASHRepDecoder* aRepDecoder,
-                          int32_t aSubsegmentIdx);
-
-  // Suspend any media downloads that are in progress. Called by the
-  // media element when it is sent to the bfcache, or when we need
-  // to throttle the download. Call on the main thread only. This can
-  // be called multiple times, there's an internal "suspend count".
-  void Suspend() MOZ_OVERRIDE;
-
-  // Resume any media downloads that have been suspended. Called by the
-  // media element when it is restored from the bfcache, or when we need
-  // to stop throttling the download. Call on the main thread only.
-  // The download will only actually resume once as many Resume calls
-  // have been made as Suspend calls. When aForceBuffering is true,
-  // we force the decoder to go into buffering state before resuming
-  // playback.
-  void Resume(bool aForceBuffering) MOZ_OVERRIDE;
-private:
-  // Increments the byte range index for audio|video downloads. Will only
-  // increment for current active decoders. Could be called from any thread.
-  // Requires monitor because of write to |mAudioSubsegmentIdx| or
-  // |mVideoSubsegmentIdx|.
-  void IncrementSubsegmentIndex(DASHRepDecoder* aRepDecoder)
-  {
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    if (aRepDecoder == AudioRepDecoder()) {
-      mAudioSubsegmentIdx++;
-    } else if (aRepDecoder == VideoRepDecoder()) {
-      mVideoSubsegmentIdx++;
-    }
-  }
-public:
-  // Gets the byte range index for audio|video downloads. Will only increment
-  // for current active decoders. Could be called from any thread. Will enter
-  // monitor for read access off the decode thread.
-  int32_t GetSubsegmentIndex(DASHRepDecoder* aRepDecoder)
-  {
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    if (aRepDecoder == AudioRepDecoder()) {
-      return mAudioSubsegmentIdx;
-    } else if (aRepDecoder == VideoRepDecoder()) {
-      return mVideoSubsegmentIdx;
-    }
-    return (-1);
-  }
-
-  // Returns the total number of subsegments that have been loaded. Will enter
-  // monitor for read access off the decode thread.
-  uint32_t GetNumSubsegmentLoads() {
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    return mVideoSubsegmentLoads.Length();
-  }
-
-  // Returns the index of the rep decoder used to load a subsegment. Will enter
-  // monitor for read access off the decode thread.
-  int32_t GetRepIdxForVideoSubsegmentLoad(int32_t aSubsegmentIdx)
-  {
-    NS_ASSERTION(0 <= aSubsegmentIdx, "Subsegment index should not be negative.");
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    if ((uint32_t)aSubsegmentIdx < mVideoSubsegmentLoads.Length()) {
-      return mVideoSubsegmentLoads[aSubsegmentIdx];
-    } else {
-      // If it hasn't been downloaded yet, use the lowest bitrate decoder.
-      return 0;
-    }
-  }
-
-  // Returns the index of the rep decoder used to load a subsegment, after a
-  // seek. Called on the decode thread, and will block if the subsegment
-  // previous to the one specified has not yet been loaded. This ensures that
-  // |DASHDecoder| has had a chance to determine which decoder should load the
-  // next subsegment, in the case where |DASHRepReader|::|DecodeToTarget| has
-  // read all the data for the current subsegment from the cache, and needs to
-  // know which reader (including itself) to use next.
-  int32_t GetRepIdxForVideoSubsegmentLoadAfterSeek(int32_t aSubsegmentIndex);
-
-  int32_t GetSwitchCountAtVideoSubsegment(int32_t aSubsegmentIdx)
-  {
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    NS_ASSERTION(0 <= aSubsegmentIdx, "Subsegment index should not be negative.");
-    if (aSubsegmentIdx == 0) {
-      // Do the zeroeth switch next.
-      return 0;
-    }
-    int32_t switchCount = 0;
-    for (uint32_t i = 1;
-         i < mVideoSubsegmentLoads.Length() &&
-         i <= (uint32_t)aSubsegmentIdx;
-         i++) {
-      if (mVideoSubsegmentLoads[i-1] != mVideoSubsegmentLoads[i]) {
-        switchCount++;
-      }
-    }
-    return switchCount;
-  }
-
-  // The actual playback rate computation. The monitor must be held.
-  // XXX Computes playback for the current video rep decoder only.
-  double ComputePlaybackRate(bool* aReliable) MOZ_OVERRIDE;
-
-  // Something has changed that could affect the computed playback rate,
-  // so recompute it. The monitor must be held. Will be forwarded to current
-  // audio and video rep decoders.
-  void UpdatePlaybackRate() MOZ_OVERRIDE;
-
-  // Stop updating the bytes downloaded for progress notifications. Called
-  // when seeking to prevent wild changes to the progress notification.
-  // Forwarded to sub-decoders. Must be called with the decoder monitor held.
-  void StopProgressUpdates() MOZ_OVERRIDE;
-
-  // Allow updating the bytes downloaded for progress notifications.
-  // Forwarded to sub-decoders. Must be called with the decoder monitor held.
-  void StartProgressUpdates() MOZ_OVERRIDE;
-
-  // Used to estimate rates of data passing through the decoder's channel.
-  // Records activity starting on the channel. The monitor must be held.
-  virtual void NotifyPlaybackStarted() MOZ_OVERRIDE;
-
-  // Used to estimate rates of data passing through the decoder's channel.
-  // Records activity stopping on the channel. The monitor must be held.
-  virtual void NotifyPlaybackStopped() MOZ_OVERRIDE;
-
-  // Return statistics. This is used for progress events and other things.
-  // This can be called from any thread. It's only a snapshot of the
-  // current state, since other threads might be changing the state
-  // at any time.
-  // XXX Stats are calculated based on the current video rep decoder, with the
-  // exception of download rate, which is based on all video downloads.
-  virtual Statistics GetStatistics() MOZ_OVERRIDE;
-
-  // Drop reference to state machine and tell sub-decoders to do the same.
-  // Only called during shutdown dance, on main thread only.
-  void ReleaseStateMachine();
-
-  // Overridden to forward |Shutdown| to sub-decoders.
-  // Called on the main thread only.
-  void Shutdown();
-
-  // Called by sub-decoders when load has been aborted. Will notify media
-  // element only once. Called on the main thread only.
-  void LoadAborted();
-
-  // Notifies the element that decoding has failed. On main thread, call is
-  // forwarded to |MediaDecoder|::|Error| immediately. On other threads,
-  // a call is dispatched for execution on the main thread.
-  void DecodeError();
-
-private:
-  // Reads the MPD data from resource to a byte stream.
-  // Called on the MPD reader thread.
-  void ReadMPDBuffer();
-
-  // Called when MPD data is completely read.
-  // On the main thread.
-  void OnReadMPDBufferCompleted();
-
-  // Parses the copied MPD byte stream.
-  // On the main thread: DOM APIs complain when off the main thread.
-  nsresult ParseMPDBuffer();
-
-  // Creates the sub-decoders for a |Representation|, i.e. media streams.
-  // On the main thread.
-  nsresult CreateRepDecoders();
-
-  // Creates audio/video decoders for individual |Representation|s.
-  // On the main thread.
-  nsresult CreateAudioRepDecoder(nsIURI* aUrl, Representation const * aRep);
-  nsresult CreateVideoRepDecoder(nsIURI* aUrl, Representation const * aRep);
-
-  // Get audio sub-decoder for current audio |Representation|. Will return
-  // nullptr for out of range indexes.
-  // Enters monitor for read access off the decode thread.
-  // XXX Note: Although an array of audio decoders is provided, audio stream
-  // switching is not yet supported.
-  DASHRepDecoder* AudioRepDecoder() {
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    if (0 == mAudioRepDecoders.Length()) {
-      return nullptr;
-    }
-    NS_ENSURE_TRUE((uint32_t)mAudioRepDecoderIdx < mAudioRepDecoders.Length(),
-                   nullptr);
-    if (mAudioRepDecoderIdx < 0) {
-      return nullptr;
-    } else {
-      return mAudioRepDecoders[mAudioRepDecoderIdx];
-    }
-  }
-
-  // Get video sub-decoder for current video |Representation|. Will return
-  // nullptr for out of range indexes.
-  // Enters monitor for read access off the decode thread.
-  DASHRepDecoder* VideoRepDecoder() {
-    ReentrantMonitorConditionallyEnter mon(!OnDecodeThread(),
-                                           GetReentrantMonitor());
-    if (0 == mVideoRepDecoders.Length()) {
-      return nullptr;
-    }
-    NS_ENSURE_TRUE((uint32_t)mVideoRepDecoderIdx < mVideoRepDecoders.Length(),
-                   nullptr);
-    if (mVideoRepDecoderIdx < 0) {
-      return nullptr;
-    } else {
-      return mVideoRepDecoders[mVideoRepDecoderIdx];
-    }
-  }
-
-  // Creates audio/video resources for individual |Representation|s.
-  // On the main thread.
-  MediaResource* CreateAudioSubResource(nsIURI* aUrl,
-                                        MediaDecoder* aAudioDecoder);
-  MediaResource* CreateVideoSubResource(nsIURI* aUrl,
-                                        MediaDecoder* aVideoDecoder);
-
-  // Creates an http channel for a |Representation|.
-  // On the main thread.
-  nsresult CreateSubChannel(nsIURI* aUrl, nsIChannel** aChannel);
-
-  // Loads the media |Representations|, i.e. the media streams.
-  // On the main thread.
-  nsresult LoadRepresentations();
-
-  // True when media element has already been notified of an aborted load.
-  bool mNotifiedLoadAborted;
-
-  // Ptr for the MPD data.
-  nsAutoArrayPtr<char>         mBuffer;
-  // Length of the MPD data.
-  uint32_t                     mBufferLength;
-  // Ptr to the MPD Reader thread.
-  nsCOMPtr<nsIThread>          mMPDReaderThread;
-  // Document Principal.
-  nsCOMPtr<nsIPrincipal>       mPrincipal;
-
-  // MPD Manager provides access to the MPD information.
-  nsAutoPtr<IMPDManager>       mMPDManager;
-
-  // Main reader object; manages all sub-readers for |Representation|s. Owned by
-  // state machine; destroyed in state machine's destructor.
-  DASHReader* mDASHReader;
-
-  // Sub-decoder vars. Note: For all following members, the decode monitor
-  // should be held for write access on decode thread, and all read/write off
-  // the decode thread.
-
-  // Index of the video |AdaptationSet|.
-  int32_t mVideoAdaptSetIdx;
-
-  // Indexes for the current audio and video decoders.
-  int32_t mAudioRepDecoderIdx;
-  int32_t mVideoRepDecoderIdx;
-
-  // Array of pointers for the |Representation|s in the audio/video
-  // |AdaptationSet|.
-  nsTArray<nsRefPtr<DASHRepDecoder> > mAudioRepDecoders;
-  nsTArray<nsRefPtr<DASHRepDecoder> > mVideoRepDecoders;
-
-  // Current index of subsegments downloaded for audio/video decoder.
-  int32_t mAudioSubsegmentIdx;
-  int32_t mVideoSubsegmentIdx;
-
-  // Count for the number of readers which have called |OnReadMetadataCompleted|.
-  // Initialised to 0; incremented for every decoder which has |Load| called;
-  // and decremented for every call to |OnReadMetadataCompleted|. When it is
-  // zero again, all metadata has been read for audio or video, and data bytes
-  // can be downloaded.
-  uint32_t mAudioMetadataReadCount;
-  uint32_t mVideoMetadataReadCount;
-
-  // Array records the index of the decoder/Representation which loaded each
-  // subsegment.
-  nsTArray<int32_t> mVideoSubsegmentLoads;
-
-  // True when Seek is called; will block any downloads until
-  // |NotifySeekInSubsegment| is called, which will set it to false, and will
-  // start a new series of downloads from the seeked subsegment.
-  bool mSeeking;
-
-  // Mutex for statistics.
-  Mutex mStatisticsLock;
-  // Stores snapshot statistics, such as download rate, for the audio|video
-  // data streams. |mStatisticsLock| must be locked for access.
-  nsRefPtr<MediaChannelStatistics> mAudioStatistics;
-  nsRefPtr<MediaChannelStatistics> mVideoStatistics;
-};
-
-} // namespace mozilla
-
-#endif
deleted file mode 100644
--- a/content/media/dash/DASHReader.cpp
+++ /dev/null
@@ -1,674 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.*/
-
-#include "mozilla/dom/TimeRanges.h"
-#include "VideoFrameContainer.h"
-#include "AbstractMediaDecoder.h"
-#include "DASHReader.h"
-#include "DASHDecoder.h"
-#include <algorithm>
-
-namespace mozilla {
-
-#ifdef PR_LOGGING
-PRLogModuleInfo* gDASHReaderLog;
-#define LOG(msg, ...) PR_LOG(gDASHReaderLog, PR_LOG_DEBUG, \
-                             ("%p [DASHReader] " msg, this, __VA_ARGS__))
-#define LOG1(msg) PR_LOG(gDASHReaderLog, PR_LOG_DEBUG, \
-                         ("%p [DASHReader] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-DASHReader::DASHReader(AbstractMediaDecoder* aDecoder) :
-  MediaDecoderReader(aDecoder),
-  mReadMetadataMonitor("media.dashreader.readmetadata"),
-  mReadyToReadMetadata(false),
-  mDecoderIsShuttingDown(false),
-  mAudioReader(this),
-  mVideoReader(this),
-  mAudioReaders(this),
-  mVideoReaders(this),
-  mSwitchVideoReaders(false),
-  mSwitchCount(-1)
-{
-  MOZ_COUNT_CTOR(DASHReader);
-#ifdef PR_LOGGING
-  if (!gDASHReaderLog) {
-    gDASHReaderLog = PR_NewLogModule("DASHReader");
-  }
-#endif
-}
-
-DASHReader::~DASHReader()
-{
-  MOZ_COUNT_DTOR(DASHReader);
-}
-
-nsresult
-DASHReader::ResetDecode()
-{
-  MediaDecoderReader::ResetDecode();
-  nsresult rv;
-  for (uint i = 0; i < mAudioReaders.Length(); i++) {
-    rv = mAudioReaders[i]->ResetDecode();
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  for (uint i = 0; i < mVideoReaders.Length(); i++) {
-    rv = mVideoReaders[i]->ResetDecode();
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  return NS_OK;
-}
-
-nsresult
-DASHReader::Init(MediaDecoderReader* aCloneDonor)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-  NS_ASSERTION(mAudioReaders.Length() != 0 && mVideoReaders.Length() != 0,
-               "Audio and video readers should exist already.");
-
-  nsresult rv;
-  for (uint i = 0; i < mAudioReaders.Length(); i++) {
-    rv = mAudioReaders[i]->Init(nullptr);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  for (uint i = 0; i < mVideoReaders.Length(); i++) {
-    rv = mVideoReaders[i]->Init(nullptr);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  return NS_OK;
-}
-
-void
-DASHReader::AddAudioReader(DASHRepReader* aAudioReader)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE_VOID(aAudioReader);
-
-  ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-
-  mAudioReaders.AppendElement(aAudioReader);
-  // XXX For now, just pick the first reader to be default.
-  if (!mAudioReader)
-    mAudioReader = aAudioReader;
-}
-
-void
-DASHReader::AddVideoReader(DASHRepReader* aVideoReader)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE_VOID(aVideoReader);
-
-  ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-
-  mVideoReaders.AppendElement(aVideoReader);
-  // XXX For now, just pick the first reader to be default.
-  if (!mVideoReader)
-    mVideoReader = aVideoReader;
-}
-
-bool
-DASHReader::HasAudio()
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-  return mAudioReader ? mAudioReader->HasAudio() : false;
-}
-
-bool
-DASHReader::HasVideo()
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-  return mVideoReader ? mVideoReader->HasVideo() : false;
-}
-
-int64_t
-DASHReader::VideoQueueMemoryInUse()
-{
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  return VideoQueueMemoryInUse();
-}
-
-int64_t
-DASHReader::AudioQueueMemoryInUse()
-{
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  return AudioQueueMemoryInUse();
-}
-
-bool
-DASHReader::DecodeVideoFrame(bool &aKeyframeSkip,
-                             int64_t aTimeThreshold)
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-  if (mVideoReader) {
-   return mVideoReader->DecodeVideoFrame(aKeyframeSkip, aTimeThreshold);
-  } else {
-   return false;
-  }
-}
-
-bool
-DASHReader::DecodeAudioData()
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-  return (mAudioReader ? mAudioReader->DecodeAudioData() : false);
-}
-
-nsresult
-DASHReader::ReadMetadata(MediaInfo* aInfo,
-                         MetadataTags** aTags)
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-
-  // Wait for MPD to be parsed and child readers created.
-  LOG1("Waiting for metadata download.");
-  nsresult rv = WaitForMetadata();
-  // If we get an abort, return silently; the decoder is shutting down.
-  if (NS_ERROR_ABORT == rv) {
-    return NS_OK;
-  }
-  // Verify no other errors before continuing.
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  NS_ASSERTION(aTags, "Called with null MetadataTags**.");
-  *aTags = nullptr;
-
-  // Get metadata from child readers.
-  MediaInfo audioInfo, videoInfo;
-
-  // Read metadata for all video streams.
-  for (uint i = 0; i < mVideoReaders.Length(); i++) {
-    // Use an nsAutoPtr here to ensure |tags| memory does not leak.
-    nsAutoPtr<HTMLMediaElement::MetadataTags> tags;
-    rv = mVideoReaders[i]->ReadMetadata(&videoInfo, getter_Transfers(tags));
-    NS_ENSURE_SUCCESS(rv, rv);
-    // Use metadata from current video sub reader to populate aInfo.
-    if (mVideoReaders[i] == mVideoReader) {
-      mInfo.mVideo = videoInfo.mVideo;
-    }
-  }
-  // Read metadata for audio stream.
-  // Note: Getting metadata tags from audio reader only for now.
-  // XXX Audio stream switching not yet supported.
-  if (mAudioReader) {
-    rv = mAudioReader->ReadMetadata(&audioInfo, aTags);
-    NS_ENSURE_SUCCESS(rv, rv);
-    mInfo.mAudio = audioInfo.mAudio;
-  }
-
-  *aInfo = mInfo;
-
-  return NS_OK;
-}
-
-nsresult
-DASHReader::Seek(int64_t aTime,
-                 int64_t aStartTime,
-                 int64_t aEndTime,
-                 int64_t aCurrentTime)
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-
-  NS_ENSURE_SUCCESS(ResetDecode(), NS_ERROR_FAILURE);
-
-  LOG("Seeking to [%.2fs]", aTime/1000000.0);
-
-  nsresult rv;
-  DASHDecoder* dashDecoder = static_cast<DASHDecoder*>(mDecoder);
-
-  if (mAudioReader) {
-    int64_t subsegmentIdx = -1;
-    {
-      ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-      subsegmentIdx = mAudioReader->GetSubsegmentForSeekTime(aTime);
-      NS_ENSURE_TRUE(0 <= subsegmentIdx, NS_ERROR_ILLEGAL_VALUE);
-    }
-    dashDecoder->NotifySeekInAudioSubsegment(subsegmentIdx);
-
-    rv = mAudioReader->Seek(aTime, aStartTime, aEndTime, aCurrentTime);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-
-  if (mVideoReader) {
-    // Determine the video subsegment we're seeking to.
-    int32_t subsegmentIdx = -1;
-    {
-      ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-      subsegmentIdx = mVideoReader->GetSubsegmentForSeekTime(aTime);
-      NS_ENSURE_TRUE(0 <= subsegmentIdx, NS_ERROR_ILLEGAL_VALUE);
-    }
-
-    LOG("Seek to [%.2fs] found in video subsegment [%d]",
-        aTime/1000000.0, subsegmentIdx);
-
-    // Determine if/which video reader previously downloaded this subsegment.
-    int32_t readerIdx = dashDecoder->GetRepIdxForVideoSubsegmentLoad(subsegmentIdx);
-
-    dashDecoder->NotifySeekInVideoSubsegment(readerIdx, subsegmentIdx);
-
-    if (0 <= readerIdx) {
-      NS_ENSURE_TRUE(readerIdx < mVideoReaders.Length(),
-                     NS_ERROR_ILLEGAL_VALUE);
-      // Switch to this reader and do the Seek.
-      DASHRepReader* fromReader = mVideoReader;
-      DASHRepReader* toReader = mVideoReaders[readerIdx];
-
-      {
-        ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-        if (fromReader != toReader) {
-          LOG("Switching video readers now from [%p] to [%p] for a seek to "
-              "[%.2fs] in subsegment [%d]",
-              fromReader, toReader, aTime/1000000.0, subsegmentIdx);
-
-          mVideoReader = toReader;
-        }
-      }
-
-      rv = mVideoReader->Seek(aTime, aStartTime, aEndTime, aCurrentTime);
-      if (NS_FAILED(rv)) {
-        NS_ENSURE_SUCCESS(rv, rv);
-      }
-
-      // Go back to the appropriate count in the switching history, and setup
-      // this main reader and the sub readers for the next switch (if any).
-      {
-        ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-        mSwitchCount = dashDecoder->GetSwitchCountAtVideoSubsegment(subsegmentIdx);
-        LOG("After mVideoReader->Seek() mSwitchCount %d", mSwitchCount);
-        NS_ENSURE_TRUE(0 <= mSwitchCount, NS_ERROR_ILLEGAL_VALUE);
-        NS_ENSURE_TRUE(mSwitchCount <= subsegmentIdx, NS_ERROR_ILLEGAL_VALUE);
-      }
-    } else {
-      LOG("Error getting rep idx for video subsegment [%d]",
-          subsegmentIdx);
-    }
-  }
-  return NS_OK;
-}
-
-nsresult
-DASHReader::GetBuffered(TimeRanges* aBuffered,
-                        int64_t aStartTime)
-{
-  NS_ENSURE_ARG(aBuffered);
-
-  MediaResource* resource = nullptr;
-  AbstractMediaDecoder* decoder = nullptr;
-
-  TimeRanges audioBuffered, videoBuffered;
-  uint32_t audioRangeCount = 0, videoRangeCount = 0;
-  bool audioCachedAtEnd = false, videoCachedAtEnd = false;
-
-  nsresult rv = NS_OK;
-
-  // Get all audio and video buffered ranges. Include inactive streams, since
-  // we may have carried out a seek and future subsegments may be in currently
-  // inactive decoders.
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  for (uint32_t i = 0; i < mAudioReaders.Length(); i++) {
-    decoder = mAudioReaders[i]->GetDecoder();
-    NS_ENSURE_TRUE(decoder, NS_ERROR_NULL_POINTER);
-    resource = decoder->GetResource();
-    NS_ENSURE_TRUE(resource, NS_ERROR_NULL_POINTER);
-    resource->Pin();
-    rv = mAudioReaders[i]->GetBuffered(&audioBuffered, aStartTime);
-    NS_ENSURE_SUCCESS(rv, rv);
-    // If data was cached at the end, then the final timestamp refers to the
-    // end of the data. Use this later to extend end time if necessary.
-    if (!audioCachedAtEnd) {
-      audioCachedAtEnd = mAudioReaders[i]->IsDataCachedAtEndOfSubsegments();
-    }
-    resource->Unpin();
-  }
-  for (uint32_t i = 0; i < mVideoReaders.Length(); i++) {
-    decoder = mVideoReaders[i]->GetDecoder();
-    NS_ENSURE_TRUE(decoder, NS_ERROR_NULL_POINTER);
-    resource = decoder->GetResource();
-    NS_ENSURE_TRUE(resource, NS_ERROR_NULL_POINTER);
-    resource->Pin();
-    rv = mVideoReaders[i]->GetBuffered(&videoBuffered, aStartTime);
-    NS_ENSURE_SUCCESS(rv, rv);
-    // If data was cached at the end, then the final timestamp refers to the
-    // end of the data. Use this later to extend end time if necessary.
-    if (!videoCachedAtEnd) {
-      videoCachedAtEnd = mVideoReaders[i]->IsDataCachedAtEndOfSubsegments();
-    }
-    resource->Unpin();
-  }
-
-  audioBuffered.Normalize();
-  videoBuffered.Normalize();
-
-  rv = audioBuffered.GetLength(&audioRangeCount);
-  NS_ENSURE_SUCCESS(rv, rv);
-  rv = videoBuffered.GetLength(&videoRangeCount);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  double start = 0, end = 0;
-  for (uint32_t i = 0; i < audioRangeCount; i++) {
-    rv = audioBuffered.Start(i, &start);
-    NS_ENSURE_SUCCESS(rv, rv);
-    rv = audioBuffered.End(i, &end);
-    NS_ENSURE_SUCCESS(rv, rv);
-    LOG("audioBuffered[%d] = (%f, %f)",
-        i, start, end);
-  }
-  for (uint32_t i = 0; i < videoRangeCount; i++) {
-    rv = videoBuffered.Start(i, &start);
-    NS_ENSURE_SUCCESS(rv, rv);
-    rv = videoBuffered.End(i, &end);
-    NS_ENSURE_SUCCESS(rv, rv);
-    LOG("videoBuffered[%d] = (%f, %f)",
-        i, start, end);
-  }
-#endif
-
-  // If audio and video are cached to the end of their subsegments, extend the
-  // end time of the shorter of the two. Presentation of the shorter stream
-  // will stop at the end, while the other continues until the combined
-  // playback is complete.
-  // Note: Only in cases where the shorter stream is fully cached, and the
-  // longer stream is partially cached, but with more time buffered than the
-  // shorter stream.
-  //
-  // Audio ========|
-  //               20
-  // Video ============|----|
-  //                   30   40
-  // Combo ============|      <----- End time EXTENDED.
-  //
-  // For example, audio is fully cached to 20s, but video is partially cached
-  // to 30s, full duration 40s. In this case, the buffered end time should be
-  // extended to the video's end time.
-  //
-  // Audio =================|
-  //                        40
-  // Video ========|----|
-  //               20   30
-  // Combo ========|          <------ End time NOT EXTENDED.
-  //
-  // Conversely, if the longer stream is fully cached, but the shorter one is
-  // not, no extension of end time should occur - we should consider the
-  // partially cached, shorter end time to be the end time of the combined
-  // stream
-
-  if (audioCachedAtEnd || videoCachedAtEnd) {
-    NS_ENSURE_TRUE(audioRangeCount, NS_ERROR_FAILURE);
-    NS_ENSURE_TRUE(videoRangeCount, NS_ERROR_FAILURE);
-
-    double audioEndTime = 0, videoEndTime = 0;
-    // Get end time of the last range of buffered audio.
-    audioEndTime = audioBuffered.GetFinalEndTime();
-    NS_ENSURE_TRUE(audioEndTime > 0, NS_ERROR_ILLEGAL_VALUE);
-    // Get end time of the last range of buffered video.
-    videoEndTime = videoBuffered.GetFinalEndTime();
-    NS_ENSURE_TRUE(videoEndTime > 0, NS_ERROR_ILLEGAL_VALUE);
-
-    // API for TimeRanges requires extending through adding and normalizing.
-    if (videoCachedAtEnd && audioEndTime > videoEndTime) {
-      videoBuffered.Add(videoEndTime, audioEndTime);
-      videoBuffered.Normalize();
-      LOG("videoBuffered extended to %f", audioEndTime);
-    } else if (audioCachedAtEnd && videoEndTime > audioEndTime) {
-      audioBuffered.Add(audioEndTime, videoEndTime);
-      audioBuffered.Normalize();
-      LOG("audioBuffered extended to %f", videoEndTime);
-    }
-  }
-
-  // Calculate intersecting ranges for video and audio.
-  if (!mAudioReaders.IsEmpty() && !mVideoReaders.IsEmpty()) {
-    for (uint32_t i = 0; i < audioRangeCount; i++) {
-      // |A|udio, |V|ideo, |I|ntersect.
-      double startA, startV, startI;
-      double endA, endV, endI;
-      rv = audioBuffered.Start(i, &startA);
-      NS_ENSURE_SUCCESS(rv, rv);
-      rv = audioBuffered.End(i, &endA);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      for (uint32_t j = 0; j < videoRangeCount; j++) {
-        rv = videoBuffered.Start(i, &startV);
-        NS_ENSURE_SUCCESS(rv, rv);
-        rv = videoBuffered.End(i, &endV);
-        NS_ENSURE_SUCCESS(rv, rv);
-
-        // If video block is before audio block, compare next video block.
-        if (startA > endV) {
-          continue;
-        // If video block is after audio block, all of them are; compare next
-        // audio block.
-        } else if (endA < startV) {
-          break;
-        }
-        // Calculate intersections of current audio and video blocks.
-        startI = (startA > startV) ? startA : startV;
-        endI = (endA > endV) ? endV : endA;
-        aBuffered->Add(startI, endI);
-      }
-    }
-  } else if (!mAudioReaders.IsEmpty()) {
-    *aBuffered = audioBuffered;
-  } else if (!mVideoReaders.IsEmpty()) {
-    *aBuffered = videoBuffered;
-  } else {
-    return NS_ERROR_NOT_INITIALIZED;
-  }
-
-  return NS_OK;
-}
-
-VideoData*
-DASHReader::FindStartTime(int64_t& aOutStartTime)
-{
-  NS_ASSERTION(mDecoder->OnStateMachineThread() || mDecoder->OnDecodeThread(),
-               "Should be on state machine or decode thread.");
-
-  // Extract the start times of the bitstreams in order to calculate
-  // the duration.
-  int64_t videoStartTime = INT64_MAX;
-  int64_t audioStartTime = INT64_MAX;
-  VideoData* videoData = nullptr;
-
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  if (HasVideo()) {
-    // Forward to video reader.
-    videoData = mVideoReader->DecodeToFirstVideoData();
-    if (videoData) {
-      videoStartTime = videoData->mTime;
-    }
-  }
-  if (HasAudio()) {
-    // Forward to audio reader.
-    AudioData* audioData = mAudioReader->DecodeToFirstAudioData();
-    if (audioData) {
-      audioStartTime = audioData->mTime;
-    }
-  }
-
-  int64_t startTime = std::min(videoStartTime, audioStartTime);
-  if (startTime != INT64_MAX) {
-    aOutStartTime = startTime;
-  }
-
-  return videoData;
-}
-
-MediaQueue<AudioData>&
-DASHReader::AudioQueue()
-{
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  NS_ASSERTION(mAudioReader, "mAudioReader is NULL!");
-  return mAudioQueue;
-}
-
-MediaQueue<VideoData>&
-DASHReader::VideoQueue()
-{
-  ReentrantMonitorConditionallyEnter mon(!mDecoder->OnDecodeThread(),
-                                         mDecoder->GetReentrantMonitor());
-  NS_ASSERTION(mVideoReader, "mVideoReader is NULL!");
-  return mVideoQueue;
-}
-
-void
-DASHReader::RequestVideoReaderSwitch(uint32_t aFromReaderIdx,
-                                     uint32_t aToReaderIdx,
-                                     uint32_t aSubsegmentIdx)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ASSERTION(aFromReaderIdx < mVideoReaders.Length(),
-               "From index is greater than number of video readers!");
-  NS_ASSERTION(aToReaderIdx < mVideoReaders.Length(),
-               "To index is greater than number of video readers!");
-  NS_ASSERTION(aToReaderIdx != aFromReaderIdx,
-               "Don't request switches to same reader!");
-  mDecoder->GetReentrantMonitor().AssertCurrentThreadIn();
-
-  if (mSwitchCount < 0) {
-    mSwitchCount = 0;
-  }
-
-  DASHRepReader* fromReader = mVideoReaders[aFromReaderIdx];
-  DASHRepReader* toReader = mVideoReaders[aToReaderIdx];
-
-  LOG("Switch requested from reader [%d] [%p] to reader [%d] [%p] "
-      "at subsegment[%d].",
-      aFromReaderIdx, fromReader, aToReaderIdx, toReader, aSubsegmentIdx);
-
-  // Append the subsegment index to the list of pending switches.
-  for (uint32_t i = 0; i < mSwitchToVideoSubsegmentIndexes.Length(); i++) {
-    if (mSwitchToVideoSubsegmentIndexes[i] == aSubsegmentIdx) {
-      // A backwards |Seek| has changed the switching history; delete from
-      // this point on.
-      mSwitchToVideoSubsegmentIndexes.TruncateLength(i);
-      break;
-    }
-  }
-  mSwitchToVideoSubsegmentIndexes.AppendElement(aSubsegmentIdx);
-
-  // Tell the SWITCH FROM reader when it should stop reading.
-  fromReader->RequestSwitchAtSubsegment(aSubsegmentIdx, toReader);
-
-  // Tell the SWITCH TO reader to seek to the correct offset.
-  toReader->RequestSeekToSubsegment(aSubsegmentIdx);
-
-  mSwitchVideoReaders = true;
-}
-
-void
-DASHReader::PossiblySwitchVideoReaders()
-{
-  NS_ASSERTION(mDecoder, "Decoder should not be null");
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-
-  // Flag to switch streams is set in |RequestVideoReaderSwitch|.
-  if (!mSwitchVideoReaders) {
-    return;
-  }
-
-  // Only switch if we reached a switch access point.
-  NS_ENSURE_TRUE_VOID(0 <= mSwitchCount);
-  NS_ENSURE_TRUE_VOID((uint32_t)mSwitchCount < mSwitchToVideoSubsegmentIndexes.Length());
-  uint32_t switchIdx = mSwitchToVideoSubsegmentIndexes[mSwitchCount];
-  if (!mVideoReader->HasReachedSubsegment(switchIdx)) {
-    return;
-  }
-
-  // Get Representation index to switch to.
-  DASHDecoder* dashDecoder = static_cast<DASHDecoder*>(mDecoder);
-  int32_t toReaderIdx = dashDecoder->GetRepIdxForVideoSubsegmentLoad(switchIdx);
-  NS_ENSURE_TRUE_VOID(0 <= toReaderIdx);
-  NS_ENSURE_TRUE_VOID((uint32_t)toReaderIdx < mVideoReaders.Length());
-
-  DASHRepReader* fromReader = mVideoReader;
-  DASHRepReader* toReader = mVideoReaders[toReaderIdx];
-  NS_ENSURE_TRUE_VOID(fromReader != toReader);
-
-  LOG("Switching video readers now from [%p] to [%p] at subsegment [%d]: "
-      "mSwitchCount [%d].",
-      fromReader, toReader, switchIdx, mSwitchCount);
-
-  // Switch readers while in the monitor.
-  ReentrantMonitorAutoEnter mon(mDecoder->GetReentrantMonitor());
-  mVideoReader = toReader;
-
-  // Prep readers for next switch, also while in monitor.
-  if ((uint32_t)++mSwitchCount < mSwitchToVideoSubsegmentIndexes.Length()) {
-    // Get the subsegment at which to switch.
-    switchIdx = mSwitchToVideoSubsegmentIndexes[mSwitchCount];
-
-    // Update from and to reader ptrs for next switch.
-    fromReader = toReader;
-    toReaderIdx = dashDecoder->GetRepIdxForVideoSubsegmentLoad(switchIdx);
-    toReader = mVideoReaders[toReaderIdx];
-    NS_ENSURE_TRUE_VOID((uint32_t)toReaderIdx < mVideoReaders.Length());
-    NS_ENSURE_TRUE_VOID(fromReader != toReader);
-
-    // Tell the SWITCH FROM reader when it should stop reading.
-    fromReader->RequestSwitchAtSubsegment(switchIdx, toReader);
-
-    // Tell the SWITCH TO reader to seek to the correct offset.
-    toReader->RequestSeekToSubsegment(switchIdx);
-  } else {
-    // If there are no more pending switches, unset the switch readers flag.
-    mSwitchVideoReaders = false;
-  }
-}
-
-void
-DASHReader::PrepareToDecode()
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-
-  // Flag to switch streams is set by |DASHDecoder|.
-  if (!mSwitchVideoReaders) {
-    return;
-  }
-
-  PossiblySwitchVideoReaders();
-
-  // Prepare each sub reader for decoding: includes seeking to the correct
-  // offset if a seek was previously requested.
-  for (uint32_t i = 0; i < mVideoReaders.Length(); i++) {
-    mVideoReaders[i]->PrepareToDecode();
-  }
-}
-
-DASHRepReader*
-DASHReader::GetReaderForSubsegment(uint32_t aSubsegmentIdx)
-{
-  NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-  DASHDecoder* dashDecoder = static_cast<DASHDecoder*>(mDecoder);
-  int32_t repIdx =
-    dashDecoder->GetRepIdxForVideoSubsegmentLoadAfterSeek((int32_t)aSubsegmentIdx);
-  if (0 <= repIdx && repIdx < mVideoReaders.Length()) {
-    return mVideoReaders[repIdx];
-  } else {
-    return nullptr;
-  }
-}
-
-
-} // namespace mozilla
deleted file mode 100644
--- a/content/media/dash/DASHReader.h
+++ /dev/null
@@ -1,303 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for comments on DASH object interaction
- */
-
-#if !defined(DASHReader_h_)
-#define DASHReader_h_
-
-#include "VideoUtils.h"
-#include "MediaDecoderReader.h"
-#include "DASHRepReader.h"
-
-namespace mozilla {
-
-class DASHRepReader;
-
-class DASHReader : public MediaDecoderReader
-{
-public:
-  DASHReader(AbstractMediaDecoder* aDecoder);
-  ~DASHReader();
-  nsresult ResetDecode() MOZ_OVERRIDE;
-
-  // Adds a pointer to a audio/video reader for a media |Representation|.
-  // Called on the main thread only.
-  void AddAudioReader(DASHRepReader* aAudioReader);
-  void AddVideoReader(DASHRepReader* aVideoReader);
-
-  // Waits for metadata bytes to be downloaded, then reads and parses them.
-  // Called on the decode thread only.
-  nsresult ReadMetadata(MediaInfo* aInfo,
-                        MetadataTags** aTags) MOZ_OVERRIDE;
-
-  // Waits for |ReadyToReadMetadata| or |NotifyDecoderShuttingDown|
-  // notification, whichever comes first. Ensures no attempt to read metadata
-  // during |DASHDecoder|::|Shutdown|. Called on decode thread only.
-  nsresult WaitForMetadata() {
-    NS_ASSERTION(mDecoder->OnDecodeThread(), "Should be on decode thread.");
-    ReentrantMonitorAutoEnter mon(mReadMetadataMonitor);
-    while (true) {
-      // Abort if the decoder has started shutting down.
-      if (mDecoderIsShuttingDown) {
-        return NS_ERROR_ABORT;
-      } else if (mReadyToReadMetadata) {
-        break;
-      }
-      mon.Wait();
-    }
-    return NS_OK;
-  }
-
-  // Called on the main thread by |DASHDecoder| to notify that metadata bytes
-  // have been downloaded.
-  void ReadyToReadMetadata() {
-    NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-    ReentrantMonitorAutoEnter mon(mReadMetadataMonitor);
-    mReadyToReadMetadata = true;
-    mon.NotifyAll();
-  }
-
-  // Called on the main thread by |DASHDecoder| when it starts Shutdown. Will
-  // wake metadata monitor if waiting for a silent return from |ReadMetadata|.
-  void NotifyDecoderShuttingDown() {
-    NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-    ReentrantMonitorAutoEnter metadataMon(mReadMetadataMonitor);
-    mDecoderIsShuttingDown = true;
-    // Notify |ReadMetadata| of the shutdown if it's waiting.
-    metadataMon.NotifyAll();
-  }
-
-  // Audio/video status are dependent on the presence of audio/video readers.
-  // Call on decode thread only.
-  bool HasAudio() MOZ_OVERRIDE;
-  bool HasVideo() MOZ_OVERRIDE;
-
-  // Returns references to the audio/video queues of sub-readers. Called on
-  // decode, state machine and audio threads.
-  MediaQueue<AudioData>& AudioQueue() MOZ_OVERRIDE;
-  MediaQueue<VideoData>& VideoQueue() MOZ_OVERRIDE;
-
-  // Called from MediaDecoderStateMachine on the main thread.
-  nsresult Init(MediaDecoderReader* aCloneDonor) MOZ_OVERRIDE;
-
-  // Used by |MediaMemoryReporter|.
-  int64_t VideoQueueMemoryInUse() MOZ_OVERRIDE;
-  int64_t AudioQueueMemoryInUse() MOZ_OVERRIDE;
-
-  // Called on the decode thread, at the start of the decode loop, before
-  // |DecodeVideoFrame|.  Carries out video reader switch if previously
-  // requested, and tells sub-readers to |PrepareToDecode|.
-  void PrepareToDecode() MOZ_OVERRIDE;
-
-  // Called on the decode thread.
-  bool DecodeVideoFrame(bool &aKeyframeSkip, int64_t aTimeThreshold) MOZ_OVERRIDE;
-  bool DecodeAudioData() MOZ_OVERRIDE;
-
-  // Converts seek time to byte offset. Called on the decode thread only.
-  nsresult Seek(int64_t aTime,
-                int64_t aStartTime,
-                int64_t aEndTime,
-                int64_t aCurrentTime) MOZ_OVERRIDE;
-
-  // Called by state machine on multiple threads.
-  nsresult GetBuffered(mozilla::dom::TimeRanges* aBuffered, int64_t aStartTime) MOZ_OVERRIDE;
-
-  // Called on the state machine or decode threads.
-  VideoData* FindStartTime(int64_t& aOutStartTime) MOZ_OVERRIDE;
-
-  // Prepares for an upcoming switch of video readers. Called by
-  // |DASHDecoder| when it has switched download streams. Sets the index of
-  // the reader to switch TO and the index of the subsegment to switch AT
-  // (start offset). (Note: Subsegment boundaries are switch access points for
-  // DASH-WebM). Called on the main thread. Must be in the decode monitor.
-  void RequestVideoReaderSwitch(uint32_t aFromReaderIdx,
-                                uint32_t aToReaderIdx,
-                                uint32_t aSubsegmentIdx);
-
-  // Returns a pointer to the reader which should be used for the specified
-  // subsegment. Called on the decode thread only.
-  DASHRepReader* GetReaderForSubsegment(uint32_t aSubsegmentIdx);
-
-private:
-  // Switches video subreaders if a stream-switch flag has been set, and the
-  // current reader has read up to the switching subsegment (start offset).
-  // Called on the decode thread only.
-  void PossiblySwitchVideoReaders();
-
-  // Monitor and booleans used to wait for metadata bytes to be downloaded, and
-  // skip reading metadata if |DASHDecoder|'s shutdown is in progress.
-  ReentrantMonitor mReadMetadataMonitor;
-  bool mReadyToReadMetadata;
-  bool mDecoderIsShuttingDown;
-
-  // Wrapper class protecting accesses to sub-readers. Asserts that the
-  // decoder monitor has been entered for write access on all threads and read
-  // access on all threads that are not the decode thread. Read access on the
-  // decode thread does not need to be protected.
-  class MonitoredSubReader
-  {
-  public:
-    // Main constructor takes a pointer to the owning |DASHReader| to verify
-    // correct entry into the decoder's |ReentrantMonitor|.
-    MonitoredSubReader(DASHReader* aReader) :
-      mReader(aReader),
-      mSubReader(nullptr)
-    {
-      MOZ_COUNT_CTOR(DASHReader::MonitoredSubReader);
-      NS_ASSERTION(mReader, "Reader is null!");
-    }
-    // Note: |mSubReader|'s refcount will be decremented in this destructor.
-    ~MonitoredSubReader()
-    {
-      MOZ_COUNT_DTOR(DASHReader::MonitoredSubReader);
-    }
-
-    // Override '=' to always assert thread is "in monitor" for writes/changes
-    // to |mSubReader|.
-    MonitoredSubReader& operator=(DASHRepReader* rhs)
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      mSubReader = rhs;
-      return *this;
-    }
-
-    // Override '*' to assert threads other than the decode thread are "in
-    // monitor" for ptr reads.
-    operator DASHRepReader*() const
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      if (!mReader->GetDecoder()->OnDecodeThread()) {
-        mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      }
-      return mSubReader;
-    }
-
-    // Override '->' to assert threads other than the decode thread are "in
-    // monitor" for |mSubReader| function calls.
-    DASHRepReader* operator->() const
-    {
-      return *this;
-    }
-  private:
-    // Pointer to |DASHReader| object which owns this |MonitoredSubReader|.
-    DASHReader* mReader;
-    // Ref ptr to the sub reader.
-    nsRefPtr<DASHRepReader> mSubReader;
-  };
-
-  // Wrapped ref ptrs to current sub-readers of individual media
-  // |Representation|s. Decoder monitor must be entered for write access on all
-  // threads and read access on all threads that are not the decode thread.
-  // Read access on the decode thread does not need to be protected.
-  // Note: |MonitoredSubReader| class will assert correct monitor use.
-  MonitoredSubReader mAudioReader;
-  MonitoredSubReader mVideoReader;
-
-  // Wrapper class protecting accesses to sub-reader list. Asserts that the
-  // decoder monitor has been entered for write access on all threads and read
-  // access on all threads that are not the decode thread. Read access on the
-  // decode thread does not need to be protected.
-  // Note: Elems accessed via operator[] are not protected with monitor
-  // assertion checks once obtained.
-  class MonitoredSubReaderList
-  {
-  public:
-    // Main constructor takes a pointer to the owning |DASHReader| to verify
-    // correct entry into the decoder's |ReentrantMonitor|.
-    MonitoredSubReaderList(DASHReader* aReader) :
-      mReader(aReader)
-    {
-      MOZ_COUNT_CTOR(DASHReader::MonitoredSubReaderList);
-      NS_ASSERTION(mReader, "Reader is null!");
-    }
-    // Note: Elements in |mSubReaderList| will have their refcounts decremented
-    // in this destructor.
-    ~MonitoredSubReaderList()
-    {
-      MOZ_COUNT_DTOR(DASHReader::MonitoredSubReaderList);
-    }
-
-    // Returns Length of |mSubReaderList| array. Will assert threads other than
-    // the decode thread are "in monitor".
-    uint32_t Length() const
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      if (!mReader->GetDecoder()->OnDecodeThread()) {
-        mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      }
-      return mSubReaderList.Length();
-    }
-
-    // Returns true if |mSubReaderList| is empty. Will assert that threads
-    // other than the decode thread are "in monitor".
-    bool IsEmpty() const
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      if (!mReader->GetDecoder()->OnDecodeThread()) {
-        mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      }
-      return mSubReaderList.IsEmpty();
-    }
-    // Override '[]' to assert threads other than the decode thread are "in
-    // monitor" for accessing individual elems. Note: elems returned do not
-    // have monitor assertions builtin like |MonitoredSubReader| objects.
-    nsRefPtr<DASHRepReader>& operator[](uint32_t i)
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      if (!mReader->GetDecoder()->OnDecodeThread()) {
-        mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      }
-      return mSubReaderList[i];
-    }
-
-    // Appends a reader to the end of |mSubReaderList|. Will always assert that
-    // the thread is "in monitor".
-    void
-    AppendElement(DASHRepReader* aReader)
-    {
-      NS_ASSERTION(mReader->GetDecoder(), "Decoder is null!");
-      mReader->GetDecoder()->GetReentrantMonitor().AssertCurrentThreadIn();
-      mSubReaderList.AppendElement(aReader);
-    }
-  private:
-    // Pointer to |DASHReader| object which owns this |MonitoredSubReader|.
-    DASHReader* mReader;
-    // Ref ptrs to the sub readers.
-    nsTArray<nsRefPtr<DASHRepReader> > mSubReaderList;
-  };
-
-  // Ref ptrs to all sub-readers of individual media |Representation|s.
-  // Decoder monitor must be entered for write access on all threads and read
-  // access on all threads that are not the decode thread. Read acces on the
-  // decode thread does not need to be protected.
-  MonitoredSubReaderList mAudioReaders;
-  MonitoredSubReaderList mVideoReaders;
-
-  // When true, indicates that we should switch reader. Must be in the monitor
-  // for write access and read access off the decode thread.
-  bool mSwitchVideoReaders;
-
-  // Indicates the subsegment index at which the reader should switch. Must be
-  // in the monitor for write access and read access off the decode thread.
-  nsTArray<uint32_t> mSwitchToVideoSubsegmentIndexes;
-
-  // Counts the number of switches that have taken place. Must be in the
-  // monitor for write access and read access off the decode thread.
-  int32_t mSwitchCount;
-};
-
-} // namespace mozilla
-
-#endif
deleted file mode 100644
--- a/content/media/dash/DASHRepDecoder.cpp
+++ /dev/null
@@ -1,517 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.*/
-
-#include "prlog.h"
-#include "VideoUtils.h"
-#include "SegmentBase.h"
-#include "MediaDecoderStateMachine.h"
-#include "DASHReader.h"
-#include "MediaResource.h"
-#include "DASHRepDecoder.h"
-#include "WebMReader.h"
-#include <algorithm>
-
-namespace mozilla {
-
-#ifdef PR_LOGGING
-extern PRLogModuleInfo* gMediaDecoderLog;
-#define LOG(msg, ...) PR_LOG(gMediaDecoderLog, PR_LOG_DEBUG, \
-                             ("%p [DASHRepDecoder] " msg, this, __VA_ARGS__))
-#define LOG1(msg) PR_LOG(gMediaDecoderLog, PR_LOG_DEBUG, \
-                         ("%p [DASHRepDecoder] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-MediaDecoderStateMachine*
-DASHRepDecoder::CreateStateMachine()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  // Do not create; just return current state machine.
-  return mDecoderStateMachine;
-}
-
-nsresult
-DASHRepDecoder::SetStateMachine(MediaDecoderStateMachine* aSM)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  mDecoderStateMachine = aSM;
-  return NS_OK;
-}
-
-void
-DASHRepDecoder::SetResource(MediaResource* aResource)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  mResource = aResource;
-}
-
-void
-DASHRepDecoder::SetMPDRepresentation(Representation const * aRep)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  mMPDRepresentation = aRep;
-}
-
-void
-DASHRepDecoder::SetReader(WebMReader* aReader)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  mReader = aReader;
-}
-
-nsresult
-DASHRepDecoder::Load(nsIStreamListener** aListener,
-                     MediaDecoder* aCloneDonor)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ENSURE_TRUE(mMPDRepresentation, NS_ERROR_NOT_INITIALIZED);
-
-  // Get init range and index range from MPD.
-  SegmentBase const * segmentBase = mMPDRepresentation->GetSegmentBase();
-  NS_ENSURE_TRUE(segmentBase, NS_ERROR_NULL_POINTER);
-
-  // Get and set init range.
-  segmentBase->GetInitRange(&mInitByteRange.mStart, &mInitByteRange.mEnd);
-  NS_ENSURE_TRUE(!mInitByteRange.IsNull(), NS_ERROR_NOT_INITIALIZED);
-  mReader->SetInitByteRange(mInitByteRange);
-
-  // Get and set index range.
-  segmentBase->GetIndexRange(&mIndexByteRange.mStart, &mIndexByteRange.mEnd);
-  NS_ENSURE_TRUE(!mIndexByteRange.IsNull(), NS_ERROR_NOT_INITIALIZED);
-  mReader->SetIndexByteRange(mIndexByteRange);
-
-  // Determine byte range to Open.
-  // For small deltas between init and index ranges, we need to bundle the byte
-  // range requests together in order to deal with |MediaCache|'s control of
-  // seeking (see |MediaCache|::|Update|). |MediaCache| will not initiate a
-  // |ChannelMediaResource|::|CacheClientSeek| for the INDEX byte range if the
-  // delta between it and the INIT byte ranges is less than
-  // |SEEK_VS_READ_THRESHOLD|. To get around this, request all metadata bytes
-  // now so |MediaCache| can assume the bytes are en route.
-  int64_t delta = std::max(mIndexByteRange.mStart, mInitByteRange.mStart)
-                - std::min(mIndexByteRange.mEnd, mInitByteRange.mEnd);
-  MediaByteRange byteRange;
-  if (delta <= SEEK_VS_READ_THRESHOLD) {
-    byteRange.mStart = std::min(mIndexByteRange.mStart, mInitByteRange.mStart);
-    byteRange.mEnd = std::max(mIndexByteRange.mEnd, mInitByteRange.mEnd);
-    // Loading everything in one chunk .
-    mMetadataChunkCount = 1;
-  } else {
-    byteRange = mInitByteRange;
-    // Loading in two chunks: init and index.
-    mMetadataChunkCount = 2;
-  }
-  mCurrentByteRange = byteRange;
-  return mResource->OpenByteRange(nullptr, byteRange);
-}
-
-void
-DASHRepDecoder::NotifyDownloadEnded(nsresult aStatus)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  if (!mMainDecoder) {
-    if (!mShuttingDown) {
-      LOG("Error! Main Decoder is null before shutdown: mMainDecoder [%p] ",
-          mMainDecoder.get());
-      DecodeError();
-    }
-    return;
-  }
-
-  if (NS_SUCCEEDED(aStatus)) {
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    // Decrement counter as metadata chunks are downloaded.
-    // Note: Reader gets next chunk download via |ChannelMediaResource|:|Seek|.
-    if (mMetadataChunkCount > 0) {
-      LOG("Metadata chunk [%d] downloaded: range requested [%lld - %lld] "
-          "subsegmentIdx [%d]",
-          mMetadataChunkCount,
-          mCurrentByteRange.mStart, mCurrentByteRange.mEnd, mSubsegmentIdx);
-      mMetadataChunkCount--;
-    } else {
-      LOG("Byte range downloaded: status [%x] range requested [%lld - %lld] "
-          "subsegmentIdx [%d]",
-          aStatus, mCurrentByteRange.mStart, mCurrentByteRange.mEnd,
-          mSubsegmentIdx);
-      if ((uint32_t)mSubsegmentIdx == mByteRanges.Length()-1) {
-        mResource->NotifyLastByteRange();
-      }
-      // Notify main decoder that a DATA byte range is downloaded.
-      mMainDecoder->NotifyDownloadEnded(this, aStatus, mSubsegmentIdx);
-    }
-  } else if (aStatus == NS_BINDING_ABORTED) {
-    LOG("Media download has been cancelled by the user: aStatus [%x].",
-        aStatus);
-    if (mMainDecoder) {
-      mMainDecoder->LoadAborted();
-    }
-    return;
-  } else if (aStatus != NS_BASE_STREAM_CLOSED) {
-    LOG("Network error trying to download MPD: aStatus [%x].", aStatus);
-    NetworkError();
-  }
-}
-
-void
-DASHRepDecoder::OnReadMetadataCompleted()
-{
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-
-  // If shutting down, just return silently.
-  if (mShuttingDown) {
-    LOG1("Shutting down! Ignoring OnReadMetadataCompleted().");
-    return;
-  }
-
-  LOG1("Metadata has been read.");
-
-  // Metadata loaded and read for this stream; ok to populate byte ranges.
-  nsresult rv = PopulateByteRanges();
-  if (NS_FAILED(rv) || mByteRanges.IsEmpty()) {
-    LOG("Error populating byte ranges [%x]", rv);
-    DecodeError();
-    return;
-  }
-
-  mMainDecoder->OnReadMetadataCompleted(this);
-}
-
-nsresult
-DASHRepDecoder::PopulateByteRanges()
-{
-  NS_ASSERTION(OnDecodeThread(), "Should be on decode thread.");
-
-  // Should not be called during shutdown.
-  NS_ENSURE_FALSE(mShuttingDown, NS_ERROR_UNEXPECTED);
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  if (!mByteRanges.IsEmpty()) {
-    return NS_OK;
-  }
-  NS_ENSURE_TRUE(mReader, NS_ERROR_NULL_POINTER);
-  LOG1("Populating byte range array.");
-  return mReader->GetSubsegmentByteRanges(mByteRanges);
-}
-
-void
-DASHRepDecoder::LoadNextByteRange()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  NS_ASSERTION(mResource, "Error: resource is reported as null!");
-
-  // Return silently if shutting down.
-  if (mShuttingDown) {
-    LOG1("Shutting down! Ignoring LoadNextByteRange().");
-    return;
-  }
-
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-  NS_ASSERTION(mMainDecoder, "Error: main decoder is null!");
-  NS_ASSERTION(mMainDecoder->IsDecoderAllowedToDownloadData(this),
-               "Should not be called on non-active decoders!");
-
-  // Cannot have empty byte ranges.
-  if (mByteRanges.IsEmpty()) {
-    LOG1("Error getting list of subsegment byte ranges.");
-    DecodeError();
-    return;
-  }
-
-  // Get byte range for subsegment.
-  int32_t subsegmentIdx = mMainDecoder->GetSubsegmentIndex(this);
-  NS_ASSERTION(0 <= subsegmentIdx,
-               "Subsegment index should be >= 0 for active decoders");
-  if (subsegmentIdx >= 0 && (uint32_t)subsegmentIdx < mByteRanges.Length()) {
-    mCurrentByteRange = mByteRanges[subsegmentIdx];
-    mSubsegmentIdx = subsegmentIdx;
-  } else {
-    mCurrentByteRange.Clear();
-    mSubsegmentIdx = -1;
-    LOG("End of subsegments: index [%d] out of range.", subsegmentIdx);
-    return;
-  }
-
-  // Request a seek for the first reader. Required so that the reader is
-  // primed to start here, and will block subsequent subsegment seeks unless
-  // the subsegment has been read.
-  if (subsegmentIdx == 0) {
-    ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-    mReader->RequestSeekToSubsegment(0);
-  }
-
-  // Query resource for cached ranges; only download if it's not there.
-  if (IsSubsegmentCached(mSubsegmentIdx)) {
-    LOG("Subsegment [%d] bytes [%lld] to [%lld] already cached. No need to "
-        "download.", mSubsegmentIdx,
-        mCurrentByteRange.mStart, mCurrentByteRange.mEnd);
-    nsCOMPtr<nsIRunnable> event =
-      NS_NewRunnableMethod(this, &DASHRepDecoder::DoNotifyDownloadEnded);
-    nsresult rv = NS_DispatchToMainThread(event);
-    if (NS_FAILED(rv)) {
-      LOG("Error notifying subsegment [%d] cached: rv[0x%x].",
-          mSubsegmentIdx, rv);
-      NetworkError();
-    }
-    return;
-  }
-
-  // Open byte range corresponding to subsegment.
-  nsresult rv = mResource->OpenByteRange(nullptr, mCurrentByteRange);
-  if (NS_FAILED(rv)) {
-    LOG("Error opening byte range [%lld - %lld]: subsegmentIdx [%d] rv [%x].",
-        mCurrentByteRange.mStart, mCurrentByteRange.mEnd, mSubsegmentIdx, rv);
-    NetworkError();
-    return;
-  }
-}
-
-bool
-DASHRepDecoder::IsSubsegmentCached(int32_t aSubsegmentIdx)
-{
-  GetReentrantMonitor().AssertCurrentThreadIn();
-
-  MediaByteRange byteRange = mByteRanges[aSubsegmentIdx];
-  int64_t start = mResource->GetNextCachedData(byteRange.mStart);
-  int64_t end = mResource->GetCachedDataEnd(byteRange.mStart);
-  return (start == byteRange.mStart &&
-          end >= byteRange.mEnd);
-}
-
-void
-DASHRepDecoder::DoNotifyDownloadEnded()
-{
-  NotifyDownloadEnded(NS_OK);
-}
-
-nsresult
-DASHRepDecoder::GetByteRangeForSeek(int64_t const aOffset,
-                                    MediaByteRange& aByteRange)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  // Only check data ranges if they're available and if this decoder is active,
-  // i.e. inactive rep decoders should only load metadata.
-  ReentrantMonitorAutoEnter mon(GetReentrantMonitor());
-
-  for (uint32_t i = 0; i < mByteRanges.Length(); i++) {
-    NS_ENSURE_FALSE(mByteRanges[i].IsNull(), NS_ERROR_NOT_INITIALIZED);
-    // Check if |aOffset| lies within the current data range.
-    if (mByteRanges[i].mStart <= aOffset && aOffset <= mByteRanges[i].mEnd) {
-      if (mMainDecoder->IsDecoderAllowedToDownloadSubsegment(this, i)) {
-        mCurrentByteRange = aByteRange = mByteRanges[i];
-        mSubsegmentIdx = i;
-        // XXX Hack: should be setting subsegment outside this function, but
-        // need to review seeking for multiple switches anyhow.
-        mMainDecoder->SetSubsegmentIndex(this, i);
-        LOG("Getting DATA range [%d] for seek offset [%lld]: "
-            "bytes [%lld] to [%lld]",
-            i, aOffset, aByteRange.mStart, aByteRange.mEnd);
-        return NS_OK;
-      }
-      break;
-    }
-  }
-  // Don't allow metadata downloads once they're loaded and byte ranges have
-  // been populated.
-  bool canDownloadMetadata = mByteRanges.IsEmpty();
-  if (canDownloadMetadata) {
-    // Check metadata ranges; init range.
-    if (mInitByteRange.mStart <= aOffset && aOffset <= mInitByteRange.mEnd) {
-      mCurrentByteRange = aByteRange = mInitByteRange;
-      mSubsegmentIdx = 0;
-        LOG("Getting INIT range for seek offset [%lld]: bytes [%lld] to "
-            "[%lld]", aOffset, aByteRange.mStart, aByteRange.mEnd);
-      return NS_OK;
-    }
-    // ... index range.
-    if (mIndexByteRange.mStart <= aOffset && aOffset <= mIndexByteRange.mEnd) {
-      mCurrentByteRange = aByteRange = mIndexByteRange;
-      mSubsegmentIdx = 0;
-      LOG("Getting INDEXES range for seek offset [%lld]: bytes [%lld] to "
-          "[%lld]", aOffset, aByteRange.mStart, aByteRange.mEnd);
-      return NS_OK;
-    }
-  } else {
-    LOG1("Metadata should be read; inhibiting further metadata downloads.");
-  }
-
-  // If no byte range is found by this stage, clear the parameter and return.
-  aByteRange.Clear();
-  if (mByteRanges.IsEmpty() || !canDownloadMetadata) {
-    // Assume mByteRanges will be populated after metadata is read.
-    LOG("Data ranges not populated [%s]; metadata download restricted [%s]: "
-        "offset[%lld].",
-        (mByteRanges.IsEmpty() ? "yes" : "no"),
-        (canDownloadMetadata ? "no" : "yes"), aOffset);
-    return NS_ERROR_NOT_AVAILABLE;
-  } else {
-    // Cannot seek to an unknown offset.
-    // XXX Revisit this for dynamic MPD profiles if MPD is regularly updated.
-    LOG("Error! Offset [%lld] is in an unknown range!", aOffset);
-    return NS_ERROR_ILLEGAL_VALUE;
-  }
-}
-
-void
-DASHRepDecoder::PrepareForSwitch()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  // Ensure that the media cache writes any data held in its partial block.
-  mResource->FlushCache();
-}
-
-void
-DASHRepDecoder::NetworkError()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  if (mMainDecoder) { mMainDecoder->NetworkError(); }
-}
-
-void
-DASHRepDecoder::SetDuration(double aDuration)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  if (mMainDecoder) { mMainDecoder->SetDuration(aDuration); }
-}
-
-void
-DASHRepDecoder::SetInfinite(bool aInfinite)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  if (mMainDecoder) { mMainDecoder->SetInfinite(aInfinite); }
-}
-
-void
-DASHRepDecoder::SetMediaSeekable(bool aMediaSeekable)
-{
-  NS_ASSERTION(NS_IsMainThread() || OnDecodeThread(),
-               "Should be on main thread or decode thread.");
-  if (mMainDecoder) { mMainDecoder->SetMediaSeekable(aMediaSeekable); }
-}
-
-void
-DASHRepDecoder::Progress(bool aTimer)
-{
-  if (mMainDecoder) { mMainDecoder->Progress(aTimer); }
-}
-
-void
-DASHRepDecoder::NotifyDataArrived(const char* aBuffer,
-                                  uint32_t aLength,
-                                  int64_t aOffset)
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-
-  LOG("Data bytes [%lld - %lld] arrived via buffer [%p].",
-      aOffset, aOffset+aLength, aBuffer);
-  // Notify reader directly, since call to |MediaDecoderStateMachine|::
-  // |NotifyDataArrived| will go to |DASHReader|::|NotifyDataArrived|, which
-  // has no way to forward the notification to the correct sub-reader.
-  if (mReader) {
-    mReader->NotifyDataArrived(aBuffer, aLength, aOffset);
-  }
-  // Forward to main decoder which will notify state machine.
-  if (mMainDecoder) {
-    mMainDecoder->NotifyDataArrived(aBuffer, aLength, aOffset);
-  }
-}
-
-void
-DASHRepDecoder::NotifyBytesDownloaded()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  if (mMainDecoder) { mMainDecoder->NotifyBytesDownloaded(); }
-}
-
-void
-DASHRepDecoder::NotifySuspendedStatusChanged()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-  if (mMainDecoder) { mMainDecoder->NotifySuspendedStatusChanged(); }
-}
-
-bool
-DASHRepDecoder::OnStateMachineThread() const
-{
-  return (mMainDecoder ? mMainDecoder->OnStateMachineThread() : false);
-}
-
-bool
-DASHRepDecoder::OnDecodeThread() const
-{
-  return (mMainDecoder ? mMainDecoder->OnDecodeThread() : false);
-}
-
-ReentrantMonitor&
-DASHRepDecoder::GetReentrantMonitor()
-{
-  NS_ASSERTION(mMainDecoder, "Can't get monitor if main decoder is null!");
-  if (mMainDecoder) {
-    return mMainDecoder->GetReentrantMonitor();
-  } else {
-    // XXX If mMainDecoder is gone, most likely we're past shutdown and
-    // a waiting function has been wakened. Just return this decoder's own
-    // monitor and let the function complete.
-    return MediaDecoder::GetReentrantMonitor();
-  }
-}
-
-mozilla::layers::ImageContainer*
-DASHRepDecoder::GetImageContainer()
-{
-  return (mMainDecoder ? mMainDecoder->GetImageContainer() : nullptr);
-}
-
-void
-DASHRepDecoder::DecodeError()
-{
-  if (NS_IsMainThread()) {
-    MediaDecoder::DecodeError();
-  } else {
-    nsCOMPtr<nsIRunnable> event =
-      NS_NewRunnableMethod(this, &MediaDecoder::DecodeError);
-    nsresult rv = NS_DispatchToMainThread(event, NS_DISPATCH_NORMAL);
-    if (NS_FAILED(rv)) {
-      LOG("Error dispatching DecodeError event to main thread: rv[%x]", rv);
-    }
-  }
-}
-
-void
-DASHRepDecoder::ReleaseStateMachine()
-{
-  NS_ASSERTION(NS_IsMainThread(), "Must be on main thread.");
-
-  // Since state machine owns mReader, remove reference to it.
-  mReader = nullptr;
-
-  MediaDecoder::ReleaseStateMachine();
-}
-
-void DASHRepDecoder::StopProgressUpdates()
-{
-  NS_ENSURE_TRUE_VOID(mMainDecoder);
-  MediaDecoder::StopProgressUpdates();
-}
-
-void DASHRepDecoder::StartProgressUpdates()
-{
-  NS_ENSURE_TRUE_VOID(mMainDecoder);
-  MediaDecoder::StartProgressUpdates();
-}
-
-} // namespace mozilla
deleted file mode 100644
--- a/content/media/dash/DASHRepDecoder.h
+++ /dev/null
@@ -1,237 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.*/
-
-#if !defined(DASHRepDecoder_h_)
-#define DASHRepDecoder_h_
-
-#include "Representation.h"
-#include "DASHDecoder.h"
-#include "WebMDecoder.h"
-#include "WebMReader.h"
-#include "MediaDecoder.h"
-
-namespace mozilla {
-
-namespace layers {
-class ImageContainer;
-}
-
-class DASHDecoder;
-class DASHRepReader;
-
-class DASHRepDecoder : public MediaDecoder
-{
-public:
-  typedef mozilla::net::Representation Representation;
-  typedef mozilla::net::SegmentBase SegmentBase;
-  typedef mozilla::layers::ImageContainer ImageContainer;
-
-  // Constructor takes a ptr to the main decoder.
-  DASHRepDecoder(DASHDecoder* aMainDecoder) :
-    mMainDecoder(aMainDecoder),
-    mMPDRepresentation(nullptr),
-    mMetadataChunkCount(0),
-    mCurrentByteRange(),
-    mSubsegmentIdx(-1),
-    mReader(nullptr)
-  {
-    MOZ_COUNT_CTOR(DASHRepDecoder);
-  }
-
-  ~DASHRepDecoder()
-  {
-    MOZ_COUNT_DTOR(DASHRepDecoder);
-  }
-
-  // Clone not supported; just return nullptr.
-  virtual MediaDecoder* Clone() { return nullptr; }
-
-  // Called by the main decoder at creation time; points to the main state
-  // machine managed by the main decoder. Called on the main thread only.
-  nsresult SetStateMachine(MediaDecoderStateMachine* aSM);
-
-private:
-  // Overridden to return the ptr set by SetStateMachine. Called on the main
-  // thread only.
-  MediaDecoderStateMachine* CreateStateMachine();
-
-public:
-  // Called by DASHDecoder at creation time; points to the media resource
-  // for this decoder's |Representation|. Called on the main thread only.
-  void SetResource(MediaResource* aResource);
-
-  // Sets the |Representation| object for this decoder. Called on the main
-  // thread.
-  void SetMPDRepresentation(Representation const * aRep);
-
-  // Called from DASHDecoder on main thread; Starts media stream download.
-  virtual nsresult Load(nsIStreamListener** aListener = nullptr,
-                        MediaDecoder* aCloneDonor = nullptr) MOZ_OVERRIDE;
-
-  // Loads the next byte range (or first one on first call). Called on the main
-  // thread only.
-  void LoadNextByteRange();
-
-  // Returns true if the subsegment is already in the media cache.
-  bool IsSubsegmentCached(int32_t aSubsegmentIdx);
-
-  // Calls from DASHRepDecoder. Called on the main thread only.
-  void SetReader(WebMReader* aReader);
-
-  // Called if the media file encounters a network error. Call on the main
-  // thread only.
-  void NetworkError();
-
-  // Called from reader during ReadMetadata. This should be ignored here, and
-  // instead, duration should be set following MPD parsing.
-  void SetMediaDuration(int64_t aDuration) MOZ_OVERRIDE { };
-
-  // Set the duration of the media resource in units of seconds.
-  // This is called via a channel listener if it can pick up the duration
-  // from a content header. Must be called from the main thread only.
-  virtual void SetDuration(double aDuration);
-
-  // Set media stream as infinite. Called on the main thread only.
-  void SetInfinite(bool aInfinite);
-
-  // Sets media stream as seekable. Called on main thread only.
-  void SetMediaSeekable(bool aSeekable);
-
-  // Fire progress events if needed according to the time and byte
-  // constraints outlined in the specification. aTimer is true
-  // if the method is called as a result of the progress timer rather
-  // than the result of downloaded data.
-  void Progress(bool aTimer);
-
-  // Called as data arrives on the stream and is read into the cache.  Called
-  // on the main thread only.
-  void NotifyDataArrived(const char* aBuffer,
-                         uint32_t aLength,
-                         int64_t aOffset);
-
-  // Called by MediaResource when some data has been received.
-  // Call on the main thread only.
-  void NotifyBytesDownloaded();
-
-  // Notify that a byte range request has been completed by the media resource.
-  // Called on the main thread only.
-  void NotifyDownloadEnded(nsresult aStatus);
-
-  // Called asynchronously by |LoadNextByteRange| if the data is already in the
-  // media cache. This will call NotifyDownloadEnded on the main thread with
-  // |aStatus| of NS_OK.
-  void DoNotifyDownloadEnded();
-
-  // Called by MediaResource when the "cache suspended" status changes.
-  // If MediaResource::IsSuspendedByCache returns true, then the decoder
-  // should stop buffering or otherwise waiting for download progress and
-  // start consuming data, if possible, because the cache is full.
-  void NotifySuspendedStatusChanged();
-
-  // Increments the parsed and decoded frame counters by the passed in counts.
-  // Can be called on any thread.
-  void NotifyDecodedFrames(uint32_t aParsed, uint32_t aDecoded) MOZ_OVERRIDE {
-    if (mMainDecoder) {mMainDecoder->NotifyDecodedFrames(aParsed, aDecoded); }
-  }
-
-  // Gets a byte range containing the byte offset. Call on main thread only.
-  nsresult GetByteRangeForSeek(int64_t const aOffset,
-                               MediaByteRange& aByteRange);
-
-  // Gets the number of data byte ranges (not inc. metadata).
-  uint32_t GetNumDataByteRanges() {
-    return mByteRanges.Length();
-  }
-
-  // Notify that a switch is about to happen. Called on the main thread.
-  void PrepareForSwitch();
-
-  // Returns true if the current thread is the state machine thread.
-  bool OnStateMachineThread() const MOZ_OVERRIDE;
-
-  // Returns true if the current thread is the decode thread.
-  bool OnDecodeThread() const MOZ_OVERRIDE;
-
-  // Returns main decoder's monitor for synchronised access.
-  ReentrantMonitor& GetReentrantMonitor() MOZ_OVERRIDE;
-
-  // Called on the decode thread from WebMReader.
-  ImageContainer* GetImageContainer() MOZ_OVERRIDE;
-
-  // Called when Metadata has been read; notifies that index data is read.
-  // Called on the decode thread only.
-  void OnReadMetadataCompleted() MOZ_OVERRIDE;
-
-  // Stop updating the bytes downloaded for progress notifications. Called
-  // when seeking to prevent wild changes to the progress notification.
-  // Must be called with the decoder monitor held.
-  void StopProgressUpdates() MOZ_OVERRIDE;
-
-  // Allow updating the bytes downloaded for progress notifications. Must
-  // be called with the decoder monitor held.
-  void StartProgressUpdates() MOZ_OVERRIDE;
-
-  // Overridden to cleanup ref to |DASHDecoder|. Called on main thread only.
-  void Shutdown() {
-    NS_ASSERTION(NS_IsMainThread(), "Should be on main thread.");
-    // Remove ref to state machine before |MediaDecoder|::|Shutdown|, since
-    // |DASHDecoder| is responsible for its shutdown.
-    mDecoderStateMachine = nullptr;
-    // Call parent class shutdown.
-    MediaDecoder::Shutdown();
-    NS_ENSURE_TRUE_VOID(mShuttingDown);
-    // Cleanup ref to main decoder.
-    mMainDecoder = nullptr;
-  }
-
-  // Drop reference to state machine and mReader (owned by state machine).
-  // Only called during shutdown dance.
-  void ReleaseStateMachine();
-
-  // Notifies the element that decoding has failed.
-  void DecodeError();
-
-private:
-  // Populates |mByteRanges| by calling |GetIndexByteRanges| from |mReader|.
-  // Called on the main thread only.
-  nsresult PopulateByteRanges();
-
-  // The main decoder.
-  nsRefPtr<DASHDecoder> mMainDecoder;
-  // This decoder's MPD |Representation| object.
-  Representation const * mMPDRepresentation;
-
-  // Countdown var for loading metadata byte ranges.
-  uint16_t        mMetadataChunkCount;
-
-  // All the byte ranges for this |Representation|.
-  nsTArray<MediaByteRange> mByteRanges;
-
-  // Byte range for the init and index bytes.
-  MediaByteRange  mInitByteRange;
-  MediaByteRange  mIndexByteRange;
-
-  // The current byte range being requested.
-  MediaByteRange  mCurrentByteRange;
-  // Index of the current byte range. Initialized to -1.
-  int32_t         mSubsegmentIdx;
-
-  // Ptr to the reader object for this |Representation|. Owned by state
-  // machine.
-  DASHRepReader* mReader;
-};
-
-} // namespace mozilla
-
-#endif //DASHRepDecoder_h_
deleted file mode 100644
--- a/content/media/dash/DASHRepReader.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-
-/* 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/. */
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for comments on DASH object interaction
- */
-
-#if !defined(DASHRepReader_h_)
-#define DASHRepReader_h_
-
-#include "VideoUtils.h"
-#include "MediaDecoderReader.h"
-#include "DASHReader.h"
-
-namespace mozilla {
-
-class DASHReader;
-
-class DASHRepReader : public MediaDecoderReader
-{
-public:
-  DASHRepReader(AbstractMediaDecoder* aDecoder)
-    : MediaDecoderReader(aDecoder) { }
-  virtual ~DASHRepReader() { }
-
-  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(DASHRepReader)
-
-  virtual void SetMainReader(DASHReader *aMainReader) = 0;
-
-  // Sets range for initialization bytes; used by DASH.
-  virtual void SetInitByteRange(MediaByteRange &aByteRange) = 0;
-
-  // Sets range for index frame bytes; used by DASH.
-  virtual void SetIndexByteRange(MediaByteRange &aByteRange) = 0;
-
-  // Returns the index of the subsegment which contains the seek time (usecs).
-  virtual int64_t GetSubsegmentForSeekTime(int64_t aSeekToTime) = 0;
-
-  // Returns list of ranges for index frame start/end offsets. Used by DASH.
-  virtual nsresult GetSubsegmentByteRanges(nsTArray<MediaByteRange>& aByteRanges) = 0;
-
-  // Returns true if the reader has reached a DASH switch access point.
-  virtual bool HasReachedSubsegment(uint32_t aSubsegmentIndex) = 0;
-
-  // Requests a seek to the start of a particular DASH subsegment.
-  virtual void RequestSeekToSubsegment(uint32_t aIdx) = 0;
-
-  // Reader should stop reading at the start of the specified subsegment, and
-  // should prepare for the next reader to add data to the video queue.
-  // Should be implemented by a sub-reader, e.g. |nsDASHWebMReader|.
-  virtual void RequestSwitchAtSubsegment(int32_t aCluster,
-                                         MediaDecoderReader* aNextReader) = 0;
-
-  // Returns true if data at the end of the final subsegment has been cached.
-  virtual bool IsDataCachedAtEndOfSubsegments() = 0;
-};
-
-}// namespace mozilla
-
-#endif /*DASHRepReader*/
deleted file mode 100644
--- a/content/media/dash/Makefile.in
+++ /dev/null
@@ -1,19 +0,0 @@
-# -*- Mode: makefile; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- #
-# vim: set ts=2 et sw=2 tw=80: #
-#
-# 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/.
-#
-# Contributor(s):
-#     Steve Workman <sworkman@mozilla.com>
-
-include $(topsrcdir)/config/rules.mk
-
-LOCAL_INCLUDES := \
-  -I$(topsrcdir)/netwerk/dash/mpd \
-  -I$(srcdir)/../webm \
-  -I$(srcdir)/../../base/src \
-  -I$(srcdir)/../../html/content/src \
-  $(MOZ_LIBVPX_INCLUDES) \
-  $(NULL)
deleted file mode 100644
--- a/content/media/dash/moz.build
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- 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/.
-
-MODULE = 'content'
-
-EXPORTS += [
-    'DASHDecoder.h',
-    'DASHReader.h',
-    'DASHRepDecoder.h',
-    'DASHRepReader.h',
-]
-
-SOURCES += [
-    'DASHDecoder.cpp',
-    'DASHReader.cpp',
-    'DASHRepDecoder.cpp',
-]
-
-LIBRARY_NAME = 'gkcondash_s'
-
-LIBXUL_LIBRARY = True
-
--- a/content/media/moz.build
+++ b/content/media/moz.build
@@ -21,19 +21,16 @@ if CONFIG['MOZ_WAVE']:
     PARALLEL_DIRS += ['wave']
 
 if CONFIG['MOZ_WEBM']:
     PARALLEL_DIRS += ['webm']
 
 if CONFIG['MOZ_GSTREAMER']:
     PARALLEL_DIRS += ['gstreamer']
 
-if CONFIG['MOZ_DASH']:
-    PARALLEL_DIRS += ['dash']
-
 if CONFIG['MOZ_DIRECTSHOW']:
     PARALLEL_DIRS += ['directshow']
 
 if CONFIG['MOZ_MEDIA_PLUGINS']:
     PARALLEL_DIRS += ['plugins']
 
 if CONFIG['MOZ_WMF']:
     PARALLEL_DIRS += ['wmf']
--- a/layout/build/Makefile.in
+++ b/layout/build/Makefile.in
@@ -194,22 +194,16 @@ SHARED_LIBRARY_LIBS 	+= \
 	$(DEPTH)/content/media/plugins/$(LIB_PREFIX)gkconmediaplugins_s.$(LIB_SUFFIX) \
 	$(NULL)
 endif
 
 SHARED_LIBRARY_LIBS 	+= \
 	$(DEPTH)/content/media/mediasource/$(LIB_PREFIX)gkconmediasource_s.$(LIB_SUFFIX) \
 	$(NULL)
 
-ifdef MOZ_DASH
-SHARED_LIBRARY_LIBS += \
-  $(DEPTH)/content/media/dash/$(LIB_PREFIX)gkcondash_s.$(LIB_SUFFIX) \
-  $(NULL)
-endif
-
 ifdef MOZ_WEBSPEECH
 SHARED_LIBRARY_LIBS += \
   $(DEPTH)/content/media/webspeech/recognition/$(LIB_PREFIX)gkconwebspeechrecognition_s.$(LIB_SUFFIX) \
   $(DEPTH)/content/media/webspeech/synth/$(LIB_PREFIX)gkconwebspeechsynth_s.$(LIB_SUFFIX) \
   $(NULL)
 endif
 
 ifdef MOZ_SYNTH_PICO
--- a/layout/build/nsContentDLF.h
+++ b/layout/build/nsContentDLF.h
@@ -58,23 +58,16 @@ NS_NewContentDocumentLoaderFactory(nsIDo
 #ifdef MOZ_WEBM
 #define CONTENTDLF_WEBM_CATEGORIES \
     { "Gecko-Content-Viewers", VIDEO_WEBM, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", AUDIO_WEBM, "@mozilla.org/content/document-loader-factory;1" },
 #else
 #define CONTENTDLF_WEBM_CATEGORIES
 #endif
 
-#ifdef MOZ_DASH
-#define CONTENTDLF_DASH_CATEGORIES \
-    { "Gecko-Content-Viewers", APPLICATION_DASH, "@mozilla.org/content/document-loader-factory;1" },
-#else
-#define CONTENTDLF_DASH_CATEGORIES
-#endif
-
 #define CONTENTDLF_CATEGORIES \
     { "Gecko-Content-Viewers", TEXT_HTML, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_PLAIN, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_CACHE_MANIFEST, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_CSS, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_JAVASCRIPT, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_ECMASCRIPT, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", APPLICATION_JAVASCRIPT, "@mozilla.org/content/document-loader-factory;1" }, \
@@ -86,14 +79,13 @@ NS_NewContentDocumentLoaderFactory(nsIDo
     { "Gecko-Content-Viewers", APPLICATION_XML, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", APPLICATION_RDF_XML, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_RDF, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", TEXT_XUL, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", APPLICATION_CACHED_XUL, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", VIEWSOURCE_CONTENT_TYPE, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", IMAGE_SVG_XML, "@mozilla.org/content/document-loader-factory;1" }, \
     { "Gecko-Content-Viewers", APPLICATION_MATHML_XML, "@mozilla.org/content/document-loader-factory;1" }, \
-    CONTENTDLF_WEBM_CATEGORIES \
-    CONTENTDLF_DASH_CATEGORIES
+    CONTENTDLF_WEBM_CATEGORIES
 
 
 #endif
 
--- a/modules/libpref/src/init/all.js
+++ b/modules/libpref/src/init/all.js
@@ -210,19 +210,16 @@ pref("media.ogg.enabled", true);
 pref("media.opus.enabled", true);
 #endif
 #ifdef MOZ_WAVE
 pref("media.wave.enabled", true);
 #endif
 #ifdef MOZ_WEBM
 pref("media.webm.enabled", true);
 #endif
-#ifdef MOZ_DASH
-pref("media.dash.enabled", false);
-#endif
 #ifdef MOZ_GSTREAMER
 pref("media.gstreamer.enabled", true);
 #endif
 #ifdef MOZ_APPLEMEDIA
 pref("media.apple.mp3.enabled", true);
 #endif
 #ifdef MOZ_WEBRTC
 pref("media.navigator.enabled", true);
--- a/netwerk/build/Makefile.in
+++ b/netwerk/build/Makefile.in
@@ -50,21 +50,16 @@ ifdef MOZ_ENABLE_QTNETWORK
         ../system/qt/$(LIB_PREFIX)neckosystem_s.$(LIB_SUFFIX)
 endif
 
 ifeq (android,$(MOZ_WIDGET_TOOLKIT))
     SHARED_LIBRARY_LIBS += \
         ../system/android/$(LIB_PREFIX)neckosystem_s.$(LIB_SUFFIX)
 endif
 
-ifdef MOZ_DASH
-    SHARED_LIBRARY_LIBS += \
-        ../dash/mpd/$(LIB_PREFIX)nkdashmpd_s.$(LIB_SUFFIX)
-endif
-
 LOCAL_INCLUDES = \
   -I$(srcdir)/../base/src \
   -I$(srcdir)/../dns \
   -I$(srcdir)/../socket \
   -I$(srcdir)/../streamconv/src \
   -I$(srcdir)/../streamconv/converters \
   -I$(srcdir)/../mime \
   -I$(srcdir)/../cache \
deleted file mode 100644
--- a/netwerk/dash/moz.build
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- 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/.
-
-PARALLEL_DIRS += ['mpd']
deleted file mode 100644
--- a/netwerk/dash/mpd/AdaptationSet.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * AdaptationSet.cpp
- *****************************************************************************
- * Copyright(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: Jan 27, 2012
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |AdaptationSet|
- *
- * Describes a type of media in a |Period| of time in the media presentation,
- * e.g. an audio or video stream. Direct child of |Period|, which contains 1+
- * available pieces of media, available during that time period.
- * |AdaptationSet| itself contains one or more |Representations| which describe
- * different versions of the media, most commonly different bitrate encodings.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "AdaptationSet.h"
-
-namespace mozilla {
-namespace net {
-
-int32_t
-AdaptationSet::GetWidth() const
-{
-  return mWidth;
-}
-
-void
-AdaptationSet::SetWidth(int32_t const aWidth)
-{
-  mWidth = aWidth;
-}
-
-int32_t
-AdaptationSet::GetHeight() const
-{
-  return mHeight;
-}
-
-void
-AdaptationSet::SetHeight(int32_t const aHeight)
-{
-  mHeight = aHeight;
-}
-
-void
-AdaptationSet::GetMIMEType(nsAString& aMIMEType) const
-{
-  aMIMEType = mMIMEType;
-}
-
-void
-AdaptationSet::SetMIMEType(nsAString const &aMIMEType)
-{
-  NS_ENSURE_FALSE_VOID(aMIMEType.IsEmpty());
-  mMIMEType = aMIMEType;
-}
-
-Representation const *
-AdaptationSet::GetRepresentation(uint32_t aIndex) const
-{
-  NS_ENSURE_TRUE(aIndex < mRepresentations.Length(), nullptr);
-  return mRepresentations[aIndex];
-}
-
-void
-AdaptationSet::AddRepresentation(Representation* aRep)
-{
-  NS_ENSURE_TRUE_VOID(aRep);
-  // Only add if it's not already in the array.
-  if (!mRepresentations.Contains(aRep)) {
-    mRepresentations.InsertElementSorted(aRep, CompareRepresentationBitrates());
-  }
-}
-
-uint16_t
-AdaptationSet::GetNumRepresentations() const
-{
-  return mRepresentations.Length();
-}
-
-void
-AdaptationSet::EnableBitstreamSwitching(bool aEnable)
-{
-  mIsBitstreamSwitching = aEnable;
-}
-
-bool
-AdaptationSet::IsBitstreamSwitchingEnabled() const
-{
-  return mIsBitstreamSwitching;
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/AdaptationSet.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * AdaptationSet.h
- *****************************************************************************
- * Copyright(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: Jan 27, 2012
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |AdaptationSet|
- *
- * Describes a type of media in a |Period| of time in the media presentation,
- * e.g. an audio or video stream. Direct child of |Period|, which contains 1+
- * available pieces of media, available during that time period.
- * |AdaptationSet| itself contains one or more |Representations| which describe
- * different versions of the media, most commonly different bitrate encodings.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#ifndef ADAPTATIONSET_H_
-#define ADAPTATIONSET_H_
-
-#include "nsAutoPtr.h"
-#include "nsString.h"
-#include "nsTArray.h"
-#include "Representation.h"
-
-namespace mozilla {
-namespace net {
-
-class AdaptationSet
-{
-public:
-  AdaptationSet() :
-    mWidth(0),
-    mHeight(0),
-    mIsBitstreamSwitching(false)
-  {
-    MOZ_COUNT_CTOR(AdaptationSet);
-  }
-  virtual ~AdaptationSet() {
-    MOZ_COUNT_DTOR(AdaptationSet);
-  }
-
-  // Setters and getters for @width, @height and @mimetype.
-  int32_t  GetWidth() const;
-  void     SetWidth(int32_t const aWidth);
-  int32_t  GetHeight() const;
-  void     SetHeight(int32_t const aHeight);
-  void     GetMIMEType(nsAString& aMIMEType) const;
-  void     SetMIMEType(nsAString const &aMIMEType);
-
-  // Gets a list of media |Representation| objects for this |AdaptationSet|.
-  Representation const * GetRepresentation(uint32_t) const;
-
-  // Adds a media |Representation| to this |AdaptationSet|. Takes ownership to
-  // manage deletion.
-  void     AddRepresentation(Representation* aRep);
-
-  // Returns the number of media |Representations|.
-  uint16_t GetNumRepresentations() const;
-
-  // En/Dis-ables switching between media |Representation|s.
-  void EnableBitstreamSwitching(bool const aEnable);
-  bool IsBitstreamSwitchingEnabled() const;
-
-private:
-  // Array of media |Representations| to switch between.
-  // Ordered list, ascending in order of bitrates.
-  nsTArray<nsAutoPtr<Representation> >  mRepresentations;
-
-  // @width, height and @mimetype of this media stream.
-  int32_t                    mWidth;
-  int32_t                    mHeight;
-  nsString                   mMIMEType;
-
-  // If true, switching between media |Representation|s is allowed.
-  bool                       mIsBitstreamSwitching;
-};
-}
-}
-
-#endif /* ADAPTATIONSET_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/IMPDManager.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * IMPDManager.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Apr 20, 2011
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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 "nsIDOMElement.h"
-#include "IMPDManager.h"
-#include "nsDASHWebMODManager.h"
-#include "nsDASHWebMODParser.h"
-
-
-namespace mozilla {
-namespace net {
-
-/* static */
-IMPDManager*
-IMPDManager::Create(DASHMPDProfile aProfile, nsIDOMElement* aRoot)
-{
-  switch(aProfile)
-  {
-    case WebMOnDemand:
-      return CreateWebMOnDemandManager(aRoot);
-    default:
-      return nullptr;
-  }
-}
-
-/* static */
-IMPDManager*
-IMPDManager::CreateWebMOnDemandManager(nsIDOMElement* aRoot)
-{
-  // Parse DOM elements into MPD objects.
-  nsDASHWebMODParser parser(aRoot);
-
-  return new nsDASHWebMODManager(parser.Parse());
-}
-
-
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/IMPDManager.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts =2 et sw =2 tw =80: */
-/*
- * IMPDManager.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- * Media Presentation Description (MPD) Manager.
- *
- * Interface to MPD classes, populated with data from MPD XML manifest.
- * Employs adaptation algorithm to determine best representation of media to
- * download.
- *   Adaptation algorithm is separate and passed into manager.
- *   Interface aims to be an abstracted API for all DASH MPD Profiles
- *     (e.g. DASH WebM On Demand Profile).
- */
-
-#ifndef IMPDMANAGER_H_
-#define IMPDMANAGER_H_
-
-#include "nsTArray.h"
-#include "nsIURI.h"
-#include "nsIDOMElement.h"
-
-namespace mozilla {
-namespace net {
-
-// DASH MPD Profile Type
-enum DASHMPDProfile
-{
-  WebMOnDemand,
-  NotValid
-  // Extend this for other types.
-};
-
-class Period;
-class Representation;
-class Segment;
-
-class IMPDManager
-{
-public:
-  // Describes the media type (audio/video) of the |AdaptationSet|.
-  enum AdaptationSetType {
-    DASH_ASTYPE_INVALID = 0,
-    DASH_VIDEO_STREAM,
-    DASH_AUDIO_STREAM,
-    DAHS_AUDIO_VIDEO_STREAM
-  };
-  IMPDManager()
-  {
-    MOZ_COUNT_CTOR(IMPDManager);
-  }
-
-  virtual ~IMPDManager()
-  {
-    MOZ_COUNT_DTOR(IMPDManager);
-  }
-
-  // Used to get the first |Period| in the presentation.
-  virtual Period const * GetFirstPeriod() const = 0;
-
-  // Gets the total number of |AdaptationSet|s in the first |Period|.
-  // Usually, this should be 2 for audio and video.
-  // XXX Future versions may require a |Period| index.
-  // XXX Future versions may have multiple tracks for audio.
-  virtual uint32_t GetNumAdaptationSets() const = 0;
-
-  // Returns the media type for the given |AdaptationSet|, audio/video.
-  virtual AdaptationSetType
-          GetAdaptationSetType(uint32_t const aAdaptSetIdx) const = 0;
-
-  // Gets the number of media |Representation|s for the given |AdaptationSet|.
-  // e.g how many bitrate encodings are there of the audio stream?
-  virtual uint32_t
-          GetNumRepresentations(uint32_t const aAdaptSetIdx) const = 0;
-
-  // Gets the specified |Representation| from the specified |AdaptationSet|,
-  // e.g. get metadata about the 64Kbps encoding of the video stream.
-  virtual Representation const *
-          GetRepresentation(uint32_t const aAdaptSetIdx,
-                            uint32_t const aRepIdx) const = 0;
-
-  // Gets the URL of the first media |Segment| for the specific media
-  // |Representation|, e.g. the url of the first 64Kbps video segment.
-  virtual nsresult GetFirstSegmentUrl(uint32_t const aAdaptSetIdx,
-                                      uint32_t const aRepIdx,
-                                      nsAString &aUrl) const = 0;
-
-  // Returns the start time of the presentation in seconds.
-  virtual double GetStartTime() const = 0;
-
-  // Returns the duration of the presentation in seconds.
-  virtual double GetDuration() const = 0;
-
-  // Gets index of the |Representation| with next highest bitrate to the
-  // estimated bandwidth passed in. Returns true if there is at least one
-  // |Representation| with a bitrate lower than |aBandwidth|; otherwise returns
-  // false. Depends on |mRepresentations| being an ordered list.
-  virtual bool GetBestRepForBandwidth(uint32_t aAdaptSetIdx,
-                                      uint64_t aBandwidth,
-                                      uint32_t &aRepIdx) const = 0;
-public:
-  // Factory method.
-  static IMPDManager* Create(DASHMPDProfile Profile, nsIDOMElement* aRoot);
-
-private:
-  // Used by factory method.
-  static IMPDManager* CreateWebMOnDemandManager(nsIDOMElement* aRoot);
-};
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* IMPDMANAGER_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/IMPDParser.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * IMPDParser.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- * Media Presentation Description (MPD) Parser.
- *
- * Interface to MPD parser. Derived classes parse MPD XML manifest and populate
- * MPD classes for use by MPD Manager.
- * Interface aims to be an abstracted API for all DASH MPD Profiles
- *     (e.g. DASH WebM On Demand Profile).
- */
-
-#ifndef IMPDPARSER_H_
-#define IMPDPARSER_H_
-
-#include "MPD.h"
-
-namespace mozilla {
-namespace net {
-
-class IMPDParser
-{
-public:
-  // Parses XML file to create and populate MPD classes.
-  // Called by MPD Manager.
-  virtual MPD* Parse() = 0;
-};
-
-}// namespace net
-}// namespace mozilla
-
-#endif /* IMPDPARSER_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/MPD.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * MPD.cpp
- *****************************************************************************
- * Copyright(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |MPD| - Media Presentation Description
- *
- * Describes the media presentation. Top of the hierarchy in an MPD file.
- * Contains one or a series of contiguous |Period|s, which contain 1+ available
- * pieces of media, available during that time period, e.g. audio in various
- * languages, a video component.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "nsTArray.h"
-#include "MPD.h"
-
-
-namespace mozilla {
-namespace net {
-
-void
-MPD::AddPeriod(Period* aPeriod)
-{
-  NS_ENSURE_TRUE_VOID(aPeriod);
-  // Only add |Period| if it's not in the array already.
-  if (!mPeriods.Contains(aPeriod)) {
-    mPeriods.AppendElement(aPeriod);
-  }
-}
-
-Period const *
-MPD::GetPeriod(uint32_t aIndex) const
-{
-  NS_ENSURE_TRUE(aIndex < mPeriods.Length(), nullptr);
-  return mPeriods[aIndex];
-}
-
-uint32_t const
-MPD::GetNumPeriods() const
-{
-  return mPeriods.Length();
-}
-
-void
-MPD::AddBaseUrl(nsAString const& aUrl)
-{
-  NS_ENSURE_FALSE_VOID(aUrl.IsEmpty());
-  // Only add |BaseUrl| string if it's not in the array already.
-  if (!mBaseUrls.Contains(aUrl)) {
-    mBaseUrls.AppendElement(aUrl);
-  }
-}
-
-nsAString const&
-MPD::GetBaseUrl(uint32_t aIndex) const
-{
-  NS_ENSURE_TRUE(aIndex < mBaseUrls.Length(), NS_LITERAL_STRING(""));
-  return mBaseUrls[aIndex];
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/MPD.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * MPD.h
- *****************************************************************************
- * Copyright(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |MPD| - Media Presentation Description
- *
- * Describes the media presentation. Top of the hierarchy in an MPD file.
- * Contains one or a series of contiguous |Period|s, which contain 1+ available
- * pieces of media, available during that time period, e.g. audio in various
- * languages, a video component.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#ifndef MPD_H_
-#define MPD_H_
-
-#include "nsTArray.h"
-#include "nsString.h"
-#include "Period.h"
-
-namespace mozilla {
-namespace net {
-
-class MPD
-{
-public:
-  MPD()
-  {
-    MOZ_COUNT_CTOR(MPD);
-  }
-  virtual ~MPD() {
-    MOZ_COUNT_DTOR(MPD);
-  }
-
-  // At least one media content |Period|s per Media Presentation. The |MPD|
-  // contains 1+ available pieces of media, available during that time period
-  // e.g. audio in various languages, a video component.
-  // |MPD| takes ownership of |Period| in |AddPeriod| and will manage deletion.
-  void           AddPeriod(Period* aPeriod);
-  Period const * GetPeriod(uint32_t aIndex) const;
-  uint32_t const GetNumPeriods() const;
-
-  // Adds/Gets an absolute/relative |BaseURL| for the whole document.
-  // Note: A relative |BaseURL| for the whole document will use the URL for the
-  // MPD file itself as base.
-  void             AddBaseUrl(nsAString const& aUrl);
-  nsAString const& GetBaseUrl(uint32_t aIndex) const;
-  bool             HasBaseUrls() { return !mBaseUrls.IsEmpty(); }
-
-private:
-  // List of media content |Period|s in this media presentation.
-  nsTArray<nsAutoPtr<Period> > mPeriods;
-
-  // List of |BaseURL|s which can be used to access the media.
-  nsTArray<nsString> mBaseUrls;
-};
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* MPD_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/Makefile.in
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- Mode: makefile; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- #
-# vim: set ts=2 et sw=2 tw=80: #
-#
-# 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/.
-#
-# Contributor(s):
-#     Steve Workman <sworkman@mozilla.com>
-
-LOCAL_INCLUDES := \
-  -I$(topsrcdir)/content/base/src \
-  -I$(topsrcdir)/content/html/content/public \
-  -I$(topsrcdir)/content/html/content/src \
-  $(NULL)
deleted file mode 100644
--- a/netwerk/dash/mpd/Period.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * Period.cpp
- *****************************************************************************
- * Copyright(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |Period|
- *
- * Describes a period of time in the media presentation. Direct child of |MPD|.
- * Alone, or one of a series of contiguous |Period|s, which contain 1+ available
- * pieces of media, available during that time period, e.g. audio in various
- * languages, a video component.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "nsAutoPtr.h"
-#include "nsTArray.h"
-#include "Period.h"
-
-namespace mozilla {
-namespace net {
-
-AdaptationSet const *
-Period::GetAdaptationSet(uint32_t aIndex) const
-{
-  NS_ENSURE_TRUE(aIndex < mAdaptationSets.Length(), nullptr);
-  return mAdaptationSets[aIndex];
-}
-
-void
-Period::AddAdaptationSet(AdaptationSet* aAdaptationSet)
-{
-  NS_ENSURE_TRUE_VOID(aAdaptationSet);
-  // Only add |AdaptationSet| ptr if it's not in the array already.
-  if (!mAdaptationSets.Contains(aAdaptationSet)) {
-    mAdaptationSets.AppendElement(aAdaptationSet);
-  }
-}
-
-uint16_t const
-Period::GetNumAdaptationSets() const
-{
-  return mAdaptationSets.Length();
-}
-
-double const
-Period::GetStart() const
-{
-  return mStart;
-}
-
-double const
-Period::GetDuration() const
-{
-  return mDuration;
-}
-
-void
-Period::SetStart(double const aStart)
-{
-  mStart = aStart;
-}
-
-void
-Period::SetDuration(double const aDuration)
-{
-  mDuration = aDuration;
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/Period.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * Period.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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 PERIOD_H_
-#define PERIOD_H_
-
-#include "nsTArray.h"
-#include "AdaptationSet.h"
-#include "Representation.h"
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |Period|
- *
- * Describes a period of time in the media presentation. Direct child of |MPD|.
- * Alone, or one of a series of contiguous |Period|s, which contain 1+ available
- * pieces of media, available during that time period, e.g. audio in various
- * languages, a video component.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "nsAutoPtr.h"
-
-namespace mozilla {
-namespace net {
-
-class Period
-{
-public:
-  Period()
-  {
-    MOZ_COUNT_CTOR(Period);
-  }
-  virtual ~Period() {
-    MOZ_COUNT_DTOR(Period);
-  }
-
-  // Gets/Adds |AdaptationSet|s of media for this media content |Period|.
-  AdaptationSet const * GetAdaptationSet(uint32_t aIndex) const;
-  // |Period| takes ownership of |AdaptationSet| here and will manage deletion.
-  void                  AddAdaptationSet(AdaptationSet* aAdaptationSet);
-
-  // Returns the num. of |AdaptationSet|s in this media content |Period|.
-  uint16_t const        GetNumAdaptationSets() const;
-
-  // Gets/Sets the start time of this media content |Period| in seconds.
-  double const GetStart() const;
-  void SetStart(double const aStart);
-
-  // Gets/Sets the duration of this media content |Period| in seconds.
-  double const GetDuration() const;
-  void SetDuration(double const aDuration);
-
-private:
-  // List of |AdaptationSet|s of media in this |Period|.
-  nsTArray<nsAutoPtr<AdaptationSet> > mAdaptationSets;
-
-  // Start time in seconds for this |Period|.
-  double mStart;
-
-  // Duration in seconds for this |Period|.
-  double mDuration;
-};
-
-}//namespace net
-}//namespace mozilla
-
-
-#endif /* PERIOD_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/Representation.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * Representation.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |Representation|
- *
- * Describes a particular version of a piece of media described in an
- * |AdaptationSet|, a common example being a particular bitrate encoding for an
- * audio or video stream. Direct child of |AdaptationSet|, which contains 1+
- * available |Representation|s of the media.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "nsTArray.h"
-#include "Representation.h"
-
-namespace mozilla {
-namespace net {
-
-int64_t const
-Representation::GetBitrate() const
-{
-  return mBitrate;
-}
-
-void
-Representation::SetBitrate(int64_t aBitrate)
-{
-  mBitrate = aBitrate;
-}
-
-void
-Representation::SetWidth(int32_t const aWidth)
-{
-  mWidth = aWidth;
-}
-
-int32_t const
-Representation::GetWidth() const
-{
-  return mWidth;
-}
-
-void
-Representation::SetHeight(int32_t aHeight)
-{
-  mHeight = aHeight;
-}
-
-int32_t const
-Representation::GetHeight() const
-{
-  return mHeight;
-}
-
-void
-Representation::AddBaseUrl(nsAString const& aUrl)
-{
-  NS_ENSURE_FALSE_VOID(aUrl.IsEmpty());
-  // Only add if it's not already in the array.
-  if (!mBaseUrls.Contains(aUrl)) {
-    mBaseUrls.AppendElement(aUrl);
-  }
-}
-
-nsAString const &
-Representation::GetBaseUrl(uint32_t aIndex) const
-{
-  NS_ENSURE_TRUE(aIndex < mBaseUrls.Length(), NS_LITERAL_STRING(""));
-  return mBaseUrls[aIndex];
-}
-
-SegmentBase const*
-Representation::GetSegmentBase() const
-{
-  return mSegmentBase;
-}
-
-void
-Representation::SetSegmentBase(SegmentBase* aBase)
-{
-  NS_ENSURE_TRUE_VOID(aBase);
-  // Don't reassign if the ptrs or contents are equal.
-  if (mSegmentBase != aBase
-      || (mSegmentBase && (*mSegmentBase != *aBase))) {
-    mSegmentBase = aBase;
-  }
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/Representation.h
+++ /dev/null
@@ -1,137 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * Representation.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |Representation|
- *
- * Describes a particular version of a piece of media described in an
- * |AdaptationSet|, a common example being a particular bitrate encoding for an
- * audio or video stream. Direct child of |AdaptationSet|, which contains 1+
- * available |Representation|s of the media.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#ifndef REPRESENTATION_H_
-#define REPRESENTATION_H_
-
-#include "nsAutoPtr.h"
-#include "nsString.h"
-#include "nsTArray.h"
-#include "SegmentBase.h"
-
-namespace mozilla {
-namespace net {
-
-class Representation
-{
-public:
-  Representation() :
-    mBitrate(0),
-    mWidth(0),
-    mHeight(0),
-    mSegmentBase(nullptr)
-  {
-    MOZ_COUNT_CTOR(Representation);
-  }
-  virtual ~Representation() {
-    MOZ_COUNT_DTOR(Representation);
-  }
-
-  bool operator<(const Representation &other) const {
-    return this->mBitrate < other.mBitrate;
-  }
-
-  // Gets/Sets @bitrate in kbps.
-  int64_t const    GetBitrate() const;
-  void             SetBitrate(int64_t const aBitrate);
-
-  // Gets/Sets @width and @height for the media if it's video.
-  void             SetWidth(int32_t const aWidth);
-  int32_t const    GetWidth() const;
-  void             SetHeight(int32_t const aHeight);
-  int32_t const    GetHeight() const;
-
-  // Gets/Adds a |BaseURL| for the media files.
-  void             AddBaseUrl(nsAString const& aUrl);
-  nsAString const& GetBaseUrl(uint32_t aIndex) const;
-  bool             HasBaseUrls() const { return !mBaseUrls.IsEmpty(); }
-
-  // Gets/Sets a base |Segment| for the |Representation|.
-  SegmentBase const* GetSegmentBase() const;
-  // Takes ownership of |SegmentBase| to manage deletion.
-  void               SetSegmentBase(SegmentBase* aBase);
-
-private:
-  // Bitrate of the media in kbps.
-  int64_t mBitrate;
-
-  // Width and height of the media if video.
-  int32_t mWidth;
-  int32_t mHeight;
-
-  // List of absolute/relative |BaseURL|s which may be used to access the media.
-  nsTArray<nsString> mBaseUrls;
-
-  // The base |Segment| for the |Representation|.
-  nsAutoPtr<SegmentBase> mSegmentBase;
-};
-
-// Comparator allows comparing |Representation|s based on media stream bitrate.
-class CompareRepresentationBitrates
-{
-public:
-  // Returns true if the elements are equals; false otherwise.
-  // Note: |Representation| is stored as an array of |nsAutoPtr| in
-  // |AdaptationSet|, but needs to be compared to regular pointers.
-  // Hence the left hand side of the function being an
-  // |nsAutoPtr| and the right being a regular pointer.
-  bool Equals(const nsAutoPtr<Representation>& a,
-              const Representation *b) const {
-    return a == b;
-  }
-
-  // Returns true if (a < b); false otherwise.
-  // Note: |Representation| is stored as an array of |nsAutoPtr| in
-  // |AdaptationSet|, but needs to be compared to regular pointers.
-  // Hence the left hand side of the function being an
-  // |nsAutoPtr| and the right being a regular pointer.
-  bool LessThan(const nsAutoPtr<Representation>& a,
-                const Representation *b) const {
-    return *a < *b;
-  }
-};
-
-}//namespace net
-}//namespace mozilla
-
-
-#endif /* REPRESENTATION_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/SegmentBase.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * SegmentBase.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: Jan 27, 2012
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
-
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |SegmentBase|
- *
- * Describes common initialization information for |Segment|s in a
- * |Representation|.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#include "nsString.h"
-#include "SegmentBase.h"
-
-
-namespace mozilla {
-namespace net {
-
-void
-SegmentBase::GetIndexRange(int64_t* aStartBytes, int64_t* aEndBytes) const
-{
-  NS_ENSURE_TRUE_VOID(aStartBytes);
-  NS_ENSURE_TRUE_VOID(aEndBytes);
-  *aStartBytes = mIndexRangeStart;
-  *aEndBytes = mIndexRangeEnd;
-}
-
-void
-SegmentBase::GetInitRange(int64_t* aStartBytes, int64_t* aEndBytes) const
-{
-  NS_ENSURE_TRUE_VOID(aStartBytes);
-  NS_ENSURE_TRUE_VOID(aEndBytes);
-  *aStartBytes = mInitRangeStart;
-  *aEndBytes = mInitRangeEnd;
-}
-
-void
-SegmentBase::SetIndexRange(nsAString const &aRangeStr)
-{
-  SetRange(aRangeStr, mIndexRangeStart, mIndexRangeEnd);
-}
-
-void
-SegmentBase::SetInitRange(nsAString const &aRangeStr)
-{
-  SetRange(aRangeStr, mInitRangeStart, mInitRangeEnd);
-}
-
-void
-SegmentBase::SetRange(nsAString const &aRangeStr,
-                      int64_t &aStart,
-                      int64_t &aEnd)
-{
-  NS_ENSURE_TRUE_VOID(!aRangeStr.IsEmpty());
-
-  nsAString::const_iterator start, end, dashStart, dashEnd;
-
-  aRangeStr.BeginReading(start);
-  aRangeStr.EndReading(end);
-  dashStart = start;
-  dashEnd = end;
-
-  if (FindInReadable(NS_LITERAL_STRING("-"), dashStart, dashEnd)) {
-    nsAutoString temp(Substring(start, dashStart));
-    nsresult rv;
-    aStart = temp.ToInteger64(&rv);
-    NS_ENSURE_SUCCESS_VOID(rv);
-
-    temp = Substring(dashEnd, end);
-    aEnd = temp.ToInteger64(&rv);
-    NS_ENSURE_SUCCESS_VOID(rv);
-  }
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/SegmentBase.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * SegmentBase.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: Jan 27, 2012
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * |SegmentBase|
- *
- * Describes common initialization information for |Segment|s in a
- * |Representation|.
- *
- * Common class used by all DASH Profiles.
- * Populated by implementation of MPD Parser.
- * Used as data source by implementation of MPD Manager.
- *
- * |MPD|
- *  --> |Period|s of time.
- *       --> |AdaptationSet|s for each type or group of media content.
- *            --> |Representation|s of media, encoded with different bitrates.
- *                 --> |Segment|s of media, identified by URL (+optional byte
- *                     range.
- */
-
-#ifndef SEGMENTBASE_H_
-#define SEGMENTBASE_H_
-
-#include "nsString.h"
-
-namespace mozilla {
-namespace net {
-
-class SegmentBase
-{
-public:
-  SegmentBase() :
-    mInitRangeStart(0),
-    mInitRangeEnd(0),
-    mIndexRangeStart(0),
-    mIndexRangeEnd(0)
-  {
-    MOZ_COUNT_CTOR(SegmentBase);
-  }
-  virtual ~SegmentBase()
-  {
-    MOZ_COUNT_DTOR(SegmentBase);
-  }
-
-  bool operator==(SegmentBase const & other) const {
-    return (mInitRangeStart == other.mInitRangeStart
-            && mInitRangeEnd == other.mInitRangeEnd
-            && mIndexRangeStart == other.mIndexRangeStart
-            && mIndexRangeEnd == other.mIndexRangeEnd);
-  }
-  bool operator!=(SegmentBase const & other) const {
-    return !(*this == other);
-  }
-
-  // Get/Set the byte range for the initialization bytes.
-  void GetInitRange(int64_t* aStartBytes, int64_t* aEndBytes) const;
-  void SetInitRange(nsAString const &aRangeStr);
-
-  // Get/Set the byte range for the index bytes.
-  void GetIndexRange(int64_t* aStartBytes, int64_t* aEndBytes) const;
-  void SetIndexRange(nsAString const &aRangeStr);
-
-private:
-  // Parses the string to get a start and end value.
-  void SetRange(nsAString const &aRangeStr, int64_t &aStart, int64_t &aEnd);
-
-  // Start and end values for the init byte range.
-  int64_t mInitRangeStart;
-  int64_t mInitRangeEnd;
-
-  // Start and end values for the index byte range.
-  int64_t mIndexRangeStart;
-  int64_t mIndexRangeEnd;
-};
-
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* SEGMENTBASE_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/moz.build
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- 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/.
-
-MODULE = 'necko'
-
-SOURCES += [
-    'AdaptationSet.cpp',
-    'IMPDManager.cpp',
-    'MPD.cpp',
-    'nsDASHMPDParser.cpp',
-    'nsDASHWebMODManager.cpp',
-    'nsDASHWebMODParser.cpp',
-    'Period.cpp',
-    'Representation.cpp',
-    'SegmentBase.cpp',
-]
-
-LIBRARY_NAME = 'nkdashmpd_s'
-
-LIBXUL_LIBRARY = True
-
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHMPDParser.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHMPDParser.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.
- */
-
-#include "prlog.h"
-#include "nsNetUtil.h"
-#include "nsIDOMAttr.h"
-#include "nsIDOMDocument.h"
-#include "nsIDOMElement.h"
-#include "nsIDOMParser.h"
-#include "nsIDOMMozNamedAttrMap.h"
-#include "nsIDOMNode.h"
-#include "nsString.h"
-#include "IMPDManager.h"
-#include "nsDASHMPDParser.h"
-
-#if defined(PR_LOGGING)
-static PRLogModuleInfo* gDASHMPDParserLog = nullptr;
-#define LOG(msg, ...) PR_LOG(gDASHMPDParserLog, PR_LOG_DEBUG, \
-                             ("%p [nsDASHMPDParser] " msg, this, __VA_ARGS__))
-#define LOG1(msg) PR_LOG(gDASHMPDParserLog, PR_LOG_DEBUG, \
-                         ("%p [nsDASHMPDParser] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-namespace mozilla {
-namespace net {
-
-nsDASHMPDParser::nsDASHMPDParser(char*         aMPDData,
-                                 uint32_t      aDataLength,
-                                 nsIPrincipal* aPrincipal,
-                                 nsIURI*       aURI) :
-  mData(aMPDData),
-  mDataLength(aDataLength),
-  mPrincipal(aPrincipal),
-  mURI(aURI)
-{
-  MOZ_COUNT_CTOR(nsDASHMPDParser);
-#if defined(PR_LOGGING)
-  if(!gDASHMPDParserLog)
-    gDASHMPDParserLog = PR_NewLogModule("nsDASHMPDParser");
-#endif
-}
-
-nsDASHMPDParser::~nsDASHMPDParser()
-{
-  MOZ_COUNT_DTOR(nsDASHMPDParser);
-}
-
-
-nsresult
-nsDASHMPDParser::Parse(IMPDManager**    aMPDManager,
-                       DASHMPDProfile*  aProfile)
-{
-  NS_ENSURE_ARG(aMPDManager);
-  NS_ENSURE_ARG(aProfile);
-  NS_ENSURE_TRUE(mData, NS_ERROR_NOT_INITIALIZED);
-  NS_ENSURE_TRUE(mPrincipal, NS_ERROR_NOT_INITIALIZED);
-  NS_ENSURE_TRUE(mURI, NS_ERROR_NOT_INITIALIZED);
-
-#ifdef PR_LOGGING
-  {
-    nsAutoCString spec;
-    nsresult rv = mURI->GetSpec(spec);
-    if (NS_FAILED(rv)) {
-      LOG1("Preparing to parse MPD: cannot get spec from URI");
-    } else {
-      LOG("Preparing to parse MPD: mURI:\"%s\"", spec.get());
-    }
-  }
-#endif
-
-  // Get mDoc element from mData buffer using DOMParser.
-  nsCOMPtr<nsIDOMParser> DOMParser;
-  DOMParser = do_CreateInstance(NS_DOMPARSER_CONTRACTID);
-  nsresult rv = DOMParser->Init(mPrincipal, mURI, nullptr, nullptr);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  nsCOMPtr<nsIDOMDocument> doc;
-  rv = DOMParser->ParseFromBuffer(reinterpret_cast<uint8_t const *>(mData.get()),
-                                  mDataLength,
-                                  "application/xml",
-                                  getter_AddRefs(doc));
-  NS_ENSURE_SUCCESS(rv, rv);
-  if(!doc) {
-    LOG1("ERROR! Document not parsed as XML!");
-    return NS_ERROR_NO_INTERFACE;
-  }
-  // Use root node to create MPD manager.
-  nsCOMPtr<nsIDOMElement> root;
-  rv = doc->GetDocumentElement(getter_AddRefs(root));
-  NS_ENSURE_SUCCESS(rv, rv);
-  NS_ENSURE_TRUE(root, NS_ERROR_NULL_POINTER);
-#ifdef PR_LOGGING
-  PrintDOMElements(root);
-#endif
-  rv = GetProfile(root, *aProfile);
-  NS_ENSURE_SUCCESS(rv, rv);
-  *aMPDManager = IMPDManager::Create(*aProfile, root);
-  NS_ENSURE_TRUE(*aMPDManager, NS_ERROR_NULL_POINTER);
-
-  // Get profile.
-  return rv;
-}
-
-void
-nsDASHMPDParser::PrintDOMElement(nsIDOMElement* aElem, int32_t offset)
-{
-  // Populate string ss and then print to LOG().
-  nsAutoString ss;
-  // Indent.
-  for(int32_t i = 0; i < offset; i++)
-    ss.Append(NS_LITERAL_STRING(" "));
-  // Tag name.
-  nsAutoString tagName;
-  NS_ENSURE_SUCCESS_VOID(aElem->GetTagName(tagName));
-  ss += NS_LITERAL_STRING("<");
-  ss += tagName;
-
-  // Attributes.
-  nsCOMPtr<nsIDOMMozNamedAttrMap> attributes;
-  NS_ENSURE_SUCCESS_VOID(aElem->GetAttributes(getter_AddRefs(attributes)));
-
-  uint32_t count;
-  NS_ENSURE_SUCCESS_VOID(attributes->GetLength(&count));
-
-  for(uint32_t i = 0; i < count; i++)
-  {
-    ss += NS_LITERAL_STRING(" ");
-    nsCOMPtr<nsIDOMAttr> attr;
-    NS_ENSURE_SUCCESS_VOID(attributes->Item(i, getter_AddRefs(attr)));
-
-    nsAutoString name;
-    NS_ENSURE_SUCCESS_VOID(attr->GetName(name));
-    ss += name;
-
-    nsAutoString value;
-    NS_ENSURE_SUCCESS_VOID(attr->GetValue(value));
-    if (!value.IsEmpty()) {
-      ss += NS_LITERAL_STRING("=");
-      ss += value;
-    }
-  }
-  ss += NS_LITERAL_STRING(">");
-  LOG("%s", NS_ConvertUTF16toUTF8(ss).get());
-
-  offset++;
-
-  // Print for each child.
-  nsCOMPtr<nsIDOMElement> child;
-  NS_ENSURE_SUCCESS_VOID(aElem->GetFirstElementChild(getter_AddRefs(child)));
-
-  while(child)
-  {
-    PrintDOMElement(child, offset);
-    NS_ENSURE_SUCCESS_VOID(child->GetNextElementSibling(getter_AddRefs(child)));
-  }
-}
-
-
-void
-nsDASHMPDParser::PrintDOMElements(nsIDOMElement* aRoot)
-{
-  NS_ENSURE_TRUE_VOID(aRoot);
-
-  DASHMPDProfile profile;
-  NS_ENSURE_SUCCESS_VOID(GetProfile(aRoot, profile));
-  LOG("Profile Is %d",(int32_t)profile);
-  PrintDOMElement(aRoot, 0);
-}
-
-
-nsresult
-nsDASHMPDParser::GetProfile(nsIDOMElement* aRoot,
-                            DASHMPDProfile &aProfile)
-{
-  NS_ENSURE_ARG(aRoot);
-
-  nsAutoString profileStr;
-  nsresult rv = aRoot->GetAttribute(NS_LITERAL_STRING("profiles"), profileStr);
-  LOG("profileStr: %s", NS_ConvertUTF16toUTF8(profileStr).get());
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  if (profileStr
-      == NS_LITERAL_STRING("urn:webm:dash:profile:webm-on-demand:2012")) {
-    aProfile = WebMOnDemand;
-  } else {
-    aProfile = NotValid;
-  }
-  return NS_OK;
-}
-
-
-}// namespace net
-}// namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHMPDParser.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHMPDParser.h
- *****************************************************************************
- * Copyright(C) 2010 - 2011 Klagenfurt University
- *
- * Created on: Aug 10, 2010
- * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Contributors:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * see DASHDecoder.cpp for info on DASH interaction with the media engine.
- */
-
-#ifndef __DASHMPDPARSER_H__
-#define __DASHMPDPARSER_H__
-
-#include "nsAutoPtr.h"
-#include "nsNetUtil.h"
-#include "nsIPrincipal.h"
-#include "nsIDOMElement.h"
-#include "IMPDManager.h"
-
-namespace mozilla {
-namespace net {
-
-class nsDASHMPDParser
-{
-public:
-  // Constructor takes pointer to MPD byte stream and length, as well as the
-  // current principal and URI from which the MPD download took place.
-  // Ownership of |aMPDData| should be transferred to this object.
-  nsDASHMPDParser(char*         aMPDData,
-                  uint32_t      aDataLength,
-                  nsIPrincipal* aPrincipal,
-                  nsIURI*       aURI);
- 
-  ~nsDASHMPDParser();
-
-  // Parses the MPD byte stream passed in the constructor.
-  // Returns a pointer to the MPDManager and the MPD profile type.
-  nsresult  Parse(IMPDManager**   aMPDManager,
-                  DASHMPDProfile* aProfile);
-private:
-  // Returns the MPD profile type given the DOM node for the root.
-  nsresult  GetProfile(nsIDOMElement* aRoot,
-                       DASHMPDProfile &profile);
-  // Debug: Prints the DOM elements.
-  void      PrintDOMElements(nsIDOMElement* aRoot);
-  // Debug: Prints a single DOM element.
-  void      PrintDOMElement(nsIDOMElement* aElem, int32_t aOffset);
-
-  // Pointer to the MPD byte stream.
-  nsAutoPtr<char const>   mData;
-  // Length in bytes of the MPD stream.
-  uint32_t                mDataLength;
-  // Principal of the document.
-  nsCOMPtr<nsIPrincipal>  mPrincipal;
-  // URI of the MPD Document downloaded.
-  nsCOMPtr<nsIURI>        mURI;
-};
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* __DASHMPDPARSER_H__ */
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHWebMODManager.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHWebMODManager.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: May 1, 2012
- * Based on IsoffMainManager.cpp by:
- *          Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Author:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- * Media Presentation Description (MPD) Manager for WebM On Demand Profile.
- *
- * Implements MPD Manager interface to use Adaptation Algorithm to determine
- * which stream to download from WebM On Demand-based MPD.
- *
- *   Note: Adaptation algorithm is separate and passed into manager.
- */
-
-#include "nsTArray.h"
-#include "nsMimeTypes.h"
-#include "nsNetUtil.h"
-#include "prlog.h"
-#include "SegmentBase.h"
-#include "nsDASHWebMODManager.h"
-
-namespace mozilla {
-namespace net {
-
-#if defined(PR_LOGGING)
-static PRLogModuleInfo* gnsDASHWebMODManagerLog = nullptr;
-#define LOG(msg, ...) \
-        PR_LOG(gnsDASHWebMODManagerLog, PR_LOG_DEBUG, \
-               ("%p [nsDASHWebMODManager] " msg, this, __VA_ARGS__))
-#define LOG1(msg) PR_LOG(gDASHMPDParserLog, PR_LOG_DEBUG, \
-                         ("%p [nsDASHWebMODManager] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-nsDASHWebMODManager::nsDASHWebMODManager(MPD* aMpd)
-{
-  MOZ_COUNT_CTOR(nsDASHWebMODManager);
-  NS_ENSURE_TRUE_VOID(aMpd);
-  mMpd = aMpd;
-#if defined(PR_LOGGING)
-  if(!gnsDASHWebMODManagerLog)
-    gnsDASHWebMODManagerLog = PR_NewLogModule("nsDASHWebMODManager");
-#endif
-  LOG("Created nsDASHWebMODManager with mMpd(%p)", mMpd.get());
-}
-
-nsDASHWebMODManager::~nsDASHWebMODManager()
-{
-  MOZ_COUNT_DTOR(nsDASHWebMODManager);
-}
-
-
-Period const *
-nsDASHWebMODManager::GetFirstPeriod() const
-{
-  NS_ENSURE_TRUE(mMpd, nullptr);
-  NS_ENSURE_TRUE(0 < mMpd->GetNumPeriods(), nullptr);
-  return mMpd->GetPeriod(0);
-}
-
-nsresult
-nsDASHWebMODManager::GetFirstSegmentUrl(uint32_t const aAdaptSetIdx,
-                                        uint32_t const aRepIdx,
-                                        nsAString &aUrl) const
-{
-  NS_ENSURE_TRUE(mMpd, NS_ERROR_NULL_POINTER);
-  // Append base URL for MPD.
-  if (mMpd->HasBaseUrls()) {
-    aUrl.Append(mMpd->GetBaseUrl(0));
-    LOG("BaseUrl \"%s\"", NS_ConvertUTF16toUTF8(aUrl).get());
-  }
-
-  // Append base URL for Representation.
-  AdaptationSet const * adaptSet = GetAdaptationSet(aAdaptSetIdx);
-  NS_ENSURE_TRUE(adaptSet, NS_ERROR_NULL_POINTER);
-
-  NS_ENSURE_TRUE(aRepIdx < adaptSet->GetNumRepresentations(),
-                 NS_ERROR_ILLEGAL_VALUE);
-  Representation const * rep = adaptSet->GetRepresentation(aRepIdx);
-  NS_ENSURE_TRUE(rep, NS_ERROR_NULL_POINTER);
-
-  if (rep->HasBaseUrls()) {
-    aUrl.Append(rep->GetBaseUrl(0));
-    LOG("Appending \"%s\"",
-        NS_ConvertUTF16toUTF8(rep->GetBaseUrl(0)).get());
-  }
-
-  return NS_OK;
-}
-
-uint32_t
-nsDASHWebMODManager::GetNumAdaptationSets() const
-{
-  Period const * current = GetFirstPeriod();
-  return current ? current->GetNumAdaptationSets() : 0;
-}
-
-IMPDManager::AdaptationSetType
-nsDASHWebMODManager::GetAdaptationSetType(uint32_t const aAdaptSetIdx) const
-{
-  AdaptationSet const * adaptSet = GetAdaptationSet(aAdaptSetIdx);
-  NS_ENSURE_TRUE(adaptSet, DASH_ASTYPE_INVALID);
-
-  nsAutoString mimeType;
-  adaptSet->GetMIMEType(mimeType);
-  NS_ENSURE_TRUE(!mimeType.IsEmpty(), DASH_ASTYPE_INVALID);
-
-  return GetAdaptationSetType(mimeType);
-}
-
-IMPDManager::AdaptationSetType
-nsDASHWebMODManager::GetAdaptationSetType(nsAString const & aMimeType) const
-{
-  NS_ENSURE_TRUE(!aMimeType.IsEmpty(), DASH_ASTYPE_INVALID);
-
-  if (aMimeType == NS_LITERAL_STRING(VIDEO_WEBM)) {
-    return DASH_VIDEO_STREAM;
-  } else if (aMimeType == NS_LITERAL_STRING(AUDIO_WEBM)) {
-    return DASH_AUDIO_STREAM;
-  } else {
-    return DASH_ASTYPE_INVALID;
-  }
-}
-
-uint32_t
-nsDASHWebMODManager::GetNumRepresentations(uint32_t const aAdaptSetIdx) const
-{
-  AdaptationSet const * adaptSet = GetAdaptationSet(aAdaptSetIdx);
-  NS_ENSURE_TRUE(adaptSet, DASH_ASTYPE_INVALID);
-
-  return adaptSet->GetNumRepresentations();
-}
-
-AdaptationSet const *
-nsDASHWebMODManager::GetAdaptationSet(uint32_t const aAdaptSetIdx) const
-{
-  Period const * current = GetFirstPeriod();
-  NS_ENSURE_TRUE(current, nullptr);
-
-  NS_ENSURE_TRUE(0 < current->GetNumAdaptationSets(), nullptr);
-  NS_ENSURE_TRUE(aAdaptSetIdx < current->GetNumAdaptationSets(), nullptr);
-  AdaptationSet const * adaptSet = current->GetAdaptationSet(aAdaptSetIdx);
-  NS_ENSURE_TRUE(adaptSet, nullptr);
-  return adaptSet;
-}
-
-Representation const *
-nsDASHWebMODManager::GetRepresentation(uint32_t const aAdaptSetIdx,
-                                       uint32_t const aRepIdx) const
-{
-  AdaptationSet const * adaptSet = GetAdaptationSet(aAdaptSetIdx);
-  NS_ENSURE_TRUE(adaptSet, nullptr);
-
-  NS_ENSURE_TRUE(aRepIdx < adaptSet->GetNumRepresentations(), nullptr);
-  Representation const * rep = adaptSet->GetRepresentation(aRepIdx);
-  NS_ENSURE_TRUE(rep, nullptr);
-
-  return rep;
-}
-
-double
-nsDASHWebMODManager::GetStartTime() const
-{
-  Period const * current = GetFirstPeriod();
-  NS_ENSURE_TRUE(current, -1);
-
-  return current->GetStart();
-}
-
-double
-nsDASHWebMODManager::GetDuration() const
-{
-  Period const * current = GetFirstPeriod();
-  NS_ENSURE_TRUE(current, -1);
-
-  return current->GetDuration();
-}
-
-bool
-nsDASHWebMODManager::GetBestRepForBandwidth(uint32_t aAdaptSetIdx,
-                                            uint64_t aBandwidth,
-                                            uint32_t &aRepIdx) const
-{
-  NS_ENSURE_TRUE(aAdaptSetIdx < GetNumAdaptationSets(), false);
-  NS_ENSURE_TRUE(0 < GetNumRepresentations(aAdaptSetIdx), false);
-  // Return false if there isn't enough bandwidth for even the lowest bitrate.
-  // Let calling function decide what to do. Use 0.95 multiplier to deal with
-  // 5% variance in bandwidth.
-  // XXX Multiplier is a guess at present.
-  if (aBandwidth*0.95 < GetRepresentation(aAdaptSetIdx, 0)->GetBitrate()) {
-    aRepIdx = UINT32_MAX;
-    return false;
-  }
-  // Iterate until the current |Representation|'s bitrate is higher than the
-  // estimated available bandwidth. Use 0.95 multiplier to deal with 5%
-  // variance in bandwidth.
-  // XXX Multiplier is a guess at present.
-  for (uint32_t i = 1; i < GetNumRepresentations(aAdaptSetIdx); i++) {
-    NS_ENSURE_TRUE(GetRepresentation(aAdaptSetIdx, i), false);
-    if (aBandwidth*0.95 < GetRepresentation(aAdaptSetIdx, i)->GetBitrate()) {
-      // Pick the previous one, since this one's bitrate is too high.
-      aRepIdx = i-1;
-      return true;
-    }
-  }
-  // If we reach here, all of the |Representation|'s bitrates are lower than the
-  // available bandwidth. Just pick the highest, i.e. last in the array.
-  aRepIdx = GetNumRepresentations(aAdaptSetIdx)-1;
-  return true;
-}
-
-}//namespace net
-}//namespace mozilla
-
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHWebMODManager.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHWebMODManager.h
- *****************************************************************************
- *
- * Created on: May 1, 2012
- * Based on IsoffMainManager.h by:
- *          Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Author:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- *
- * Media Presentation Description (MPD) Manager for WebM On Demand Profile.
- *                                                  ======================
- *
- * Implements MPD Manager interface to use Adaptation Algorithm to determine
- * which stream to download from WebM On Demand-based MPD.
- *
- * WebM On Demand describes a static, on demand media presentation using WebM
- * encoded media files.
- * Notes:
- *    1 time |Period| per media presentation |MPD|.
- *    1 audio stream (1 |Representation| for the audio |AdaptationSet|).
- *    1 or multiple video streams for stream switching:
- *         (multiple |Representation|s for the video |AdaptationSet|).
- *    1 file for each encoding (1 |Segment| per |Representation|).
- *    Stream switching allowed between clusters (clusters match DASH
- *         subsegments).
- *
- * Note: Adaptation algorithm is separate and passed into manager.
- * XXX Adaptation not yet implemented.
- */
-
-#ifndef _NSDASHWEBMODMANAGER_H_
-#define _NSDASHWEBMODMANAGER_H_
-
-#include "nsTArray.h"
-#include "nsIURI.h"
-#include "nsString.h"
-#include "MPD.h"
-#include "Period.h"
-#include "AdaptationSet.h"
-#include "Representation.h"
-#include "IMPDManager.h"
-
-namespace mozilla {
-namespace net {
-
-class nsDASHWebMODManager : public IMPDManager
-{
-public:
-  nsDASHWebMODManager(MPD* mpd);
-  ~nsDASHWebMODManager();
-
-  // See IMPDManager.h for descriptions of following inherited functions.
-  Period const * GetFirstPeriod() const;
-  uint32_t GetNumAdaptationSets() const;
-  AdaptationSetType
-                 GetAdaptationSetType(uint32_t const aAdaptSetIdx) const;
-  uint32_t GetNumRepresentations(uint32_t const aAdaptSetIdx) const;
-  Representation const * GetRepresentation(uint32_t const aAdaptSetIdx,
-                                           uint32_t const aRepIdx) const;
-  nsresult GetFirstSegmentUrl(uint32_t const aAdaptSetIdx,
-                              uint32_t const aRepIdx,
-                              nsAString &aUrl) const;
-  double GetStartTime() const;
-  double GetDuration() const;
-
-  // Gets index of the |Representation| with next highest bitrate to the
-  // estimated bandwidth passed in. Returns true if there is at least one
-  // |Representation| with a bitrate lower than |aBandwidth|; otherwise returns
-  // false. Depends on |mRepresentations| being an ordered list.
-  bool GetBestRepForBandwidth(uint32_t aAdaptSetIdx,
-                              uint64_t aBandwidth,
-                              uint32_t &aRepIdx) const MOZ_OVERRIDE;
-
-private:
-  // Internal helper functions.
-  AdaptationSet const * GetAdaptationSet(uint32_t const aAdaptSetIdx) const;
-  AdaptationSetType GetAdaptationSetType(nsAString const &mimeType) const;
-  uint32_t GetNumSegments(Representation const* aRep) const;
-
-  // Pointer to the MPD class structure; holds data parsed from the MPD file.
-  nsAutoPtr<MPD> mMpd;
-};
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* _NSDASHWEBMODMANAGER_H_ */
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHWebMODParser.cpp
+++ /dev/null
@@ -1,604 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHWebMODParser.cpp
- *****************************************************************************
- * Copyrigh(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: May 1, 2012
- * Based on IsoffMainParser.cpp by:
- *          Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Author:
- *          Steve Workman <sworkman@mozilla.com>
-
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- * Media Presentation Description (MPD) Parser for WebM On Demand Profile.
- *
- * Parses DOM built from MPD XML to verify data and populate MPD classes.
- * MPD classes used as a metadata source by WebM On Demand Manager.
- */
-
-#include "nsAutoPtr.h"
-#include "nsTArray.h"
-#include "nsMimeTypes.h"
-#include "nsString.h"
-#include "nsIDOMElement.h"
-#include "prlog.h"
-#include "nsDASHWebMODParser.h"
-
-#if defined(PR_LOGGING)
-static PRLogModuleInfo* gnsDASHWebMODParserLog = nullptr;
-#define LOG(msg, ...) \
-        PR_LOG(gnsDASHWebMODParserLog, PR_LOG_DEBUG, \
-               ("%p [nsDASHWebMODParser] " msg, this, __VA_ARGS__))
-#define LOG1(msg) \
-        PR_LOG(gnsDASHWebMODParserLog, PR_LOG_DEBUG, \
-               ("%p [nsDASHWebMODParser] " msg, this))
-#else
-#define LOG(msg, ...)
-#define LOG1(msg)
-#endif
-
-namespace mozilla {
-namespace net {
-
-nsDASHWebMODParser::nsDASHWebMODParser(nsIDOMElement* aRoot) :
-  mRoot(aRoot)
-{
-  MOZ_COUNT_CTOR(nsDASHWebMODParser);
-#if defined(PR_LOGGING)
-  if(!gnsDASHWebMODParserLog)
-    gnsDASHWebMODParserLog = PR_NewLogModule("nsDASHWebMODParser");
-#endif
-  LOG1("Created nsDASHWebMODParser");
-}
-
-nsDASHWebMODParser::~nsDASHWebMODParser()
-{
-  MOZ_COUNT_DTOR(nsDASHWebMODParser);
-}
-
-MPD*
-nsDASHWebMODParser::Parse()
-{
-  LOG1("Parsing DOM into MPD objects");
-  nsAutoPtr<MPD> mpd(new MPD());
-
-  nsresult rv = VerifyMPDAttributes();
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  rv = SetMPDBaseUrls(mpd);
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  rv = SetPeriods(mpd);
-  NS_ENSURE_SUCCESS(rv, nullptr);
-
-  return mpd.forget();
-}
-
-nsresult
-nsDASHWebMODParser::VerifyMPDAttributes()
-{
-  NS_ENSURE_TRUE(mRoot, NS_ERROR_NOT_INITIALIZED);
-
-  // @|type| should be "static".
-  nsAutoString type;
-  nsresult rv = GetAttribute(mRoot, NS_LITERAL_STRING("type"), type);
-  NS_ENSURE_SUCCESS(rv, rv);
-  NS_ENSURE_TRUE(type.EqualsLiteral("static"), NS_ERROR_ILLEGAL_VALUE);
-
-  // Note: No attributes to be set in MPD object for DASH-WebM OD. This
-  // function used for attribute verification only.
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetMPDBaseUrls(MPD* aMpd)
-{
-  NS_ENSURE_TRUE(mRoot, NS_ERROR_NOT_INITIALIZED);
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = mRoot->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-    if (tagName.EqualsLiteral("BaseURL")) {
-      nsAutoString baseUrlStr;
-      rv = child->GetTextContent(baseUrlStr);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      aMpd->AddBaseUrl(baseUrlStr);
-      LOG("MPD BaseURL #%d: \"%s\"",
-          i++, NS_ConvertUTF16toUTF8(baseUrlStr).get());
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::GetTime(nsAString& aTimeStr, double& aTime)
-{
-  NS_ENSURE_FALSE(aTimeStr.IsEmpty(), NS_ERROR_NOT_INITIALIZED);
-  // Fail if time string is not of the format "PT<time>S".
-  NS_NAMED_LITERAL_STRING(prefix, "PT");
-  NS_NAMED_LITERAL_STRING(suffix, "S");
-  nsAString::const_iterator start, end, prefixStart, prefixEnd,
-                            suffixStart, suffixEnd;
-
-  // Search for "PT" at the start.
-  aTimeStr.BeginReading(start);
-  aTimeStr.EndReading(end);
-  prefixStart = start;
-  prefixEnd = end;
-  NS_ENSURE_TRUE(FindInReadable(prefix, prefixStart, prefixEnd),
-                 NS_ERROR_ILLEGAL_VALUE);
-  NS_ENSURE_TRUE(prefixStart == start, NS_ERROR_ILLEGAL_VALUE);
-
-  // Search for "S" after "PT".
-  suffixStart = prefixEnd;
-  suffixEnd = end;
-  NS_ENSURE_TRUE(FindInReadable(suffix, suffixStart, suffixEnd),
-                 NS_ERROR_ILLEGAL_VALUE);
-  NS_ENSURE_TRUE(suffixStart != prefixEnd, NS_ERROR_ILLEGAL_VALUE);
-  NS_ENSURE_TRUE(suffixEnd == end, NS_ERROR_ILLEGAL_VALUE);
-
-  // Parse inner substring for time.
-  const nsAutoString timeSubString(Substring(prefixEnd, suffixStart));
-  LOG("Parsing substring \"%s\" in \"%s\"",
-      NS_ConvertUTF16toUTF8(timeSubString).get(),
-      NS_ConvertUTF16toUTF8(aTimeStr).get());
-  NS_ENSURE_FALSE(timeSubString.IsEmpty(), NS_ERROR_ILLEGAL_VALUE);
-  nsresult rv;
-  aTime = timeSubString.ToDouble(&rv);
-  NS_ENSURE_SUCCESS(rv, rv);
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetPeriods(MPD* aMpd)
-{
-  NS_ENSURE_TRUE(mRoot, NS_ERROR_NOT_INITIALIZED);
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = mRoot->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-    if (tagName.EqualsLiteral("Period")) {
-      nsAutoPtr<Period> period(new Period());
-
-      // Get start time and duration
-      nsAutoString value;
-      rv = GetAttribute(child, NS_LITERAL_STRING("start"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if (!value.IsEmpty()) {
-        double startTime = -1;
-        rv = GetTime(value, startTime);
-        NS_ENSURE_SUCCESS(rv, rv);
-        NS_ENSURE_TRUE(0 <= startTime, NS_ERROR_ILLEGAL_VALUE);
-        period->SetStart(startTime);
-      }
-
-      rv = GetAttribute(child, NS_LITERAL_STRING("duration"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if (!value.IsEmpty()) {
-        double duration = -1;
-        rv = GetTime(value, duration);
-        NS_ENSURE_SUCCESS(rv, rv);
-        NS_ENSURE_TRUE(0 <= duration, NS_ERROR_ILLEGAL_VALUE);
-        period->SetDuration(duration);
-      }
-
-      bool bIgnoreThisPeriod;
-      rv = SetAdaptationSets(child, period, bIgnoreThisPeriod);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      // |Period| should be ignored if its child elems are invalid
-      if (bIgnoreThisPeriod) {
-        LOG1("Ignoring period");
-      } else {
-        aMpd->AddPeriod(period.forget());
-        LOG("Period #%d: added to MPD", i++);
-      }
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::ValidateAdaptationSetAttributes(nsIDOMElement* aChild,
-                                                    bool &bAttributesValid)
-{
-  // Check common attributes first.
-  nsAutoString value;
-  nsresult rv = GetAttribute(aChild, NS_LITERAL_STRING("subsegmentStartsWithSAP"),
-                           value);
-  NS_ENSURE_SUCCESS(rv, rv);
-  bAttributesValid = (!value.IsEmpty() && value.EqualsLiteral("1"));
-
-  // Now check for video and audio specific attributes.
-  nsAutoString mimeType;
-  if (bAttributesValid) {
-    rv = GetAttribute(aChild, NS_LITERAL_STRING("mimeType"), mimeType);
-    NS_ENSURE_SUCCESS(rv, rv);
-    bAttributesValid = !mimeType.IsEmpty();
-    if (!bAttributesValid)
-      LOG1("mimeType not present!");
-  }
-  // Validate attributes for video.
-  if (bAttributesValid && mimeType.EqualsLiteral(VIDEO_WEBM)) {
-    // @|segmentAlignment| is optional
-    if (bAttributesValid) {
-      rv = GetAttribute(aChild, NS_LITERAL_STRING("segmentAlignment"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      bAttributesValid = (value.IsEmpty() || value.EqualsLiteral("true"));
-      if (!bAttributesValid)
-        LOG1("segmentAlignment not present or invalid!");
-    }
-    if (bAttributesValid) {
-      rv = GetAttribute(aChild, NS_LITERAL_STRING("subsegmentAlignment"),
-                        value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      bAttributesValid = (!value.IsEmpty() && value.EqualsLiteral("true"));
-      if (!bAttributesValid)
-        LOG1("subsegmentAlignment not present or invalid!");
-    }
-    if (bAttributesValid) {
-      rv = GetAttribute(aChild, NS_LITERAL_STRING("bitstreamSwitching"),
-                        value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      bAttributesValid = (!value.IsEmpty() && value.EqualsLiteral("true"));
-      if (!bAttributesValid)
-        LOG1("bitstreamSwitching not present or invalid!");
-    }
-  } else if (bAttributesValid && mimeType.EqualsLiteral(AUDIO_WEBM)) {
-  // Validate attributes for audio.
-  } else if (bAttributesValid) {
-    // attributes are not valid since mimeType is wrong
-    bAttributesValid = false;
-    LOG("mimeType is invalid: %s", NS_ConvertUTF16toUTF8(mimeType).get());
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetAdaptationSets(nsIDOMElement* aPeriodElem,
-                                      Period* aPeriod,
-                                      bool &bIgnoreThisPeriod)
-{
-  NS_ENSURE_ARG(aPeriodElem);
-  NS_ENSURE_ARG(aPeriod);
-
-  // Assume ok until an error is found.
-  bIgnoreThisPeriod = false;
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = aPeriodElem->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    // If child is invalid, return and ignore this |Period|
-    if (tagName.EqualsLiteral("SegmentList")
-        || tagName.EqualsLiteral("SegmentTemplate")) {
-      bIgnoreThisPeriod = true;
-      return NS_OK;
-    }
-
-    if (tagName.EqualsLiteral("AdaptationSet")) {
-      // Ignore this |AdaptationSet| if an attribute is inavlid
-      bool bAttributesValid = false;
-      rv = ValidateAdaptationSetAttributes(child, bAttributesValid);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      // Add |AdaptationSet| to |Period| if attributes and child elems are ok
-      if (bAttributesValid) {
-        nsAutoPtr<AdaptationSet> adaptationSet(new AdaptationSet());
-
-        // Attribute check already done; set correct value for this profile
-        adaptationSet->EnableBitstreamSwitching(true);
-
-        nsAutoString mimeType;
-        rv = GetAttribute(child, NS_LITERAL_STRING("mimeType"), mimeType);
-        NS_ENSURE_SUCCESS(rv, rv);
-        if (!mimeType.IsEmpty()) {
-          adaptationSet->SetMIMEType(mimeType);
-        }
-
-        // TODO width
-
-        // TODO height
-
-        // TODO codecs
-
-        bool bIgnoreThisAdaptSet = false;
-        rv = SetRepresentations(child, adaptationSet, bIgnoreThisAdaptSet);
-        NS_ENSURE_SUCCESS(rv, rv);
-
-        if (!bIgnoreThisAdaptSet) {
-          LOG("AdaptationSet #%d: mimeType:%s width:%d height:%d codecs:%s",
-              i, NS_ConvertUTF16toUTF8(mimeType).get(),
-              adaptationSet->GetWidth(), adaptationSet->GetHeight(), "");
-          aPeriod->AddAdaptationSet(adaptationSet.forget());
-          LOG("AdaptationSet #%d: added to Period", i++);
-        }
-      }
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetRepresentations(nsIDOMElement* aAdaptSetElem,
-                                       AdaptationSet* aAdaptationSet,
-                                       bool &bIgnoreThisAdaptSet)
-{
-  NS_ENSURE_ARG(aAdaptSetElem);
-  NS_ENSURE_ARG(aAdaptationSet);
-
-  // Assume ok until an error is found.
-  bIgnoreThisAdaptSet = false;
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = aAdaptSetElem->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  bIgnoreThisAdaptSet = false;
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    // If child is invalid, return and ignore this |Period|
-    if (tagName.EqualsLiteral("SegmentList")
-        || tagName.EqualsLiteral("SegmentTemplate")) {
-      bIgnoreThisAdaptSet = true;
-      return NS_OK;
-    }
-
-    if (tagName.EqualsLiteral("Representation")) {
-
-      nsAutoPtr<Representation> representation(new Representation());
-
-      nsAutoString value;
-      rv = GetAttribute(child, NS_LITERAL_STRING("width"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if(!value.IsEmpty()) {
-        representation->SetWidth(value.ToInteger(&rv));
-      }
-
-      rv = GetAttribute(child, NS_LITERAL_STRING("height"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if(!value.IsEmpty()) {
-        representation->SetHeight(value.ToInteger(&rv));
-      }
-
-      rv = GetAttribute(child, NS_LITERAL_STRING("bandwidth"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if(!value.IsEmpty()) {
-        representation->SetBitrate(value.ToInteger(&rv));
-      }
-
-      LOG("Representation #%d: width:%d height:%d bitrate:%d",
-          i, representation->GetWidth(),
-          representation->GetHeight(),
-          representation->GetBitrate());
-
-      // Get |BaseURL| elements
-      bool bIgnoreThisRep;
-      SetRepresentationBaseUrls(child, representation, bIgnoreThisRep);
-
-      // Get |SegmentBase| elements
-      if (!bIgnoreThisRep)
-        SetRepSegmentBase(child, representation, bIgnoreThisRep);
-
-      if (!bIgnoreThisRep) {
-        aAdaptationSet->AddRepresentation(representation.forget());
-        LOG("Representation #%d: added to AdaptationSet", i++);
-      }
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetRepresentationBaseUrls(nsIDOMElement* aRepElem,
-                                              Representation* aRep,
-                                              bool &bIgnoreThisRep)
-{
-  NS_ENSURE_ARG(aRepElem);
-  NS_ENSURE_ARG(aRep);
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = aRepElem->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  // Ignore if no |BaseURL| elems; assume none exist until discovered.
-  bIgnoreThisRep = true;
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-    if (tagName.EqualsLiteral("BaseURL")) {
-      bIgnoreThisRep = false;
-      nsAutoString baseUrlStr;
-      rv = child->GetTextContent(baseUrlStr);
-      NS_ENSURE_SUCCESS(rv, rv);
-
-      aRep->AddBaseUrl(baseUrlStr);
-      LOG("BaseURL #%d: \"%s\" added to Representation",
-          i++, NS_ConvertUTF16toUTF8(baseUrlStr).get());
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetRepSegmentBase(nsIDOMElement* aRepElem,
-                                      Representation* aRep,
-                                      bool &bIgnoreThisRep)
-{
-  NS_ENSURE_ARG(aRepElem);
-  NS_ENSURE_ARG(aRep);
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = aRepElem->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  // Ignore if no |SegmentBase| elems; assume none exist until discovered.
-  bIgnoreThisRep = true;
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-    if (tagName.EqualsLiteral("SegmentBase")) {
-      bIgnoreThisRep = false;
-      bool bIgnoreThisSegBase = false;
-
-      nsAutoPtr<SegmentBase> segmentBase(new SegmentBase());
-
-      nsAutoString value;
-      rv = GetAttribute(child, NS_LITERAL_STRING("indexRange"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if(!value.IsEmpty()) {
-        segmentBase->SetIndexRange(value);
-      } else {
-        bIgnoreThisRep = true;
-        bIgnoreThisSegBase = true;
-      }
-
-      if (!bIgnoreThisSegBase) {
-        SetSegmentBaseInit(child, segmentBase, bIgnoreThisSegBase);
-      }
-
-      if (!bIgnoreThisSegBase) {
-        aRep->SetSegmentBase(segmentBase.forget());
-        LOG("SegmentBase #%d: added to Representation", i++);
-      }
-      break;
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::SetSegmentBaseInit(nsIDOMElement* aSegBaseElem,
-                                       SegmentBase* aSegBase,
-                                       bool &bIgnoreThisSegBase)
-{
-  NS_ENSURE_ARG(aSegBaseElem);
-  NS_ENSURE_ARG(aSegBase);
-
-  nsCOMPtr<nsIDOMElement> child, nextChild;
-  nsresult rv = aSegBaseElem->GetFirstElementChild(getter_AddRefs(child));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-#ifdef PR_LOGGING
-  int i = 0;
-#endif
-  // Ignore if no |Initialisation| elems; assume none exist until discovered.
-  bIgnoreThisSegBase = true;
-  while (child) {
-    nsAutoString tagName;
-    rv = child->GetTagName(tagName);
-    NS_ENSURE_SUCCESS(rv, rv);
-    // XXX Spec spells with 's'; WebM Project defn spells with 'z': accept both
-    if (tagName.EqualsLiteral("Initialisation")
-        || tagName.EqualsLiteral("Initialization")) {
-      bIgnoreThisSegBase = false;
-
-      nsAutoString value;
-      rv = GetAttribute(child, NS_LITERAL_STRING("range"), value);
-      NS_ENSURE_SUCCESS(rv, rv);
-      if(!value.IsEmpty()) {
-        aSegBase->SetInitRange(value);
-        LOG("Initialisation #%d: added to SegmentBase", i++);
-      } else {
-        bIgnoreThisSegBase = true;
-      }
-      break;
-    }
-    rv = child->GetNextElementSibling(getter_AddRefs(nextChild));
-    NS_ENSURE_SUCCESS(rv, rv);
-    child = nextChild;
-  }
-  return NS_OK;
-}
-
-nsresult
-nsDASHWebMODParser::GetAttribute(nsIDOMElement* aElem,
-                                 const nsAString& aAttribute,
-                                 nsAString& aValue)
-{
-  bool bAttributePresent;
-  nsresult rv = aElem->HasAttribute(aAttribute, &bAttributePresent);
-  NS_ENSURE_SUCCESS(rv, rv);
-  if (!bAttributePresent)
-    aValue.AssignLiteral("");
-  else {
-    rv = aElem->GetAttribute(aAttribute, aValue);
-    NS_ENSURE_SUCCESS(rv, rv);
-  }
-  return NS_OK;
-}
-
-}//namespace net
-}//namespace mozilla
deleted file mode 100644
--- a/netwerk/dash/mpd/nsDASHWebMODParser.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/*
- * nsDASHWebMODParser.h
- *****************************************************************************
- * Copyrigh(C) 2010 - 2012 Klagenfurt University
- *
- * Created on: May 1, 2012
- * Based on IsoffMainParser.h by:
- *          Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
- *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
- * Author:
- *          Steve Workman <sworkman@mozilla.com>
- *
- * 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/.
- *****************************************************************************/
-
-/* DASH - Dynamic Adaptive Streaming over HTTP.
- *
- * DASH is an adaptive bitrate streaming technology where a multimedia file is
- * partitioned into one or more segments and delivered to a client using HTTP.
- *
- * (see DASHDecoder.cpp for info on DASH interaction with the media engine).
- *
- * Media Presentation Description (MPD) Parser for WebM On Demand Profile.
- *
- * Parses DOM built from MPD XML to verify data and populate MPD classes.
- * MPD classes used as a metadata source by WebM On Demand Manager.
- *
- *
- * General:
- * -- Ignore all elements with @|xlink|.
- * -- @|startWithSAP| XXX examine later - defines "Segments starting with
- *    media stream access points".
- * -- @|mimeType| for elements should be 'video/webm' or 'audio/webm'.
- *
- * |MPD|:
- * -- May have |BaseURL|.
- * -- @|type| = 'static' only.
- *
- * |Period|:
- * -- no |SegmentList| or |SegmentTemplate|; not just ignored, they shouldn't be
- *    present.
- *
- * |AdaptationSet|:
- * -- ignore this element if it has a |SegmentList| or |SegmentTemplate|.
- * -- ignore this element if @|subsegmentAlignment| is not present or is set
- *    to false.
- * To enable stream switching:
- *    -- @|subsegmentStartsWithSAP| = 1.
- *    -- @|segmentAlignment| = true.
- *    -- @|bitstreamSwitching| = true.
- * -- Can have @|width| and @|height|.
- * -- Can have @|id|.
- * -- Can have @|codecs|, but this should match appropriately with @|mimeType|.
- *
- * |Representation|:
- * -- should contain only one |Segment|, which should be 'Self-Initializing
- *    Indexed Media Segment'. Note: |Segment|s are generated from |BaseURL|
- *    elements within a |Representation|.
- * -- ignore if @|profiles| is not the same as MPD's @|profiles|.
- * -- ignore this element if it has a |SegmentList| or |SegmentTemplate|.
- * -- ignore if it does NOT have a |BaseURL|.
- * -- ignore if @|subsegmentStartsWithSAP| != 1 and has sibling |Representation|s
- *    in |AdaptationSet|.
- * -- no |IndexSegment|.
- *
- * |BaseURL|:
- * -- no specifics.
- *
- *
- */
-
-#ifndef DASHWEBMODPARSER_H_
-#define DASHWEBMODPARSER_H_
-
-#include "nsCOMPtr.h"
-#include "IMPDParser.h"
-#include "MPD.h"
-#include "Period.h"
-#include "AdaptationSet.h"
-#include "Representation.h"
-#include "SegmentBase.h"
-
-class nsIDOMElement;
-
-namespace mozilla {
-namespace net {
-
-class nsDASHWebMODParser : public IMPDParser
-{
-public:
-  nsDASHWebMODParser(nsIDOMElement* aRoot);
-  virtual ~nsDASHWebMODParser();
-
-  // Inherited from IMPDParser.
-  MPD* Parse();
-
-private:
-  // Parses MPD tag attributes from the DOM.
-  nsresult    VerifyMPDAttributes();
-
-  // Parses the |BaseURL| to be used for all other URLs.
-  nsresult    SetMPDBaseUrls(MPD* aMpd);
-
-  // Parses all |Period|s in the DOM of the media presentation.
-  nsresult    SetPeriods(MPD* aMpd);
-
-  // Parses |AdaptationSet|s of media in the DOM node for the given |Period|.
-  nsresult    SetAdaptationSets(nsIDOMElement* aPeriodNode,
-                                Period* aPeriod,
-                                bool &bIgnoreThisRep);
-
-  // Validates the attributes for the given |AdaptationSet| of media.
-  nsresult    ValidateAdaptationSetAttributes(nsIDOMElement* aChild,
-                                              bool &bAttributesValid);
-
-  // Parses |Representation|s in the DOM for the given |AdaptationSet|.
-  nsresult    SetRepresentations(nsIDOMElement* aAdaptationSetNode,
-                                 AdaptationSet* aAdaptationSet,
-                                 bool &bIgnoreThisRep);
-
-  // Parses |BaseURLs| for the given media |Representation|.
-  // Note: in practise, this is combined with the |BaseURL| for the |MPD|.
-  nsresult    SetRepresentationBaseUrls(nsIDOMElement* aRepNode,
-                                        Representation* aRep,
-                                        bool &bIgnoreThisRep);
-
-  // Parses the |SegmentBase| for the media |Representation|.
-  // For WebM OD, there is one |SegmentBase| and one |Segment| per media
-  // |Representation|.
-  nsresult    SetRepSegmentBase(nsIDOMElement* aRepElem,
-                                Representation* aRep,
-                                bool &bIgnoreThisRep);
-  // Parses the |InitSegment| for the |SegmentBase|.
-  // For WebM OD, the |InitSegment| is a range of bytes for each |SegmentBase|.
-  nsresult    SetSegmentBaseInit(nsIDOMElement* aSegBaseElem,
-                                 SegmentBase* aSegBase,
-                                 bool &bIgnoreThisSegBase);
-
-  // Gets an attribute's value from a DOM element.
-  nsresult    GetAttribute(nsIDOMElement* aElem,
-                           const nsAString& aAttribute,
-                           nsAString& aValue);
-
-  // Converts a subtring "<time>" in a string of format "PT<time>S" to a double.
-  nsresult    GetTime(nsAString& aTimeStr, double& aTime);
-
-  // The root DOM element of the MPD; populated after reading the XML file; used
-  // to populate the MPD class structure.
-  nsCOMPtr<nsIDOMElement>  mRoot;
-};
-
-}//namespace net
-}//namespace mozilla
-
-#endif /* DASHWEBMODPARSER_H_ */
--- a/netwerk/mime/nsMimeTypes.h
+++ b/netwerk/mime/nsMimeTypes.h
@@ -140,19 +140,16 @@
 
 #define VIDEO_MPEG                          "video/mpeg"
 #define VIDEO_MP4                           "video/mp4"
 #define VIDEO_RAW                           "video/x-raw-yuv"
 #define VIDEO_OGG                           "video/ogg"
 #define VIDEO_WEBM                          "video/webm"
 #define VIDEO_3GPP                          "video/3gpp"
 #define APPLICATION_OGG                     "application/ogg"
-#ifdef MOZ_DASH
-#define APPLICATION_DASH                    "application/dash+xml"
-#endif
 
 /* x-uuencode-apple-single. QuickMail made me do this. */
 #define UUENCODE_APPLE_SINGLE               "x-uuencode-apple-single"
 
 /* The standard MIME message-content-encoding values:
  */
 #define ENCODING_7BIT                       "7bit"
 #define ENCODING_8BIT                       "8bit"
--- a/netwerk/moz.build
+++ b/netwerk/moz.build
@@ -24,17 +24,14 @@ if CONFIG['MOZ_SRTP']:
 if CONFIG['MOZ_SCTP']:
     PARALLEL_DIRS += ['sctp/src', 'sctp/datachannel']
 
 if CONFIG['NECKO_WIFI']:
     PARALLEL_DIRS += ['wifi']
 
 PARALLEL_DIRS += ['locales']
 
-if CONFIG['MOZ_DASH']:
-    PARALLEL_DIRS += ['dash']
-
 DIRS += ['build']
 TEST_TOOL_DIRS += ['test']
 
 MODULE = 'necko'
 
 CONFIGURE_DEFINE_FILES += ['necko-config.h']
--- a/uriloader/exthandler/nsExternalHelperAppService.cpp
+++ b/uriloader/exthandler/nsExternalHelperAppService.cpp
@@ -407,19 +407,16 @@ static nsDefaultMimeTypeEntry defaultMim
 #ifdef MOZ_OPUS
   { AUDIO_OGG, "opus" },
 #endif
 #endif
 #ifdef MOZ_WEBM
   { VIDEO_WEBM, "webm" },
   { AUDIO_WEBM, "webm" },
 #endif
-#ifdef MOZ_DASH
-  { APPLICATION_DASH, "mpd" },
-#endif
 #if defined(MOZ_GSTREAMER) || defined(MOZ_WMF)
   { VIDEO_MP4, "mp4" },
   { AUDIO_MP4, "m4a" },
   { AUDIO_MP3, "mp3" },
 #endif
 #ifdef MOZ_RAW
   { VIDEO_RAW, "yuv" }
 #endif
@@ -492,19 +489,16 @@ static nsExtraMimeTypeEntry extraMimeEnt
   { APPLICATION_OGG, "ogg", "Ogg Video"},
   { AUDIO_OGG, "oga", "Ogg Audio" },
   { AUDIO_OGG, "opus", "Opus Audio" },
 #ifdef MOZ_WIDGET_GONK
   { AUDIO_AMR, "amr", "Adaptive Multi-Rate Audio" },
 #endif
   { VIDEO_WEBM, "webm", "Web Media Video" },
   { AUDIO_WEBM, "webm", "Web Media Audio" },
-#ifdef MOZ_DASH
-  { APPLICATION_DASH, "mpd", "DASH Media Presentation Description" },
-#endif
   { AUDIO_MP3, "mp3", "MPEG Audio" },
   { VIDEO_MP4, "mp4", "MPEG-4 Video" },
   { AUDIO_MP4, "m4a", "MPEG-4 Audio" },
   { VIDEO_RAW, "yuv", "Raw YUV Video" },
   { AUDIO_WAV, "wav", "Waveform Audio" },
   { VIDEO_3GPP, "3gpp,3gp", "3GPP Video" }
 };