aboutsummaryrefslogtreecommitdiffstats
path: root/MPD/SegmentListStream.cpp
diff options
context:
space:
mode:
authorJacques Samain <jsamain+fdio@cisco.com>2017-07-25 15:32:54 +0200
committerJacques Samain <jsamain+fdio@cisco.com>2017-07-25 15:32:54 +0200
commit0e275345e28c34f2c6b91a75f44ac93034ae477c (patch)
tree0b94ec17f395fce7ae1015200d45bd61ce0112a8 /MPD/SegmentListStream.cpp
parentce4d018aa8185da0bbf5445eaf54d88700f1a381 (diff)
Handling live MPDs with variable segments duration
Change-Id: I074d8863a9afb47815e47bf663b87e7f663890b9 Signed-off-by: Jacques Samain <jsamain+fdio@cisco.com>
Diffstat (limited to 'MPD/SegmentListStream.cpp')
-rw-r--r--MPD/SegmentListStream.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/MPD/SegmentListStream.cpp b/MPD/SegmentListStream.cpp
index c3530086..86d36e68 100644
--- a/MPD/SegmentListStream.cpp
+++ b/MPD/SegmentListStream.cpp
@@ -53,11 +53,15 @@ ISegment* SegmentListStream::getIndexSegment(size_t segmentNumber)
return NULL;
}
-ISegment* SegmentListStream::getMediaSegment(size_t segmentNumber)
+ISegment* SegmentListStream::getMediaSegment(size_t segmentNumber, uint64_t& segmentDuration)
{
if (this->segmentList->GetSegmentURLs().size() > segmentNumber)
+ {
+ uint32_t duration = representation->GetSegmentList()->GetDuration();
+ uint32_t timescale = representation->GetSegmentList()->GetTimescale();
+ segmentDuration = (uint64_t)(((float)duration/(float)timescale) * 1000);
return this->segmentList->GetSegmentURLs().at(segmentNumber)->ToMediaSegment(this->baseUrls);
-
+ }
return NULL;
}
@@ -93,6 +97,11 @@ ISegmentList* SegmentListStream::findSegmentList()
return NULL;
}
+uint32_t SegmentListStream::getTimescale ()
+{
+ return this->segmentList->GetTimescale();
+}
+
uint32_t SegmentListStream::getAverageSegmentDuration()
{
/* TODO calculate average segment durations for SegmentTimeline */