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

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

?? gif.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
    return 0;}/* this is maybe slow, but allows for extensions */static inline unsigned char gif_clut_index(uint8_t r, uint8_t g, uint8_t b){    return ((((r)/47)%6)*6*6+(((g)/47)%6)*6+(((b)/47)%6));}static int gif_image_write_image(ByteIOContext *pb,                                  int x1, int y1, int width, int height,                                 const uint8_t *buf, int linesize, int pix_fmt){    PutBitContext p;    uint8_t buffer[200]; /* 100 * 9 / 8 = 113 */    int i, left, w, v;    const uint8_t *ptr;    /* image block */    put_byte(pb, 0x2c);    put_le16(pb, x1);    put_le16(pb, y1);    put_le16(pb, width);    put_le16(pb, height);    put_byte(pb, 0x00); /* flags */    /* no local clut */    put_byte(pb, 0x08);    left= width * height;    init_put_bits(&p, buffer, 130);/* * the thing here is the bitstream is written as little packets, with a size byte before * but it's still the same bitstream between packets (no flush !) */    ptr = buf;    w = width;    while(left>0) {        gif_put_bits_rev(&p, 9, 0x0100); /* clear code */        for(i=0;i<GIF_CHUNKS;i++) {            if (pix_fmt == PIX_FMT_RGB24) {                v = gif_clut_index(ptr[0], ptr[1], ptr[2]);                ptr+=3;            } else {                v = *ptr++;            }            gif_put_bits_rev(&p, 9, v);            if (--w == 0) {                w = width;                buf += linesize;                ptr = buf;            }        }        if(left<=GIF_CHUNKS) {            gif_put_bits_rev(&p, 9, 0x101); /* end of stream */            gif_flush_put_bits_rev(&p);        }        if(pbBufPtr(&p) - p.buf > 0) {            put_byte(pb, pbBufPtr(&p) - p.buf); /* byte count of the packet */            put_buffer(pb, p.buf, pbBufPtr(&p) - p.buf); /* the actual buffer */            p.buf_ptr = p.buf; /* dequeue the bytes off the bitstream */        }        if(left<=GIF_CHUNKS) {            put_byte(pb, 0x00); /* end of image block */        }        left-=GIF_CHUNKS;    }    return 0;}typedef struct {    int64_t time, file_time;    uint8_t buffer[100]; /* data chunks */} GIFContext;static int gif_write_header(AVFormatContext *s){    GIFContext *gif = s->priv_data;    ByteIOContext *pb = &s->pb;    AVCodecContext *enc, *video_enc;    int i, width, height/*, rate*/;/* XXX: do we reject audio streams or just ignore them ?    if(s->nb_streams > 1)        return -1;*/    gif->time = 0;    gif->file_time = 0;    video_enc = NULL;    for(i=0;i<s->nb_streams;i++) {        enc = &s->streams[i]->codec;        if (enc->codec_type != CODEC_TYPE_AUDIO)            video_enc = enc;    }    if (!video_enc) {        av_free(gif);        return -1;    } else {        width = video_enc->width;        height = video_enc->height;//        rate = video_enc->frame_rate;    }    /* XXX: is it allowed ? seems to work so far... */    video_enc->pix_fmt = PIX_FMT_RGB24;    gif_image_write_header(pb, width, height, NULL);    put_flush_packet(&s->pb);    return 0;}static int gif_write_video(AVFormatContext *s,                            AVCodecContext *enc, const uint8_t *buf, int size){    ByteIOContext *pb = &s->pb;    GIFContext *gif = s->priv_data;    int jiffies;    int64_t delay;    /* graphic control extension block */    put_byte(pb, 0x21);    put_byte(pb, 0xf9);    put_byte(pb, 0x04); /* block size */    put_byte(pb, 0x04); /* flags */        /* 1 jiffy is 1/70 s */    /* the delay_time field indicates the number of jiffies - 1 */    delay = gif->file_time - gif->time;    /* XXX: should use delay, in order to be more accurate */    /* instead of using the same rounded value each time */    /* XXX: don't even remember if I really use it for now */    jiffies = (70*enc->frame_rate_base/enc->frame_rate) - 1;    put_le16(pb, jiffies);    put_byte(pb, 0x1f); /* transparent color index */    put_byte(pb, 0x00);    gif_image_write_image(pb, 0, 0, enc->width, enc->height,                          buf, enc->width * 3, PIX_FMT_RGB24);    put_flush_packet(&s->pb);    return 0;}static int gif_write_packet(AVFormatContext *s, int stream_index,                             const uint8_t *buf, int size, int64_t pts){    AVCodecContext *codec = &s->streams[stream_index]->codec;    if (codec->codec_type == CODEC_TYPE_AUDIO)        return 0; /* just ignore audio */    else        return gif_write_video(s, codec, buf, size);}static int gif_write_trailer(AVFormatContext *s){    ByteIOContext *pb = &s->pb;    put_byte(pb, 0x3b);    put_flush_packet(&s->pb);    return 0;}/* better than nothing gif image writer */int gif_write(ByteIOContext *pb, AVImageInfo *info){    gif_image_write_header(pb, info->width, info->height,                            (uint32_t *)info->pict.data[1]);    gif_image_write_image(pb, 0, 0, info->width, info->height,                           info->pict.data[0], info->pict.linesize[0],                           PIX_FMT_PAL8);    put_byte(pb, 0x3b);    put_flush_packet(pb);    return 0;}static AVOutputFormat gif_oformat = {    "gif",    "GIF Animation",    "image/gif",    "gif",    sizeof(GIFContext),    CODEC_ID_NONE,    CODEC_ID_RAWVIDEO,    gif_write_header,    gif_write_packet,    gif_write_trailer,};extern AVInputFormat gif_iformat;int gif_init(void){    av_register_output_format(&gif_oformat);    av_register_input_format(&gif_iformat);    return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜免费视频| 在线观看网站黄不卡| 一本色道亚洲精品aⅴ| 制服.丝袜.亚洲.中文.综合| 国产午夜精品理论片a级大结局 | 一色屋精品亚洲香蕉网站| 亚洲免费三区一区二区| 日韩高清欧美激情| 色婷婷久久久综合中文字幕 | 国产农村妇女毛片精品久久麻豆 | 麻豆久久一区二区| 在线亚洲一区观看| 国产精品毛片高清在线完整版| 亚洲va欧美va国产va天堂影院| 成人午夜电影网站| 精品少妇一区二区三区视频免付费| 亚洲男人的天堂av| av电影在线观看不卡| 国产亚洲一区二区三区| 美脚の诱脚舐め脚责91 | 日韩理论电影院| 国产一区二区三区| 欧美成人一区二区三区片免费| 亚洲啪啪综合av一区二区三区| 国产福利一区二区三区视频| 精品久久久久久最新网址| 视频在线观看91| 欧美伦理影视网| 亚洲二区在线视频| 欧美日韩色综合| 亚洲成a人片在线不卡一二三区| 97精品国产露脸对白| 亚洲天堂免费看| 91蜜桃免费观看视频| 国产精品国产精品国产专区不蜜 | 九九精品一区二区| 日韩一区和二区| 精品一区二区三区影院在线午夜 | 欧美午夜免费电影| 亚洲一区二区中文在线| 欧美在线播放高清精品| 午夜成人在线视频| 日韩午夜激情av| 黄色日韩网站视频| 国产婷婷色一区二区三区| 成人亚洲精品久久久久软件| 国产精品女上位| 色婷婷激情综合| 天天综合天天综合色| 日韩精品一区二区三区swag| 国产麻豆精品视频| 日本一区二区三区国色天香 | 亚洲一区二区三区四区不卡| 91福利视频在线| 免费精品视频最新在线| 久久精品日韩一区二区三区| 国产成a人亚洲精品| 一区二区欧美国产| 日韩美女在线视频| 成人黄色免费短视频| 亚洲黄网站在线观看| 欧美成人a∨高清免费观看| 成人深夜福利app| 亚洲大尺度视频在线观看| 日韩亚洲国产中文字幕欧美| 国产mv日韩mv欧美| 亚洲综合区在线| 337p日本欧洲亚洲大胆色噜噜| 成人中文字幕合集| 午夜精品久久久久久久| 国产肉丝袜一区二区| 欧美综合色免费| 国产一区二区视频在线| 床上的激情91.| 亚洲国产成人av网| 久久久久久麻豆| 欧美日韩亚洲另类| 成人免费高清在线| 久久精品免费看| 亚洲免费av在线| 欧美激情综合在线| 91精品欧美久久久久久动漫| 岛国精品一区二区| 久久99国产精品成人| 亚洲成人av资源| 欧美国产成人精品| 2021中文字幕一区亚洲| 欧洲精品中文字幕| 成人一二三区视频| 国产在线精品一区二区| 天堂影院一区二区| 亚洲精品一卡二卡| 亚洲欧洲精品成人久久奇米网| 日韩一区二区三区视频在线| 在线观看国产日韩| 91年精品国产| 成人午夜精品在线| 国产99久久久精品| 精品一二三四在线| 麻豆精品视频在线观看视频| 亚洲自拍偷拍欧美| 亚洲三级电影全部在线观看高清| 欧美精品一区在线观看| 欧美一卡二卡三卡| 欧美图片一区二区三区| 91麻豆国产福利在线观看| 国产高清不卡二三区| 韩国成人精品a∨在线观看| 蜜乳av一区二区| 石原莉奈一区二区三区在线观看 | 亚洲天堂精品视频| 国产精品福利在线播放| 国产精品女人毛片| 国产精品久久毛片av大全日韩| 久久久久99精品一区| 国产亚洲精品免费| 久久综合色8888| 国产三级精品三级在线专区| 国产亚洲va综合人人澡精品| 久久久久久久久一| 国产亚洲一区二区三区在线观看 | 婷婷久久综合九色国产成人| 亚洲欧美日韩国产另类专区| 亚洲欧洲无码一区二区三区| 中文字幕精品一区二区精品绿巨人| 国产午夜精品福利| 中文字幕av一区二区三区高| 国产精品视频一区二区三区不卡 | 精品少妇一区二区三区视频免付费| 91精品国产一区二区三区 | 欧美午夜在线观看| 欧美日韩激情在线| 日韩欧美激情四射| 国产视频视频一区| 亚洲精品日日夜夜| 日韩中文字幕亚洲一区二区va在线 | 99re免费视频精品全部| 在线观看视频91| 日韩精品一区二区三区中文精品| 久久精品人人做| 亚洲线精品一区二区三区| 麻豆精品一二三| 色综合久久久久久久久久久| 欧美精品在欧美一区二区少妇| 日韩欧美中文一区二区| 中文无字幕一区二区三区| 一区二区在线看| 久久成人麻豆午夜电影| 9色porny自拍视频一区二区| 欧美日韩国产经典色站一区二区三区| 欧美成人aa大片| 一区二区三区日本| 国产制服丝袜一区| 色吊一区二区三区| 久久久久久久综合色一本| 亚洲一二三区在线观看| 国产成人午夜精品影院观看视频| 91麻豆福利精品推荐| 欧美成人女星排行榜| 亚洲少妇30p| 久久99精品久久久久婷婷| 日本二三区不卡| 久久久久久久电影| 日日噜噜夜夜狠狠视频欧美人 | 国产精品18久久久久| 91成人在线精品| 欧美高清在线视频| 麻豆91在线看| 欧美日韩aaa| 亚洲图片另类小说| 国产精品123| 精品免费日韩av| 日韩中文字幕1| 91久久国产综合久久| 国产精品女同互慰在线看| 久久成人免费日本黄色| 欧美年轻男男videosbes| 亚洲欧美日韩国产中文在线| 国产成a人无v码亚洲福利| 3atv一区二区三区| 亚洲男人都懂的| 99久免费精品视频在线观看| 久久午夜色播影院免费高清| 奇米色一区二区三区四区| 欧美日韩综合在线| 亚洲综合色在线| 欧美天堂一区二区三区| ...av二区三区久久精品| 国产麻豆日韩欧美久久| 久久久无码精品亚洲日韩按摩| 麻豆91在线播放免费| 日韩一区二区三区在线观看| 丝袜亚洲精品中文字幕一区| 欧美视频第二页| 亚洲成人综合视频| 欧美人与性动xxxx| 日韩精品欧美精品| 日韩视频永久免费| 韩国精品在线观看| 久久久国产一区二区三区四区小说|