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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? utils.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
            break;        ret = av_read_packet(ic, pkt);        if (ret != 0)            break;        read_size += pkt->size;        st = ic->streams[pkt->stream_index];        if (pkt->pts != AV_NOPTS_VALUE &&            st->start_time != AV_NOPTS_VALUE) {            end_time = pkt->pts;            duration = end_time - st->start_time;            if (duration > 0) {                if (st->duration == AV_NOPTS_VALUE ||                    st->duration < duration)                    st->duration = duration;            }        }        av_free_packet(pkt);    }    fill_all_stream_timings(ic);    url_fseek(ic->pb, old_offset, SEEK_SET);    for(i=0; i<ic->nb_streams; i++){        st= ic->streams[i];        st->cur_dts= st->first_dts;        st->last_IP_pts = AV_NOPTS_VALUE;    }}static void av_estimate_timings(AVFormatContext *ic, offset_t old_offset){    int64_t file_size;    /* get the file size, if possible */    if (ic->iformat->flags & AVFMT_NOFILE) {        file_size = 0;    } else {        file_size = url_fsize(ic->pb);        if (file_size < 0)            file_size = 0;    }    ic->file_size = file_size;    if ((!strcmp(ic->iformat->name, "mpeg") ||         !strcmp(ic->iformat->name, "mpegts")) &&        file_size && !url_is_streamed(ic->pb)) {        /* get accurate estimate from the PTSes */        av_estimate_timings_from_pts(ic, old_offset);    } else if (av_has_duration(ic)) {        /* at least one component has timings - we use them for all           the components */        fill_all_stream_timings(ic);    } else {        /* less precise: use bitrate info */        av_estimate_timings_from_bit_rate(ic);    }    av_update_stream_timings(ic);#if 0    {        int i;        AVStream *st;        for(i = 0;i < ic->nb_streams; i++) {            st = ic->streams[i];        printf("%d: start_time: %0.3f duration: %0.3f\n",               i, (double)st->start_time / AV_TIME_BASE,               (double)st->duration / AV_TIME_BASE);        }        printf("stream: start_time: %0.3f duration: %0.3f bitrate=%d kb/s\n",               (double)ic->start_time / AV_TIME_BASE,               (double)ic->duration / AV_TIME_BASE,               ic->bit_rate / 1000);    }#endif}static int has_codec_parameters(AVCodecContext *enc){    int val;    switch(enc->codec_type) {    case CODEC_TYPE_AUDIO:        val = enc->sample_rate && enc->channels;        if(!enc->frame_size &&           (enc->codec_id == CODEC_ID_VORBIS ||            enc->codec_id == CODEC_ID_AAC))            return 0;        break;    case CODEC_TYPE_VIDEO:        val = enc->width && enc->pix_fmt != PIX_FMT_NONE;        break;    default:        val = 1;        break;    }    return enc->codec_id != CODEC_ID_NONE && val != 0;}static int try_decode_frame(AVStream *st, const uint8_t *data, int size){    int16_t *samples;    AVCodec *codec;    int got_picture, data_size, ret=0;    AVFrame picture;  if(!st->codec->codec){    codec = avcodec_find_decoder(st->codec->codec_id);    if (!codec)        return -1;    ret = avcodec_open(st->codec, codec);    if (ret < 0)        return ret;  }  if(!has_codec_parameters(st->codec)){    switch(st->codec->codec_type) {    case CODEC_TYPE_VIDEO:        ret = avcodec_decode_video(st->codec, &picture,                                   &got_picture, data, size);        break;    case CODEC_TYPE_AUDIO:        data_size = FFMAX(size, AVCODEC_MAX_AUDIO_FRAME_SIZE);        samples = av_malloc(data_size);        if (!samples)            goto fail;        ret = avcodec_decode_audio2(st->codec, samples,                                    &data_size, data, size);        av_free(samples);        break;    default:        break;    }  } fail:    return ret;}static int set_codec_from_probe_data(AVStream *st, AVProbeData *pd, int score){    AVInputFormat *fmt;    fmt = av_probe_input_format2(pd, 1, &score);    if (fmt) {        if (strncmp(fmt->name, "mp3", 3) == 0)            st->codec->codec_id = CODEC_ID_MP3;        else if (strncmp(fmt->name, "ac3", 3) == 0)            st->codec->codec_id = CODEC_ID_AC3;    }    return !!fmt;}unsigned int codec_get_tag(const AVCodecTag *tags, int id){    while (tags->id != CODEC_ID_NONE) {        if (tags->id == id)            return tags->tag;        tags++;    }    return 0;}enum CodecID codec_get_id(const AVCodecTag *tags, unsigned int tag){    int i;    for(i=0; tags[i].id != CODEC_ID_NONE;i++) {        if(tag == tags[i].tag)            return tags[i].id;    }    for(i=0; tags[i].id != CODEC_ID_NONE; i++) {        if(   toupper((tag >> 0)&0xFF) == toupper((tags[i].tag >> 0)&0xFF)           && toupper((tag >> 8)&0xFF) == toupper((tags[i].tag >> 8)&0xFF)           && toupper((tag >>16)&0xFF) == toupper((tags[i].tag >>16)&0xFF)           && toupper((tag >>24)&0xFF) == toupper((tags[i].tag >>24)&0xFF))            return tags[i].id;    }    return CODEC_ID_NONE;}unsigned int av_codec_get_tag(const AVCodecTag *tags[4], enum CodecID id){    int i;    for(i=0; tags && tags[i]; i++){        int tag= codec_get_tag(tags[i], id);        if(tag) return tag;    }    return 0;}enum CodecID av_codec_get_id(const AVCodecTag *tags[4], unsigned int tag){    int i;    for(i=0; tags && tags[i]; i++){        enum CodecID id= codec_get_id(tags[i], tag);        if(id!=CODEC_ID_NONE) return id;    }    return CODEC_ID_NONE;}static void compute_chapters_end(AVFormatContext *s){    unsigned int i;    for (i=0; i+1<s->nb_chapters; i++)        if (s->chapters[i]->end == AV_NOPTS_VALUE) {            assert(s->chapters[i]->start <= s->chapters[i+1]->start);            assert(!av_cmp_q(s->chapters[i]->time_base, s->chapters[i+1]->time_base));            s->chapters[i]->end = s->chapters[i+1]->start;        }    if (s->nb_chapters && s->chapters[i]->end == AV_NOPTS_VALUE) {        assert(s->start_time != AV_NOPTS_VALUE);        assert(s->duration > 0);        s->chapters[i]->end = av_rescale_q(s->start_time + s->duration,                                           AV_TIME_BASE_Q,                                           s->chapters[i]->time_base);    }}/* absolute maximum size we read until we abort */#define MAX_READ_SIZE        5000000#define MAX_STD_TIMEBASES (60*12+5)static int get_std_framerate(int i){    if(i<60*12) return i*1001;    else        return ((int[]){24,30,60,12,15})[i-60*12]*1000*12;}/* * Is the time base unreliable. * This is a heuristic to balance between quick acceptance of the values in * the headers vs. some extra checks. * Old DivX and Xvid often have nonsense timebases like 1fps or 2fps. * MPEG-2 commonly misuses field repeat flags to store different framerates. * And there are "variable" fps files this needs to detect as well. */static int tb_unreliable(AVCodecContext *c){    if(   c->time_base.den >= 101L*c->time_base.num       || c->time_base.den <    5L*c->time_base.num/*       || c->codec_tag == ff_get_fourcc("DIVX")       || c->codec_tag == ff_get_fourcc("XVID")*/       || c->codec_id == CODEC_ID_MPEG2VIDEO)        return 1;    return 0;}int av_find_stream_info(AVFormatContext *ic){    int i, count, ret, read_size, j;    AVStream *st;    AVPacket pkt1, *pkt;    int64_t last_dts[MAX_STREAMS];    int duration_count[MAX_STREAMS]={0};    double (*duration_error)[MAX_STD_TIMEBASES];    offset_t old_offset = url_ftell(ic->pb);    int64_t codec_info_duration[MAX_STREAMS]={0};    int codec_info_nb_frames[MAX_STREAMS]={0};    AVProbeData probe_data[MAX_STREAMS];    int codec_identified[MAX_STREAMS]={0};    duration_error = av_mallocz(MAX_STREAMS * sizeof(*duration_error));    if (!duration_error) return AVERROR(ENOMEM);    for(i=0;i<ic->nb_streams;i++) {        st = ic->streams[i];        if(st->codec->codec_type == CODEC_TYPE_VIDEO){/*            if(!st->time_base.num)                st->time_base= */            if(!st->codec->time_base.num)                st->codec->time_base= st->time_base;        }        //only for the split stuff        if (!st->parser) {            st->parser = av_parser_init(st->codec->codec_id);            if(st->need_parsing == AVSTREAM_PARSE_HEADERS && st->parser){                st->parser->flags |= PARSER_FLAG_COMPLETE_FRAMES;            }        }    }    for(i=0;i<MAX_STREAMS;i++){        last_dts[i]= AV_NOPTS_VALUE;    }    memset(probe_data, 0, sizeof(probe_data));    count = 0;    read_size = 0;    for(;;) {        /* check if one codec still needs to be handled */        for(i=0;i<ic->nb_streams;i++) {            st = ic->streams[i];            if (!has_codec_parameters(st->codec))                break;            /* variable fps and no guess at the real fps */            if(   tb_unreliable(st->codec)               && duration_count[i]<20 && st->codec->codec_type == CODEC_TYPE_VIDEO)                break;            if(st->parser && st->parser->parser->split && !st->codec->extradata)                break;            if(st->first_dts == AV_NOPTS_VALUE)                break;        }        if (i == ic->nb_streams) {            /* NOTE: if the format has no header, then we need to read               some packets to get most of the streams, so we cannot               stop here */            if (!(ic->ctx_flags & AVFMTCTX_NOHEADER)) {                /* if we found the info for all the codecs, we can stop */                ret = count;                break;            }        }        /* we did not get all the codec info, but we read too much data */        if (read_size >= MAX_READ_SIZE) {            ret = count;            break;        }        /* NOTE: a new stream can be added there if no header in file           (AVFMTCTX_NOHEADER) */        ret = av_read_frame_internal(ic, &pkt1);        if (ret < 0) {            /* EOF or error */            ret = -1; /* we could not have all the codec parameters before EOF */            for(i=0;i<ic->nb_streams;i++) {                st = ic->streams[i];                if (!has_codec_parameters(st->codec)){                    char buf[256];                    avcodec_string(buf, sizeof(buf), st->codec, 0);                    av_log(ic, AV_LOG_INFO, "Could not find codec parameters (%s)\n", buf);                } else {                    ret = 0;                }            }            break;        }        pkt= add_to_pktbuf(ic, &pkt1);        if(av_dup_packet(pkt) < 0)            return AVERROR(ENOMEM);        read_size += pkt->size;        st = ic->streams[pkt->stream_index];        if(codec_info_nb_frames[st->index]>1)            codec_info_duration[st->index] += pkt->duration;        if (pkt->duration != 0)            codec_info_nb_frames[st->index]++;        {            int index= pkt->stream_index;            int64_t last= last_dts[index];            int64_t duration= pkt->dts - last;            if(pkt->dts != AV_NOPTS_VALUE && last != AV_NOPTS_VALUE && duration>0){                double dur= duration * av_q2d(st->time_base);//                if(st->codec->codec_type == CODEC_TYPE_VIDEO)//                    av_log(NULL, AV_LOG_ERROR, "%f\n", dur);                if(duration_count[index] < 2)                    memset(duration_error[index], 0, sizeof(*duration_error));                for(i=1; i<MAX_STD_TIMEBASES; i++){                    int framerate= get_std_framerate(i);                    int ticks= lrintf(dur*framerate/(1001*12));                    double error= dur - ticks*1001*12/(double)framerate;                    duration_error[index][i] += error*error;                }                duration_count[index]++;            }            if(last == AV_NOPTS_VALUE || duration_count[index]<=1)                last_dts[pkt->stream_index]= pkt->dts;            if (st->codec->codec_id == CODEC_ID_NONE) {                AVProbeData *pd = &(probe_data[st->index]);                pd->buf = av_realloc(pd->buf, pd->buf_size+pkt->size+AVPROBE_PADDING_SIZE);                memcpy(pd->buf+pd->buf_size, pkt->data, pkt->size);                pd->buf_size += pkt->size;                memset(pd->buf+pd->buf_size, 0, AVPROBE_PADDING_SIZE);            }        }        if(st->parser && st->parser->parser->split && !st->codec->extradata){            int i= st->parser->parser->split(st->codec, pkt->data, pkt->size);            if(i){                st->codec->extradata_size= i;                st->codec->extradata= av_malloc(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);                memcpy(st->codec->extradata, pkt->data, st->codec->extradata_size);                memset(st->codec->extradata + i, 0, FF_INPUT_BUFFER_PADDING_SIZE);            }        }        /* if still no information, we try to open the codec and to           decompress the frame. We try to avoid that in most cases as           it takes longer and uses more memory. For MPEG-4, we need to           decompress for QuickTime. */        if (!has_codec_parameters(st->codec) /*&&            (st->codec->codec_id == CODEC_ID_FLV1 ||             st->codec->codec_id == CODEC_ID_H264 ||             st->codec->codec_id == CODEC_ID_H263 ||             st->codec->codec_id == CODEC_ID_H261 ||             st->codec->codec_id == CODEC_ID_VORBIS ||             st->codec->codec_id == CODEC_ID_MJPEG ||             st->codec->codec_id == CODEC_ID_PNG ||             st->codec->codec_id == CODEC_ID_PAM ||             st->codec->codec_id == CODEC_ID_PGM ||             st->codec->codec_id == CODEC_ID_PGMYUV ||             st->codec->codec_id == CODEC_ID_PBM ||             st->codec->codec_id == CODEC_ID_PPM ||             st->codec->codec_id == CODEC_ID_SHORTEN ||             (st->codec->codec_id == CODEC_ID_MPEG4 && !st->need_parsing))*/)            try_decode_frame(st, pkt->data, pkt->size);        if (st->time_base.den > 0 && av_rescale_q(codec_info_duration[st->index], st->time_base, AV_TIME_BASE_Q) >= ic->max

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情欧美激情| 蜜桃久久精品一区二区| 欧美精品丝袜久久久中文字幕| 精品在线播放免费| 一区二区三区在线视频播放| 国产亚洲一区字幕| 欧美喷潮久久久xxxxx| 99精品偷自拍| 国产揄拍国内精品对白| 偷拍与自拍一区| 亚洲欧美电影院| 中文字幕二三区不卡| 欧美精品一区在线观看| 欧美日本在线视频| 在线视频欧美区| 99国产麻豆精品| 高清不卡一区二区| 国产精品一区二区无线| 美女国产一区二区三区| 日韩国产精品大片| 一区二区三区在线观看欧美| 国产精品福利电影一区二区三区四区 | 国产日本一区二区| 日韩一区二区三区四区五区六区| 色婷婷av一区| 99久久精品国产网站| 国产91丝袜在线18| 懂色av噜噜一区二区三区av| 国产一区二区三区四区五区入口| 蜜臀精品久久久久久蜜臀| 首页国产丝袜综合| 日韩极品在线观看| 日本欧美在线看| 三级欧美在线一区| 热久久一区二区| 老司机精品视频在线| 免费人成在线不卡| 美女视频一区在线观看| 久久国产精品99久久人人澡| 美女mm1313爽爽久久久蜜臀| 蜜桃av一区二区三区| 久久精品国产免费| 国产精品99久久久久久久女警 | 色狠狠综合天天综合综合| 91在线视频免费观看| 色综合久久中文综合久久97| 在线免费观看成人短视频| 欧美自拍偷拍一区| 欧美美女一区二区在线观看| 制服丝袜亚洲色图| 日韩视频一区二区三区| 精品美女一区二区三区| 2023国产精品视频| 国产精品女同一区二区三区| 中文字幕亚洲欧美在线不卡| 一区二区久久久久久| 午夜电影一区二区| 精品一区二区三区免费| 成人做爰69片免费看网站| 色综合久久88色综合天天| 欧美日韩免费观看一区二区三区| 这里是久久伊人| 久久久久久久久久看片| 亚洲欧美日韩一区二区三区在线观看| 亚洲制服丝袜av| 美女视频黄免费的久久| 成人综合激情网| 欧美无人高清视频在线观看| 日韩午夜激情免费电影| 日本一区二区三区四区| 亚洲综合免费观看高清完整版在线 | 欧美电影免费观看高清完整版| 精品1区2区在线观看| 自拍偷拍欧美激情| 视频一区二区国产| 国产一区二区不卡| 在线视频国内一区二区| 欧美大片拔萝卜| 亚洲视频小说图片| 久久99国产精品久久99| 色偷偷久久人人79超碰人人澡| 日韩欧美中文字幕一区| 国产精品激情偷乱一区二区∴| 午夜精品在线看| 国产不卡视频在线观看| 欧美美女黄视频| 国产夜色精品一区二区av| 亚洲在线观看免费| 粉嫩13p一区二区三区| 欧美精品色综合| 一区二区中文视频| 九九精品一区二区| 欧美在线一区二区三区| 久久久国产精品麻豆| 日韩高清不卡一区| av爱爱亚洲一区| 久久久激情视频| 日韩中文字幕麻豆| 色婷婷一区二区| 久久精品视频一区二区| 日韩avvvv在线播放| 97久久超碰国产精品电影| 26uuu亚洲综合色| 亚洲gay无套男同| 一本色道亚洲精品aⅴ| 国产日韩av一区二区| 麻豆一区二区三| 欧美日本在线视频| 一区二区三区影院| 99久久精品免费精品国产| 久久一留热品黄| 久久国产尿小便嘘嘘尿| 制服视频三区第一页精品| 亚洲一区二区三区中文字幕在线| 国产成人精品亚洲777人妖| 欧美电影免费观看完整版| 婷婷夜色潮精品综合在线| 欧美伊人久久久久久久久影院| 亚洲天堂a在线| 91免费在线看| 国产精品女主播av| 成人午夜电影小说| 欧美激情在线免费观看| 国产成人亚洲综合a∨婷婷图片 | 在线看国产一区二区| 亚洲品质自拍视频| 91在线观看下载| 中文字幕一区二区三区视频| 成人激情开心网| 国产精品美女视频| 成人激情小说网站| 国产精品另类一区| 床上的激情91.| 国产精品久久99| 91浏览器打开| 亚洲黄色免费电影| 欧美三级韩国三级日本三斤| 亚洲一区二区偷拍精品| 欧美日韩国产bt| 秋霞电影网一区二区| 精品三级在线观看| 国产精品一区一区三区| xfplay精品久久| 成人黄动漫网站免费app| 亚洲欧洲日韩综合一区二区| www.激情成人| 亚洲国产精品一区二区久久恐怖片| 欧美天堂一区二区三区| 日韩电影在线看| 26uuu亚洲| 91日韩在线专区| 亚洲成人手机在线| 精品盗摄一区二区三区| 国产不卡视频一区| 一区二区三区高清在线| 欧美一级二级三级蜜桃| 国产精品99久久久久久久女警| 国产精品高潮呻吟久久| 欧美日韩在线三级| 狠狠色丁香久久婷婷综合_中| 国产欧美一区在线| 在线观看日韩国产| 九色porny丨国产精品| 国产精品久久久久久妇女6080| 在线观看一区二区精品视频| 奇米影视一区二区三区小说| 久久精品人人爽人人爽| 91视视频在线观看入口直接观看www| 亚洲.国产.中文慕字在线| 精品理论电影在线| 99在线热播精品免费| 午夜精品久久久久| 国产欧美精品国产国产专区| 欧美性一二三区| 国产在线视视频有精品| 亚洲精品欧美二区三区中文字幕| 91精品国产欧美一区二区18| 国产成人丝袜美腿| 亚洲成人综合在线| 日本一区二区不卡视频| 欧美日韩高清一区| 国产91在线观看丝袜| 日韩激情一区二区| 亚洲色图欧洲色图婷婷| 日韩欧美国产电影| 色丁香久综合在线久综合在线观看| 久久国产免费看| 亚洲综合在线五月| 国产亚洲欧美日韩日本| 91精品国产色综合久久不卡蜜臀 | 欧美日韩国产高清一区二区三区 | 欧美丰满美乳xxx高潮www| 国产成人一级电影| 日本不卡视频一二三区| 亚洲男人都懂的| 日本一区二区三区在线观看| 91精品国产综合久久香蕉麻豆 | 免费观看成人av| 一区二区三区四区在线免费观看| 久久精品夜色噜噜亚洲aⅴ|