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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rmdec.c.svn-base

?? ffmpeg最新源碼
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號(hào):
/* * "Real" compatible demuxer. * Copyright (c) 2000, 2001 Fabrice Bellard. * * This file is part of FFmpeg. * * FFmpeg is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * FFmpeg is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with FFmpeg; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */#include "libavutil/avstring.h"#include "avformat.h"#include "rm.h"static inline void get_strl(ByteIOContext *pb, char *buf, int buf_size, int len){    int i;    char *q, r;    q = buf;    for(i=0;i<len;i++) {        r = get_byte(pb);        if (i < buf_size - 1)            *q++ = r;    }    if (buf_size > 0) *q = '\0';}static void get_str16(ByteIOContext *pb, char *buf, int buf_size){    get_strl(pb, buf, buf_size, get_be16(pb));}static void get_str8(ByteIOContext *pb, char *buf, int buf_size){    get_strl(pb, buf, buf_size, get_byte(pb));}static int rm_read_audio_stream_info(AVFormatContext *s, AVStream *st,                                      int read_all){    RMContext *rm = s->priv_data;    ByteIOContext *pb = s->pb;    char buf[256];    uint32_t version;    int i;    /* ra type header */    version = get_be32(pb); /* version */    if (((version >> 16) & 0xff) == 3) {        int64_t startpos = url_ftell(pb);        /* very old version */        for(i = 0; i < 14; i++)            get_byte(pb);        get_str8(pb, s->title, sizeof(s->title));        get_str8(pb, s->author, sizeof(s->author));        get_str8(pb, s->copyright, sizeof(s->copyright));        get_str8(pb, s->comment, sizeof(s->comment));        if ((startpos + (version & 0xffff)) >= url_ftell(pb) + 2) {        // fourcc (should always be "lpcJ")        get_byte(pb);        get_str8(pb, buf, sizeof(buf));        }        // Skip extra header crap (this should never happen)        if ((startpos + (version & 0xffff)) > url_ftell(pb))            url_fskip(pb, (version & 0xffff) + startpos - url_ftell(pb));        st->codec->sample_rate = 8000;        st->codec->channels = 1;        st->codec->codec_type = CODEC_TYPE_AUDIO;        st->codec->codec_id = CODEC_ID_RA_144;    } else {        int flavor, sub_packet_h, coded_framesize, sub_packet_size;        /* old version (4) */        get_be32(pb); /* .ra4 */        get_be32(pb); /* data size */        get_be16(pb); /* version2 */        get_be32(pb); /* header size */        flavor= get_be16(pb); /* add codec info / flavor */        rm->coded_framesize = coded_framesize = get_be32(pb); /* coded frame size */        get_be32(pb); /* ??? */        get_be32(pb); /* ??? */        get_be32(pb); /* ??? */        rm->sub_packet_h = sub_packet_h = get_be16(pb); /* 1 */        st->codec->block_align= get_be16(pb); /* frame size */        rm->sub_packet_size = sub_packet_size = get_be16(pb); /* sub packet size */        get_be16(pb); /* ??? */        if (((version >> 16) & 0xff) == 5) {            get_be16(pb); get_be16(pb); get_be16(pb); }        st->codec->sample_rate = get_be16(pb);        get_be32(pb);        st->codec->channels = get_be16(pb);        if (((version >> 16) & 0xff) == 5) {            get_be32(pb);            buf[0] = get_byte(pb);            buf[1] = get_byte(pb);            buf[2] = get_byte(pb);            buf[3] = get_byte(pb);            buf[4] = 0;        } else {            get_str8(pb, buf, sizeof(buf)); /* desc */            get_str8(pb, buf, sizeof(buf)); /* desc */        }        st->codec->codec_type = CODEC_TYPE_AUDIO;        if (!strcmp(buf, "dnet")) {            st->codec->codec_id = CODEC_ID_AC3;            st->need_parsing = AVSTREAM_PARSE_FULL;        } else if (!strcmp(buf, "28_8")) {            st->codec->codec_id = CODEC_ID_RA_288;            st->codec->extradata_size= 0;            rm->audio_framesize = st->codec->block_align;            st->codec->block_align = coded_framesize;            if(rm->audio_framesize >= UINT_MAX / sub_packet_h){                av_log(s, AV_LOG_ERROR, "rm->audio_framesize * sub_packet_h too large\n");                return -1;            }            rm->audiobuf = av_malloc(rm->audio_framesize * sub_packet_h);        } else if ((!strcmp(buf, "cook")) || (!strcmp(buf, "atrc"))) {            int codecdata_length, i;            get_be16(pb); get_byte(pb);            if (((version >> 16) & 0xff) == 5)                get_byte(pb);            codecdata_length = get_be32(pb);            if(codecdata_length + FF_INPUT_BUFFER_PADDING_SIZE <= (unsigned)codecdata_length){                av_log(s, AV_LOG_ERROR, "codecdata_length too large\n");                return -1;            }            if (!strcmp(buf, "cook")) st->codec->codec_id = CODEC_ID_COOK;            else st->codec->codec_id = CODEC_ID_ATRAC3;            st->codec->extradata_size= codecdata_length;            st->codec->extradata= av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);            for(i = 0; i < codecdata_length; i++)                ((uint8_t*)st->codec->extradata)[i] = get_byte(pb);            rm->audio_framesize = st->codec->block_align;            st->codec->block_align = rm->sub_packet_size;            if(rm->audio_framesize >= UINT_MAX / sub_packet_h){                av_log(s, AV_LOG_ERROR, "rm->audio_framesize * sub_packet_h too large\n");                return -1;            }            rm->audiobuf = av_malloc(rm->audio_framesize * sub_packet_h);        } else if (!strcmp(buf, "raac") || !strcmp(buf, "racp")) {            int codecdata_length, i;            get_be16(pb); get_byte(pb);            if (((version >> 16) & 0xff) == 5)                get_byte(pb);            st->codec->codec_id = CODEC_ID_AAC;            codecdata_length = get_be32(pb);            if(codecdata_length + FF_INPUT_BUFFER_PADDING_SIZE <= (unsigned)codecdata_length){                av_log(s, AV_LOG_ERROR, "codecdata_length too large\n");                return -1;            }            if (codecdata_length >= 1) {                st->codec->extradata_size = codecdata_length - 1;                st->codec->extradata = av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);                get_byte(pb);                for(i = 0; i < st->codec->extradata_size; i++)                    ((uint8_t*)st->codec->extradata)[i] = get_byte(pb);            }        } else {            st->codec->codec_id = CODEC_ID_NONE;            av_strlcpy(st->codec->codec_name, buf, sizeof(st->codec->codec_name));        }        if (read_all) {            get_byte(pb);            get_byte(pb);            get_byte(pb);            get_str8(pb, s->title, sizeof(s->title));            get_str8(pb, s->author, sizeof(s->author));            get_str8(pb, s->copyright, sizeof(s->copyright));            get_str8(pb, s->comment, sizeof(s->comment));        }    }    return 0;}intff_rm_read_mdpr_codecdata (AVFormatContext *s, AVStream *st){    ByteIOContext *pb = s->pb;    unsigned int v;    int codec_data_size, size;    int64_t codec_pos;    codec_data_size = get_be32(pb);    codec_pos = url_ftell(pb);    v = get_be32(pb);    if (v == MKTAG(0xfd, 'a', 'r', '.')) {        /* ra type header */        if (rm_read_audio_stream_info(s, st, 0))            return -1;    } else {        int fps, fps2;        if (get_le32(pb) != MKTAG('V', 'I', 'D', 'O')) {        fail1:            av_log(st->codec, AV_LOG_ERROR, "Unsupported video codec\n");            goto skip;        }        st->codec->codec_tag = get_le32(pb);//        av_log(NULL, AV_LOG_DEBUG, "%X %X\n", st->codec->codec_tag, MKTAG('R', 'V', '2', '0'));        if (   st->codec->codec_tag != MKTAG('R', 'V', '1', '0')            && st->codec->codec_tag != MKTAG('R', 'V', '2', '0')            && st->codec->codec_tag != MKTAG('R', 'V', '3', '0')            && st->codec->codec_tag != MKTAG('R', 'V', '4', '0'))            goto fail1;        st->codec->width = get_be16(pb);        st->codec->height = get_be16(pb);        st->codec->time_base.num= 1;        fps= get_be16(pb);        st->codec->codec_type = CODEC_TYPE_VIDEO;        get_be32(pb);        fps2= get_be16(pb);        get_be16(pb);        st->codec->extradata_size= codec_data_size - (url_ftell(pb) - codec_pos);        if(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE <= (unsigned)st->codec->extradata_size){            //check is redundant as get_buffer() will catch this            av_log(s, AV_LOG_ERROR, "st->codec->extradata_size too large\n");            return -1;        }        st->codec->extradata= av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);        if (!st->codec->extradata)            return AVERROR(ENOMEM);        get_buffer(pb, st->codec->extradata, st->codec->extradata_size);//        av_log(NULL, AV_LOG_DEBUG, "fps= %d fps2= %d\n", fps, fps2);        st->codec->time_base.den = fps * st->codec->time_base.num;        switch(((uint8_t*)st->codec->extradata)[4]>>4){        case 1: st->codec->codec_id = CODEC_ID_RV10; break;        case 2: st->codec->codec_id = CODEC_ID_RV20; break;        case 3: st->codec->codec_id = CODEC_ID_RV30; break;        case 4: st->codec->codec_id = CODEC_ID_RV40; break;        default: goto fail1;        }    }skip:    /* skip codec info */    size = url_ftell(pb) - codec_pos;    url_fskip(pb, codec_data_size - size);    return 0;}static int rm_read_header_old(AVFormatContext *s, AVFormatParameters *ap){    RMContext *rm = s->priv_data;    AVStream *st;    rm->old_format = 1;    st = av_new_stream(s, 0);    if (!st)        return -1;    return rm_read_audio_stream_info(s, st, 1);}static int rm_read_header(AVFormatContext *s, AVFormatParameters *ap){    RMContext *rm = s->priv_data;    AVStream *st;    ByteIOContext *pb = s->pb;    unsigned int tag;    int tag_size;    unsigned int start_time, duration;    char buf[128];    int flags = 0;    tag = get_le32(pb);    if (tag == MKTAG('.', 'r', 'a', 0xfd)) {        /* very old .ra format */        return rm_read_header_old(s, ap);    } else if (tag != MKTAG('.', 'R', 'M', 'F')) {        return AVERROR(EIO);    }    get_be32(pb); /* header size */    get_be16(pb);    get_be32(pb);    get_be32(pb); /* number of headers */    for(;;) {        if (url_feof(pb))            return -1;        tag = get_le32(pb);        tag_size = get_be32(pb);        get_be16(pb);#if 0        printf("tag=%c%c%c%c (%08x) size=%d\n",               (tag) & 0xff,               (tag >> 8) & 0xff,               (tag >> 16) & 0xff,               (tag >> 24) & 0xff,               tag,               tag_size);#endif        if (tag_size < 10 && tag != MKTAG('D', 'A', 'T', 'A'))            return -1;        switch(tag) {        case MKTAG('P', 'R', 'O', 'P'):            /* file header */            get_be32(pb); /* max bit rate */            get_be32(pb); /* avg bit rate */            get_be32(pb); /* max packet size */            get_be32(pb); /* avg packet size */            get_be32(pb); /* nb packets */            get_be32(pb); /* duration */            get_be32(pb); /* preroll */            get_be32(pb); /* index offset */            get_be32(pb); /* data offset */            get_be16(pb); /* nb streams */            flags = get_be16(pb); /* flags */            break;        case MKTAG('C', 'O', 'N', 'T'):            get_str16(pb, s->title, sizeof(s->title));            get_str16(pb, s->author, sizeof(s->author));            get_str16(pb, s->copyright, sizeof(s->copyright));            get_str16(pb, s->comment, sizeof(s->comment));            break;        case MKTAG('M', 'D', 'P', 'R'):            st = av_new_stream(s, 0);            if (!st)                return AVERROR(ENOMEM);            st->id = get_be16(pb);            get_be32(pb); /* max bit rate */            st->codec->bit_rate = get_be32(pb); /* bit rate */            get_be32(pb); /* max packet size */            get_be32(pb); /* avg packet size */            start_time = get_be32(pb); /* start time */            get_be32(pb); /* preroll */            duration = get_be32(pb); /* duration */            st->start_time = start_time;            st->duration = duration;            get_str8(pb, buf, sizeof(buf)); /* desc */            get_str8(pb, buf, sizeof(buf)); /* mimetype */            st->codec->codec_type = CODEC_TYPE_DATA;            av_set_pts_info(st, 64, 1, 1000);            if (ff_rm_read_mdpr_codecdata(s, st) < 0)                return -1;            break;        case MKTAG('D', 'A', 'T', 'A'):            goto header_end;        default:            /* unknown tag: skip it */            url_fskip(pb, tag_size - 10);            break;        }    } header_end:    rm->nb_packets = get_be32(pb); /* number of packets */    if (!rm->nb_packets && (flags & 4))        rm->nb_packets = 3600 * 25;    get_be32(pb); /* next data header */    rm->curpic_num = -1;    return 0;}static int get_num(ByteIOContext *pb, int *len){    int n, n1;    n = get_be16(pb);    (*len)-=2;    n &= 0x7FFF;    if (n >= 0x4000) {        return n - 0x4000;    } else {        n1 = get_be16(pb);        (*len)-=2;        return (n << 16) | n1;    }}/* multiple of 20 bytes for ra144 (ugly) */#define RAW_PACKET_SIZE 1000static int sync(AVFormatContext *s, int64_t *timestamp, int *flags, int *stream_index, int64_t *pos){    RMContext *rm = s->priv_data;    ByteIOContext *pb = s->pb;    int len, num, res, i;    AVStream *st;    uint32_t state=0xFFFFFFFF;    while(!url_feof(pb)){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久精品麻豆 | 99国内精品久久| 91欧美激情一区二区三区成人| 欧美日韩国产免费| 久久久久久一级片| 免费成人在线网站| 91麻豆国产福利精品| 欧美精品一区二区三| 亚洲一区免费视频| www.爱久久.com| 久久九九99视频| 日韩不卡一二三区| 欧美三级乱人伦电影| 亚洲欧美在线观看| 国产成人免费视频网站| 日韩精品在线看片z| 国产精品911| 7777精品久久久大香线蕉| 亚洲主播在线播放| 91丨九色丨蝌蚪丨老版| 欧美激情在线观看视频免费| 精品一区二区免费| 欧美一级片在线看| 日本午夜一本久久久综合| 欧美特级限制片免费在线观看| 日韩伦理免费电影| a级精品国产片在线观看| 国产精品美女久久久久久久久 | 国产精品久久久久一区二区三区 | 免费久久精品视频| 911精品产国品一二三产区| 亚洲午夜成aⅴ人片| 欧美亚洲国产bt| 亚洲国产精品久久久久秋霞影院| 色综合久久九月婷婷色综合| ...av二区三区久久精品| 91在线免费播放| 一区二区三区国产精品| 色爱区综合激月婷婷| 一区二区三区免费看视频| 欧美性猛片aaaaaaa做受| 亚洲小说春色综合另类电影| 欧美怡红院视频| 婷婷开心久久网| 日韩午夜激情电影| 国产美女主播视频一区| 国产精品入口麻豆原神| 色婷婷综合久久久| 五月天亚洲精品| 精品美女在线观看| 国产91在线看| 一区二区三区不卡在线观看| 欧美理论片在线| 久久99精品久久久| 国产精品女上位| 欧美三电影在线| 久久精品av麻豆的观看方式| 久久九九99视频| 日本韩国精品在线| 理论电影国产精品| 国产免费观看久久| 欧美私模裸体表演在线观看| 国产在线一区二区综合免费视频| 欧美激情综合五月色丁香小说| 一本大道综合伊人精品热热| 日本一区中文字幕| 国产精品白丝在线| 欧美高清视频一二三区 | 最新不卡av在线| 欧美日韩不卡一区| 国产98色在线|日韩| 亚欧色一区w666天堂| 久久久久国产精品厨房| 欧美专区日韩专区| 国产露脸91国语对白| 一区2区3区在线看| 国产亚洲综合性久久久影院| 欧美羞羞免费网站| 国产精品一级片| 日本视频一区二区三区| 专区另类欧美日韩| 久久久亚洲综合| 欧美狂野另类xxxxoooo| 99re免费视频精品全部| 精品一二线国产| 亚洲成人一区二区| 亚洲婷婷综合色高清在线| 欧美岛国在线观看| 欧美婷婷六月丁香综合色| 成人精品一区二区三区四区| 麻豆国产精品一区二区三区| 亚洲综合色在线| 国产精品国产自产拍高清av| 日韩三级视频在线看| 欧美午夜电影网| av电影在线观看一区| 国产精品一区在线观看你懂的| 亚洲不卡av一区二区三区| 国产精品传媒视频| 国产精品你懂的| 久久精品这里都是精品| 日韩亚洲电影在线| 欧美精品v国产精品v日韩精品| 一本大道久久精品懂色aⅴ| 成人激情文学综合网| 国产精品资源在线看| 国产一区二区成人久久免费影院| 性感美女极品91精品| 亚洲午夜视频在线观看| 一区二区高清在线| 亚洲免费av在线| 亚洲欧美日韩电影| 亚洲人精品一区| 依依成人综合视频| 亚洲综合在线免费观看| 亚洲一卡二卡三卡四卡五卡| 亚洲主播在线播放| 亚洲第一狼人社区| 日韩一区欧美二区| 男女男精品视频| 久久国产剧场电影| 国产91精品久久久久久久网曝门| 国产精品中文有码| 91在线小视频| 欧亚洲嫩模精品一区三区| 欧美性videosxxxxx| 欧美一区二区在线观看| 精品成人佐山爱一区二区| 久久久久久毛片| 中文字幕一区二区三区视频| 一区二区三区视频在线看| 亚洲午夜成aⅴ人片| 精品在线播放午夜| 成人午夜av影视| 欧美在线观看禁18| 日韩一区二区三区视频| 久久嫩草精品久久久精品| 中文字幕av资源一区| 亚洲综合免费观看高清完整版| 亚洲综合一区二区| 久久99精品视频| 99国产精品视频免费观看| 欧美天堂亚洲电影院在线播放| 日韩欧美一区在线| 中文字幕第一区综合| 午夜国产精品影院在线观看| 精品在线免费视频| 91亚洲男人天堂| 日韩一区二区电影| 国产精品国产三级国产aⅴ原创| 亚洲自拍偷拍综合| 国产+成+人+亚洲欧洲自线| 91国偷自产一区二区使用方法| 日韩情涩欧美日韩视频| 国产精品色噜噜| 日韩精品免费专区| 不卡av免费在线观看| 日韩欧美的一区| 亚洲精品国产a| 黄网站免费久久| 在线亚洲高清视频| 国产亚洲一区二区三区在线观看| 亚洲精品国产精品乱码不99| 国产在线精品一区在线观看麻豆| 在线看不卡av| 国产欧美日韩麻豆91| 日韩电影免费在线| 91丨九色丨尤物| 久久久精品免费网站| 日韩精品每日更新| 91小视频在线免费看| 久久综合av免费| 日韩二区在线观看| 91成人国产精品| 日本一区二区三区dvd视频在线| 日韩精品一卡二卡三卡四卡无卡| 色综合色综合色综合| 国产欧美一区二区在线| 美女视频网站久久| 欧美伦理电影网| 一区二区三区.www| 99天天综合性| 国产免费久久精品| 国产精品一二三在| 久久综合狠狠综合久久激情| 日韩黄色片在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产精品久久久久久久久久久免费看| 蜜臀久久99精品久久久画质超高清 | 国产精品影音先锋| 欧美一区二区三区性视频| 亚洲成人动漫在线免费观看| 色一情一伦一子一伦一区| 亚洲视频免费在线| 99久久99久久精品免费看蜜桃| 中文字幕精品综合| 成人av网站在线观看免费| 国产欧美精品国产国产专区| 国模大尺度一区二区三区| 精品国产麻豆免费人成网站|