aboutsummaryrefslogtreecommitdiffstats
path: root/Input/DASHReceiver.cpp
diff options
context:
space:
mode:
authorLuca Muscariello <lumuscar+fdio@cisco.com>2017-06-19 12:30:20 +0000
committerGerrit Code Review <gerrit@fd.io>2017-06-19 12:30:20 +0000
commite207b82a2b7e70e2700cf1c4237a2e819c655809 (patch)
treead1565a5d9aabb3c699a80404f60aa68ea56d914 /Input/DASHReceiver.cpp
parent0b0fe36cbc95a483d205d3f86fea579f0cdd5f59 (diff)
parentf8907f0a7a84928800adbbfd8e66e500794aa5d5 (diff)
Merge "Adding handling for different kind of MPDs (previously the front end could only handle MPD with SegmentList) Now can handle: MPD with SegmentTemplate in Representation (VOD) MPD with SegmentTemplate and SegmentTimeline (live)" into viper/master
Diffstat (limited to 'Input/DASHReceiver.cpp')
-rw-r--r--Input/DASHReceiver.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/Input/DASHReceiver.cpp b/Input/DASHReceiver.cpp
index df9d019b..bbfe3e35 100644
--- a/Input/DASHReceiver.cpp
+++ b/Input/DASHReceiver.cpp
@@ -55,6 +55,7 @@ DASHReceiver::DASHReceiver (IMPD *mpd, IDASHReceiverObserver *obs, Buff
this->adaptationSetStream = new AdaptationSetStream(mpd, period, adaptationSet);
this->representationStream = adaptationSetStream->getRepresentationStream(this->representation);
this->segmentOffset = CalculateSegmentOffset();
+ this->representationStream->setSegmentOffset(this->segmentOffset);
this->conn = NULL;
this->initConn = NULL;
@@ -131,20 +132,23 @@ MediaObject* DASHReceiver::GetNextSegment ()
while(this->isPaused)
SleepConditionVariableCS(&this->paused, &this->monitorPausedMutex, INFINITE);
- if(this->segmentNumber >= this->representationStream->getSize())
+ if(!strcmp(this->mpd->GetType().c_str(), "static"))
{
- qDebug("looping? : %s\n", this->isLooping ? "YES" : "NO");
- if(this->isLooping)
+ if(this->segmentNumber >= this->representationStream->getSize())
{
- this->segmentNumber = 0;
- }
- else
- {
- LeaveCriticalSection(&this->monitorPausedMutex);
- return NULL;
+ qDebug("looping? : %s\n", this->isLooping ? "YES" : "NO");
+ if(this->isLooping)
+ {
+ this->segmentNumber = 0;
+ }
+ else
+ {
+ LeaveCriticalSection(&this->monitorPausedMutex);
+ return NULL;
+ }
}
}
- seg = this->representationStream->getMediaSegment(this->segmentNumber + this->segmentOffset);
+ seg = this->representationStream->getMediaSegment(this->segmentNumber);
if (seg != NULL)
{
@@ -167,7 +171,7 @@ MediaObject* DASHReceiver::GetSegment (uint32_t segNum)
if(segNum >= this->representationStream->getSize())
return NULL;
- seg = this->representationStream->getMediaSegment(segNum + segmentOffset);
+ seg = this->representationStream->getMediaSegment(segNum);
if (seg != NULL)
{