/* 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;
}
Пример #2
0
/* 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;
}
Пример #3
0
/* 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;
}
Пример #4
0
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();
    }
}
Пример #5
0
/* 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;
}