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

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

?? matroska.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
    return read;}/* * Same as above, but signed. */static intmatroska_ebmlnum_sint (uint8_t  *data,                       uint32_t  size,                       int64_t  *num){    uint64_t unum;    int res;    /* read as unsigned number first */    if ((res = matroska_ebmlnum_uint(data, size, &unum)) < 0)        return res;    /* make signed (weird way) */    if (unum == (uint64_t)-1)        *num = INT64_MAX;    else        *num = unum - ((1LL << ((7 * res) - 1)) - 1);    return res;}/* * Read an EBML header. * 0 is success, < 0 is failure. */static intebml_read_header (MatroskaDemuxContext *matroska,                  char                **doctype,                  int                  *version){    uint32_t id;    int level_up, res = 0;    /* default init */    if (doctype)        *doctype = NULL;    if (version)        *version = 1;    if (!(id = ebml_peek_id(matroska, &level_up)) ||        level_up != 0 || id != EBML_ID_HEADER) {        av_log(matroska->ctx, AV_LOG_ERROR,               "This is not an EBML file (id=0x%x/0x%x)\n", id, EBML_ID_HEADER);        return AVERROR_INVALIDDATA;    }    if ((res = ebml_read_master(matroska, &id)) < 0)        return res;    while (res == 0) {        if (!(id = ebml_peek_id(matroska, &level_up)))            return AVERROR_IO;        /* end-of-header */        if (level_up)            break;        switch (id) {            /* is our read version uptodate? */            case EBML_ID_EBMLREADVERSION: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    return res;                if (num > EBML_VERSION) {                    av_log(matroska->ctx, AV_LOG_ERROR,                           "EBML version %llu (> %d) is not supported\n",                           num, EBML_VERSION);                    return AVERROR_INVALIDDATA;                }                break;            }            /* we only handle 8 byte lengths at max */            case EBML_ID_EBMLMAXSIZELENGTH: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    return res;                if (num > sizeof(uint64_t)) {                    av_log(matroska->ctx, AV_LOG_ERROR,                           "Integers of size %llu (> %d) not supported\n",                           num, sizeof(uint64_t));                    return AVERROR_INVALIDDATA;                }                break;            }            /* we handle 4 byte IDs at max */            case EBML_ID_EBMLMAXIDLENGTH: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    return res;                if (num > sizeof(uint32_t)) {                    av_log(matroska->ctx, AV_LOG_ERROR,                           "IDs of size %llu (> %u) not supported\n",			    num, sizeof(uint32_t));                    return AVERROR_INVALIDDATA;                }                break;            }            case EBML_ID_DOCTYPE: {                char *text;                if ((res = ebml_read_ascii(matroska, &id, &text)) < 0)                    return res;                if (doctype) {                    if (*doctype)                        av_free(*doctype);                    *doctype = text;                } else                    av_free(text);                break;            }            case EBML_ID_DOCTYPEREADVERSION: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    return res;                if (version)                    *version = num;                break;            }            default:                av_log(matroska->ctx, AV_LOG_INFO,                       "Unknown data type 0x%x in EBML header", id);                /* pass-through */            case EBML_ID_VOID:            /* we ignore these two, as they don't tell us anything we             * care about */            case EBML_ID_EBMLVERSION:            case EBML_ID_DOCTYPEVERSION:                res = ebml_read_skip (matroska);                break;        }    }    return 0;}/* * Put one packet in an application-supplied AVPacket struct. * Returns 0 on success or -1 on failure. */static intmatroska_deliver_packet (MatroskaDemuxContext *matroska,                         AVPacket             *pkt){    if (matroska->num_packets > 0) {        memcpy(pkt, matroska->packets[0], sizeof(AVPacket));        av_free(matroska->packets[0]);        if (matroska->num_packets > 1) {            memmove(&matroska->packets[0], &matroska->packets[1],                    (matroska->num_packets - 1) * sizeof(AVPacket *));            matroska->packets =                av_realloc(matroska->packets, (matroska->num_packets - 1) *                           sizeof(AVPacket *));        } else {            av_free(matroska->packets);            matroska->packets = NULL;        }        matroska->num_packets--;        return 0;    }    return -1;}/* * Put a packet into our internal queue. Will be delivered to the * user/application during the next get_packet() call. */static voidmatroska_queue_packet (MatroskaDemuxContext *matroska,                       AVPacket             *pkt){    matroska->packets =        av_realloc(matroska->packets, (matroska->num_packets + 1) *                   sizeof(AVPacket *));    matroska->packets[matroska->num_packets] = pkt;    matroska->num_packets++;}/* * Autodetecting... */static intmatroska_probe (AVProbeData *p){    uint64_t total = 0;    int len_mask = 0x80, size = 1, n = 1;    uint8_t probe_data[] = { 'm', 'a', 't', 'r', 'o', 's', 'k', 'a' };    if (p->buf_size < 5)        return 0;    /* ebml header? */    if ((p->buf[0] << 24 | p->buf[1] << 16 |         p->buf[2] << 8 | p->buf[3]) != EBML_ID_HEADER)        return 0;    /* length of header */    total = p->buf[4];    while (size <= 8 && !(total & len_mask)) {        size++;        len_mask >>= 1;    }    if (size > 8)      return 0;    total &= (len_mask - 1);    while (n < size)        total = (total << 8) | p->buf[4 + n++];    /* does the probe data contain the whole header? */    if (p->buf_size < 4 + size + total)      return 0;    /* the header must contain the document type 'matroska'. For now,     * we don't parse the whole header but simply check for the     * availability of that array of characters inside the header.     * Not fully fool-proof, but good enough. */    for (n = 4 + size; n < 4 + size + total - sizeof(probe_data); n++)        if (!memcmp (&p->buf[n], probe_data, sizeof(probe_data)))            return AVPROBE_SCORE_MAX;    return 0;}/* * From here on, it's all XML-style DTD stuff... Needs no comments. */static intmatroska_parse_info (MatroskaDemuxContext *matroska){    int res = 0;    uint32_t id;    av_log(matroska->ctx, AV_LOG_DEBUG, "Parsing info...\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) {            /* cluster timecode */            case MATROSKA_ID_TIMECODESCALE: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    break;                matroska->time_scale = num;                break;            }            case MATROSKA_ID_DURATION: {                double num;                if ((res = ebml_read_float(matroska, &id, &num)) < 0)                    break;                matroska->duration = num * matroska->time_scale;                break;            }            case MATROSKA_ID_WRITINGAPP: {                char *text;                if ((res = ebml_read_utf8(matroska, &id, &text)) < 0)                    break;                matroska->writing_app = text;                break;            }            case MATROSKA_ID_MUXINGAPP: {                char *text;                if ((res = ebml_read_utf8(matroska, &id, &text)) < 0)                    break;                matroska->muxing_app = text;                break;            }            case MATROSKA_ID_DATEUTC: {                int64_t time;                if ((res = ebml_read_date(matroska, &id, &time)) < 0)                    break;                matroska->created = time;                break;            }            default:                av_log(matroska->ctx, AV_LOG_INFO,                       "Unknown entry 0x%x in info 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_add_stream (MatroskaDemuxContext *matroska){    int res = 0;    uint32_t id;    MatroskaTrack *track;    av_log(matroska->ctx, AV_LOG_DEBUG, "parsing track, adding stream..,\n");    /* Allocate a generic track. As soon as we know its type we'll realloc. */    track = av_mallocz(sizeof(MatroskaTrack));    matroska->num_tracks++;    /* start with the master */    if ((res = ebml_read_master(matroska, &id)) < 0)        return res;    /* try reading the trackentry headers */    while (res == 0) {        if (!(id = ebml_peek_id(matroska, &matroska->level_up))) {            res = AVERROR_IO;            break;        } else if (matroska->level_up > 0) {            matroska->level_up--;            break;        }        switch (id) {            /* track number (unique stream ID) */            case MATROSKA_ID_TRACKNUMBER: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    break;                track->num = num;                break;            }            /* track UID (unique identifier) */            case MATROSKA_ID_TRACKUID: {                uint64_t num;                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    break;                track->uid = num;                break;            }            /* track type (video, audio, combined, subtitle, etc.) */            case MATROSKA_ID_TRACKTYPE: {                uint64_t num;                if (track->type != 0) {                    av_log(matroska->ctx, AV_LOG_INFO,                           "More than one tracktype in an entry - skip\n");                    break;                }                if ((res = ebml_read_uint(matroska, &id, &num)) < 0)                    break;                track->type = num;                /* ok, so we're actually going to reallocate this thing */                switch (track->type) {                    case MATROSKA_TRACK_TYPE_VIDEO:                        track = (MatroskaTrack *)                            av_realloc(track, sizeof(MatroskaVideoTrack));                        break;                    case MATROSKA_TRACK_TYPE_AUDIO:                        track = (MatroskaTrack *)                            av_realloc(track, sizeof(MatroskaAudioTrack));                        ((MatroskaAudioTrack *)track)->channels = 1;                        ((MatroskaAudioTrack *)track)->samplerate = 8000;                        break;                    case MATROSKA_TRACK_TYPE_SUBTITLE:                        track = (MatroskaTrack *)                            av_realloc(track, sizeof(MatroskaSubtitleTrack));                        break;                    case MATROSKA_TRACK_TYPE_COMPLEX:                    case MATROSKA_TRACK_TYPE_LOGO:                    case MATROSKA_TRACK_TYPE_CONTROL:                    default:                        av_log(matroska->ctx, AV_LOG_INFO,                               "Unknown or unsupported track type 0x%x\n",                               track->type);                        track->type = 0;                        break;                }                matroska->tracks[matroska->num_tracks - 1] = track;                break;            }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线免费| 琪琪久久久久日韩精品| 日韩美女一区二区三区四区| 从欧美一区二区三区| 三级亚洲高清视频| 亚洲男同1069视频| 国产三级欧美三级日产三级99| 欧美婷婷六月丁香综合色| 福利一区二区在线| 国产在线精品视频| 欧美aa在线视频| 亚洲国产综合色| 中文字幕日韩av资源站| 久久久久久久综合| 日韩一区二区三区av| 欧美亚洲一区二区三区四区| 成人高清伦理免费影院在线观看| 免费成人美女在线观看| 天堂资源在线中文精品| 又紧又大又爽精品一区二区| 国产精品久久久久久亚洲伦 | 99久久国产综合色|国产精品| 韩国成人精品a∨在线观看| 日本在线不卡一区| 亚洲成人综合网站| 一区二区三区蜜桃网| 亚洲精品视频一区| 日韩理论片中文av| 亚洲日本青草视频在线怡红院| 国产精品无码永久免费888| 2019国产精品| 久久久久9999亚洲精品| 国产视频一区在线观看| 2024国产精品| 亚洲精品在线电影| 久久色.com| 国产亚洲精品中文字幕| 久久色在线视频| 久久精品视频在线免费观看| 久久久影视传媒| 欧美国产精品一区| 国产精品视频一二三区| 国产精品丝袜91| 亚洲欧美区自拍先锋| 亚洲综合免费观看高清完整版在线 | 欧美国产欧美综合| 国产精品系列在线| 亚洲欧美偷拍卡通变态| 亚洲午夜日本在线观看| 亚洲电影中文字幕在线观看| 日韩高清电影一区| 国产在线精品一区二区三区不卡| 国产美女视频一区| 99久久伊人精品| 欧洲一区在线电影| 51精品国自产在线| 久久午夜国产精品| 亚洲日本欧美天堂| 日本不卡的三区四区五区| 国产在线视频精品一区| 成人免费视频播放| 欧美特级限制片免费在线观看| 在线播放91灌醉迷j高跟美女| 日韩欧美一区中文| 国产精品久线观看视频| 午夜欧美视频在线观看| 国产麻豆精品在线观看| 欧美日韩一区二区三区四区五区| 欧美三电影在线| 久久久综合精品| 亚洲综合在线电影| 久久精品国产秦先生| 成人综合在线观看| 精品视频在线免费看| 日韩欧美激情四射| 亚洲日本成人在线观看| 人禽交欧美网站| 不卡的电影网站| 91精品国产色综合久久ai换脸| 国产欧美日韩视频一区二区| 亚洲国产成人av| 国产福利一区在线| 欧美性欧美巨大黑白大战| 久久久亚洲高清| 亚洲一区二区偷拍精品| 国产精品一二三四五| 欧美日韩免费在线视频| 久久女同性恋中文字幕| 亚洲成人在线免费| 大陆成人av片| 日韩一级二级三级| 亚洲桃色在线一区| 国产一区二三区| 欧美日韩www| ...xxx性欧美| 国产老妇另类xxxxx| 欧美美女一区二区三区| 国产精品美女视频| 久久精品国产一区二区三区免费看 | 亚洲日本一区二区| 国产精品亚洲综合一区在线观看| 欧美日韩电影一区| 亚洲男人电影天堂| 成人a级免费电影| 久久久一区二区三区| 青青青爽久久午夜综合久久午夜| 91国在线观看| 日本一区二区三区视频视频| 免费成人性网站| 欧美顶级少妇做爰| 一区二区三区精密机械公司| 成人aaaa免费全部观看| 久久综合久久鬼色| 久久超碰97中文字幕| 欧美日韩黄色一区二区| 一区二区三区四区在线免费观看 | 亚洲天堂成人在线观看| 粉嫩av一区二区三区| 精品国产乱码91久久久久久网站| 天堂蜜桃91精品| 欧美主播一区二区三区美女| ...av二区三区久久精品| 成人免费观看av| 国产欧美精品国产国产专区| 国产精品综合久久| 久久久精品国产99久久精品芒果| 久久99这里只有精品| 欧美成人三级电影在线| 青娱乐精品视频在线| 日韩小视频在线观看专区| 午夜精品一区二区三区免费视频 | 欧美国产精品一区二区三区| 国内成人免费视频| ww亚洲ww在线观看国产| 经典一区二区三区| 精品国产乱码久久久久久老虎| 免费在线欧美视频| 日韩精品一区二区三区视频播放 | 亚洲国产一区二区a毛片| 欧美自拍偷拍一区| 亚洲1区2区3区视频| 欧美美女网站色| 麻豆91精品视频| 精品国产青草久久久久福利| 国产毛片精品一区| 中文字幕久久午夜不卡| 99精品久久免费看蜜臀剧情介绍| 亚洲欧美在线视频| 色吊一区二区三区| 日韩精品久久理论片| 日韩精品专区在线影院观看| 国产一区二区三区四区五区美女| 日本aⅴ精品一区二区三区| 欧美高清视频一二三区| 捆绑紧缚一区二区三区视频| 久久久久久久久99精品| jlzzjlzz欧美大全| 亚洲国产精品麻豆| 精品日韩av一区二区| 成人性生交大片免费看中文 | 国产日产精品一区| 99久久伊人网影院| 婷婷中文字幕综合| 久久午夜国产精品| 色婷婷激情一区二区三区| 日韩精品久久久久久| 国产丝袜欧美中文另类| 在线观看亚洲精品视频| 日韩av电影免费观看高清完整版| 久久久久久久免费视频了| 99riav久久精品riav| 日本伊人色综合网| 久久精品日韩一区二区三区| 91福利国产成人精品照片| 蜜臀va亚洲va欧美va天堂| 国产精品国产精品国产专区不蜜 | 色天使色偷偷av一区二区| 石原莉奈一区二区三区在线观看| 欧美精品一区二区三区在线播放| 99视频超级精品| 美腿丝袜一区二区三区| 国产精品不卡在线| 日韩一区二区三区视频| 91视频观看视频| 老司机一区二区| 一区二区三区欧美激情| 久久久久久久久久美女| 欧美男人的天堂一二区| 粉嫩av一区二区三区粉嫩| 天天综合色天天综合色h| 亚洲国产高清在线| 91精品国产91久久综合桃花| gogogo免费视频观看亚洲一| 蜜臀国产一区二区三区在线播放| 成人欧美一区二区三区白人 | 欧美日韩在线播放一区| 粉嫩在线一区二区三区视频| 日本亚洲最大的色成网站www| 中文文精品字幕一区二区| 欧美一区二区播放|