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

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

?? mov.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:
        if ((uint64_t)entries+sc->ctts_count >= UINT_MAX/sizeof(*sc->ctts_data))            return -1;        sc->ctts_data = av_realloc(sc->ctts_data,                                   (entries+sc->ctts_count)*sizeof(*sc->ctts_data));        if (!sc->ctts_data)            return AVERROR(ENOMEM);    }    dts = st->duration;    offset = frag->base_data_offset + data_offset;    distance = 0;    dprintf(c->fc, "first sample flags 0x%x\n", first_sample_flags);    for (i = 0; i < entries; i++) {        unsigned sample_size = frag->size;        int sample_flags = i ? frag->flags : first_sample_flags;        unsigned sample_duration = frag->duration;        int keyframe;        if (flags & 0x100) sample_duration = get_be32(pb);        if (flags & 0x200) sample_size     = get_be32(pb);        if (flags & 0x400) sample_flags    = get_be32(pb);        if (flags & 0x800) {            sc->ctts_data[sc->ctts_count].count = 1;            sc->ctts_data[sc->ctts_count].duration = get_be32(pb);            sc->ctts_count++;        }        if ((keyframe = st->codec->codec_type == CODEC_TYPE_AUDIO ||             (flags & 0x004 && !i && !sample_flags) || sample_flags & 0x2000000))            distance = 0;        av_add_index_entry(st, offset, dts, sample_size, distance,                           keyframe ? AVINDEX_KEYFRAME : 0);        dprintf(c->fc, "AVIndex stream %d, sample %d, offset %"PRIx64", dts %"PRId64", "                "size %d, distance %d, keyframe %d\n", st->index, sc->sample_count+i,                offset, dts, sample_size, distance, keyframe);        distance++;        assert(sample_duration % sc->time_rate == 0);        dts += sample_duration / sc->time_rate;        offset += sample_size;    }    frag->moof_offset = offset;    sc->sample_count = st->nb_index_entries;    st->duration = dts;    return 0;}/* this atom should be null (from specs), but some buggy files put the 'moov' atom inside it... *//* like the files created with Adobe Premiere 5.0, for samples see *//* http://graphics.tudelft.nl/~wouter/publications/soundtests/ */static int mov_read_wide(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    int err;    if (atom.size < 8)        return 0; /* continue */    if (get_be32(pb) != 0) { /* 0 sized mdat atom... use the 'wide' atom size */        url_fskip(pb, atom.size - 4);        return 0;    }    atom.type = get_le32(pb);    atom.offset += 8;    atom.size -= 8;    if (atom.type != MKTAG('m','d','a','t')) {        url_fskip(pb, atom.size);        return 0;    }    err = mov_read_mdat(c, pb, atom);    return err;}static int mov_read_cmov(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){#ifdef CONFIG_ZLIB    ByteIOContext ctx;    uint8_t *cmov_data;    uint8_t *moov_data; /* uncompressed data */    long cmov_len, moov_len;    int ret = -1;    get_be32(pb); /* dcom atom */    if (get_le32(pb) != MKTAG('d','c','o','m'))        return -1;    if (get_le32(pb) != MKTAG('z','l','i','b')) {        av_log(NULL, AV_LOG_ERROR, "unknown compression for cmov atom !");        return -1;    }    get_be32(pb); /* cmvd atom */    if (get_le32(pb) != MKTAG('c','m','v','d'))        return -1;    moov_len = get_be32(pb); /* uncompressed size */    cmov_len = atom.size - 6 * 4;    cmov_data = av_malloc(cmov_len);    if (!cmov_data)        return -1;    moov_data = av_malloc(moov_len);    if (!moov_data) {        av_free(cmov_data);        return -1;    }    get_buffer(pb, cmov_data, cmov_len);    if(uncompress (moov_data, (uLongf *) &moov_len, (const Bytef *)cmov_data, cmov_len) != Z_OK)        goto free_and_return;    if(init_put_byte(&ctx, moov_data, moov_len, 0, NULL, NULL, NULL, NULL) != 0)        goto free_and_return;    atom.type = MKTAG('m','o','o','v');    atom.offset = 0;    atom.size = moov_len;#ifdef DEBUG//    { int fd = open("/tmp/uncompheader.mov", O_WRONLY | O_CREAT); write(fd, moov_data, moov_len); close(fd); }#endif    ret = mov_read_default(c, &ctx, atom);free_and_return:    av_free(moov_data);    av_free(cmov_data);    return ret;#else    av_log(c->fc, AV_LOG_ERROR, "this file requires zlib support compiled in\n");    return -1;#endif}/* edit list atom */static int mov_read_elst(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    MOVStreamContext *sc = c->fc->streams[c->fc->nb_streams-1]->priv_data;    int i, edit_count;    get_byte(pb); /* version */    get_be24(pb); /* flags */    edit_count= sc->edit_count = get_be32(pb);     /* entries */    for(i=0; i<edit_count; i++){        int time;        get_be32(pb); /* Track duration */        time = get_be32(pb); /* Media time */        get_be32(pb); /* Media rate */        if (time != 0)            av_log(c->fc, AV_LOG_WARNING, "edit list not starting at 0, "                   "a/v desync might occur, patch welcome\n");    }    dprintf(c->fc, "track[%i].edit_count = %i\n", c->fc->nb_streams-1, sc->edit_count);    return 0;}static const MOVParseTableEntry mov_default_parse_table[] = {{ MKTAG('a','v','s','s'), mov_read_extradata },{ MKTAG('c','o','6','4'), mov_read_stco },{ MKTAG('c','t','t','s'), mov_read_ctts }, /* composition time to sample */{ MKTAG('d','i','n','f'), mov_read_default },{ MKTAG('d','r','e','f'), mov_read_dref },{ MKTAG('e','d','t','s'), mov_read_default },{ MKTAG('e','l','s','t'), mov_read_elst },{ MKTAG('e','n','d','a'), mov_read_enda },{ MKTAG('f','i','e','l'), mov_read_extradata },{ MKTAG('f','t','y','p'), mov_read_ftyp },{ MKTAG('g','l','b','l'), mov_read_glbl },{ MKTAG('h','d','l','r'), mov_read_hdlr },{ MKTAG('j','p','2','h'), mov_read_extradata },{ MKTAG('m','d','a','t'), mov_read_mdat },{ MKTAG('m','d','h','d'), mov_read_mdhd },{ MKTAG('m','d','i','a'), mov_read_default },{ MKTAG('m','i','n','f'), mov_read_default },{ MKTAG('m','o','o','f'), mov_read_moof },{ MKTAG('m','o','o','v'), mov_read_moov },{ MKTAG('m','v','e','x'), mov_read_default },{ MKTAG('m','v','h','d'), mov_read_mvhd },{ MKTAG('S','M','I',' '), mov_read_smi }, /* Sorenson extension ??? */{ MKTAG('a','l','a','c'), mov_read_extradata }, /* alac specific atom */{ MKTAG('a','v','c','C'), mov_read_glbl },{ MKTAG('s','t','b','l'), mov_read_default },{ MKTAG('s','t','c','o'), mov_read_stco },{ MKTAG('s','t','s','c'), mov_read_stsc },{ MKTAG('s','t','s','d'), mov_read_stsd }, /* sample description */{ MKTAG('s','t','s','s'), mov_read_stss }, /* sync sample */{ MKTAG('s','t','s','z'), mov_read_stsz }, /* sample size */{ MKTAG('s','t','t','s'), mov_read_stts },{ MKTAG('t','k','h','d'), mov_read_tkhd }, /* track header */{ MKTAG('t','f','h','d'), mov_read_tfhd }, /* track fragment header */{ MKTAG('t','r','a','k'), mov_read_trak },{ MKTAG('t','r','a','f'), mov_read_default },{ MKTAG('t','r','e','x'), mov_read_trex },{ MKTAG('t','r','u','n'), mov_read_trun },{ MKTAG('u','d','t','a'), mov_read_udta },{ MKTAG('w','a','v','e'), mov_read_wave },{ MKTAG('e','s','d','s'), mov_read_esds },{ MKTAG('w','i','d','e'), mov_read_wide }, /* place holder */{ MKTAG('c','m','o','v'), mov_read_cmov },{ 0, NULL }};static int mov_probe(AVProbeData *p){    unsigned int offset;    uint32_t tag;    int score = 0;    /* check file header */    offset = 0;    for(;;) {        /* ignore invalid offset */        if ((offset + 8) > (unsigned int)p->buf_size)            return score;        tag = AV_RL32(p->buf + offset + 4);        switch(tag) {        /* check for obvious tags */        case MKTAG('j','P',' ',' '): /* jpeg 2000 signature */        case MKTAG('m','o','o','v'):        case MKTAG('m','d','a','t'):        case MKTAG('p','n','o','t'): /* detect movs with preview pics like ew.mov and april.mov */        case MKTAG('u','d','t','a'): /* Packet Video PVAuthor adds this and a lot of more junk */            return AVPROBE_SCORE_MAX;        /* those are more common words, so rate then a bit less */        case MKTAG('e','d','i','w'): /* xdcam files have reverted first tags */        case MKTAG('w','i','d','e'):        case MKTAG('f','r','e','e'):        case MKTAG('j','u','n','k'):        case MKTAG('p','i','c','t'):            return AVPROBE_SCORE_MAX - 5;        case MKTAG(0x82,0x82,0x7f,0x7d ):        case MKTAG('f','t','y','p'):        case MKTAG('s','k','i','p'):        case MKTAG('u','u','i','d'):        case MKTAG('p','r','f','l'):            offset = AV_RB32(p->buf+offset) + offset;            /* if we only find those cause probedata is too small at least rate them */            score = AVPROBE_SCORE_MAX - 50;            break;        default:            /* unrecognized tag */            return score;        }    }    return score;}static int mov_read_header(AVFormatContext *s, AVFormatParameters *ap){    MOVContext *mov = s->priv_data;    ByteIOContext *pb = s->pb;    int err;    MOV_atom_t atom = { 0, 0, 0 };    mov->fc = s;    /* .mov and .mp4 aren't streamable anyway (only progressive download if moov is before mdat) */    if(!url_is_streamed(pb))        atom.size = url_fsize(pb);    else        atom.size = INT64_MAX;    /* check MOV header */    if ((err = mov_read_default(mov, pb, atom)) < 0) {        av_log(s, AV_LOG_ERROR, "error reading header: %d\n", err);        return err;    }    if (!mov->found_moov) {        av_log(s, AV_LOG_ERROR, "moov atom not found\n");        return -1;    }    dprintf(mov->fc, "on_parse_exit_offset=%lld\n", url_ftell(pb));    return 0;}static int mov_read_packet(AVFormatContext *s, AVPacket *pkt){    MOVContext *mov = s->priv_data;    MOVStreamContext *sc = 0;    AVIndexEntry *sample = 0;    int64_t best_dts = INT64_MAX;    int i; retry:    for (i = 0; i < s->nb_streams; i++) {        AVStream *st = s->streams[i];        MOVStreamContext *msc = st->priv_data;        if (st->discard != AVDISCARD_ALL && msc->pb && msc->current_sample < msc->sample_count) {            AVIndexEntry *current_sample = &st->index_entries[msc->current_sample];            int64_t dts = av_rescale(current_sample->timestamp * (int64_t)msc->time_rate,                                     AV_TIME_BASE, msc->time_scale);            dprintf(s, "stream %d, sample %d, dts %"PRId64"\n", i, msc->current_sample, dts);            if (!sample || (url_is_streamed(s->pb) && current_sample->pos < sample->pos) ||                (!url_is_streamed(s->pb) &&                 ((msc->pb != s->pb && dts < best_dts) || (msc->pb == s->pb &&                 ((FFABS(best_dts - dts) <= AV_TIME_BASE && current_sample->pos < sample->pos) ||                  (FFABS(best_dts - dts) > AV_TIME_BASE && dts < best_dts)))))) {                sample = current_sample;                best_dts = dts;                sc = msc;            }        }    }    if (!sample) {        mov->found_mdat = 0;        if (!url_is_streamed(s->pb) ||            mov_read_default(mov, s->pb, (MOV_atom_t){ 0, 0, INT64_MAX }) < 0 ||            url_feof(s->pb))            return -1;        dprintf(s, "read fragments, offset 0x%llx\n", url_ftell(s->pb));        goto retry;    }    /* must be done just before reading, to avoid infinite loop on sample */    sc->current_sample++;    if (url_fseek(sc->pb, sample->pos, SEEK_SET) != sample->pos) {        av_log(mov->fc, AV_LOG_ERROR, "stream %d, offset 0x%"PRIx64": partial file\n",               sc->ffindex, sample->pos);        return -1;    }    av_get_packet(sc->pb, pkt, sample->size);#ifdef CONFIG_DV_DEMUXER    if (mov->dv_demux && sc->dv_audio_container) {        dv_produce_packet(mov->dv_demux, pkt, pkt->data, pkt->size);        av_free(pkt->data);        pkt->size = 0;        if (dv_get_packet(mov->dv_demux, pkt) < 0)            return -1;    }#endif    pkt->stream_index = sc->ffindex;    pkt->dts = sample->timestamp;    if (sc->ctts_data) {        assert(sc->ctts_data[sc->sample_to_ctime_index].duration % sc->time_rate == 0);        pkt->pts = pkt->dts + sc->ctts_data[sc->sample_to_ctime_index].duration / sc->time_rate;        /* update ctts context */        sc->sample_to_ctime_sample++;        if (sc->sample_to_ctime_index < sc->ctts_count &&            sc->ctts_data[sc->sample_to_ctime_index].count == sc->sample_to_ctime_sample) {            sc->sample_to_ctime_index++;            sc->sample_to_ctime_sample = 0;        }    } else {        AVStream *st = s->streams[sc->ffindex];        int64_t next_dts = (sc->current_sample < sc->sample_count) ?            st->index_entries[sc->current_sample].timestamp : st->duration;        pkt->duration = next_dts - pkt->dts;        pkt->pts = pkt->dts;    }    pkt->flags |= sample->flags & AVINDEX_KEYFRAME ? PKT_FLAG_KEY : 0;    pkt->pos = sample->pos;    dprintf(s, "stream %d, pts %"PRId64", dts %"PRId64", pos 0x%"PRIx64", duration %d\n",            pkt->stream_index, pkt->pts, pkt->dts, pkt->pos, pkt->duration);    return 0;}static int mov_seek_stream(AVStream *st, int64_t timestamp, int flags){    MOVStreamContext *sc = st->priv_data;    int sample, time_sample;    int i;    sample = av_index_search_timestamp(st, timestamp, flags);    dprintf(st->codec, "stream %d, timestamp %"PRId64", sample %d\n", st->index, timestamp, sample);    if (sample < 0) /* not sure what to do */        return -1;    sc->current_sample = sample;    dprintf(st->codec, "stream %d, found sample %d\n", st->index, sc->current_sample);    /* adjust ctts index */    if (sc->ctts_data) {        time_sample = 0;        for (i = 0; i < sc->ctts_count; i++) {            int next = time_sample + sc->ctts_data[i].count;            if (next > sc->current_sample) {                sc->sample_to_ctime_index = i;                sc->sample_to_ctime_sample = sc->current_sample - time_sample;                break;            }            time_sample = next;        }    }    return sample;}static int mov_read_seek(AVFormatContext *s, int stream_index, int64_t sample_time

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
自拍偷拍欧美精品| 综合久久给合久久狠狠狠97色 | 精品一区二区精品| 99riav一区二区三区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美国产日韩一二三区| www.日韩大片| 视频一区欧美精品| 精品美女一区二区| 免费成人深夜小野草| 亚洲精品国产品国语在线app| 日韩欧美国产高清| 欧美色图免费看| 国产一区在线精品| 亚洲18女电影在线观看| ●精品国产综合乱码久久久久| 日韩一区二区在线免费观看| 欧美午夜精品久久久久久超碰| 国产一区在线观看麻豆| 亚洲www啪成人一区二区麻豆| 国产精品色噜噜| 欧美α欧美αv大片| 在线播放视频一区| 99视频超级精品| 丝瓜av网站精品一区二区| 亚洲视频在线一区| 日本一区二区视频在线| 欧美日韩国产电影| 91视频观看免费| 国产一区二区三区国产| 麻豆视频一区二区| 一区二区久久久| 一区二区三区在线观看动漫| 日韩一区在线免费观看| 国产午夜精品久久久久久免费视 | 欧美一级免费大片| 国产精品一区二区果冻传媒| 日日夜夜一区二区| 亚洲图片欧美一区| 成人免费视频在线观看| 精品对白一区国产伦| 欧美一级生活片| 欧美日韩精品一区二区在线播放| 欧美性生活一区| 国产一区二区网址| 免费看黄色91| 蜜臀久久99精品久久久画质超高清 | 欧美日韩一区二区三区在线看| 成人网男人的天堂| 99久久综合精品| 成人免费毛片嘿嘿连载视频| av资源网一区| 丁香婷婷综合激情五月色| 婷婷国产在线综合| 日韩福利视频导航| 一区二区三区在线视频免费| 国产精品网站在线| 国产天堂亚洲国产碰碰| 亚洲欧洲国产日韩| 亚洲色图一区二区三区| 一区二区三区在线观看国产| 亚洲综合图片区| 亚洲已满18点击进入久久| 日韩精品五月天| 蜜桃视频一区二区三区在线观看| 精品一区中文字幕| 国产精品白丝jk白祙喷水网站| 精品在线视频一区| 大美女一区二区三区| 99久久er热在这里只有精品66| 久久久三级国产网站| 欧美另类久久久品| 欧美一区二区三区在线| 亚洲精品一区二区三区99| 国产婷婷色一区二区三区在线| 亚洲欧洲制服丝袜| 亚洲大型综合色站| 欧美日本在线视频| 国产亚洲短视频| 亚洲视频免费在线| 午夜视频在线观看一区二区| 亚洲成人三级小说| 五月天精品一区二区三区| 黑人精品欧美一区二区蜜桃| 北条麻妃一区二区三区| 欧美另类变人与禽xxxxx| 精品日韩在线一区| 一区二区在线看| 日本不卡123| 99在线精品观看| 在线91免费看| 久久精品人人做人人综合| 怡红院av一区二区三区| 蜜桃久久久久久| 日本韩国欧美一区| 欧美日韩国产不卡| 亚洲欧美影音先锋| 精品一二三四区| av午夜一区麻豆| 欧美成人官网二区| 亚洲日本中文字幕区| 国产一区二区三区免费播放| 色婷婷久久久久swag精品| 欧美精品一区视频| 一区二区三区四区在线| 日韩电影在线一区二区三区| 97精品国产露脸对白| 日韩欧美亚洲国产精品字幕久久久 | 欧美性一区二区| www国产成人免费观看视频 深夜成人网 | 狠狠色伊人亚洲综合成人| 欧美色大人视频| 中文字幕不卡在线观看| 久久99久久久久| 欧美在线|欧美| 亚洲欧美在线高清| 国产一区二区精品在线观看| 成+人+亚洲+综合天堂| 久久久久久久久岛国免费| 亚洲高清在线视频| 色综合久久中文字幕综合网| 久久久久亚洲综合| 日本va欧美va欧美va精品| 色视频成人在线观看免| 日韩精品一区二区三区中文不卡| 亚洲一区二区三区三| 成人激情动漫在线观看| 国产欧美一二三区| 蜜芽一区二区三区| 欧美一区二区三区视频免费播放| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国内外精品视频| 精品国产乱码久久久久久老虎| 亚洲第一福利一区| 一本色道综合亚洲| 一区二区三区免费| 欧美高清视频在线高清观看mv色露露十八| 综合久久国产九一剧情麻豆| 成人短视频下载| 国产精品视频线看| 日韩欧美自拍偷拍| 亚洲图片你懂的| 性感美女极品91精品| 国产在线播放一区二区三区| 精品在线免费观看| 午夜欧美2019年伦理| 日韩美女在线视频| 蜜桃视频一区二区三区在线观看| 亚洲欧美日韩电影| 蜜臀久久99精品久久久画质超高清 | 日韩免费观看2025年上映的电影| 亚洲国产综合视频在线观看| 日韩欧美国产三级| 国产精品亚洲人在线观看| 亚洲亚洲精品在线观看| 欧美国产国产综合| 在线观看视频欧美| 欧美性一级生活| 精品日韩欧美在线| 精品国内片67194| 欧美亚洲国产bt| 色婷婷av一区二区三区大白胸| 国产99久久久国产精品潘金网站| 亚洲国产精品一区二区尤物区| 国产精品无码永久免费888| 欧美精品一二三| 欧美一区二区三区四区五区| 国产成人精品免费一区二区| 另类欧美日韩国产在线| 中文字幕av不卡| 久久伊人中文字幕| 国产午夜精品美女毛片视频| 欧美男生操女生| 精品国产乱码久久久久久浪潮| 欧美xingq一区二区| 欧美日韩亚洲综合一区| 在线观看视频一区二区欧美日韩| 成人v精品蜜桃久久一区| 国产精品一区二区三区网站| 久久精工是国产品牌吗| 精品一区二区三区在线播放视频| 亚洲成人久久影院| 亚洲18影院在线观看| 国产精品一二三区| 国产精品综合av一区二区国产馆| 蜜桃av一区二区| k8久久久一区二区三区| 欧美制服丝袜第一页| 在线91免费看| 精品国产免费久久| 国产偷v国产偷v亚洲高清| 国产精品灌醉下药二区| 亚洲欧洲精品天堂一级| 日韩在线一区二区三区| 国产iv一区二区三区| 欧美日韩免费高清一区色橹橹 | 亚洲美女屁股眼交| 欧美精品粉嫩高潮一区二区| 久久精品99国产精品| 国产日韩欧美亚洲|