3 *****************************************************************************
4 * Copyright (C) 2010 - 2011 Klagenfurt University
6 * Created on: Aug 10, 2010
7 * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
8 * Christian Timmerer <christian.timmerer@itec.uni-klu.ac.at>
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU Lesser General Public License as published
12 * by the Free Software Foundation; either version 2.1 of the License, or
13 * (at your option) any later version.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public License
21 * along with this program; if not, write to the Free Software
22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23 *****************************************************************************/
30 using namespace dash::mpd;
31 using namespace dash::exception;
33 MPD::MPD (const AttributesMap& attributes) : attributes( attributes ),
40 for(size_t i = 0; i < this->periods.size(); i++)
41 delete(this->periods.at(i));
43 for(size_t i = 0; i < this->baseUrls.size(); i++)
44 delete(this->baseUrls.at(i));
46 delete(this->programInfo);
49 const std::vector<Period*>& MPD::getPeriods () const
54 const std::vector<BaseUrl*>& MPD::getBaseUrls () const
56 return this->baseUrls;
59 const std::string& MPD::getMinBufferTime () const throw(AttributeNotPresentException)
61 AttributesMap::const_iterator it = this->attributes.find("minBufferTime");
62 if( it == this->attributes.end())
63 throw AttributeNotPresentException();
68 const std::string& MPD::getDuration () const throw(AttributeNotPresentException)
70 AttributesMap::const_iterator it = this->attributes.find("mediaPresentationDuration");
72 if( it == this->attributes.end())
73 throw AttributeNotPresentException();
77 ProgramInformation* MPD::getProgramInformation () throw(ElementNotPresentException)
79 if(this->programInfo == NULL)
80 throw ElementNotPresentException();
82 return this->programInfo;
84 void MPD::addBaseUrl (BaseUrl *url)
86 this->baseUrls.push_back(url);
88 void MPD::addPeriod (Period *period)
90 this->periods.push_back(period);
92 void MPD::setProgramInformation (ProgramInformation *progInfo)
94 this->programInfo = progInfo;
97 bool MPD::isLive() const
99 AttributesMap::const_iterator it = this->attributes.find("mediaPresentationDuration");
102 Standard specifies a default of "On-Demand",
103 so anything that is not "Live" is "On-Demand"
105 return ( it != this->attributes.end() && it->second == "Live" );