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

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

?? mov.c

?? mediastreamer2是開源的網絡傳輸媒體流的庫
?? C
?? 第 1 頁 / 共 4 頁
字號:
    get_be32(pb); /* next track ID */    return 0;}static int mov_read_smi(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    if((uint64_t)atom.size > (1<<30))        return -1;    // currently SVQ3 decoder expect full STSD header - so let's fake it    // this should be fixed and just SMI header should be passed    av_free(st->codec->extradata);    st->codec->extradata_size = 0x5a + atom.size;    st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);    if (st->codec->extradata) {        memcpy(st->codec->extradata, "SVQ3", 4); // fake        get_buffer(pb, st->codec->extradata + 0x5a, atom.size);        dprintf(c->fc, "Reading SMI %"PRId64"  %s\n", atom.size, st->codec->extradata + 0x5a);    } else        url_fskip(pb, atom.size);    return 0;}static int mov_read_enda(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    int little_endian = get_be16(pb);    if (little_endian) {        switch (st->codec->codec_id) {        case CODEC_ID_PCM_S24BE:            st->codec->codec_id = CODEC_ID_PCM_S24LE;            break;        case CODEC_ID_PCM_S32BE:            st->codec->codec_id = CODEC_ID_PCM_S32LE;            break;        default:            break;        }    }    return 0;}/* FIXME modify qdm2/svq3/h264 decoders to take full atom as extradata */static int mov_read_extradata(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    uint64_t size= (uint64_t)st->codec->extradata_size + atom.size + 8 + FF_INPUT_BUFFER_PADDING_SIZE;    uint8_t *buf;    if(size > INT_MAX || (uint64_t)atom.size > INT_MAX)        return -1;    buf= av_realloc(st->codec->extradata, size);    if(!buf)        return -1;    st->codec->extradata= buf;    buf+= st->codec->extradata_size;    st->codec->extradata_size= size - FF_INPUT_BUFFER_PADDING_SIZE;    AV_WB32(       buf    , atom.size + 8);    AV_WL32(       buf + 4, atom.type);    get_buffer(pb, buf + 8, atom.size);    return 0;}static int mov_read_wave(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    if((uint64_t)atom.size > (1<<30))        return -1;    if (st->codec->codec_id == CODEC_ID_QDM2) {        // pass all frma atom to codec, needed at least for QDM2        av_free(st->codec->extradata);        st->codec->extradata_size = atom.size;        st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);        if (st->codec->extradata) {            get_buffer(pb, st->codec->extradata, atom.size);        } else            url_fskip(pb, atom.size);    } else if (atom.size > 8) { /* to read frma, esds atoms */        if (mov_read_default(c, pb, atom) < 0)            return -1;    } else        url_fskip(pb, atom.size);    return 0;}/** * This function reads atom content and puts data in extradata without tag * nor size unlike mov_read_extradata. */static int mov_read_glbl(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    if((uint64_t)atom.size > (1<<30))        return -1;    av_free(st->codec->extradata);    st->codec->extradata_size = atom.size;    st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);    if (st->codec->extradata) {        get_buffer(pb, st->codec->extradata, atom.size);    } else        url_fskip(pb, atom.size);    return 0;}static int mov_read_stco(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(int64_t))        return -1;    sc->chunk_count = entries;    sc->chunk_offsets = av_malloc(entries * sizeof(int64_t));    if (!sc->chunk_offsets)        return -1;    if (atom.type == MKTAG('s', 't', 'c', 'o')) {        for(i=0; i<entries; i++) {            sc->chunk_offsets[i] = get_be32(pb);        }    } else if (atom.type == MKTAG('c', 'o', '6', '4')) {        for(i=0; i<entries; i++) {            sc->chunk_offsets[i] = get_be64(pb);        }    } else        return -1;    return 0;}static int mov_read_stsd(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom){    AVStream *st = c->fc->streams[c->fc->nb_streams-1];    MOVStreamContext *sc = st->priv_data;    int entries, frames_per_sample;    uint32_t format;    uint8_t codec_name[32];    /* for palette traversal */    unsigned int color_depth;    unsigned int color_start;    unsigned int color_count;    unsigned int color_end;    int color_index;    int color_dec;    int color_greyscale;    const uint8_t *color_table;    int j, pseudo_stream_id;    unsigned char r, g, b;    get_byte(pb); /* version */    get_byte(pb); get_byte(pb); get_byte(pb); /* flags */    entries = get_be32(pb);    for(pseudo_stream_id=0; pseudo_stream_id<entries; pseudo_stream_id++) { //Parsing Sample description table        enum CodecID id;        MOV_atom_t a = { 0, 0, 0 };        offset_t start_pos = url_ftell(pb);        int size = get_be32(pb); /* size */        format = get_le32(pb); /* data format */        get_be32(pb); /* reserved */        get_be16(pb); /* reserved */        get_be16(pb); /* index */        if (st->codec->codec_tag &&            (c->fc->video_codec_id ? codec_get_id(codec_movvideo_tags, format) != c->fc->video_codec_id                                   : st->codec->codec_tag != MKTAG('j', 'p', 'e', 'g'))           ){            /* multiple fourcc, we skip jpeg, this isnt correct, we should export it as               seperate AVStream but this needs a few changes in the mov demuxer, patch               welcome */            url_fskip(pb, size - (url_ftell(pb) - start_pos));            continue;        }        sc->pseudo_stream_id= pseudo_stream_id;        st->codec->codec_tag = format;        id = codec_get_id(codec_movaudio_tags, format);        if (id<=0 && (format&0xFFFF) == 'm' + ('s'<<8))            id = codec_get_id(codec_wav_tags, bswap_32(format)&0xFFFF);        if (st->codec->codec_type != CODEC_TYPE_VIDEO && id > 0) {            st->codec->codec_type = CODEC_TYPE_AUDIO;        } else if (st->codec->codec_type != CODEC_TYPE_AUDIO && /* do not overwrite codec type */                   format && format != MKTAG('m', 'p', '4', 's')) { /* skip old asf mpeg4 tag */            id = codec_get_id(codec_movvideo_tags, format);            if (id <= 0)                id = codec_get_id(codec_bmp_tags, format);            if (id > 0)                st->codec->codec_type = CODEC_TYPE_VIDEO;            else if(st->codec->codec_type == CODEC_TYPE_DATA){                id = codec_get_id(ff_codec_movsubtitle_tags, format);                if(id > 0)                    st->codec->codec_type = CODEC_TYPE_SUBTITLE;            }        }        dprintf(c->fc, "size=%d 4CC= %c%c%c%c codec_type=%d\n", size,                (format >> 0) & 0xff, (format >> 8) & 0xff, (format >> 16) & 0xff,                (format >> 24) & 0xff, st->codec->codec_type);        if(st->codec->codec_type==CODEC_TYPE_VIDEO) {            st->codec->codec_id = id;            get_be16(pb); /* version */            get_be16(pb); /* revision level */            get_be32(pb); /* vendor */            get_be32(pb); /* temporal quality */            get_be32(pb); /* spatial quality */            st->codec->width = get_be16(pb); /* width */            st->codec->height = get_be16(pb); /* height */            get_be32(pb); /* horiz resolution */            get_be32(pb); /* vert resolution */            get_be32(pb); /* data size, always 0 */            frames_per_sample = get_be16(pb); /* frames per samples */            dprintf(c->fc, "frames/samples = %d\n", frames_per_sample);            get_buffer(pb, codec_name, 32); /* codec name, pascal string (FIXME: true for mp4?) */            if (codec_name[0] <= 31) {                memcpy(st->codec->codec_name, &codec_name[1],codec_name[0]);                st->codec->codec_name[codec_name[0]] = 0;            }            st->codec->bits_per_sample = get_be16(pb); /* depth */            st->codec->color_table_id = get_be16(pb); /* colortable id */            /* figure out the palette situation */            color_depth = st->codec->bits_per_sample & 0x1F;            color_greyscale = st->codec->bits_per_sample & 0x20;            /* if the depth is 2, 4, or 8 bpp, file is palettized */            if ((color_depth == 2) || (color_depth == 4) ||                (color_depth == 8)) {                if (color_greyscale) {                    /* compute the greyscale palette */                    color_count = 1 << color_depth;                    color_index = 255;                    color_dec = 256 / (color_count - 1);                    for (j = 0; j < color_count; j++) {                        r = g = b = color_index;                        c->palette_control.palette[j] =                            (r << 16) | (g << 8) | (b);                        color_index -= color_dec;                        if (color_index < 0)                            color_index = 0;                    }                } else if (st->codec->color_table_id & 0x08) {                    /* if flag bit 3 is set, use the default palette */                    color_count = 1 << color_depth;                    if (color_depth == 2)                        color_table = ff_qt_default_palette_4;                    else if (color_depth == 4)                        color_table = ff_qt_default_palette_16;                    else                        color_table = ff_qt_default_palette_256;                    for (j = 0; j < color_count; j++) {                        r = color_table[j * 4 + 0];                        g = color_table[j * 4 + 1];                        b = color_table[j * 4 + 2];                        c->palette_control.palette[j] =                            (r << 16) | (g << 8) | (b);                    }                } else {                    /* load the palette from the file */                    color_start = get_be32(pb);                    color_count = get_be16(pb);                    color_end = get_be16(pb);                    if ((color_start <= 255) &&                        (color_end <= 255)) {                        for (j = color_start; j <= color_end; j++) {                            /* each R, G, or B component is 16 bits;                             * only use the top 8 bits; skip alpha bytes                             * up front */                            get_byte(pb);                            get_byte(pb);                            r = get_byte(pb);                            get_byte(pb);                            g = get_byte(pb);                            get_byte(pb);                            b = get_byte(pb);                            get_byte(pb);                            c->palette_control.palette[j] =                                (r << 16) | (g << 8) | (b);                        }                    }                }                st->codec->palctrl = &c->palette_control;                st->codec->palctrl->palette_changed = 1;            } else                st->codec->palctrl = NULL;        } else if(st->codec->codec_type==CODEC_TYPE_AUDIO) {            int bits_per_sample;            uint16_t version = get_be16(pb);            st->codec->codec_id = id;            get_be16(pb); /* revision level */            get_be32(pb); /* vendor */            st->codec->channels = get_be16(pb);             /* channel count */            dprintf(c->fc, "audio channels %d\n", st->codec->channels);            st->codec->bits_per_sample = get_be16(pb);      /* sample size */            sc->audio_cid = get_be16(pb);            get_be16(pb); /* packet size = 0 */            st->codec->sample_rate = ((get_be32(pb) >> 16));            switch (st->codec->codec_id) {            case CODEC_ID_PCM_S8:            case CODEC_ID_PCM_U8:                if (st->codec->bits_per_sample == 16)                    st->codec->codec_id = CODEC_ID_PCM_S16BE;                break;            case CODEC_ID_PCM_S16LE:            case CODEC_ID_PCM_S16BE:                if (st->codec->bits_per_sample == 8)                    st->codec->codec_id = CODEC_ID_PCM_S8;                else if (st->codec->bits_per_sample == 24)                    st->codec->codec_id = CODEC_ID_PCM_S24BE;                break;            default:                break;            }            //Read QT version 1 fields. In version 0 these do not exist.            dprintf(c->fc, "version =%d, isom =%d\n",version,c->isom);            if(!c->isom) {                if(version==1) {                    sc->samples_per_frame = get_be32(pb);                    get_be32(pb); /* bytes per packet */                    sc->bytes_per_frame = get_be32(pb);                    get_be32(pb); /* bytes per sample */                } else if(version==2) {                    get_be32(pb); /* sizeof struct only */                    st->codec->sample_rate = av_int2dbl(get_be64(pb)); /* float 64 */                    st->codec->channels = get_be32(pb);                    get_be32(pb); /* always 0x7F000000 */                    get_be32(pb); /* bits per channel if sound is uncompressed */                    get_be32(pb); /* lcpm format specific flag */                    get_be32(pb); /* bytes per audio packet if constant */                    get_be32(pb); /* lpcm frames per audio packet if constant */                }            }            bits_per_sample = av_get_bits_per_sample(st->codec->codec_id);            if (bits_per_sample) {                st->codec->bits_per_sample = bits_per_sample;                sc->sample_size = (bits_per_sample >> 3) * st->codec->channels;            }        } else if(st->codec->codec_type==CODEC_TYPE_SUBTITLE){            st->codec->codec_id= id;        } else {            /* other codec type, just skip (rtp, mp4s, tmcd ...) */            url_fskip(pb, size - (url_ftell(pb) - start_pos));        }        /* this will read extra atoms at the end (wave, alac, damr, avcC, SMI ...) */        a.size = size - (url_ftell(pb) - start_pos);        if (a.size > 8) {            if (mov_read_default(c, pb, a) < 0)                return -1;        } else if (a.size > 0)            url_fskip(pb, a.size);    }    if(st->codec->codec_type==CODEC_TYPE_AUDIO && st->codec->sample_rate==0 && sc->time_scale>1) {        st->codec->sample_rate= sc->time_scale;    }    /* special codec parameters handling */    switch (st->codec->codec_id) {#ifdef CONFIG_H261_DECODER    case CODEC_ID_H261:#endif#ifdef CONFIG_H263_DECODER    case CODEC_ID_H263:#endif#ifdef CONFIG_MPEG4_DECODER    case CODEC_ID_MPEG4:#endif        st->codec->width= 0; /* let decoder init width/height */        st->codec->height= 0;        break;#ifdef CONFIG_LIBFAAD    case CODEC_ID_AAC:#endif#ifdef CONFIG_VORBIS_DECODER    case CODEC_ID_VORBIS:#endif    case CODEC_ID_MP3ON4:        st->codec->sample_rate= 0; /* let decoder init parameters properly */        break;#ifdef CONFIG_DV_DEMUXER    case CODEC_ID_DVAUDIO:        c->dv_fctx = av_alloc_format_context();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区.www| 欧洲亚洲国产日韩| 精品成人在线观看| 六月丁香婷婷色狠狠久久| 欧美一级片免费看| 日本亚洲欧美天堂免费| 精品国内二区三区| 国产一区二区久久| 中文在线一区二区| 成人精品gif动图一区| ㊣最新国产の精品bt伙计久久| 91在线免费播放| 亚洲一区免费在线观看| 884aa四虎影成人精品一区| 麻豆精品一二三| 久久久99精品免费观看| 91原创在线视频| 亚洲成a人在线观看| 欧美成人性战久久| 99精品在线免费| 午夜精品久久久久影视| 欧美xxxx老人做受| 不卡一区二区在线| 午夜欧美电影在线观看| 精品国产欧美一区二区| 不卡的av中国片| 日韩成人av影视| 国产欧美一区二区精品仙草咪| 色偷偷成人一区二区三区91| 日本v片在线高清不卡在线观看| 久久综合九色综合欧美亚洲| 99国产精品久久久久| 免费成人在线视频观看| 国产精品二三区| 日韩一区二区在线观看视频| 成人久久久精品乱码一区二区三区| 午夜精品影院在线观看| 亚洲国产精品t66y| 欧美美女一区二区在线观看| 国产成人无遮挡在线视频| 午夜电影一区二区三区| 国产精品妹子av| 日韩美女视频一区二区在线观看| 成人动漫av在线| 久久97超碰色| 亚洲成av人在线观看| 欧美激情一区在线观看| 日韩一区二区三区观看| 在线观看亚洲精品| av中文字幕不卡| 国产一区二区不卡| 天天综合色天天综合色h| 亚洲乱码国产乱码精品精可以看| 精品国产三级电影在线观看| 3d动漫精品啪啪1区2区免费| 色8久久人人97超碰香蕉987| 福利电影一区二区| 国产原创一区二区| 麻豆免费精品视频| 亚洲成年人影院| 一区2区3区在线看| 一区在线观看免费| 国产喂奶挤奶一区二区三区| 欧美成人午夜电影| 欧美一区二区三区啪啪| 欧美视频一区二| 91麻豆swag| 99九九99九九九视频精品| 成人午夜电影网站| 国产精品88av| 国产成人精品免费网站| 国内精品久久久久影院薰衣草| 日本欧美韩国一区三区| 日产欧产美韩系列久久99| 午夜精品福利视频网站| 亚洲第一福利一区| 亚洲成人免费看| 亚洲sss视频在线视频| 亚洲国产精品视频| 午夜精品视频一区| 日韩av电影免费观看高清完整版在线观看 | 久88久久88久久久| 久久99国产精品成人| 韩国成人在线视频| 国产精品亚洲人在线观看| 六月丁香综合在线视频| 国产一区二区免费在线| 国产成人福利片| eeuss鲁片一区二区三区在线看| 成人国产精品免费| 91黄色在线观看| 欧美日韩精品一区二区天天拍小说| 欧美欧美午夜aⅴ在线观看| 欧美一区二区国产| 久久综合狠狠综合| 亚洲色图清纯唯美| 亚洲va天堂va国产va久| 蜜桃av一区二区三区电影| 国产美女视频91| 不卡免费追剧大全电视剧网站| 色激情天天射综合网| 717成人午夜免费福利电影| 久久中文字幕电影| 亚洲男人的天堂av| 婷婷六月综合亚洲| 国产不卡视频在线播放| 日本韩国欧美一区二区三区| 欧美一区二区三区四区视频| 久久久久久久久久久久久女国产乱 | 日本91福利区| 国产一区二区三区免费观看| 99视频精品全部免费在线| 在线观看91视频| 亚洲精品一区二区三区影院| 中文字幕亚洲视频| 日韩激情av在线| 懂色av一区二区在线播放| 欧美性猛交xxxxxx富婆| 久久奇米777| 一级做a爱片久久| 国产精品主播直播| 欧美日韩国产综合一区二区三区 | 肉肉av福利一精品导航| 国产毛片精品视频| 精品婷婷伊人一区三区三| 欧美精品一区二区在线播放| 亚洲精品一卡二卡| 精品无人码麻豆乱码1区2区| 色一区在线观看| 国产无一区二区| 免费成人结看片| 色综合久久久久综合99| 久久久99久久| 麻豆免费精品视频| 精品视频免费在线| 国产日韩高清在线| 精品一区二区三区欧美| 欧美日韩免费在线视频| 中文乱码免费一区二区| 麻豆91在线播放| 欧美日韩视频不卡| 日韩美女视频一区二区| 韩国午夜理伦三级不卡影院| 欧美日韩精品一区二区三区蜜桃| 日本一二三不卡| 国产美女视频一区| 欧美成人精精品一区二区频| 亚洲国产成人av网| 色婷婷av一区二区三区gif| 国产三级精品视频| 国产一级精品在线| 精品成人一区二区三区| 日韩精品一二三四| 在线观看免费亚洲| 伊人性伊人情综合网| 99久久精品费精品国产一区二区| 国产网站一区二区三区| 国产成人亚洲综合a∨婷婷| 久久久久久久综合色一本| 久久99国产精品免费| 欧美电影精品一区二区| 免费久久精品视频| 日韩视频一区二区三区在线播放| 日韩国产高清在线| 91精品国产福利在线观看| 天天影视涩香欲综合网 | 日韩美女视频一区二区在线观看| 天堂蜜桃91精品| 欧美一区2区视频在线观看| 午夜在线电影亚洲一区| 欧美一区午夜视频在线观看 | 国模一区二区三区白浆| 欧美精品一区二区久久婷婷 | 青青青伊人色综合久久| 555www色欧美视频| 日日骚欧美日韩| 日韩欧美一级精品久久| 激情丁香综合五月| 久久久国际精品| av亚洲产国偷v产偷v自拍| 亚洲视频一区在线| 欧美日韩一卡二卡三卡| 日本vs亚洲vs韩国一区三区| 精品88久久久久88久久久| 国产a精品视频| 中文字幕五月欧美| 欧美亚洲国产怡红院影院| 婷婷国产v国产偷v亚洲高清| 日韩精品一区二区三区在线观看 | 男女激情视频一区| 久久先锋影音av鲁色资源| 成人av在线观| 亚洲国产精品麻豆| 日韩精品一区二区三区蜜臀| 国产乱理伦片在线观看夜一区| 中文字幕亚洲欧美在线不卡| 欧美日韩亚洲综合在线| 韩国三级在线一区| 中文字幕日本不卡| 欧美一区二区三区公司|