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

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

?? matroska.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
        }        switch (id) {            /* one single index entry ('point') */            case MATROSKA_ID_POINTENTRY:                if ((res = ebml_read_master(matroska, &id)) < 0)                    break;                /* in the end, we hope to fill one entry with a                 * timestamp, a file position and a tracknum */                idx.pos   = (uint64_t) -1;                idx.time  = (uint64_t) -1;                idx.track = (uint16_t) -1;                while (res == 0) {                    if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {                        res = AVERROR_IO;                        break;                    } else if (matroska->level_up) {                        matroska->level_up--;                        break;                    }                    switch (id) {                        /* one single index entry ('point') */                        case MATROSKA_ID_CUETIME: {                            int64_t time;                            if ((res = ebml_read_uint(matroska, &id,                                                      &time)) < 0)                                break;                            idx.time = time * matroska->time_scale;                            break;                        }                        /* position in the file + track to which it                          * belongs */                        case MATROSKA_ID_CUETRACKPOSITION:                            if ((res = ebml_read_master(matroska, &id)) < 0)                                break;                            while (res == 0) {                                if (!(id = ebml_peek_id (matroska,                                                    &matroska->level_up))) {                                    res = AVERROR_IO;                                    break;                                } else if (matroska->level_up) {                                    matroska->level_up--;                                    break;                                }                                switch (id) {                                    /* track number */                                    case MATROSKA_ID_CUETRACK: {                                        uint64_t num;                                        if ((res = ebml_read_uint(matroska,                                                          &id, &num)) < 0)                                            break;                                        idx.track = num;                                        break;                                    }                                        /* position in file */                                    case MATROSKA_ID_CUECLUSTERPOSITION: {                                        uint64_t num;                                        if ((res = ebml_read_uint(matroska,                                                          &id, &num)) < 0)                                            break;                                        idx.pos = num;                                        break;                                    }                                    default:                                        av_log(matroska->ctx, AV_LOG_INFO,                                               "Unknown entry 0x%x in "                                               "CuesTrackPositions\n", id);                                        /* fall-through */                                    case EBML_ID_VOID:                                        res = ebml_read_skip(matroska);                                        break;                                }                                if (matroska->level_up) {                                    matroska->level_up--;                                    break;                                }                            }                            break;                        default:                            av_log(matroska->ctx, AV_LOG_INFO,                                   "Unknown entry 0x%x in cuespoint "                                   "index\n", id);                            /* fall-through */                        case EBML_ID_VOID:                            res = ebml_read_skip(matroska);                            break;                    }                    if (matroska->level_up) {                        matroska->level_up--;                        break;                    }                }                /* so let's see if we got what we wanted */                if (idx.pos   != (uint64_t) -1 &&                    idx.time  != (uint64_t) -1 &&                    idx.track != (uint16_t) -1) {                    if (matroska->num_indexes % 32 == 0) {                        /* re-allocate bigger index */                        matroska->index =                            av_realloc(matroska->index,                                       (matroska->num_indexes + 32) *                                       sizeof(MatroskaDemuxIndex));                    }                    matroska->index[matroska->num_indexes] = idx;                    matroska->num_indexes++;                }                break;            default:                av_log(matroska->ctx, AV_LOG_INFO,                       "Unknown entry 0x%x in cues header\n", id);                /* fall-through */            case EBML_ID_VOID:                res = ebml_read_skip(matroska);                break;        }        if (matroska->level_up) {            matroska->level_up--;            break;        }    }    return res;}static intmatroska_parse_metadata (MatroskaDemuxContext *matroska){    int res = 0;    uint32_t id;    while (res == 0) {        if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {            res = AVERROR_IO;            break;        } else if (matroska->level_up) {            matroska->level_up--;            break;        }        switch (id) {            /* Hm, this is unsupported... */            default:                av_log(matroska->ctx, AV_LOG_INFO,                       "Unknown entry 0x%x in metadata header\n", id);                /* fall-through */            case EBML_ID_VOID:                res = ebml_read_skip(matroska);                break;        }        if (matroska->level_up) {            matroska->level_up--;            break;        }    }    return res;}static intmatroska_parse_seekhead (MatroskaDemuxContext *matroska){    int res = 0;    uint32_t id;    av_log(matroska->ctx, AV_LOG_DEBUG, "parsing seekhead...\n");    while (res == 0) {        if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {            res = AVERROR_IO;            break;        } else if (matroska->level_up) {            matroska->level_up--;            break;        }        switch (id) {            case MATROSKA_ID_SEEKENTRY: {                uint32_t seek_id = 0, peek_id_cache = 0;                uint64_t seek_pos = (uint64_t) -1, t;                if ((res = ebml_read_master(matroska, &id)) < 0)                    break;                while (res == 0) {                    if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {                        res = AVERROR_IO;                        break;                    } else if (matroska->level_up) {                        matroska->level_up--;                        break;                    }                    switch (id) {                        case MATROSKA_ID_SEEKID:                            res = ebml_read_uint(matroska, &id, &t);                            seek_id = t;                            break;                        case MATROSKA_ID_SEEKPOSITION:                            res = ebml_read_uint(matroska, &id, &seek_pos);                            break;                        default:                            av_log(matroska->ctx, AV_LOG_INFO,                                   "Unknown seekhead ID 0x%x\n", id);                            /* fall-through */                        case EBML_ID_VOID:                            res = ebml_read_skip(matroska);                            break;                    }                    if (matroska->level_up) {                        matroska->level_up--;                        break;                    }                }                if (!seek_id || seek_pos == (uint64_t) -1) {                    av_log(matroska->ctx, AV_LOG_INFO,                           "Incomplete seekhead entry (0x%x/%llu)\n",                           seek_id, seek_pos);                    break;                }                switch (seek_id) {                    case MATROSKA_ID_CUES:                    case MATROSKA_ID_TAGS: {                        uint32_t level_up = matroska->level_up;                        offset_t before_pos;                        uint64_t length;                        MatroskaLevel level;                        /* remember the peeked ID and the current position */                        peek_id_cache = matroska->peek_id;                        before_pos = url_ftell(&matroska->ctx->pb);                        /* seek */                        if ((res = ebml_read_seek(matroska, seek_pos +                                               matroska->segment_start)) < 0)                            return res;                        /* we don't want to lose our seekhead level, so we add                         * a dummy. This is a crude hack. */                        if (matroska->num_levels == EBML_MAX_DEPTH) {                            av_log(matroska->ctx, AV_LOG_INFO,                                   "Max EBML element depth (%d) reached, "                                   "cannot parse further.\n", EBML_MAX_DEPTH);                            return AVERROR_UNKNOWN;                        }                                                    level.start = 0;                        level.length = (uint64_t)-1;                        matroska->levels[matroska->num_levels] = level;                        matroska->num_levels++;                        /* check ID */                        if (!(id = ebml_peek_id (matroska,                                                 &matroska->level_up)))                            break;                        if (id != seek_id) {                            av_log(matroska->ctx, AV_LOG_INFO,                                   "We looked for ID=0x%x but got "                                   "ID=0x%x (pos=%llu)",                                   seek_id, id, seek_pos +                                   matroska->segment_start);                            goto finish;                        }                        /* read master + parse */                        if ((res = ebml_read_master(matroska, &id)) < 0)                            break;                        switch (id) {                            case MATROSKA_ID_CUES:                                if (!(res = matroska_parse_index(matroska)) ||                                    url_feof(&matroska->ctx->pb)) {                                    matroska->index_parsed = 1;                                    res = 0;                                }                                break;                            case MATROSKA_ID_TAGS:                                if (!(res = matroska_parse_metadata(matroska)) ||                                   url_feof(&matroska->ctx->pb)) {                                    matroska->metadata_parsed = 1;                                    res = 0;                                }                                break;                        }                        if (res < 0)                            break;                    finish:                        /* remove dummy level */                        while (matroska->num_levels) {                            matroska->num_levels--;                            length =                                matroska->levels[matroska->num_levels].length;                            if (length == (uint64_t)-1)                                break;                        }                        /* seek back */                        if ((res = ebml_read_seek(matroska, before_pos)) < 0)                            return res;                        matroska->peek_id = peek_id_cache;                        matroska->level_up = level_up;                        break;                    }                    default:                        av_log(matroska->ctx, AV_LOG_INFO,                               "Ignoring seekhead entry for ID=0x%x\n",                               seek_id);                        break;                }                break;            }            default:                av_log(matroska->ctx, AV_LOG_INFO,                       "Unknown seekhead ID 0x%x\n", id);                /* fall-through */            case EBML_ID_VOID:                res = ebml_read_skip(matroska);                break;        }        if (matroska->level_up) {            matroska->level_up--;            break;        }    }    return res;}static intmatroska_read_header (AVFormatContext    *s,                      AVFormatParameters *ap){    MatroskaDemuxContext *matroska = s->priv_data;    char *doctype;    int version, last_level, res = 0;    uint32_t id;    matroska->ctx = s;    /* First read the EBML header. */    doctype = NULL;    if ((res = ebml_read_header(matroska, &doctype, &version)) < 0)        return res;    if ((doctype == NULL) || strcmp(doctype, "matroska")) {        av_log(matroska->ctx, AV_LOG_ERROR,               "Wrong EBML doctype ('%s' != 'matroska').\n",               doctype ? doctype : "(none)");        if (doctype)            av_free(doctype);        return AVERROR_NOFMT;    }    av_free(doctype);    if (version != 1) {        av_log(matroska->ctx, AV_LOG_ERROR,               "Matroska demuxer version 1 too old for file version %d\n",               version);        return AVERROR_NOFMT;    }    /* The next thing is a segment. */    while (1) {        if (!(id = ebml_peek_id(matroska, &last_level)))            return AVERROR_IO;        if (id == MATROSKA_ID_SEGMENT)            break;        /* oi! */        av_log(matroska->ctx, AV_LOG_INFO,               "Expected a Segment ID (0x%x), but received 0x%x!\n",               MATROSKA_ID_SEGMENT, id);        if ((res = ebml_read_skip(matroska)) < 0)            return res;    }    /* We now have a Matroska segment.     * Seeks are from the beginning of the segment,     * after the segment ID/length. */    if ((res = ebml_read_master(matroska, &id)) < 0)        return res;    matroska->segment_start = url_ftell(&s->pb);    matroska->time_scale = 1000000;    /* we've found our segment, start reading

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区久久久久| 精品国产制服丝袜高跟| 日韩欧美亚洲一区二区| 欧美国产综合一区二区| 日本女人一区二区三区| 91日韩在线专区| 久久久天堂av| 久草精品在线观看| 欧美少妇xxx| 亚洲人成伊人成综合网小说| 精品一区二区三区视频| 91精品国产综合久久久蜜臀图片 | 国产福利一区二区三区视频| 欧美日韩一卡二卡三卡| 亚洲精品自拍动漫在线| 成人免费黄色在线| 国产日韩av一区二区| 麻豆免费精品视频| 91精品国产欧美一区二区18| 亚洲男人的天堂在线观看| 成人av免费在线| 国产欧美精品国产国产专区 | 亚洲成av人影院| 97超碰欧美中文字幕| 国产精品色哟哟| 福利一区福利二区| 26uuu国产电影一区二区| 日本伊人午夜精品| 日韩欧美国产电影| 精品一二三四区| 欧美精品一区二| 精品一区二区日韩| 久久久青草青青国产亚洲免观| 麻豆精品国产传媒mv男同| 日韩欧美中文字幕制服| 久久精品二区亚洲w码| 精品免费日韩av| 国产在线视频不卡二| 国产亚洲一区二区三区四区| 国产精品一卡二| 国产精品毛片高清在线完整版| 成人动漫一区二区在线| 亚洲欧美电影一区二区| 色婷婷亚洲精品| 亚洲成av人在线观看| 日韩一区二区三区三四区视频在线观看| 免费成人av资源网| 久久久久久日产精品| 成人激情免费电影网址| 亚洲精选在线视频| 欧美一区日韩一区| 国产成人午夜99999| 中文字幕一区二区三区色视频| 色网站国产精品| 美女精品自拍一二三四| 中文子幕无线码一区tr| 91福利精品第一导航| 日韩av一级电影| 亚洲国产精品精华液2区45| 色哟哟在线观看一区二区三区| 亚洲高清不卡在线观看| www国产成人| 色94色欧美sute亚洲13| 精品一区二区精品| 国产午夜精品一区二区三区四区| 色偷偷成人一区二区三区91| 蜜桃视频在线观看一区| 国产精品伦一区| 91精品国产91综合久久蜜臀| 高清视频一区二区| 婷婷综合另类小说色区| 久久精品视频在线看| 欧美日韩一区二区三区四区| 韩国毛片一区二区三区| 亚洲h在线观看| 国产精品蜜臀在线观看| 在线播放国产精品二区一二区四区 | 精品一区二区三区在线视频| 综合激情成人伊人| 精品国产三级a在线观看| 色综合欧美在线视频区| 国产美女在线观看一区| 亚洲国产一区二区在线播放| 国产欧美日韩麻豆91| 91精品欧美福利在线观看| 99久久久精品免费观看国产蜜| 日本成人在线一区| 一卡二卡三卡日韩欧美| 国产欧美一区二区精品仙草咪| 制服.丝袜.亚洲.另类.中文| 99re成人在线| 粉嫩久久99精品久久久久久夜| 午夜视频久久久久久| 亚洲免费观看高清完整版在线 | 欧美性大战久久久久久久| 高清国产一区二区三区| 精品在线一区二区三区| 日韩成人av影视| 亚洲成av人在线观看| 亚洲精品综合在线| 亚洲视频一区在线观看| 国产午夜精品久久久久久免费视| 欧美tickling挠脚心丨vk| 欧美精品123区| 欧美三级中文字幕| 在线中文字幕不卡| 在线观看日韩电影| 在线观看亚洲一区| 欧美性猛交xxxx乱大交退制版| 色综合久久88色综合天天免费| 99久久er热在这里只有精品66| 成人动漫av在线| www.欧美日韩| 99视频在线精品| 一本大道av伊人久久综合| 91影院在线观看| 色综合久久久久综合99| 欧美亚洲免费在线一区| 精品视频一区 二区 三区| 精品视频色一区| 91精品国产欧美一区二区18 | 久久国产成人午夜av影院| 奇米888四色在线精品| 美女在线一区二区| 国产美女精品一区二区三区| 国产一区二区不卡| 福利视频网站一区二区三区| 成人动漫一区二区三区| 日本高清免费不卡视频| 欧美亚洲综合另类| 制服丝袜亚洲精品中文字幕| 日韩一区和二区| 久久久亚洲欧洲日产国码αv| 中文一区在线播放| 亚洲一区二区三区国产| 奇米综合一区二区三区精品视频 | 五月婷婷综合网| 七七婷婷婷婷精品国产| 国产精品一区2区| 色欧美乱欧美15图片| 欧美日韩一二三区| 久久久久亚洲蜜桃| 亚洲欧美综合色| 日韩高清中文字幕一区| 精品在线一区二区| 一本一道波多野结衣一区二区 | 欧美天天综合网| 欧美不卡一区二区三区| 中文在线资源观看网站视频免费不卡| 亚洲视频在线一区| 久久9热精品视频| 99re成人在线| 精品成人在线观看| 夜夜嗨av一区二区三区| 精品在线亚洲视频| 在线日韩国产精品| 国产情人综合久久777777| 亚洲一区电影777| 国产乱人伦精品一区二区在线观看| 99久久婷婷国产精品综合| 日韩免费观看2025年上映的电影| 国产精品白丝在线| 日日摸夜夜添夜夜添精品视频| 丁香桃色午夜亚洲一区二区三区| 欧美性色综合网| 国产精品美女久久久久aⅴ| 蜜臀久久久久久久| 在线看国产一区二区| 国产日产欧产精品推荐色| 日韩电影在线一区二区三区| www.亚洲色图.com| 久久久精品tv| 美女爽到高潮91| 欧美日韩国产免费| 玉米视频成人免费看| 国产**成人网毛片九色 | 国产精品超碰97尤物18| 国产最新精品免费| 在线成人av网站| 亚洲一区在线观看视频| a在线播放不卡| 国产女人18毛片水真多成人如厕 | 亚洲国产视频一区| 91在线精品一区二区三区| 久久女同性恋中文字幕| 久久精品噜噜噜成人88aⅴ| 欧美色手机在线观看| 亚洲精品国产无套在线观| 成人久久视频在线观看| 国产清纯白嫩初高生在线观看91| 久久91精品国产91久久小草| 欧美一区二区三区影视| 蜜桃av一区二区在线观看| 3d动漫精品啪啪1区2区免费 | 在线播放视频一区| 亚洲成人免费影院| 777xxx欧美| 免费观看成人鲁鲁鲁鲁鲁视频| 69p69国产精品| 久久国产三级精品|