]> git.sesse.net Git - vlc/blob - modules/stream_filter/dash/mpd/MPDFactory.cpp
stream_filter: dash: switch default parser
[vlc] / modules / stream_filter / dash / mpd / MPDFactory.cpp
1 /*
2  * MPDFactory.cpp
3  *****************************************************************************
4  * Copyright (C) 2010 - 2012 Klagenfurt University
5  *
6  * Created on: Jan 27, 2012
7  * Authors: Christopher Mueller <christopher.mueller@itec.uni-klu.ac.at>
8  *          Christian Timmerer  <christian.timmerer@itec.uni-klu.ac.at>
9  *
10  * This program is free software; you can redistribute it and/or modify it
11  * 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.
14  *
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 Lesser General Public License for more details.
19  *
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 Foundation,
22  * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
23  *****************************************************************************/
24
25 #ifdef HAVE_CONFIG_H
26 # include "config.h"
27 #endif
28
29 #include "MPDFactory.h"
30
31 using namespace dash::xml;
32 using namespace dash::mpd;
33
34 MPD* MPDFactory::create             (dash::xml::Node *root, stream_t *p_stream, Profile profile)
35 {
36     switch( profile )
37     {
38         case dash::mpd::Profile::Full:
39             return MPDFactory::createBasicCMMPD(root, p_stream);
40         case dash::mpd::Profile::ISOOnDemand:
41         case dash::mpd::Profile::ISOMain:
42             return MPDFactory::createIsoffMainMPD(root, p_stream);
43
44         default: return NULL;
45     }
46 }
47 MPD* MPDFactory::createBasicCMMPD    (dash::xml::Node *root, stream_t *p_stream)
48 {
49     dash::mpd::BasicCMParser mpdParser(root, p_stream);
50
51     if(mpdParser.parse() == false || mpdParser.getMPD() == NULL)
52         return NULL;
53     mpdParser.getMPD()->setProfile( Profile(Profile::ISOOnDemand) );
54     return mpdParser.getMPD();
55 }
56 MPD* MPDFactory::createIsoffMainMPD  (dash::xml::Node *root, stream_t *p_stream)
57 {
58     dash::mpd::IsoffMainParser mpdParser(root, p_stream);
59
60     if(mpdParser.parse() == false || mpdParser.getMPD() == NULL)
61         return NULL;
62     mpdParser.getMPD()->setProfile( Profile(Profile::ISOMain) );
63     return mpdParser.getMPD();
64 }