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

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

?? ffm.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    offset_t pos_min, pos_max;    int64_t pts_start;    offset_t ptr = url_ftell(pb);    pos_min = 0;    pos_max = ffm->file_size - 2 * FFM_PACKET_SIZE;    pts_start = get_pts(s, pos_min);    pts = get_pts(s, pos_max);    if (pts - 100000 > pts_start)         goto end;    ffm->write_index = FFM_PACKET_SIZE;    pts_start = get_pts(s, pos_min);    pts = get_pts(s, pos_max);    if (pts - 100000 <= pts_start) {        while (1) {            offset_t newpos;            int64_t newpts;            newpos = ((pos_max + pos_min) / (2 * FFM_PACKET_SIZE)) * FFM_PACKET_SIZE;            if (newpos == pos_min)                break;            newpts = get_pts(s, newpos);            if (newpts - 100000 <= pts) {                pos_max = newpos;                pts = newpts;            } else {                pos_min = newpos;            }        }        ffm->write_index += pos_max;    }    //printf("Adjusted write index from %lld to %lld: pts=%0.6f\n", orig_write_index, ffm->write_index, pts / 1000000.);    //printf("pts range %0.6f - %0.6f\n", get_pts(s, 0) / 1000000. , get_pts(s, ffm->file_size - 2 * FFM_PACKET_SIZE) / 1000000. ); end:    url_fseek(pb, ptr, SEEK_SET);}static int ffm_read_header(AVFormatContext *s, AVFormatParameters *ap){    FFMContext *ffm = s->priv_data;    AVStream *st;    FFMStream *fst;    ByteIOContext *pb = &s->pb;    AVCodecContext *codec;    int i, nb_streams;    uint32_t tag;    /* header */    tag = get_le32(pb);    if (tag != MKTAG('F', 'F', 'M', '1'))        goto fail;    ffm->packet_size = get_be32(pb);    if (ffm->packet_size != FFM_PACKET_SIZE)        goto fail;    ffm->write_index = get_be64(pb);    /* get also filesize */    if (!url_is_streamed(pb)) {        ffm->file_size = url_filesize(url_fileno(pb));        adjust_write_index(s);    } else {        ffm->file_size = (uint64_t_C(1) << 63) - 1;    }    nb_streams = get_be32(pb);    get_be32(pb); /* total bitrate */    /* read each stream */    for(i=0;i<nb_streams;i++) {        char rc_eq_buf[128];        st = av_new_stream(s, 0);        if (!st)            goto fail;        fst = av_mallocz(sizeof(FFMStream));        if (!fst)            goto fail;        st->priv_data = fst;        codec = &st->codec;        /* generic info */        st->codec.codec_id = get_be32(pb);        st->codec.codec_type = get_byte(pb); /* codec_type */        codec->bit_rate = get_be32(pb);	st->quality = get_be32(pb);        codec->flags = get_be32(pb);        /* specific info */        switch(codec->codec_type) {        case CODEC_TYPE_VIDEO:            codec->frame_rate_base = get_be32(pb);            codec->frame_rate = get_be32(pb);            codec->width = get_be16(pb);            codec->height = get_be16(pb);            codec->gop_size = get_be16(pb);            codec->qmin = get_byte(pb);            codec->qmax = get_byte(pb);            codec->max_qdiff = get_byte(pb);            codec->qcompress = get_be16(pb) / 10000.0;            codec->qblur = get_be16(pb) / 10000.0;            codec->bit_rate_tolerance = get_be32(pb);            codec->rc_eq = av_strdup(get_strz(pb, rc_eq_buf, sizeof(rc_eq_buf)));            codec->rc_max_rate = get_be32(pb);            codec->rc_min_rate = get_be32(pb);            codec->rc_buffer_size = get_be32(pb);            codec->i_quant_factor = get_be64_double(pb);            codec->b_quant_factor = get_be64_double(pb);            codec->i_quant_offset = get_be64_double(pb);            codec->b_quant_offset = get_be64_double(pb);            codec->dct_algo = get_be32(pb);            break;        case CODEC_TYPE_AUDIO:            codec->sample_rate = get_be32(pb);            codec->channels = get_le16(pb);            codec->frame_size = get_le16(pb);            break;        default:            goto fail;        }    }    /* get until end of block reached */    while ((url_ftell(pb) % ffm->packet_size) != 0)        get_byte(pb);    /* init packet demux */    ffm->packet_ptr = ffm->packet;    ffm->packet_end = ffm->packet;    ffm->frame_offset = 0;    ffm->pts = 0;    ffm->read_state = READ_HEADER;    ffm->first_packet = 1;    return 0; fail:    for(i=0;i<s->nb_streams;i++) {        st = s->streams[i];        if (st) {            av_freep(&st->priv_data);            av_free(st);        }    }    return -1;}/* return < 0 if eof */static int ffm_read_packet(AVFormatContext *s, AVPacket *pkt){    int size;    FFMContext *ffm = s->priv_data;    int duration;    switch(ffm->read_state) {    case READ_HEADER:        if (!ffm_is_avail_data(s, FRAME_HEADER_SIZE)) {            return -EAGAIN;        }#if 0        printf("pos=%08Lx spos=%Lx, write_index=%Lx size=%Lx\n",               url_ftell(&s->pb), s->pb.pos, ffm->write_index, ffm->file_size);#endif        if (ffm_read_data(s, ffm->header, FRAME_HEADER_SIZE, 1) !=             FRAME_HEADER_SIZE)            return -EAGAIN;#if 0        {            int i;            for(i=0;i<FRAME_HEADER_SIZE;i++)                printf("%02x ", ffm->header[i]);            printf("\n");        }#endif        ffm->read_state = READ_DATA;        /* fall thru */    case READ_DATA:        size = (ffm->header[2] << 16) | (ffm->header[3] << 8) | ffm->header[4];        if (!ffm_is_avail_data(s, size)) {            return -EAGAIN;        }        duration = (ffm->header[5] << 16) | (ffm->header[6] << 8) | ffm->header[7];        av_new_packet(pkt, size);        pkt->stream_index = ffm->header[0];        if (ffm->header[1] & FLAG_KEY_FRAME)            pkt->flags |= PKT_FLAG_KEY;        ffm->read_state = READ_HEADER;        if (ffm_read_data(s, pkt->data, size, 0) != size) {            /* bad case: desynchronized packet. we cancel all the packet loading */            av_free_packet(pkt);            return -EAGAIN;        }        pkt->pts = ffm->pts;        pkt->duration = duration;        break;    }    return 0;}//#define DEBUG_SEEK/* pos is between 0 and file_size - FFM_PACKET_SIZE. It is translated   by the write position inside this function */static void ffm_seek1(AVFormatContext *s, offset_t pos1){    FFMContext *ffm = s->priv_data;    ByteIOContext *pb = &s->pb;    offset_t pos;    pos = pos1 + ffm->write_index;    if (pos >= ffm->file_size)        pos -= (ffm->file_size - FFM_PACKET_SIZE);#ifdef DEBUG_SEEK    printf("seek to %Lx -> %Lx\n", pos1, pos);#endif    url_fseek(pb, pos, SEEK_SET);}static int64_t get_pts(AVFormatContext *s, offset_t pos){    ByteIOContext *pb = &s->pb;    int64_t pts;    ffm_seek1(s, pos);    url_fskip(pb, 4);    pts = get_be64(pb);#ifdef DEBUG_SEEK    printf("pts=%0.6f\n", pts / 1000000.0);#endif    return pts;}/* seek to a given time in the file. The file read pointer is   positionned at or before pts. XXX: the following code is quite   approximative */static int ffm_seek(AVFormatContext *s, int64_t wanted_pts){    FFMContext *ffm = s->priv_data;    offset_t pos_min, pos_max, pos;    int64_t pts_min, pts_max, pts;    double pos1;#ifdef DEBUG_SEEK    printf("wanted_pts=%0.6f\n", wanted_pts / 1000000.0);#endif    /* find the position using linear interpolation (better than       dichotomy in typical cases) */    pos_min = 0;    pos_max = ffm->file_size - 2 * FFM_PACKET_SIZE;    while (pos_min <= pos_max) {        pts_min = get_pts(s, pos_min);        pts_max = get_pts(s, pos_max);        /* linear interpolation */        pos1 = (double)(pos_max - pos_min) * (double)(wanted_pts - pts_min) /            (double)(pts_max - pts_min);        pos = (((int64_t)pos1) / FFM_PACKET_SIZE) * FFM_PACKET_SIZE;        if (pos <= pos_min)            pos = pos_min;        else if (pos >= pos_max)            pos = pos_max;        pts = get_pts(s, pos);        /* check if we are lucky */        if (pts == wanted_pts) {            goto found;        } else if (pts > wanted_pts) {            pos_max = pos - FFM_PACKET_SIZE;        } else {            pos_min = pos + FFM_PACKET_SIZE;        }    }    pos = pos_min;    if (pos > 0)        pos -= FFM_PACKET_SIZE; found:    ffm_seek1(s, pos);    return 0;}offset_t ffm_read_write_index(int fd){    uint8_t buf[8];    offset_t pos;    int i;    lseek(fd, 8, SEEK_SET);    read(fd, buf, 8);    pos = 0;    for(i=0;i<8;i++)        pos |= (int64_t)buf[i] << (56 - i * 8);    return pos;}void ffm_write_write_index(int fd, offset_t pos){    uint8_t buf[8];    int i;    for(i=0;i<8;i++)        buf[i] = (pos >> (56 - i * 8)) & 0xff;    lseek(fd, 8, SEEK_SET);    write(fd, buf, 8);}void ffm_set_write_index(AVFormatContext *s, offset_t pos, offset_t file_size){    FFMContext *ffm = s->priv_data;    ffm->write_index = pos;    ffm->file_size = file_size;}static int ffm_read_close(AVFormatContext *s){    AVStream *st;    int i;    for(i=0;i<s->nb_streams;i++) {        st = s->streams[i];        av_freep(&st->priv_data);    }    return 0;}static int ffm_probe(AVProbeData *p){    if (p->buf_size >= 4 &&        p->buf[0] == 'F' && p->buf[1] == 'F' && p->buf[2] == 'M' &&         p->buf[3] == '1')        return AVPROBE_SCORE_MAX + 1;    return 0;}static AVInputFormat ffm_iformat = {    "ffm",    "ffm format",    sizeof(FFMContext),    ffm_probe,    ffm_read_header,    ffm_read_packet,    ffm_read_close,    ffm_seek,};#ifdef CONFIG_ENCODERSstatic AVOutputFormat ffm_oformat = {    "ffm",    "ffm format",    "",    "ffm",    sizeof(FFMContext),    /* not really used */    CODEC_ID_MP2,    CODEC_ID_MPEG1VIDEO,    ffm_write_header,    ffm_write_packet,    ffm_write_trailer,};#endif //CONFIG_ENCODERSint ffm_init(void){    av_register_input_format(&ffm_iformat);#ifdef CONFIG_ENCODERS    av_register_output_format(&ffm_oformat);#endif //CONFIG_ENCODERS    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区小说| 国产精品久久久一区麻豆最新章节| 成人黄色小视频| 欧美日韩大陆在线| 国产乱妇无码大片在线观看| 亚洲美女精品一区| 久久久噜噜噜久久中文字幕色伊伊| 91片黄在线观看| 亚洲综合清纯丝袜自拍| 欧美激情一区二区三区不卡| 国产精品女同一区二区三区| 国产精品全国免费观看高清| 蜜臂av日日欢夜夜爽一区| 99久久久国产精品| 欧美久久一区二区| 欧美国产一区二区在线观看| 亚洲图片一区二区| 成人理论电影网| 精品国产乱码久久久久久久| 国产午夜精品一区二区三区视频| 蜜乳av一区二区| 欧美一区二区人人喊爽| 亚洲乱码中文字幕综合| 日本国产一区二区| 日韩av一区二区三区| 欧美影片第一页| 五月天激情综合| 日韩免费高清电影| 国产一区二区三区| 2020日本不卡一区二区视频| 国产麻豆精品在线| 国产精品久久久久影院亚瑟| 日韩一区二区三区视频在线 | 最近中文字幕一区二区三区| 国产一区二区日韩精品| 国产精品久久午夜| 欧美三级欧美一级| 国产麻豆精品久久一二三| 日韩理论片在线| 国产麻豆9l精品三级站| 国产精品免费久久| 中文一区二区完整视频在线观看| 国产亚洲福利社区一区| 九色porny丨国产精品| 免费精品视频在线| 日韩电影免费在线| 亚洲国产精品自拍| 国产精品嫩草影院com| 国产69精品久久久久777| 久久精品国产成人一区二区三区| 91麻豆123| 日产欧产美韩系列久久99| 日韩一区二区免费视频| 国产乱码一区二区三区| 午夜精品一区二区三区免费视频 | 日本不卡不码高清免费观看| 久久网站热最新地址| 99在线热播精品免费| 午夜久久久影院| 亚洲欧洲精品一区二区三区| 欧美一卡二卡在线观看| 色婷婷久久久亚洲一区二区三区| 国模套图日韩精品一区二区| 日韩毛片一二三区| 国产清纯白嫩初高生在线观看91 | av在线一区二区| 三级欧美韩日大片在线看| 亚洲免费在线视频一区 二区| 91精品国产色综合久久不卡电影| 91在线免费看| 欧美电视剧免费全集观看| 欧美在线视频你懂得| 日韩精品一区二区三区在线 | 亚洲免费视频中文字幕| 青青国产91久久久久久| 99这里只有久久精品视频| av不卡在线播放| 日韩电影免费在线看| 久久久久国产成人精品亚洲午夜| 欧美电影免费观看高清完整版| 久久久www成人免费毛片麻豆| 日韩av网站在线观看| 久久久久青草大香线综合精品| 一区二区三区自拍| 日精品一区二区三区| 日韩精品午夜视频| 激情成人综合网| 欧美亚洲综合网| 精品国产一区二区三区av性色 | 成人av网站在线观看免费| 91蜜桃免费观看视频| 久久 天天综合| 国产盗摄一区二区三区| 床上的激情91.| 欧美综合久久久| 欧美精品1区2区3区| 精品美女被调教视频大全网站| 欧美视频在线一区| 精品国产1区二区| 亚洲国产精品精华液ab| 亚洲欧美另类在线| 精品一区二区三区视频在线观看| 国产成人免费视频一区| 欧美一区二区精品在线| 日韩视频在线永久播放| 亚洲乱码一区二区三区在线观看| 日韩av高清在线观看| jiyouzz国产精品久久| 欧美色涩在线第一页| 国产日本亚洲高清| 性久久久久久久久久久久| 成人短视频下载| 日韩精品一区二区三区中文不卡| 一区二区三区不卡在线观看| 国产综合色视频| 中文字幕一区二区三区在线不卡| 亚洲国产精品久久久久秋霞影院 | 欧美日韩一区二区欧美激情| 午夜一区二区三区在线观看| 欧美r级在线观看| 国产精品99久久久久| 樱桃国产成人精品视频| 欧美一区二区三区视频| 亚洲综合在线视频| 成人免费高清在线| 国产精品你懂的在线欣赏| 成人性生交大片免费看在线播放| 日日欢夜夜爽一区| 蜜乳av一区二区三区| 日韩精品一二三区| 性做久久久久久久久| 欧洲另类一二三四区| 亚洲另类春色校园小说| 色爱区综合激月婷婷| 一区二区三区视频在线观看| 日本精品一级二级| 亚洲资源中文字幕| 欧美日韩成人综合天天影院| 亚洲成人av免费| 99久久婷婷国产| 国产福利一区在线| 国产偷v国产偷v亚洲高清| 白白色亚洲国产精品| 亚洲国产欧美日韩另类综合 | 免费看日韩a级影片| 久久精品视频网| 欧美日韩一区二区欧美激情| 国产精品一区二区91| 亚洲国产wwwccc36天堂| 亚洲国产成人午夜在线一区| 欧美日韩一区二区三区在线看 | 欧美色手机在线观看| 日本欧美加勒比视频| 亚洲一区二区美女| 国产精品白丝在线| 久久久国产午夜精品| 日韩一级高清毛片| 欧美男生操女生| 在线观看av不卡| 91丨九色丨尤物| 99久久综合精品| 日本精品一区二区三区四区的功能| 韩国av一区二区三区在线观看| 国产精品一二三区在线| 日本aⅴ亚洲精品中文乱码| 99在线精品一区二区三区| 欧美精品一级二级三级| 久久精品免视看| 一区二区三区四区乱视频| 日本中文字幕一区二区视频 | 午夜精品久久久久久久久久 | 国产白丝网站精品污在线入口| 日韩欧美国产麻豆| 久久国产视频网| 国产精品久久久久久久久快鸭| 久久99久久精品| 国产精品成人午夜| 欧美一区二区视频在线观看2022| 国产精品一区免费视频| 亚洲综合色网站| 2020国产精品久久精品美国| 91在线观看污| 美美哒免费高清在线观看视频一区二区 | 亚洲欧洲美洲综合色网| 亚洲裸体在线观看| 亚洲色图.com| 偷窥少妇高潮呻吟av久久免费| 青娱乐精品在线视频| 成人午夜av影视| 色94色欧美sute亚洲线路一久| 欧美系列亚洲系列| 中文字幕免费不卡| 夜夜夜精品看看| 精品一区二区三区视频| 成人av免费在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美一级久久久久久久大片| 日韩精品在线网站| 一区二区三区加勒比av| 黄色资源网久久资源365|