亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? utils.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
                break;            } else if (s->cur_len > 0 && st->discard < AVDISCARD_ALL) {                len = av_parser_parse(st->parser, st->codec, &pkt->data, &pkt->size,                                      s->cur_ptr, s->cur_len,                                      s->cur_pkt.pts, s->cur_pkt.dts);                s->cur_pkt.pts = AV_NOPTS_VALUE;                s->cur_pkt.dts = AV_NOPTS_VALUE;                /* increment read pointer */                s->cur_ptr += len;                s->cur_len -= len;                /* return packet if any */                if (pkt->size) {                got_packet:                    pkt->pos = s->cur_pkt.pos;              // Isn't quite accurate but close.                    pkt->duration = 0;                    pkt->stream_index = st->index;                    pkt->pts = st->parser->pts;                    pkt->dts = st->parser->dts;                    pkt->destruct = av_destruct_packet_nofree;                    compute_pkt_fields(s, st, st->parser, pkt);                    if((s->iformat->flags & AVFMT_GENERIC_INDEX) && pkt->flags & PKT_FLAG_KEY){                        ff_reduce_index(s, st->index);                        av_add_index_entry(st, st->parser->frame_offset, pkt->dts,                                           0, 0, AVINDEX_KEYFRAME);                    }                    break;                }            } else {                /* free packet */                av_free_packet(&s->cur_pkt);                s->cur_st = NULL;            }        } else {            /* read next packet */            ret = av_read_packet(s, &s->cur_pkt);            if (ret < 0) {                if (ret == AVERROR(EAGAIN))                    return ret;                /* return the last frames, if any */                for(i = 0; i < s->nb_streams; i++) {                    st = s->streams[i];                    if (st->parser && st->need_parsing) {                        av_parser_parse(st->parser, st->codec,                                        &pkt->data, &pkt->size,                                        NULL, 0,                                        AV_NOPTS_VALUE, AV_NOPTS_VALUE);                        if (pkt->size)                            goto got_packet;                    }                }                /* no more packets: really terminate parsing */                return ret;            }            if(s->cur_pkt.pts != AV_NOPTS_VALUE &&               s->cur_pkt.dts != AV_NOPTS_VALUE &&               s->cur_pkt.pts < s->cur_pkt.dts){                av_log(s, AV_LOG_WARNING, "Invalid timestamps stream=%d, pts=%"PRId64", dts=%"PRId64", size=%d\n",                    s->cur_pkt.stream_index,                    s->cur_pkt.pts,                    s->cur_pkt.dts,                    s->cur_pkt.size);//                av_free_packet(&s->cur_pkt);//                return -1;            }            st = s->streams[s->cur_pkt.stream_index];            if(s->debug & FF_FDEBUG_TS)                av_log(s, AV_LOG_DEBUG, "av_read_packet stream=%d, pts=%"PRId64", dts=%"PRId64", size=%d,  flags=%d\n",                    s->cur_pkt.stream_index,                    s->cur_pkt.pts,                    s->cur_pkt.dts,                    s->cur_pkt.size,                    s->cur_pkt.flags);            s->cur_st = st;            s->cur_ptr = s->cur_pkt.data;            s->cur_len = s->cur_pkt.size;            if (st->need_parsing && !st->parser) {                st->parser = av_parser_init(st->codec->codec_id);                if (!st->parser) {                    /* no parser available: just output the raw packets */                    st->need_parsing = AVSTREAM_PARSE_NONE;                }else if(st->need_parsing == AVSTREAM_PARSE_HEADERS){                    st->parser->flags |= PARSER_FLAG_COMPLETE_FRAMES;                }                if(st->parser && (s->iformat->flags & AVFMT_GENERIC_INDEX)){                    st->parser->next_frame_offset=                    st->parser->cur_offset= s->cur_pkt.pos;                }            }        }    }    if(s->debug & FF_FDEBUG_TS)        av_log(s, AV_LOG_DEBUG, "av_read_frame_internal stream=%d, pts=%"PRId64", dts=%"PRId64", size=%d, flags=%d\n",            pkt->stream_index,            pkt->pts,            pkt->dts,            pkt->size,            pkt->flags);    return 0;}static AVPacket *add_to_pktbuf(AVFormatContext *s, AVPacket *pkt){    AVPacketList *pktl= s->packet_buffer;    AVPacketList **plast_pktl= &s->packet_buffer;    while(*plast_pktl) plast_pktl= &(*plast_pktl)->next; //FIXME maybe maintain pointer to the last?    pktl = av_mallocz(sizeof(AVPacketList));    if (!pktl)        return NULL;    /* add the packet in the buffered packet list */    *plast_pktl = pktl;    pktl->pkt= *pkt;    return &pktl->pkt;}int av_read_frame(AVFormatContext *s, AVPacket *pkt){    AVPacketList *pktl;    int eof=0;    const int genpts= s->flags & AVFMT_FLAG_GENPTS;    for(;;){        pktl = s->packet_buffer;        if (pktl) {            AVPacket *next_pkt= &pktl->pkt;            if(genpts && next_pkt->dts != AV_NOPTS_VALUE){                while(pktl && next_pkt->pts == AV_NOPTS_VALUE){                    if(   pktl->pkt.stream_index == next_pkt->stream_index                       && next_pkt->dts < pktl->pkt.dts                       && pktl->pkt.pts != pktl->pkt.dts //not b frame                       /*&& pktl->pkt.dts != AV_NOPTS_VALUE*/){                        next_pkt->pts= pktl->pkt.dts;                    }                    pktl= pktl->next;                }                pktl = s->packet_buffer;            }            if(   next_pkt->pts != AV_NOPTS_VALUE               || next_pkt->dts == AV_NOPTS_VALUE               || !genpts || eof){                /* read packet from packet buffer, if there is data */                *pkt = *next_pkt;                s->packet_buffer = pktl->next;                av_free(pktl);                return 0;            }        }        if(genpts){            int ret= av_read_frame_internal(s, pkt);            if(ret<0){                if(pktl && ret != AVERROR(EAGAIN)){                    eof=1;                    continue;                }else                    return ret;            }            if(av_dup_packet(add_to_pktbuf(s, pkt)) < 0)                return AVERROR(ENOMEM);        }else{            assert(!s->packet_buffer);            return av_read_frame_internal(s, pkt);        }    }}/* XXX: suppress the packet queue */static void flush_packet_queue(AVFormatContext *s){    AVPacketList *pktl;    for(;;) {        pktl = s->packet_buffer;        if (!pktl)            break;        s->packet_buffer = pktl->next;        av_free_packet(&pktl->pkt);        av_free(pktl);    }}/*******************************************************//* seek support */int av_find_default_stream_index(AVFormatContext *s){    int first_audio_index = -1;    int i;    AVStream *st;    if (s->nb_streams <= 0)        return -1;    for(i = 0; i < s->nb_streams; i++) {        st = s->streams[i];        if (st->codec->codec_type == CODEC_TYPE_VIDEO) {            return i;        }        if (first_audio_index < 0 && st->codec->codec_type == CODEC_TYPE_AUDIO)            first_audio_index = i;    }    return first_audio_index >= 0 ? first_audio_index : 0;}/** * Flush the frame reader. */static void av_read_frame_flush(AVFormatContext *s){    AVStream *st;    int i;    flush_packet_queue(s);    /* free previous packet */    if (s->cur_st) {        if (s->cur_st->parser)            av_free_packet(&s->cur_pkt);        s->cur_st = NULL;    }    /* fail safe */    s->cur_ptr = NULL;    s->cur_len = 0;    /* for each stream, reset read state */    for(i = 0; i < s->nb_streams; i++) {        st = s->streams[i];        if (st->parser) {            av_parser_close(st->parser);            st->parser = NULL;        }        st->last_IP_pts = AV_NOPTS_VALUE;        st->cur_dts = AV_NOPTS_VALUE; /* we set the current DTS to an unspecified origin */    }}void av_update_cur_dts(AVFormatContext *s, AVStream *ref_st, int64_t timestamp){    int i;    for(i = 0; i < s->nb_streams; i++) {        AVStream *st = s->streams[i];        st->cur_dts = av_rescale(timestamp,                                 st->time_base.den * (int64_t)ref_st->time_base.num,                                 st->time_base.num * (int64_t)ref_st->time_base.den);    }}void ff_reduce_index(AVFormatContext *s, int stream_index){    AVStream *st= s->streams[stream_index];    unsigned int max_entries= s->max_index_size / sizeof(AVIndexEntry);    if((unsigned)st->nb_index_entries >= max_entries){        int i;        for(i=0; 2*i<st->nb_index_entries; i++)            st->index_entries[i]= st->index_entries[2*i];        st->nb_index_entries= i;    }}int av_add_index_entry(AVStream *st,                            int64_t pos, int64_t timestamp, int size, int distance, int flags){    AVIndexEntry *entries, *ie;    int index;    if((unsigned)st->nb_index_entries + 1 >= UINT_MAX / sizeof(AVIndexEntry))        return -1;    entries = av_fast_realloc(st->index_entries,                              &st->index_entries_allocated_size,                              (st->nb_index_entries + 1) *                              sizeof(AVIndexEntry));    if(!entries)        return -1;    st->index_entries= entries;    index= av_index_search_timestamp(st, timestamp, AVSEEK_FLAG_ANY);    if(index<0){        index= st->nb_index_entries++;        ie= &entries[index];        assert(index==0 || ie[-1].timestamp < timestamp);    }else{        ie= &entries[index];        if(ie->timestamp != timestamp){            if(ie->timestamp <= timestamp)                return -1;            memmove(entries + index + 1, entries + index, sizeof(AVIndexEntry)*(st->nb_index_entries - index));            st->nb_index_entries++;        }else if(ie->pos == pos && distance < ie->min_distance) //do not reduce the distance            distance= ie->min_distance;    }    ie->pos = pos;    ie->timestamp = timestamp;    ie->min_distance= distance;    ie->size= size;    ie->flags = flags;    return index;}int av_index_search_timestamp(AVStream *st, int64_t wanted_timestamp,                              int flags){    AVIndexEntry *entries= st->index_entries;    int nb_entries= st->nb_index_entries;    int a, b, m;    int64_t timestamp;    a = - 1;    b = nb_entries;    while (b - a > 1) {        m = (a + b) >> 1;        timestamp = entries[m].timestamp;        if(timestamp >= wanted_timestamp)            b = m;        if(timestamp <= wanted_timestamp)            a = m;    }    m= (flags & AVSEEK_FLAG_BACKWARD) ? a : b;    if(!(flags & AVSEEK_FLAG_ANY)){        while(m>=0 && m<nb_entries && !(entries[m].flags & AVINDEX_KEYFRAME)){            m += (flags & AVSEEK_FLAG_BACKWARD) ? -1 : 1;        }    }    if(m == nb_entries)        return -1;    return  m;}#define DEBUG_SEEKint av_seek_frame_binary(AVFormatContext *s, int stream_index, int64_t target_ts, int flags){    AVInputFormat *avif= s->iformat;    int64_t pos_min, pos_max, pos, pos_limit;    int64_t ts_min, ts_max, ts;    int index;    AVStream *st;    if (stream_index < 0)        return -1;#ifdef DEBUG_SEEK    av_log(s, AV_LOG_DEBUG, "read_seek: %d %"PRId64"\n", stream_index, target_ts);#endif    ts_max=    ts_min= AV_NOPTS_VALUE;    pos_limit= -1; //gcc falsely says it may be uninitialized    st= s->streams[stream_index];    if(st->index_entries){        AVIndexEntry *e;        index= av_index_search_timestamp(st, target_ts, flags | AVSEEK_FLAG_BACKWARD); //FIXME whole func must be checked for non-keyframe entries in index case, especially read_timestamp()        index= FFMAX(index, 0);        e= &st->index_entries[index];        if(e->timestamp <= target_ts || e->pos == e->min_distance){            pos_min= e->pos;            ts_min= e->timestamp;#ifdef DEBUG_SEEK        av_log(s, AV_LOG_DEBUG, "using cached pos_min=0x%"PRIx64" dts_min=%"PRId64"\n",               pos_min,ts_min);#endif        }else{            assert(index==0);        }        index= av_index_search_timestamp(st, target_ts, flags & ~AVSEEK_FLAG_BACKWARD);        assert(index < st->nb_index_entries);        if(index >= 0){            e= &st->index_entries[index];            assert(e->timestamp >= target_ts);            pos_max= e->pos;            ts_max= e->timestamp;            pos_limit= pos_max - e->min_distance;#ifdef DEBUG_SEEK        av_log(s, AV_LOG_DEBUG, "using cached pos_max=0x%"PRIx64" pos_limit=0x%"PRIx64" dts_max=%"PRId64"\n",               pos_max,pos_limit, ts_max);#endif        }    }    pos= av_gen_search(s, stream_index, target_ts, pos_min, pos_max, pos_limit, ts_min, ts_max, flags, &ts, avif->read_timestamp);    if(pos<0)        return -1;    /* do the seek */    url_fseek(s->pb, pos, SEEK_SET);    av_update_cur_dts(s, st, ts);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区视频在线观看| 粉嫩aⅴ一区二区三区四区| 奇米精品一区二区三区在线观看一| 麻豆免费看一区二区三区| 91香蕉国产在线观看软件| 欧美videos中文字幕| 一区二区三区蜜桃| 国产精品一区二区在线观看不卡 | 成人免费视频播放| 制服.丝袜.亚洲.另类.中文| 亚洲欧美一区二区三区极速播放 | 亚洲欧洲国产专区| 黄色精品一二区| 欧美视频你懂的| 中文字幕一区二区三区精华液 | 国产精品911| 欧美一区午夜视频在线观看| 一区二区在线观看免费| 国产精品538一区二区在线| 欧美日韩国产精选| 亚洲欧洲成人精品av97| 国产精品99久久久久久宅男| 欧美大片在线观看| 美女在线视频一区| 4438x亚洲最大成人网| 亚洲激情图片qvod| 99精品久久99久久久久| 久久久久久麻豆| 亚洲1区2区3区视频| 色综合久久88色综合天天6| 国产精品三级久久久久三级| 国产福利视频一区二区三区| www久久精品| 美女www一区二区| 日韩免费电影一区| 日本成人在线看| 日韩视频123| 美女视频网站久久| 日韩精品一区二区在线| 看电视剧不卡顿的网站| 日韩久久久久久| 国产一区二区三区视频在线播放 | 在线免费观看不卡av| 日韩理论片一区二区| 不卡欧美aaaaa| 亚洲天天做日日做天天谢日日欢| gogo大胆日本视频一区| 亚洲女与黑人做爰| 欧美在线免费观看亚洲| 日日夜夜精品免费视频| 欧美一级电影网站| 精品一区二区三区免费毛片爱| 精品国产亚洲在线| 高清在线观看日韩| 一区二区三区毛片| 欧美一区二区在线视频| 加勒比av一区二区| 中文字幕乱码日本亚洲一区二区| 成人激情电影免费在线观看| 亚洲精品少妇30p| 制服丝袜亚洲精品中文字幕| 韩国精品免费视频| 中文字幕一区二区三中文字幕| 91蜜桃免费观看视频| 亚洲成人tv网| 国产亚洲综合av| 色偷偷一区二区三区| 蜜桃一区二区三区四区| 日本一区二区在线不卡| 欧美性猛交一区二区三区精品| 免费人成精品欧美精品| 国产亚洲1区2区3区| 在线视频欧美区| 久久精品国产澳门| 亚洲美女视频在线| 精品国产一区二区三区av性色| 波多野结衣亚洲| 青青草原综合久久大伊人精品 | 国产高清不卡一区| 亚洲成人7777| 26uuuu精品一区二区| 色老头久久综合| 国产成人无遮挡在线视频| 亚洲一区二区高清| 中文字幕va一区二区三区| 欧美一级理论片| 色综合久久久久久久| 青青草91视频| 夜夜亚洲天天久久| 国产精品沙发午睡系列990531| 911国产精品| 色噜噜狠狠成人中文综合| 国产美女精品人人做人人爽| 五月天视频一区| 亚洲天天做日日做天天谢日日欢| 欧美电影在哪看比较好| 99久久精品情趣| 国产91色综合久久免费分享| 另类小说欧美激情| 亚洲大尺度视频在线观看| 亚洲欧洲日韩在线| 国产亚洲精品资源在线26u| 在线播放视频一区| 色婷婷狠狠综合| av网站免费线看精品| 国产成人高清在线| 国精产品一区一区三区mba桃花| 亚洲成人资源网| 亚洲一区二区欧美日韩 | 亚洲第一综合色| 1000部国产精品成人观看| 国产欧美日韩在线看| 久久色.com| 久久久久久久久伊人| 国产日韩精品一区二区浪潮av | 欧美中文字幕一区| 色94色欧美sute亚洲线路一久| 成人av午夜电影| 成人高清免费观看| 成人激情小说乱人伦| 不卡一区二区中文字幕| 成人a免费在线看| 91视频免费看| 91福利资源站| 欧美日韩在线精品一区二区三区激情 | 欧洲精品一区二区| 91久久奴性调教| 欧美色图片你懂的| 欧美日韩亚洲综合在线| 91精品综合久久久久久| 欧美电影免费观看高清完整版在线观看| 91麻豆精品国产无毒不卡在线观看| 91精品综合久久久久久| 欧美电影免费观看高清完整版在线观看| 日韩视频在线观看一区二区| 26uuu久久天堂性欧美| 国产精品毛片久久久久久| 亚洲激情图片一区| 日韩 欧美一区二区三区| 麻豆成人综合网| 国产精品一区一区三区| av高清久久久| 欧美系列一区二区| 91精品国产综合久久精品app| 日韩欧美国产1| 中文字幕在线不卡一区| 亚洲一区视频在线| 久久66热re国产| 成人高清视频在线| 91精品国产一区二区| 中文字幕国产一区二区| 亚洲午夜在线视频| 久久99热这里只有精品| yourporn久久国产精品| 欧美一区二视频| 国产精品久久久久久久久图文区| 亚洲国产日韩一区二区| 国产一二精品视频| 欧美日韩国产高清一区| 国产精品网站导航| 日日夜夜免费精品| 99久免费精品视频在线观看| 91精品婷婷国产综合久久性色| 国产女同互慰高潮91漫画| 亚洲一区二区三区四区在线| 国产福利91精品一区二区三区| 91精品国产乱码| 国产精品三级av在线播放| 美日韩一区二区| 色综合久久久久综合99| 久久综合色播五月| 无码av免费一区二区三区试看| 成人激情图片网| 精品美女在线观看| 亚洲成人三级小说| 色综合久久久网| 国产亚洲一区二区三区在线观看| 午夜视黄欧洲亚洲| 色悠悠亚洲一区二区| 国产色婷婷亚洲99精品小说| 喷白浆一区二区| 欧美系列在线观看| 亚洲精品国产精品乱码不99| 福利一区在线观看| 日韩精品在线看片z| 午夜精品久久久久久久久久| 99re免费视频精品全部| 国产日韩欧美制服另类| 精品一区二区三区视频在线观看| 宅男在线国产精品| 香蕉av福利精品导航| 欧洲国产伦久久久久久久| 综合自拍亚洲综合图不卡区| 国产91丝袜在线播放| 欧美韩日一区二区三区四区| 国产老妇另类xxxxx| 精品sm在线观看| 精品午夜久久福利影院| 日韩免费观看高清完整版| 奇米精品一区二区三区在线观看|