コード例 #1
0
ファイル: DASHManager.cpp プロジェクト: praveenster/libdash
/* 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;
}
コード例 #2
0
ファイル: DASHReceiver.cpp プロジェクト: praveenster/libdash
/* 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;
}