diff options
Diffstat (limited to 'MPD/SingleMediaSegmentStream.cpp')
-rw-r--r-- | MPD/SingleMediaSegmentStream.cpp | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/MPD/SingleMediaSegmentStream.cpp b/MPD/SingleMediaSegmentStream.cpp new file mode 100644 index 00000000..ff4540e2 --- /dev/null +++ b/MPD/SingleMediaSegmentStream.cpp @@ -0,0 +1,76 @@ +/* + * SingleMediaSegmentStream.cpp + ***************************************************************************** + * Copyright (C) 2012, bitmovin Softwareentwicklung OG, All Rights Reserved + * + * Email: libdash-dev@vicky.bitmovin.net + * + * This source code and its use and distribution, is subject to the terms + * and conditions of the applicable license agreement. + *****************************************************************************/ + +#include "SingleMediaSegmentStream.h" + +using namespace dash::mpd; +using namespace libdash::framework::mpd; + +SingleMediaSegmentStream::SingleMediaSegmentStream(IMPD *mpd, IPeriod *period, IAdaptationSet *adaptationSet, IRepresentation *representation) : + AbstractRepresentationStream (mpd, period, adaptationSet, representation) +{ + this->baseUrls = BaseUrlResolver::resolveBaseUrl(mpd, period, adaptationSet, 0, 0, 0); +} +SingleMediaSegmentStream::~SingleMediaSegmentStream() +{ +} +ISegment* SingleMediaSegmentStream::getInitializationSegment() +{ + if (this->representation->GetSegmentBase()) + { + /* TODO: check whether @sourceURL and/or @range is available in SegmentBase.Initialization, see Table 13 */ + + if (this->representation->GetSegmentBase()->GetInitialization()) + return this->representation->GetSegmentBase()->GetInitialization()->ToSegment(baseUrls); + } + + return NULL; +} +ISegment* SingleMediaSegmentStream::getIndexSegment(size_t segmentNumber) +{ + /* segmentNumber is not used in this case */ + if (this->representation->GetSegmentBase()) + { + if (this->representation->GetSegmentBase()->GetRepresentationIndex()) + return this->representation->GetSegmentBase()->GetRepresentationIndex()->ToSegment(baseUrls); + } + + return NULL; +} +ISegment* SingleMediaSegmentStream::getMediaSegment(size_t segmentNumber) +{ + /* segmentNumber equals the desired BaseUrl */ + if (this->representation->GetBaseURLs().size() > segmentNumber) + return this->representation->GetBaseURLs().at(segmentNumber)->ToMediaSegment(baseUrls); + + return this->representation->GetBaseURLs().at(0)->ToMediaSegment(baseUrls); +} +ISegment* SingleMediaSegmentStream::getBitstreamSwitchingSegment() +{ + /* not possible */ + return NULL; +} +RepresentationStreamType SingleMediaSegmentStream::getStreamType() +{ + return SingleMediaSegment; +} +uint32_t SingleMediaSegmentStream::getFirstSegmentNumber() +{ + return 0; +} +uint32_t SingleMediaSegmentStream::getCurrentSegmentNumber() +{ + return 0; +} +uint32_t SingleMediaSegmentStream::getLastSegmentNumber() +{ + return 0; +} |