Omm::AvStream::Frame*
FFmpegMeta::readFrame()
{
    AVPacket packet;
    LOG(ffmpeg, trace, "ffmpeg::av_read_frame() ...");
    int ret = av_read_frame(_pFormatContext, &packet);
    _frameNumber++;
    if (ret < 0) {
        LOG(ffmpeg, error, "ffmpeg::av_read_frame() returns: " + Poco::NumberFormatter::format(ret) + " (" + errorMessage(ret) + ")");
        return new Omm::AvStream::Frame(_frameNumber, streamInfo(0), true);
    }
    FFmpegFrame* pFrame = new FFmpegFrame(_frameNumber, streamInfo(packet.stream_index));

    LOG(ffmpeg, trace, "av_dup_packet()");
    if (av_dup_packet(&packet) < 0) {
        LOG(ffmpeg, warning, "av_dup_packet() failed");
    }
    // allocate AVPacket struc
    LOG(ffmpeg, trace, "av_malloc()");
    pFrame->_pAvPacket = (AVPacket*)av_malloc(sizeof(AVPacket));
    // copy fields of AVPacket struc
    *(pFrame->_pAvPacket) = packet;
    pFrame->_data = (char*)packet.data;
    pFrame->_size = packet.size;

    pFrame->setPts(packet.pts);
    return pFrame;
}
Example #2
0
void HttpCookie::readFile()
{
    std::string inString = cocos2d::FileUtils::getInstance()->getStringFromFile(_cookieFileName);
    if(inString.length() != 0)
    {
        std::vector<std::string> cookiesVec;
        cookiesVec.clear();
        
        std::stringstream stream(inString);
        std::string item;
        while(std::getline(stream, item, '\n'))
        {
            cookiesVec.push_back(item);
        }
        
        if(cookiesVec.empty())
            return;
        
        _cookies.clear();
        
        for(auto iter = cookiesVec.begin();iter != cookiesVec.end(); iter++)
        {
            std::string cookie = *iter;
            
            if(cookie.length() == 0)
                continue;
            
            if(cookie.find("#HttpOnly_") != std::string::npos)
            {
                cookie = cookie.substr(10);
            }
            
            if(cookie.at(0) == '#')
                continue;
            
            CookiesInfo co;
            std::stringstream streamInfo(cookie);
            std::vector<std::string> elems;
            std::string elemsItem;
            
            while (std::getline(streamInfo, elemsItem, '\t'))
            {
                elems.push_back(elemsItem);
            }
            
            co.domain = elems[0];
            if (co.domain.at(0) == '.')
            {
                co.domain = co.domain.substr(1);
            }
            co.tailmatch = strcmp("TRUE", elems[1].c_str())?true: false;
            co.path   = elems[2];
            co.secure = strcmp("TRUE", elems[3].c_str())?true: false;
            co.expires = elems[4];
            co.name = elems[5];
            co.value = elems[6];
            _cookies.push_back(co);
        }
    }
}