/* Thread that does the buffering of segments */ void* DASHReceiver::DoBuffering (void *receiver) { DASHReceiver *dashReceiver = (DASHReceiver *) receiver; dashReceiver->DownloadInitSegment(dashReceiver->GetRepresentation()); MediaObject *media = dashReceiver->GetNextSegment(); media->SetDASHReceiver(dashReceiver); while(media != NULL && dashReceiver->isBuffering) { media->StartDownload(dashReceiver->conn); if (!dashReceiver->buffer->PushBack(media)) return NULL; media->WaitFinished(); dashReceiver->NotifySegmentDownloaded(); media = dashReceiver->GetNextSegment(); if(media) media->SetDASHReceiver(dashReceiver); } dashReceiver->buffer->SetEOS(true); return NULL; }