コード例 #1
0
/* 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;
}