/* 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; }