/* 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 = dashReceiver->GetNextSegment(); while(media != NULL && dashReceiver->isBuffering) { media->StartDownload(); if (!dashReceiver->buffer->PushBack(media)) { delete(media); media = NULL; return NULL; } media->WaitFinished(); dashReceiver->NotifySegmentDownloaded(); media = dashReceiver->GetNextSegment(); } dashReceiver->buffer->SetEOS(true); return NULL; }
/* Thread that does the buffering of segments */ void* DASHManager::DoBuffering (void *receiver) { DASHManager *dashmanager = (DASHManager *) receiver; MediaObject *media = dashmanager->logic->GetSegment(); while(media != NULL && dashmanager->isDownloading) { media->StartDownload(); if (!dashmanager->buffer->PushBack(media)) return NULL; media->WaitFinished(); /* Just for demonstration purpose * * Do something with the HTTPHeader... * e.g. parse it for "Content-Length:" to retrieve the segment size in bytes */ std::string header = media->GetHTTPTransactionList().at(0)->HTTPHeader(); dashmanager->NotifySegmentDownloaded(); media = dashmanager->logic->GetSegment(); } dashmanager->buffer->SetEOS(true); return NULL; }
/* Thread that does the buffering of segments */ void* DASHReceiver::DoBuffering (void *receiver) { DASHReceiver *dashreceiver = (DASHReceiver *) receiver; uint32_t number = 0; MediaObject *media = dashreceiver->logic->GetSegment(number); while(media != NULL) { media->StartDownload(); media->WaitFinished(); dashreceiver->buffer->Push(media); number++; /* Just for demonstration purpose * * Do something with the HTTPHeader... * e.g. parse it for "Content-Length:" to retrieve the segment size in bytes */ std::string header = media->GetHTTPTransactionList().at(0)->HTTPHeader(); media = dashreceiver->logic->GetSegment(number); std::cout << "Buffer size in segments: " << dashreceiver->buffer->Length() << std::endl; } dashreceiver->buffer->SetEOS(true); return NULL; }
void DASHReceiver::DownloadInitSegment (IRepresentation* rep) { if (this->InitSegmentExists(rep)) return; MediaObject *initSeg = NULL; initSeg = this->GetInitSegment(); if (initSeg) { initSeg->StartDownload(this->conn); this->initSegments[rep] = initSeg; initSeg->WaitFinished(); } }
/* Thread that does the buffering of segments */ void* DASHReceiver::DoBuffering (void *receiver) { DASHReceiver *dashreceiver = (DASHReceiver *) receiver; uint32_t number = 0; MediaObject *media = dashreceiver->logic->GetSegment(number); while(media != NULL) { media->StartDownload(); media->WaitFinished(); dashreceiver->buffer->Push(media); number++; media = dashreceiver->logic->GetSegment(number); std::cout << "Buffer size in segments: " << dashreceiver->buffer->Length() << std::endl; } dashreceiver->buffer->SetEOS(true); return NULL; }