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

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

?? jrdgif.c

?? EVM板JPEG實現,Texas Instruments TMS320C54x EVM JPEG
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*
 * jrdgif.c
 *
 * Copyright (C) 1991, 1992, Thomas G. Lane.
 * This file is part of the Independent JPEG Group's software.
 * For conditions of distribution and use, see the accompanying README file.
 *
 * This file contains routines to read input images in GIF format.
 *
 * These routines may need modification for non-Unix environments or
 * specialized applications.  As they stand, they assume input from
 * an ordinary stdio stream.  They further assume that reading begins
 * at the start of the file; input_init may need work if the
 * user interface has already read some data (e.g., to determine that
 * the file is indeed GIF format).
 *
 * These routines are invoked via the methods get_input_row
 * and input_init/term.
 */

/*
 * This code is loosely based on giftoppm from the PBMPLUS distribution
 * of Feb. 1991.  That file contains the following copyright notice:
 * +-------------------------------------------------------------------+
 * | Copyright 1990, David Koblas.                                     |
 * |   Permission to use, copy, modify, and distribute this software   |
 * |   and its documentation for any purpose and without fee is hereby |
 * |   granted, provided that the above copyright notice appear in all |
 * |   copies and that both that copyright notice and this permission  |
 * |   notice appear in supporting documentation.  This software is    |
 * |   provided "as is" without express or implied warranty.           |
 * +-------------------------------------------------------------------+
 *
 * We are also required to state that
 *    "The Graphics Interchange Format(c) is the Copyright property of
 *    CompuServe Incorporated. GIF(sm) is a Service Mark property of
 *    CompuServe Incorporated."
 */

/* This code was changed significantly to allow for the SWDS and host to
   communicate.  Christopher Chang, Summer 1993.
*/

#include "jinclude.h"
#ifdef GIF_SUPPORTED

#define MAXCOLORMAPSIZE 256     /* max # of colors in a GIF colormap */
#define NUMCOLORS       3       /* # of colors */
#define CM_RED          0       /* color component numbers */
#define CM_GREEN        1
#define CM_BLUE         2

static JSAMPARRAY colormap;     /* the colormap to use */
/* colormap[i][j] = value of i'th color component for pixel value j */

#define MAX_LZW_BITS    12      /* maximum LZW code size */
#define LZW_TABLE_SIZE  (1<<MAX_LZW_BITS) /* # of possible LZW symbols */

/* Macros for extracting header data --- note we assume chars may be signed */

#define LM_to_uint(a,b)         ((((b)&0xFF) << 8) | ((a)&0xFF))

#define BitSet(byte, bit)       ((byte) & (bit))
#define INTERLACE       0x40    /* mask for bit signifying interlaced image */
#define COLORMAPFLAG    0x80    /* mask for bit signifying colormap presence */

#define ReadOK(file,buffer,len) (JFREAD(buffer,len) == ((size_t) (len)))

/* Static vars for GetCode and LZWReadByte */

static char code_buf[256+4];    /* current input data block */
static int last_byte;           /* # of bytes in code_buf */
static int last_bit;            /* # of bits in code_buf */
static int cur_bit;             /* next bit index to read */
static boolean out_of_blocks;   /* TRUE if hit terminator data block */

static int input_code_size;     /* codesize given in GIF file */
static int clear_code,end_code; /* values for Clear and End codes */

static int code_size;           /* current actual code size */
static int limit_code;          /* 2^code_size */
static int max_code;            /* first unused code value */
static boolean first_time;      /* flags first call to LZWReadByte */

/* LZW decompression tables:
 *   symbol_head[K] = prefix symbol of any LZW symbol K (0..LZW_TABLE_SIZE-1)
 *   symbol_tail[K] = suffix byte   of any LZW symbol K (0..LZW_TABLE_SIZE-1)
 * Note that entries 0..end_code of the above tables are not used,
 * since those symbols represent raw bytes or special codes.
 *
 * The stack represents the not-yet-used expansion of the last LZW symbol.
 * In the worst case, a symbol could expand to as many bytes as there are
 * LZW symbols, so we allocate LZW_TABLE_SIZE bytes for the stack.
 * (This is conservative since that number includes the raw-byte symbols.)
 *
 * The tables are allocated from FAR heap space since they would use up
 * rather a lot of the near data space in a PC.
 */

static UINT16 FAR *symbol_head; /* => table of prefix symbols */
static UINT8  FAR *symbol_tail; /* => table of suffix bytes */
static UINT8  FAR *symbol_stack; /* stack for symbol expansions */
static UINT8  FAR *sp;          /* stack pointer */

/* Static state for interlaced image processing */

static boolean is_interlaced;   /* TRUE if have interlaced image */
static big_sarray_ptr interlaced_image; /* full image in interlaced order */
static long cur_row_number;     /* need to know actual row number */
static long pass2_offset;       /* # of pixel rows in pass 1 */
static long pass3_offset;       /* # of pixel rows in passes 1&2 */
static long pass4_offset;       /* # of pixel rows in passes 1,2,3 */


/* Forward declarations */
METHODDEF void load_interlaced_image PP((compress_info_ptr cinfo, JSAMPARRAY pixel_row));
METHODDEF void get_interlaced_row PP((compress_info_ptr cinfo, JSAMPARRAY pixel_row));



LOCAL int
ReadByte (compress_info_ptr cinfo)
/* Read next byte from GIF file */
{

/*register FILE * infile = cinfo->input_file; */

  int c;
  send_command(SND);  /* tells host to send data */
  receive_command();
  c = receive_data();    /* reads data from SWDS */

  if (c == -1)
  {
/*  ERREXIT(cinfo->emethods, "Premature EOF in GIF file"); */
    send_command(ERR1);               /* eof error message */
    exit();
  }

  return c;
}


LOCAL int
GetDataBlock (compress_info_ptr cinfo, char *buf)
/* Read a GIF data block, which has a leading count byte */
/* A zero-length block marks the end of a data block sequence */
{
  int count;

  count = ReadByte(cinfo);
  if (count > 0) {
    if (! ReadOK(cinfo->input_file, buf, count))
    {
/*    ERREXIT(cinfo->emethods, "Premature EOF in GIF file");       */
      send_command(ERR1);
      exit();
    }
  }
  return count;
}


LOCAL void
SkipDataBlocks (compress_info_ptr cinfo)
/* Skip a series of data blocks, until a block terminator is found */
{
  char buf[256];

  while (GetDataBlock(cinfo, buf) > 0)
	/* skip */;
}


LOCAL void
ReInitLZW (void)
/* (Re)initialize LZW state; shared code for startup and Clear processing */
{
  code_size = input_code_size+1;
  limit_code = clear_code << 1; /* 2^code_size */
  max_code = clear_code + 2;    /* first unused code value */
  sp = symbol_stack;            /* init stack to empty */
}


LOCAL void
InitLZWCode (void)
/* Initialize for a series of LZWReadByte (and hence GetCode) calls */
{
  /* GetCode initialization */
  last_byte = 2;                /* make safe to "recopy last two bytes" */
  last_bit = 0;                 /* nothing in the buffer */
  cur_bit = 0;                  /* force buffer load on first call */
  out_of_blocks = FALSE;

  /* LZWReadByte initialization */
  clear_code = 1 << input_code_size; /* compute special code values */
  end_code = clear_code + 1;    /* note that these do not change */
  first_time = TRUE;
  ReInitLZW();
}


LOCAL int
GetCode (compress_info_ptr cinfo)
/* Fetch the next code_size bits from the GIF data */
/* We assume code_size is less than 16 */
{
  register INT32 accum;
  int offs, ret, count, tmp=code_size;

  if ( (cur_bit+code_size) > last_bit) {
	/* Time to reload the buffer */
	if (out_of_blocks) {
/*   WARNMS(cinfo->emethods, "Ran out of GIF bits");    */
     send_command(ERR4);       /* send error msg        */
	  return end_code;          /* fake something useful */
	}
	/* preserve last two bytes of what we have -- assume code_size <= 16 */
	code_buf[0] = code_buf[last_byte-2];
	code_buf[1] = code_buf[last_byte-1];
	/* Load more bytes; set flag if we reach the terminator block */
	if ((count = GetDataBlock(cinfo, &code_buf[2])) == 0) {
	  out_of_blocks = TRUE;
     send_command(ERR4);       /* send error msg        */
/*   WARNMS(cinfo->emethods, "Ran out of GIF bits");    */
	  return end_code;          /* fake something useful */
	}
	/* Reset counters */
	cur_bit = (cur_bit - last_bit) + 16;
	last_byte = 2 + count;
	last_bit = last_byte * 8;
  }

  /* Form up next 24 bits in accum */
  offs = cur_bit >> 3;          /* byte containing cur_bit */
#ifdef CHAR_IS_UNSIGNED
  accum = code_buf[offs+2];
  accum <<= 8;
  accum |= code_buf[offs+1];
  accum <<= 8;
  accum |= code_buf[offs];
#else
  accum = code_buf[offs+2] & 0xFF;
  accum <<= 8;
  accum |= code_buf[offs+1] & 0xFF;
  accum <<= 8;
  accum |= code_buf[offs] & 0xFF;
#endif

  /* Right-align cur_bit in accum, then mask off desired number of bits */
  accum >>= (cur_bit & 7);
  /* ret = ((int) accum) & ((1 << tmp) - 1);                      */

  ret  = 1 << tmp;
  ret  = ret - 1;
  ret &= (int) accum;

  cur_bit += code_size;
  return ret;
}


LOCAL int
LZWReadByte (compress_info_ptr cinfo)
/* Read an LZW-compressed byte */
{
  static int oldcode;           /* previous LZW symbol */
  static int firstcode;         /* first byte of oldcode's expansion */
  register int code;            /* current working code */
  int incode;                   /* saves actual input code */

  /* First time, just eat the expected Clear code(s) and return next code, */
  /* which is expected to be a raw byte. */
  if (first_time) {
	first_time = FALSE;
	code = clear_code;          /* enables sharing code with Clear case */
  } else {

	/* If any codes are stacked from a previously read symbol, return them */
	if (sp > symbol_stack)
	  return (int) *(--sp);

	/* Time to read a new symbol */
	code = GetCode(cinfo);

  }

  if (code == clear_code) {
	/* Reinit static state, swallow any extra Clear codes, and */
	/* return next code, which is expected to be a raw byte. */
	ReInitLZW();
	do {
	  code = GetCode(cinfo);
	} while (code == clear_code);
	if (code > clear_code) {    /* make sure it is a raw byte */
     send_command(ERR5);       /* send error msg             */
/*   WARNMS(cinfo->emethods, "Corrupt data in GIF file");    */
     code = 0;                 /* use something valid        */
	}
   firstcode = oldcode = code; /* make firstcode, oldcode valid! */
	return code;
  }

  if (code == end_code) {
	/* Skip the rest of the image, unless GetCode already read terminator */
	if (! out_of_blocks) {
	  SkipDataBlocks(cinfo);
	  out_of_blocks = TRUE;
	}
/* Complain that there's not enough data                       */
   send_command(ERR6);      /* send error msg                  */
/* WARNMS(cinfo->emethods, "Premature end of GIF image");      */
/* Pad data with 0's                                           */
   return(0);               /* fake something usable           */
  }

  /* Got normal raw byte or LZW symbol */
  incode = code;                /* save for a moment */
  
  if (code >= max_code) {       /* special case for not-yet-defined symbol */
	/* code == max_code is OK; anything bigger is bad data */
	if (code > max_code) {
     send_command(ERR5);          /* send error msg                      */
/*   WARNMS(cinfo->emethods, "Corrupt data in GIF file");                */
     incode = 0;            /* prevent creation of loops in symbol table */
	}
	*sp++ = (UINT8) firstcode;  /* it will be defined as oldcode/firstcode */
	code = oldcode;
  }

  /* If it's a symbol, expand it into the stack */
  while (code >= clear_code) {
	*sp++ = symbol_tail[code];  /* tail of symbol: a simple byte value */
	code = symbol_head[code];   /* head of symbol: another LZW symbol */
  }
  /* At this point code just represents a raw byte */
  firstcode = code;             /* save for possible future use */

  /* If there's room in table, */
  if ((code = max_code) < LZW_TABLE_SIZE) {
	/* Define a new symbol = prev sym + head of this sym's expansion */
	symbol_head[code] = oldcode;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费高清视频在线观看| 欧美成人精品1314www| 欧美日韩一区 二区 三区 久久精品| 3d动漫精品啪啪1区2区免费| 国产欧美精品一区二区色综合| 午夜视频在线观看一区| 国产suv精品一区二区6| 欧美午夜电影网| 国产精品国产三级国产| 精品一区二区三区免费视频| 精品视频在线视频| 国产精品美女久久久久久久久| 久久国产夜色精品鲁鲁99| 欧美色男人天堂| 亚洲色图视频免费播放| 成人动漫一区二区| 久久久电影一区二区三区| 美女一区二区在线观看| 欧美日韩国产高清一区二区三区| 亚洲激情图片小说视频| 99久久伊人精品| 欧美极品aⅴ影院| 国产黄色精品网站| 国产欧美精品一区aⅴ影院| 韩国精品主播一区二区在线观看| 欧美一级日韩不卡播放免费| 婷婷久久综合九色综合伊人色| 欧美在线免费视屏| 亚洲精品日韩专区silk| 91麻豆福利精品推荐| 亚洲免费毛片网站| 91成人网在线| 婷婷综合久久一区二区三区| 欧美精品亚洲一区二区在线播放| 天使萌一区二区三区免费观看| 欧美裸体一区二区三区| 免费看精品久久片| 日韩一区二区视频| 国内不卡的二区三区中文字幕| 欧美大度的电影原声| 国产一区二区影院| 中国色在线观看另类| 92国产精品观看| 亚洲午夜视频在线观看| 91麻豆精品国产91久久久资源速度| 奇米一区二区三区| 国产亚洲欧洲一区高清在线观看| 成人白浆超碰人人人人| 夜夜揉揉日日人人青青一国产精品| 一本久久a久久精品亚洲| 午夜国产精品一区| 精品久久久久久久久久久久包黑料 | 国产精品久久一卡二卡| 成人av动漫在线| 亚洲电影中文字幕在线观看| 欧美一区二区三区性视频| 狠狠久久亚洲欧美| 1024成人网| 欧美一区在线视频| 成+人+亚洲+综合天堂| 亚洲午夜激情av| 欧美va日韩va| 91社区在线播放| 日本中文在线一区| 欧美高清在线视频| 在线观看91精品国产麻豆| 国产a久久麻豆| 亚洲高清一区二区三区| 久久久久久9999| 欧美日韩亚洲综合在线 | 亚洲图片欧美一区| 久久免费视频一区| 色综合久久久网| 美日韩一级片在线观看| 亚洲免费在线观看视频| 精品毛片乱码1区2区3区| 91视频免费播放| 国产精品一区二区在线观看网站 | 精品视频在线视频| 国产精品一二三区| 日韩精品国产精品| 亚洲欧美日韩国产手机在线 | 亚洲一区二区三区国产| 亚洲精品一区二区三区影院 | 日本一区二区三区dvd视频在线| 91久久精品一区二区三| 国产成人精品亚洲午夜麻豆| 蜜臀99久久精品久久久久久软件| 亚洲激情中文1区| 国产精品视频九色porn| 精品福利av导航| 91麻豆精品国产自产在线| 91电影在线观看| av不卡在线观看| 国产精品69毛片高清亚洲| 日av在线不卡| 亚洲成va人在线观看| 亚洲色图视频网| 国产精品乱码一区二三区小蝌蚪| 精品国内片67194| 7777精品伊人久久久大香线蕉完整版 | 国产一区二区三区久久悠悠色av| 婷婷成人综合网| 午夜久久久久久久久| 亚洲自拍偷拍av| 一区二区三区日韩精品| 亚洲人妖av一区二区| 亚洲国产成人一区二区三区| 国产偷国产偷亚洲高清人白洁| 日韩欧美aaaaaa| 精品久久久久香蕉网| 亚洲精品一区二区三区在线观看| 日韩亚洲欧美中文三级| 日韩一区二区精品| 精品蜜桃在线看| 久久精品一区二区三区av| 国产亚洲福利社区一区| 国产性色一区二区| 国产精品久久久久影院| 亚洲精选视频在线| 亚洲最新在线观看| 亚洲成a天堂v人片| 日本不卡的三区四区五区| 日韩电影在线看| 久久精品99国产精品日本| 激情综合色综合久久综合| 国产一区二区三区在线观看免费 | 国产精品国产三级国产aⅴ原创| 国产精品嫩草影院com| 亚洲欧洲在线观看av| 一级做a爱片久久| 五月婷婷久久综合| 蜜臀av在线播放一区二区三区| 激情久久五月天| 成人精品gif动图一区| 色狠狠色狠狠综合| 这里只有精品视频在线观看| 精品国产91九色蝌蚪| 亚洲国产精品国自产拍av| 亚洲三级小视频| 蜜臀av一区二区在线观看| 国产传媒日韩欧美成人| 91精彩视频在线观看| 日韩欧美中文字幕一区| 国产欧美日韩激情| 亚洲成人www| 国产精品一区二区三区乱码| 色婷婷久久综合| 欧美成人性福生活免费看| 1024成人网| 国内精品国产成人| 在线观看日韩国产| 久久婷婷国产综合国色天香| 亚洲精品你懂的| 精品亚洲成a人| 欧洲国内综合视频| 久久久另类综合| 日韩精品成人一区二区在线| 成人免费黄色大片| 欧美一级专区免费大片| 综合亚洲深深色噜噜狠狠网站| 久久精品国产免费看久久精品| 色婷婷av一区二区| 国产亚洲成aⅴ人片在线观看| 三级欧美韩日大片在线看| 成人v精品蜜桃久久一区| 欧美xxxx老人做受| 亚洲午夜视频在线观看| 成人av免费网站| 久久综合九色综合97婷婷女人 | 国模娜娜一区二区三区| 色噜噜久久综合| 久久久国产精品不卡| 秋霞成人午夜伦在线观看| 在线观看成人小视频| 中文字幕av在线一区二区三区| 秋霞国产午夜精品免费视频| 欧美色图激情小说| 亚洲女同一区二区| www.综合网.com| 国产日韩欧美a| 国模大尺度一区二区三区| 日韩欧美二区三区| 日韩影院免费视频| 欧美性猛交xxxx乱大交退制版| 亚洲欧美日韩国产手机在线| caoporm超碰国产精品| 国产精品视频麻豆| 国产成a人亚洲精| 国产网站一区二区| 国产91精品在线观看| 久久精品人人做人人综合 | 欧美性一区二区| 一区二区三区日韩精品| 色综合天天视频在线观看| 亚洲人成网站在线| 日本道免费精品一区二区三区| 亚洲欧美视频一区| 在线观看一区不卡| 亚洲成人免费av|