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

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

?? mov.c

?? mediastreamer2是開源的網絡傳輸媒體流的庫
?? C
?? 第 1 頁 / 共 4 頁
字號:
        c->dv_demux = dv_init_demux(c->dv_fctx);        if (!c->dv_demux) {            av_log(c->fc, AV_LOG_ERROR, "dv demux context init error\n");            return -1;        }        sc->dv_audio_container = 1;        st->codec->codec_id = CODEC_ID_PCM_S16LE;        break;#endif    /* no ifdef since parameters are always those */    case CODEC_ID_AMR_WB:        st->codec->sample_rate= 16000;        st->codec->channels= 1; /* really needed */        break;    case CODEC_ID_AMR_NB:        st->codec->sample_rate= 8000;        st->codec->channels= 1; /* really needed */        break;    case CODEC_ID_MP2:    case CODEC_ID_MP3:        st->codec->codec_type = CODEC_TYPE_AUDIO; /* force type after stsd for m1a hdlr */        st->need_parsing = AVSTREAM_PARSE_FULL;        break;    case CODEC_ID_ADPCM_MS:    case CODEC_ID_ADPCM_IMA_WAV:        st->codec->block_align = sc->bytes_per_frame;        break;    default:        break;    }    return 0;}static int mov_read_stsc(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    unsigned int i, entries;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    entries = get_be32(pb);    if(entries >= UINT_MAX / sizeof(MOV_stsc_t))        return -1;    dprintf(c->fc, "track[%i].stsc.entries = %i\n", c->fc->nb_streams-1, entries);    sc->sample_to_chunk_sz = entries;    sc->sample_to_chunk = av_malloc(entries * sizeof(MOV_stsc_t));    if (!sc->sample_to_chunk)        return -1;    for(i=0; i<entries; i++) {        sc->sample_to_chunk[i].first = get_be32(pb);        sc->sample_to_chunk[i].count = get_be32(pb);        sc->sample_to_chunk[i].id = get_be32(pb);    }    return 0;}static int mov_read_stss(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    unsigned int i, entries;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    entries = get_be32(pb);    if(entries >= UINT_MAX / sizeof(int))        return -1;    sc->keyframe_count = entries;    dprintf(c->fc, "keyframe_count = %d\n", sc->keyframe_count);    sc->keyframes = av_malloc(entries * sizeof(int));    if (!sc->keyframes)        return -1;    for(i=0; i<entries; i++) {        sc->keyframes[i] = get_be32(pb);        //dprintf(c->fc, "keyframes[]=%d\n", sc->keyframes[i]);    }    return 0;}static int mov_read_stsz(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    unsigned int i, entries, sample_size;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    sample_size = get_be32(pb);    if (!sc->sample_size) /* do not overwrite value computed in stsd */        sc->sample_size = sample_size;    entries = get_be32(pb);    if(entries >= UINT_MAX / sizeof(int))        return -1;    sc->sample_count = entries;    if (sample_size)        return 0;    dprintf(c->fc, "sample_size = %d sample_count = %d\n", sc->sample_size, sc->sample_count);    sc->sample_sizes = av_malloc(entries * sizeof(int));    if (!sc->sample_sizes)        return -1;    for(i=0; i<entries; i++) {        sc->sample_sizes[i] = get_be32(pb);        dprintf(c->fc, "sample_sizes[]=%d\n", sc->sample_sizes[i]);    }    return 0;}static int mov_read_stts(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    unsigned int i, entries;    int64_t duration=0;    int64_t total_sample_count=0;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    entries = get_be32(pb);    if(entries >= UINT_MAX / sizeof(MOV_stts_t))        return -1;    sc->stts_count = entries;    sc->stts_data = av_malloc(entries * sizeof(MOV_stts_t));    if (!sc->stts_data)        return -1;    dprintf(c->fc, "track[%i].stts.entries = %i\n", c->fc->nb_streams-1, entries);    sc->time_rate=0;    for(i=0; i<entries; i++) {        int sample_duration;        int sample_count;        sample_count=get_be32(pb);        sample_duration = get_be32(pb);        sc->stts_data[i].count= sample_count;        sc->stts_data[i].duration= sample_duration;        sc->time_rate= ff_gcd(sc->time_rate, sample_duration);        dprintf(c->fc, "sample_count=%d, sample_duration=%d\n",sample_count,sample_duration);        duration+=(int64_t)sample_duration*sample_count;        total_sample_count+=sample_count;    }    st->nb_frames= total_sample_count;    if(duration)        st->duration= duration;    return 0;}static int mov_read_ctts(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    unsigned int i, entries;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    entries = get_be32(pb);    if(entries >= UINT_MAX / sizeof(MOV_stts_t))        return -1;    sc->ctts_count = entries;    sc->ctts_data = av_malloc(entries * sizeof(MOV_stts_t));    if (!sc->ctts_data)        return -1;    dprintf(c->fc, "track[%i].ctts.entries = %i\n", c->fc->nb_streams-1, entries);    for(i=0; i<entries; i++) {        int count    =get_be32(pb);        int duration =get_be32(pb);        if (duration < 0) {            av_log(c->fc, AV_LOG_ERROR, "negative ctts, ignoring\n");            sc->ctts_count = 0;            url_fskip(pb, 8 * (entries - i - 1));            break;        }        sc->ctts_data[i].count   = count;        sc->ctts_data[i].duration= duration;        sc->time_rate= ff_gcd(sc->time_rate, duration);    }    return 0;}static int mov_read_trak(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st;    MOVStreamContext *sc;    st = av_new_stream(c->fc, c->fc->nb_streams);    if (!st) return -2;    sc = av_mallocz(sizeof(MOVStreamContext));    if (!sc) {        av_free(st);        return -1;    }    st->priv_data = sc;    st->codec->codec_type = CODEC_TYPE_DATA;    st->start_time = 0; /* XXX: check */    return mov_read_default(c, pb, atom);}static void mov_parse_udta_string(ByteIOContext *pb, char *str, int size){    uint16_t str_size = get_be16(pb); /* string length */;    get_be16(pb); /* skip language */    get_buffer(pb, str, FFMIN(size, str_size));}static int mov_read_udta(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    uint64_t end = url_ftell(pb) + atom.size;    while (url_ftell(pb) + 8 < end) {        uint32_t tag_size = get_be32(pb);        uint32_t tag      = get_le32(pb);        uint64_t next     = url_ftell(pb) + tag_size - 8;        if (next > end) // stop if tag_size is wrong            break;        switch (tag) {        case MKTAG(0xa9,'n','a','m'):            mov_parse_udta_string(pb, c->fc->title,     sizeof(c->fc->title));            break;        case MKTAG(0xa9,'w','r','t'):            mov_parse_udta_string(pb, c->fc->author,    sizeof(c->fc->author));            break;        case MKTAG(0xa9,'c','p','y'):            mov_parse_udta_string(pb, c->fc->copyright, sizeof(c->fc->copyright));            break;        case MKTAG(0xa9,'i','n','f'):            mov_parse_udta_string(pb, c->fc->comment,   sizeof(c->fc->comment));            break;        default:            break;        }        url_fseek(pb, next, SEEK_SET);    }    return 0;}static int mov_read_tkhd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    int version = get_byte(pb);    get_byte(pb); get_byte(pb);    get_byte(pb); /* flags */    /*    MOV_TRACK_ENABLED 0x0001    MOV_TRACK_IN_MOVIE 0x0002    MOV_TRACK_IN_PREVIEW 0x0004    MOV_TRACK_IN_POSTER 0x0008    */    if (version == 1) {        get_be64(pb);        get_be64(pb);    } else {        get_be32(pb); /* creation time */        get_be32(pb); /* modification time */    }    st->id = (int)get_be32(pb); /* track id (NOT 0 !)*/    get_be32(pb); /* reserved */    st->start_time = 0; /* check */    (version == 1) ? get_be64(pb) : get_be32(pb); /* highlevel (considering edits) duration in movie timebase */    get_be32(pb); /* reserved */    get_be32(pb); /* reserved */    get_be16(pb); /* layer */    get_be16(pb); /* alternate group */    get_be16(pb); /* volume */    get_be16(pb); /* reserved */    url_fskip(pb, 36); /* display matrix */    /* those are fixed-point */    get_be32(pb); /* track width */    get_be32(pb); /* track height */    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;    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)        return -1;    if(init_put_byte(&ctx, moov_data, moov_len, 0, NULL, NULL, NULL, NULL) != 0)        return -1;    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);    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_byte(pb); get_byte(pb); get_byte(pb); /* flags */    edit_count= sc->edit_count = get_be32(pb);     /* entries */    for(i=0; i<edit_count; i++){        get_be32(pb); /* Track duration */        get_be32(pb); /* Media time */        get_be32(pb); /* Media rate */    }    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[] = {/* mp4 atoms */{ MKTAG( 'c', 'o', '6', '4' ), mov_read_stco },{ MKTAG( 'c', 't', 't', 's' ), mov_read_ctts }, /* composition time to sample */{ 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 },

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久国产日韩欧美精品| 亚洲你懂的在线视频| 国内精品久久久久影院一蜜桃| 制服丝袜中文字幕一区| 精品一二三四区| 中文文精品字幕一区二区| 成人激情图片网| 亚洲国产欧美另类丝袜| 日韩手机在线导航| 成人午夜伦理影院| 亚洲自拍偷拍麻豆| 日韩三级电影网址| 成人动漫在线一区| 亚洲午夜私人影院| 精品国产百合女同互慰| 99视频一区二区| 视频一区视频二区中文字幕| 久久久99精品免费观看不卡| 91视视频在线直接观看在线看网页在线看| 亚洲成人一区在线| 国产欧美视频在线观看| 欧美亚洲国产一区二区三区va| 久久99国产精品久久99| 亚洲欧美综合网| 欧美成人性战久久| 色综合久久久久久久久| 激情五月激情综合网| 亚洲激情成人在线| 国产日韩成人精品| 欧美疯狂做受xxxx富婆| 成人av在线看| 久久国产福利国产秒拍| 亚洲欧美韩国综合色| 久久久国际精品| 欧美挠脚心视频网站| 95精品视频在线| 国产高清视频一区| 日韩中文字幕av电影| 1区2区3区欧美| 欧美精品一区二| 欧美理论片在线| 99久久久久免费精品国产| 久久国产精品第一页| 午夜国产精品一区| 亚洲欧洲一区二区三区| 久久亚洲二区三区| 欧美一区二区私人影院日本| 色猫猫国产区一区二在线视频| 精品中文字幕一区二区| 天堂在线一区二区| 夜夜精品浪潮av一区二区三区| 国产精品日韩成人| 久久精品在这里| 欧美精品一区二区三区蜜桃视频| 欧美日本不卡视频| 欧洲亚洲国产日韩| 色悠久久久久综合欧美99| av一二三不卡影片| www.爱久久.com| 成人性视频免费网站| 国产在线播精品第三| 卡一卡二国产精品 | 久久亚洲一区二区三区明星换脸 | 国产+成+人+亚洲欧洲自线| 久久久久国产精品人| 国产一区二区三区四区五区美女| 亚洲综合激情另类小说区| 中文字幕一区二区三| 国产精品九色蝌蚪自拍| 欧美国产视频在线| 欧美极品少妇xxxxⅹ高跟鞋| 久久精品欧美日韩精品 | 欧美美女一区二区| 在线观看日韩一区| 欧美性大战久久久久久久| 欧美中文一区二区三区| 欧美日韩精品福利| 8x福利精品第一导航| 欧美一区二区视频在线观看2020 | 欧美性欧美巨大黑白大战| 日本道色综合久久| 欧美色区777第一页| 欧美喷水一区二区| 欧美一区二区三区色| 精品少妇一区二区三区在线视频| 欧美精品一区二区三| 国产日韩精品久久久| 18成人在线观看| 亚洲国产日韩精品| 蜜桃久久av一区| 国产精品主播直播| 91在线观看美女| 欧美老年两性高潮| 精品99一区二区| 欧美国产成人精品| 有坂深雪av一区二区精品| 亚洲国产成人91porn| 伦理电影国产精品| 粉嫩欧美一区二区三区高清影视| av不卡免费电影| 欧美日韩国产在线观看| 欧美va在线播放| 国产欧美综合在线观看第十页| 亚洲视频一区二区免费在线观看| 亚洲成av人片一区二区| 国产麻豆视频一区| 91亚洲男人天堂| 日韩视频123| 亚洲天天做日日做天天谢日日欢 | 日韩你懂的在线观看| 日本一区二区综合亚洲| 亚洲一区二区三区视频在线播放 | 午夜精品123| 国产成人av资源| 欧美日本一区二区在线观看| 久久久综合九色合综国产精品| 亚洲免费观看高清完整版在线| 国产综合成人久久大片91| 色哟哟日韩精品| 日韩免费看网站| 亚洲精品亚洲人成人网在线播放| 免费在线看一区| 一本久久综合亚洲鲁鲁五月天 | 在线观看欧美黄色| 久久久久久久久99精品| 亚洲影院久久精品| www.亚洲人| 欧美白人最猛性xxxxx69交| 亚洲精品成a人| 国产另类ts人妖一区二区| 欧美日韩二区三区| 亚洲人成网站影音先锋播放| 久久超碰97中文字幕| 在线观看一区日韩| 国产精品白丝在线| 老色鬼精品视频在线观看播放| 91日韩在线专区| 国产欧美一区在线| 韩国av一区二区三区| 欧美精品色一区二区三区| 日韩一区有码在线| 国产精品1区2区| 日韩一二三区视频| 亚洲国产毛片aaaaa无费看| 91亚洲精品久久久蜜桃网站| 国产色产综合产在线视频| 精品一区二区综合| 日韩精品最新网址| 免费欧美日韩国产三级电影| 欧美另类高清zo欧美| 亚洲国产精品嫩草影院| 91蝌蚪porny成人天涯| 中文字幕中文字幕在线一区| 丁香另类激情小说| 久久久久高清精品| 国产一区二区在线免费观看| 日韩精品一区二区三区在线| 日韩va亚洲va欧美va久久| 欧美丰满少妇xxxxx高潮对白| 亚洲国产精品久久久久秋霞影院 | 一区精品在线播放| 成人免费电影视频| 国产精品国产三级国产普通话99| 成人国产亚洲欧美成人综合网 | 91丨九色丨黑人外教| 亚洲欧洲精品一区二区三区| 99免费精品视频| 亚洲天堂精品视频| 色婷婷av一区| 亚洲一区二区在线播放相泽| 欧美综合视频在线观看| 亚洲福利视频三区| 在线91免费看| 久久99久久99| 久久久精品综合| 不卡一二三区首页| 一区2区3区在线看| 91麻豆精品久久久久蜜臀| 日韩中文字幕区一区有砖一区| 欧美一区二区三区成人| 久久激五月天综合精品| 国产午夜精品理论片a级大结局| 国产黄色91视频| 亚洲精品高清在线观看| 欧美人妇做爰xxxⅹ性高电影| 蜜桃精品在线观看| 国产午夜精品久久久久久久| 99国产精品国产精品久久| 亚洲影院理伦片| 精品国产成人系列| fc2成人免费人成在线观看播放| 亚洲一区二区综合| 欧美mv日韩mv| 一道本成人在线| 免费看日韩精品| 中文字幕在线观看一区| 欧美日韩国产系列| 国产999精品久久久久久| 亚洲乱码中文字幕| 欧美成va人片在线观看|