зеркало из https://github.com/mozilla/gecko-dev.git
91 строка
3.0 KiB
C++
91 строка
3.0 KiB
C++
/* -*- 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_ */
|