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

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

?? gifdec.c

?? arm平臺下的H264編碼和解碼源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * GIF decoder * Copyright (c) 2003 Fabrice Bellard. * * This library 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 of the License, or (at your option) any later version. * * This library 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 this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#include "avformat.h"int gif_write(ByteIOContext *pb, AVImageInfo *info);//#define DEBUG#define MAXBITS		12#define	SIZTABLE	(1<<MAXBITS)#define GCE_DISPOSAL_NONE       0#define GCE_DISPOSAL_INPLACE    1#define GCE_DISPOSAL_BACKGROUND 2#define GCE_DISPOSAL_RESTORE    3typedef struct GifState {    int screen_width;    int screen_height;    int bits_per_pixel;    int background_color_index;    int transparent_color_index;    int color_resolution;    uint8_t *image_buf;    int image_linesize;    uint32_t *image_palette;    int pix_fmt;    /* after the frame is displayed, the disposal method is used */    int gce_disposal;    /* delay during which the frame is shown */    int gce_delay;        /* LZW compatible decoder */    ByteIOContext *f;    int eob_reached;    uint8_t *pbuf, *ebuf;    int bbits;    unsigned int bbuf;    int cursize;		/* The current code size */    int curmask;    int codesize;    int clear_code;    int end_code;    int newcodes;		/* First available code */    int top_slot;		/* Highest code for current size */    int slot;			/* Last read code */    int fc, oc;    uint8_t *sp;    uint8_t stack[SIZTABLE];    uint8_t suffix[SIZTABLE];    uint16_t prefix[SIZTABLE];    /* aux buffers */    uint8_t global_palette[256 * 3];    uint8_t local_palette[256 * 3];    uint8_t buf[256];} GifState;static const uint8_t gif87a_sig[6] = "GIF87a";static const uint8_t gif89a_sig[6] = "GIF89a";static const uint16_t mask[17] ={    0x0000, 0x0001, 0x0003, 0x0007,    0x000F, 0x001F, 0x003F, 0x007F,    0x00FF, 0x01FF, 0x03FF, 0x07FF,    0x0FFF, 0x1FFF, 0x3FFF, 0x7FFF, 0xFFFF};/* Probe gif video format or gif image format. The current heuristic   supposes the gif87a is always a single image. For gif89a, we   consider it as a video only if a GCE extension is present in the   first kilobyte. */static int gif_video_probe(AVProbeData * pd){    const uint8_t *p, *p_end;    int bits_per_pixel, has_global_palette, ext_code, ext_len;    int gce_flags, gce_disposal;    if (pd->buf_size < 24 ||	memcmp(pd->buf, gif89a_sig, 6) != 0)        return 0;    p_end = pd->buf + pd->buf_size;    p = pd->buf + 6;    bits_per_pixel = (p[4] & 0x07) + 1;    has_global_palette = (p[4] & 0x80);    p += 7;    if (has_global_palette)        p += (1 << bits_per_pixel) * 3;    for(;;) {        if (p >= p_end)            return 0;        if (*p != '!')            break;        p++;        if (p >= p_end)            return 0;        ext_code = *p++;        if (p >= p_end)            return 0;        ext_len = *p++;        if (ext_code == 0xf9) {            if (p >= p_end)                return 0;            /* if GCE extension found with gce_disposal != 0: it is               likely to be an animation */            gce_flags = *p++;            gce_disposal = (gce_flags >> 2) & 0x7;            if (gce_disposal != 0)                return AVPROBE_SCORE_MAX;            else                return 0;        }        for(;;) {            if (ext_len == 0)                break;            p += ext_len;            if (p >= p_end)                return 0;            ext_len = *p++;        }    }    return 0;}static int gif_image_probe(AVProbeData * pd){    if (pd->buf_size >= 24 &&	(memcmp(pd->buf, gif87a_sig, 6) == 0 ||	 memcmp(pd->buf, gif89a_sig, 6) == 0))	return AVPROBE_SCORE_MAX - 1;    else	return 0;}static void GLZWDecodeInit(GifState * s, int csize){    /* read buffer */    s->eob_reached = 0;    s->pbuf = s->buf;    s->ebuf = s->buf;    s->bbuf = 0;    s->bbits = 0;    /* decoder */    s->codesize = csize;    s->cursize = s->codesize + 1;    s->curmask = mask[s->cursize];    s->top_slot = 1 << s->cursize;    s->clear_code = 1 << s->codesize;    s->end_code = s->clear_code + 1;    s->slot = s->newcodes = s->clear_code + 2;    s->oc = s->fc = 0;    s->sp = s->stack;}/* XXX: optimize */static inline int GetCode(GifState * s){    int c, sizbuf;    uint8_t *ptr;    while (s->bbits < s->cursize) {        ptr = s->pbuf;        if (ptr >= s->ebuf) {            if (!s->eob_reached) {                sizbuf = get_byte(s->f);                s->ebuf = s->buf + sizbuf;                s->pbuf = s->buf;                if (sizbuf > 0) {                    get_buffer(s->f, s->buf, sizbuf);                } else {                    s->eob_reached = 1;                }            }            ptr = s->pbuf;        }        s->bbuf |= ptr[0] << s->bbits;        ptr++;        s->pbuf = ptr;	s->bbits += 8;    }    c = s->bbuf & s->curmask;    s->bbuf >>= s->cursize;    s->bbits -= s->cursize;    return c;}/* NOTE: the algorithm here is inspired from the LZW GIF decoder   written by Steven A. Bennett in 1987. *//* return the number of byte decoded */static int GLZWDecode(GifState * s, uint8_t * buf, int len){    int l, c, code, oc, fc;    uint8_t *sp;    if (s->end_code < 0)        return 0;    l = len;    sp = s->sp;    oc = s->oc;    fc = s->fc;    while (sp > s->stack) {	*buf++ = *(--sp);	if ((--l) == 0)	    goto the_end;    }    for (;;) {	c = GetCode(s);	if (c == s->end_code) {	    s->end_code = -1;	    break;	} else if (c == s->clear_code) {	    s->cursize = s->codesize + 1;	    s->curmask = mask[s->cursize];	    s->slot = s->newcodes;	    s->top_slot = 1 << s->cursize;	    while ((c = GetCode(s)) == s->clear_code);	    if (c == s->end_code) {		s->end_code = -1;		break;	    }	    /* test error */	    if (c >= s->slot)		c = 0;	    fc = oc = c;	    *buf++ = c;	    if ((--l) == 0)		break;	} else {	    code = c;	    if (code >= s->slot) {		*sp++ = fc;		code = oc;	    }	    while (code >= s->newcodes) {		*sp++ = s->suffix[code];		code = s->prefix[code];	    }	    *sp++ = code;	    if (s->slot < s->top_slot) {		s->suffix[s->slot] = fc = code;		s->prefix[s->slot++] = oc;		oc = c;	    }	    if (s->slot >= s->top_slot) {		if (s->cursize < MAXBITS) {		    s->top_slot <<= 1;		    s->curmask = mask[++s->cursize];		}	    }	    while (sp > s->stack) {		*buf++ = *(--sp);		if ((--l) == 0)                    goto the_end;	    }	}    }  the_end:    s->sp = sp;    s->oc = oc;    s->fc = fc;    return len - l;}static int gif_read_image(GifState *s){    ByteIOContext *f = s->f;    int left, top, width, height, bits_per_pixel, code_size, flags;    int is_interleaved, has_local_palette, y, x, pass, y1, linesize, n, i;    uint8_t *ptr, *line, *d, *spal, *palette, *sptr, *ptr1;    left = get_le16(f);    top = get_le16(f);    width = get_le16(f);    height = get_le16(f);    flags = get_byte(f);    is_interleaved = flags & 0x40;    has_local_palette = flags & 0x80;    bits_per_pixel = (flags & 0x07) + 1;#ifdef DEBUG    printf("gif: image x=%d y=%d w=%d h=%d\n", left, top, width, height);#endif    if (has_local_palette) {	get_buffer(f, s->local_palette, 3 * (1 << bits_per_pixel));        palette = s->local_palette;    } else {        palette = s->global_palette;        bits_per_pixel = s->bits_per_pixel;    }        /* verify that all the image is inside the screen dimensions */    if (left + width > s->screen_width ||        top + height > s->screen_height)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色吊一区二区三区| 亚洲精品欧美二区三区中文字幕| 自拍偷拍亚洲欧美日韩| 国产激情91久久精品导航| 精品国产一区二区三区不卡 | 91免费视频观看| 亚洲嫩草精品久久| 欧美一级国产精品| 高清beeg欧美| 亚洲成a天堂v人片| 国产色产综合色产在线视频| 91蜜桃在线免费视频| 91猫先生在线| 欧美日韩专区在线| 国产成人av在线影院| 风间由美一区二区三区在线观看| 成人午夜视频福利| 久久99在线观看| 尤物av一区二区| 日本不卡视频在线观看| 国产精品欧美一区二区三区| 欧美性色aⅴ视频一区日韩精品| 国产一区二区三区观看| 亚洲高清视频在线| 国产精品国产三级国产aⅴ原创| 日韩午夜精品视频| 国产无一区二区| 亚洲一区在线观看网站| 一区二区三区资源| 亚洲女与黑人做爰| 婷婷丁香激情综合| 午夜电影一区二区三区| 精品一区二区三区免费视频| 免费在线视频一区| 成人av先锋影音| 高清在线成人网| 欧美日韩免费电影| 欧美亚男人的天堂| 久久综合av免费| 国产午夜精品一区二区| 亚洲亚洲人成综合网络| 成人午夜视频在线观看| 日韩女优av电影| 日韩欧美123| 亚洲欧美福利一区二区| 精品一区二区国语对白| 91九色02白丝porn| 国产女主播视频一区二区| 久久久九九九九| 国产精品情趣视频| 精品一二三四区| 7777精品久久久大香线蕉| 欧美日韩五月天| 18欧美亚洲精品| 亚洲国产中文字幕在线视频综合 | 久久久精品免费网站| 亚洲电影欧美电影有声小说| 成人激情开心网| 久久只精品国产| 激情综合网最新| 91精品国产一区二区人妖| 日韩欧美成人午夜| 日本少妇一区二区| 国产成人精品影院| 久久嫩草精品久久久精品| 免费成人小视频| 91精品福利在线一区二区三区 | 国产九色精品成人porny| 成人深夜在线观看| 久久精品亚洲麻豆av一区二区 | 久久九九全国免费| 国产在线视频一区二区| 色综合久久88色综合天天免费| 欧美日韩一级二级三级| 亚洲精品成a人| 在线视频一区二区三| 日韩精品中文字幕在线不卡尤物 | 日本欧美一区二区在线观看| 欧美久久一二区| 欧美韩国日本一区| 午夜视黄欧洲亚洲| 欧美精品色一区二区三区| 亚洲成人动漫在线观看| 91麻豆精品国产91久久久更新时间 | 紧缚奴在线一区二区三区| 日韩一区二区电影网| 捆绑调教美女网站视频一区| 欧美xxx久久| 伊人婷婷欧美激情| 欧美区一区二区三区| 蜜臀va亚洲va欧美va天堂| 成人免费看视频| 玉足女爽爽91| 91麻豆精品国产91久久久| 国内精品自线一区二区三区视频| 久久免费电影网| 日本道色综合久久| 日韩成人一区二区三区在线观看| 欧美成人综合网站| 高清不卡在线观看| 亚洲超碰97人人做人人爱| 久久久噜噜噜久久中文字幕色伊伊 | 国产综合色视频| 中文字幕不卡在线播放| 色综合久久久久久久久久久| 日产国产欧美视频一区精品 | 99精品欧美一区二区蜜桃免费| 日韩欧美一区在线| 成人高清视频在线观看| 亚洲最大的成人av| 久久久久久一级片| 欧洲视频一区二区| 国产一区二区导航在线播放| 亚洲欧美日韩人成在线播放| 日韩亚洲欧美成人一区| 91在线你懂得| 国产一区二区毛片| 亚洲综合一二区| 亚洲国产精品99久久久久久久久| 欧美日韩性生活| 91亚洲精华国产精华精华液| 蜜桃av一区二区| 一级日本不卡的影视| 国产视频不卡一区| 777欧美精品| 在线视频国内一区二区| 国产成人av电影在线观看| 亚洲成av人片| 亚洲黄色av一区| 国产精品久久久久久久第一福利| 欧美一区二区三级| 欧美最猛黑人xxxxx猛交| 国产福利一区二区三区在线视频| 图片区小说区区亚洲影院| 亚洲女人的天堂| 亚洲国产精品精华液ab| 久久日一线二线三线suv| 欧美一区二区福利在线| 欧美少妇性性性| 欧洲在线/亚洲| 色欧美88888久久久久久影院| 成人av集中营| 国产成人免费视频网站| 国产在线精品一区二区夜色| 日韩vs国产vs欧美| 日韩国产精品久久久久久亚洲| 一个色妞综合视频在线观看| 亚洲欧美日韩中文播放| 亚洲欧美日韩国产中文在线| 亚洲欧洲av在线| 亚洲欧美一区二区久久| 亚洲精品va在线观看| 一区二区三区电影在线播| 亚洲一卡二卡三卡四卡无卡久久| 国产精品久久久久久久久动漫| 国产精品网站一区| 亚洲另类一区二区| 亚洲精品国产精华液| 一区二区三区四区在线免费观看| 亚洲情趣在线观看| 亚洲五月六月丁香激情| 五月激情六月综合| 极品少妇一区二区| 国产伦精品一区二区三区免费迷 | 婷婷激情综合网| 秋霞国产午夜精品免费视频| 久久机这里只有精品| 国产成人精品免费一区二区| 成人av综合一区| 在线一区二区三区| 这里只有精品视频在线观看| 欧美大片一区二区| 国产精品污污网站在线观看| 依依成人综合视频| 精品在线播放免费| 97久久精品人人澡人人爽| 精品视频在线看| 久久天天做天天爱综合色| 亚洲视频免费看| 捆绑紧缚一区二区三区视频 | 日韩欧美在线观看一区二区三区| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美日韩国产中文在线| 日本不卡一二三| 99久免费精品视频在线观看| 久久99精品久久久久久| 丰满放荡岳乱妇91ww| 欧美日韩精品一区二区在线播放 | 成人三级伦理片| 欧美日韩国产精品自在自线| 日韩精品一区二| 一区二区三区在线免费| 国产尤物一区二区在线| 色狠狠一区二区三区香蕉| 精品久久人人做人人爽| 一区二区三区毛片| 成人免费av在线| 日韩欧美一区二区在线视频| 亚洲视频一区在线| 国产乱国产乱300精品|