2 * AlwaysLowestAdaptationLogic.cpp
3 *****************************************************************************
4 * Copyright (C) 2014 - VideoLAN authors
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License as published
8 * by the Free Software Foundation; either version 2.1 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public License
17 * along with this program; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
19 *****************************************************************************/
20 #include "AlwaysLowestAdaptationLogic.hpp"
21 #include "Representationselectors.hpp"
23 using namespace dash::logic;
24 using namespace dash::http;
25 using namespace dash::mpd;
27 AlwaysLowestAdaptationLogic::AlwaysLowestAdaptationLogic(dash::mpd::MPDManager *mpdManager):
28 AbstractAdaptationLogic(mpdManager),
29 currentPeriod(mpdManager->getFirstPeriod()),
34 Chunk* AlwaysLowestAdaptationLogic::getNextChunk()
39 const Representation *rep = getCurrentRepresentation();
43 std::vector<ISegment *> segments = rep->getSegments();
44 if ( count == segments.size() )
46 currentPeriod = mpdManager->getNextPeriod(currentPeriod);
48 return getNextChunk();
51 if ( segments.size() > count )
53 ISegment *seg = segments.at( count );
54 Chunk *chunk = seg->toChunk();
55 //In case of UrlTemplate, we must stay on the same segment.
56 if ( seg->isSingleShot() == true )
64 const Representation *AlwaysLowestAdaptationLogic::getCurrentRepresentation() const
66 RepresentationSelector selector;
67 return selector.select(currentPeriod, 0);