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

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

?? jdmarker.c

?? jpeg解碼標準代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    WARNMS2(cinfo, JWRN_EXTRANEOUS_DATA, cinfo->marker->discarded_bytes, c);    cinfo->marker->discarded_bytes = 0;  }  cinfo->unread_marker = c;  INPUT_SYNC(cinfo);  return TRUE;}LOCAL(boolean)first_marker (j_decompress_ptr cinfo)/* Like next_marker, but used to obtain the initial SOI marker. *//* For this marker, we do not allow preceding garbage or fill; otherwise, * we might well scan an entire input file before realizing it ain't JPEG. * If an application wants to process non-JFIF files, it must seek to the * SOI before calling the JPEG library. */{  int c, c2;  INPUT_VARS(cinfo);  INPUT_BYTE(cinfo, c, return FALSE);  INPUT_BYTE(cinfo, c2, return FALSE);  if (c != 0xFF || c2 != (int) M_SOI)    ERREXIT2(cinfo, JERR_NO_SOI, c, c2);  cinfo->unread_marker = c2;  INPUT_SYNC(cinfo);  return TRUE;}/* * Read markers until SOS or EOI. * * Returns same codes as are defined for jpeg_consume_input: * JPEG_SUSPENDED, JPEG_REACHED_SOS, or JPEG_REACHED_EOI. */METHODDEF(int)read_markers (j_decompress_ptr cinfo){  /* Outer loop repeats once for each marker. */  for (;;) {    /* Collect the marker proper, unless we already did. */    /* NB: first_marker() enforces the requirement that SOI appear first. */    if (cinfo->unread_marker == 0) {      if (! cinfo->marker->saw_SOI) {	if (! first_marker(cinfo))	  return JPEG_SUSPENDED;      } else {	if (! next_marker(cinfo))	  return JPEG_SUSPENDED;      }    }    /* At this point cinfo->unread_marker contains the marker code and the     * input point is just past the marker proper, but before any parameters.     * A suspension will cause us to return with this state still true.     */    switch (cinfo->unread_marker) {    case M_SOI:      if (! get_soi(cinfo))	return JPEG_SUSPENDED;      break;    case M_SOF0:		/* Baseline */    case M_SOF1:		/* Extended sequential, Huffman */      if (! get_sof(cinfo, FALSE, FALSE))	return JPEG_SUSPENDED;      break;    case M_SOF2:		/* Progressive, Huffman */      if (! get_sof(cinfo, TRUE, FALSE))	return JPEG_SUSPENDED;      break;    case M_SOF9:		/* Extended sequential, arithmetic */      if (! get_sof(cinfo, FALSE, TRUE))	return JPEG_SUSPENDED;      break;    case M_SOF10:		/* Progressive, arithmetic */      if (! get_sof(cinfo, TRUE, TRUE))	return JPEG_SUSPENDED;      break;    /* Currently unsupported SOFn types */    case M_SOF3:		/* Lossless, Huffman */    case M_SOF5:		/* Differential sequential, Huffman */    case M_SOF6:		/* Differential progressive, Huffman */    case M_SOF7:		/* Differential lossless, Huffman */    case M_JPG:			/* Reserved for JPEG extensions */    case M_SOF11:		/* Lossless, arithmetic */    case M_SOF13:		/* Differential sequential, arithmetic */    case M_SOF14:		/* Differential progressive, arithmetic */    case M_SOF15:		/* Differential lossless, arithmetic */      ERREXIT1(cinfo, JERR_SOF_UNSUPPORTED, cinfo->unread_marker);      break;    case M_SOS:      if (! get_sos(cinfo))	return JPEG_SUSPENDED;      cinfo->unread_marker = 0;	/* processed the marker */      return JPEG_REACHED_SOS;        case M_EOI:      TRACEMS(cinfo, 1, JTRC_EOI);      cinfo->unread_marker = 0;	/* processed the marker */      return JPEG_REACHED_EOI;          case M_DAC:      if (! get_dac(cinfo))	return JPEG_SUSPENDED;      break;          case M_DHT:      if (! get_dht(cinfo))	return JPEG_SUSPENDED;      break;          case M_DQT:      if (! get_dqt(cinfo))	return JPEG_SUSPENDED;      break;          case M_DRI:      if (! get_dri(cinfo))	return JPEG_SUSPENDED;      break;          case M_APP0:    case M_APP1:    case M_APP2:    case M_APP3:    case M_APP4:    case M_APP5:    case M_APP6:    case M_APP7:    case M_APP8:    case M_APP9:    case M_APP10:    case M_APP11:    case M_APP12:    case M_APP13:    case M_APP14:    case M_APP15:      if (! (*((my_marker_ptr) cinfo->marker)->process_APPn[		cinfo->unread_marker - (int) M_APP0]) (cinfo))	return JPEG_SUSPENDED;      break;          case M_COM:      if (! (*((my_marker_ptr) cinfo->marker)->process_COM) (cinfo))	return JPEG_SUSPENDED;      break;    case M_RST0:		/* these are all parameterless */    case M_RST1:    case M_RST2:    case M_RST3:    case M_RST4:    case M_RST5:    case M_RST6:    case M_RST7:    case M_TEM:      TRACEMS1(cinfo, 1, JTRC_PARMLESS_MARKER, cinfo->unread_marker);      break;    case M_DNL:			/* Ignore DNL ... perhaps the wrong thing */      if (! skip_variable(cinfo))	return JPEG_SUSPENDED;      break;    default:			/* must be DHP, EXP, JPGn, or RESn */      /* For now, we treat the reserved markers as fatal errors since they are       * likely to be used to signal incompatible JPEG Part 3 extensions.       * Once the JPEG 3 version-number marker is well defined, this code       * ought to change!       */      ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, cinfo->unread_marker);      break;    }    /* Successfully processed marker, so reset state variable */    cinfo->unread_marker = 0;  } /* end loop */}/* * Read a restart marker, which is expected to appear next in the datastream; * if the marker is not there, take appropriate recovery action. * Returns FALSE if suspension is required. * * This is called by the entropy decoder after it has read an appropriate * number of MCUs.  cinfo->unread_marker may be nonzero if the entropy decoder * has already read a marker from the data source.  Under normal conditions * cinfo->unread_marker will be reset to 0 before returning; if not reset, * it holds a marker which the decoder will be unable to read past. */METHODDEF(boolean)read_restart_marker (j_decompress_ptr cinfo){  /* Obtain a marker unless we already did. */  /* Note that next_marker will complain if it skips any data. */  if (cinfo->unread_marker == 0) {    if (! next_marker(cinfo))      return FALSE;  }  if (cinfo->unread_marker ==      ((int) M_RST0 + cinfo->marker->next_restart_num)) {    /* Normal case --- swallow the marker and let entropy decoder continue */    TRACEMS1(cinfo, 3, JTRC_RST, cinfo->marker->next_restart_num);    cinfo->unread_marker = 0;  } else {    /* Uh-oh, the restart markers have been messed up. */    /* Let the data source manager determine how to resync. */    if (! (*cinfo->src->resync_to_restart) (cinfo,					    cinfo->marker->next_restart_num))      return FALSE;  }  /* Update next-restart state */  cinfo->marker->next_restart_num = (cinfo->marker->next_restart_num + 1) & 7;  return TRUE;}/* * This is the default resync_to_restart method for data source managers * to use if they don't have any better approach.  Some data source managers * may be able to back up, or may have additional knowledge about the data * which permits a more intelligent recovery strategy; such managers would * presumably supply their own resync method. * * read_restart_marker calls resync_to_restart if it finds a marker other than * the restart marker it was expecting.  (This code is *not* used unless * a nonzero restart interval has been declared.)  cinfo->unread_marker is * the marker code actually found (might be anything, except 0 or FF). * The desired restart marker number (0..7) is passed as a parameter. * This routine is supposed to apply whatever error recovery strategy seems * appropriate in order to position the input stream to the next data segment. * Note that cinfo->unread_marker is treated as a marker appearing before * the current data-source input point; usually it should be reset to zero * before returning. * Returns FALSE if suspension is required. * * This implementation is substantially constrained by wanting to treat the * input as a data stream; this means we can't back up.  Therefore, we have * only the following actions to work with: *   1. Simply discard the marker and let the entropy decoder resume at next *      byte of file. *   2. Read forward until we find another marker, discarding intervening *      data.  (In theory we could look ahead within the current bufferload, *      without having to discard data if we don't find the desired marker. *      This idea is not implemented here, in part because it makes behavior *      dependent on buffer size and chance buffer-boundary positions.) *   3. Leave the marker unread (by failing to zero cinfo->unread_marker). *      This will cause the entropy decoder to process an empty data segment, *      inserting dummy zeroes, and then we will reprocess the marker. * * #2 is appropriate if we think the desired marker lies ahead, while #3 is * appropriate if the found marker is a future restart marker (indicating * that we have missed the desired restart marker, probably because it got * corrupted). * We apply #2 or #3 if the found marker is a restart marker no more than * two counts behind or ahead of the expected one.  We also apply #2 if the * found marker is not a legal JPEG marker code (it's certainly bogus data). * If the found marker is a restart marker more than 2 counts away, we do #1 * (too much risk that the marker is erroneous; with luck we will be able to * resync at some future point). * For any valid non-restart JPEG marker, we apply #3.  This keeps us from * overrunning the end of a scan.  An implementation limited to single-scan * files might find it better to apply #2 for markers other than EOI, since * any other marker would have to be bogus data in that case. */GLOBAL(boolean)jpeg_resync_to_restart (j_decompress_ptr cinfo, int desired){  int marker = cinfo->unread_marker;  int action = 1;    /* Always put up a warning. */  WARNMS2(cinfo, JWRN_MUST_RESYNC, marker, desired);    /* Outer loop handles repeated decision after scanning forward. */  for (;;) {    if (marker < (int) M_SOF0)      action = 2;		/* invalid marker */    else if (marker < (int) M_RST0 || marker > (int) M_RST7)      action = 3;		/* valid non-restart marker */    else {      if (marker == ((int) M_RST0 + ((desired+1) & 7)) ||	  marker == ((int) M_RST0 + ((desired+2) & 7)))	action = 3;		/* one of the next two expected restarts */      else if (marker == ((int) M_RST0 + ((desired-1) & 7)) ||	       marker == ((int) M_RST0 + ((desired-2) & 7)))	action = 2;		/* a prior restart, so advance */      else	action = 1;		/* desired restart or too far away */    }    TRACEMS2(cinfo, 4, JTRC_RECOVERY_ACTION, marker, action);    switch (action) {    case 1:      /* Discard marker and let entropy decoder resume processing. */      cinfo->unread_marker = 0;      return TRUE;    case 2:      /* Scan to the next marker, and repeat the decision loop. */      if (! next_marker(cinfo))	return FALSE;      marker = cinfo->unread_marker;      break;    case 3:      /* Return without advancing past this marker. */      /* Entropy decoder will be forced to process an empty segment. */      return TRUE;    }  } /* end loop */}/* * Reset marker processing state to begin a fresh datastream. */METHODDEF(void)reset_marker_reader (j_decompress_ptr cinfo){  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;  cinfo->comp_info = NULL;		/* until allocated by get_sof */  cinfo->input_scan_number = 0;		/* no SOS seen yet */  cinfo->unread_marker = 0;		/* no pending marker */  marker->pub.saw_SOI = FALSE;		/* set internal state too */  marker->pub.saw_SOF = FALSE;  marker->pub.discarded_bytes = 0;  marker->cur_marker = NULL;}/* * Initialize the marker reader module. * This is called only once, when the decompression object is created. */GLOBAL(void)jinit_marker_reader (j_decompress_ptr cinfo){  my_marker_ptr marker;  int i;  /* Create subobject in permanent pool */  marker = (my_marker_ptr)    (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT,				SIZEOF(my_marker_reader));  cinfo->marker = (struct jpeg_marker_reader *) marker;  /* Initialize public method pointers */  marker->pub.reset_marker_reader = reset_marker_reader;  marker->pub.read_markers = read_markers;  marker->pub.read_restart_marker = read_restart_marker;  /* Initialize COM/APPn processing.   * By default, we examine and then discard APP0 and APP14,   * but simply discard COM and all other APPn.   */  marker->process_COM = skip_variable;  marker->length_limit_COM = 0;  for (i = 0; i < 16; i++) {    marker->process_APPn[i] = skip_variable;    marker->length_limit_APPn[i] = 0;  }  marker->process_APPn[0] = get_interesting_appn;  marker->process_APPn[14] = get_interesting_appn;  /* Reset marker processing state */  reset_marker_reader(cinfo);}/* * Control saving of COM and APPn markers into marker_list. */#ifdef SAVE_MARKERS_SUPPORTEDGLOBAL(void)jpeg_save_markers (j_decompress_ptr cinfo, int marker_code,		   unsigned int length_limit){  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;  long maxlength;  jpeg_marker_parser_method processor;  /* Length limit mustn't be larger than what we can allocate   * (should only be a concern in a 16-bit environment).   */  maxlength = cinfo->mem->max_alloc_chunk - SIZEOF(struct jpeg_marker_struct);  if (((long) length_limit) > maxlength)    length_limit = (unsigned int) maxlength;  /* Choose processor routine to use.   * APP0/APP14 have special requirements.   */  if (length_limit) {    processor = save_marker;    /* If saving APP0/APP14, save at least enough for our internal use. */    if (marker_code == (int) M_APP0 && length_limit < APP0_DATA_LEN)      length_limit = APP0_DATA_LEN;    else if (marker_code == (int) M_APP14 && length_limit < APP14_DATA_LEN)      length_limit = APP14_DATA_LEN;  } else {    processor = skip_variable;    /* If discarding APP0/APP14, use our regular on-the-fly processor. */    if (marker_code == (int) M_APP0 || marker_code == (int) M_APP14)      processor = get_interesting_appn;  }  if (marker_code == (int) M_COM) {    marker->process_COM = processor;    marker->length_limit_COM = length_limit;  } else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15) {    marker->process_APPn[marker_code - (int) M_APP0] = processor;    marker->length_limit_APPn[marker_code - (int) M_APP0] = length_limit;  } else    ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code);}#endif /* SAVE_MARKERS_SUPPORTED *//* * Install a special processing method for COM or APPn markers. */GLOBAL(void)jpeg_set_marker_processor (j_decompress_ptr cinfo, int marker_code,			   jpeg_marker_parser_method routine){  my_marker_ptr marker = (my_marker_ptr) cinfo->marker;  if (marker_code == (int) M_COM)    marker->process_COM = routine;  else if (marker_code >= (int) M_APP0 && marker_code <= (int) M_APP15)    marker->process_APPn[marker_code - (int) M_APP0] = routine;  else    ERREXIT1(cinfo, JERR_UNKNOWN_MARKER, marker_code);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费高清在线视频一区·| 日本精品裸体写真集在线观看| 日韩成人精品视频| 无吗不卡中文字幕| 五月天精品一区二区三区| 亚洲高清中文字幕| 亚洲福利视频三区| 午夜精品久久久久久久99水蜜桃| 亚洲第一av色| 蜜桃精品视频在线观看| 美腿丝袜亚洲一区| 久久99国产精品免费网站| 国产精品一区二区黑丝 | 91影院在线观看| 91一区二区三区在线观看| 91亚洲国产成人精品一区二三| 91蝌蚪porny成人天涯| 色狠狠综合天天综合综合| 色爱区综合激月婷婷| 欧美日韩免费视频| 欧美一级在线观看| 久久久久久影视| 亚洲国产成人私人影院tom| 中文字幕视频一区| 香蕉成人伊视频在线观看| 美女在线观看视频一区二区| 国产剧情一区二区三区| 不卡欧美aaaaa| 欧美性欧美巨大黑白大战| 欧美一区二区视频在线观看2020 | 久久这里只有精品6| 久久精品人人爽人人爽| 亚洲婷婷在线视频| 日韩—二三区免费观看av| 国产乱人伦偷精品视频免下载| av一本久道久久综合久久鬼色| 欧美综合一区二区三区| 精品久久免费看| 亚洲精品日产精品乱码不卡| 日本美女一区二区三区| 成人一道本在线| 欧美区在线观看| 国产日韩精品一区| 亚洲国产日韩在线一区模特| 激情图片小说一区| 91国偷自产一区二区三区成为亚洲经典 | 国产精品成人免费| 亚洲日本乱码在线观看| 热久久一区二区| 白白色亚洲国产精品| 欧美日韩高清一区| 欧美国产亚洲另类动漫| 午夜精品影院在线观看| 国产在线精品一区在线观看麻豆| 91蝌蚪porny| 久久久99久久| 日韩影院精彩在线| 91丨国产丨九色丨pron| 久久这里只有精品视频网| 亚洲午夜免费福利视频| 国产精品一二三在| 欧美二区在线观看| 亚洲视频资源在线| 精品一区二区三区日韩| 日本电影亚洲天堂一区| 久久久www成人免费无遮挡大片| 香港成人在线视频| 97精品视频在线观看自产线路二| 精品国产免费人成电影在线观看四季| 亚洲一区二区三区在线| 成人午夜精品一区二区三区| 91精品国产一区二区三区香蕉| 国产精品视频一二三| 麻豆国产精品官网| 欧美精品亚洲一区二区在线播放| 亚洲欧洲精品一区二区精品久久久| 日本中文在线一区| 欧美性做爰猛烈叫床潮| 自拍偷拍欧美激情| 国产成人精品综合在线观看| 精品三级在线看| 免费精品99久久国产综合精品| 欧美日韩中文字幕精品| 亚洲日本va午夜在线影院| 国产成人午夜精品影院观看视频| 欧美一区二区不卡视频| 亚洲电影你懂得| 色婷婷精品大在线视频| 综合久久国产九一剧情麻豆| 成人激情电影免费在线观看| 国产亚洲欧美色| 丰满放荡岳乱妇91ww| 久久久精品黄色| 国产麻豆视频精品| 久久伊99综合婷婷久久伊| 精品一区在线看| 精品国产露脸精彩对白| 日本不卡在线视频| 91超碰这里只有精品国产| 视频一区欧美日韩| 91精品久久久久久久91蜜桃| 日韩高清中文字幕一区| 欧美人与禽zozo性伦| 日韩国产欧美在线视频| 欧美一区二区三区在| 免费日韩伦理电影| 欧美白人最猛性xxxxx69交| 麻豆精品在线看| 欧美精品一区二区精品网| 久久se这里有精品| 久久久久青草大香线综合精品| 国产福利一区二区三区视频| 欧美激情资源网| 99热国产精品| 一区二区欧美在线观看| 欧美日韩国产首页在线观看| 视频一区二区三区中文字幕| 欧美成va人片在线观看| 国产精品一区二区久久精品爱涩| 日本一区二区免费在线| 99久久精品99国产精品| 一区二区三区中文字幕在线观看| 欧美色图12p| 日本视频免费一区| 久久这里只精品最新地址| av电影天堂一区二区在线| 亚洲免费观看高清完整版在线| 欧美色电影在线| 久久黄色级2电影| 欧美国产国产综合| 色婷婷激情一区二区三区| 人禽交欧美网站| 国产日韩精品一区二区三区 | 国产三级精品三级| av电影在线观看不卡| 丝袜美腿亚洲色图| 精品国内二区三区| 不卡视频在线观看| 天天综合网 天天综合色| 亚洲精品一区在线观看| 99re这里只有精品视频首页| 日韩电影免费在线观看网站| 欧美精品一区二区在线观看| 91网上在线视频| 麻豆国产精品官网| 中文字幕一区二区在线播放| 91精品国产91久久久久久一区二区 | 伦理电影国产精品| 国产欧美一区二区三区网站| 欧美影院精品一区| 九九热在线视频观看这里只有精品| 久久综合999| 欧美伊人久久久久久午夜久久久久| 激情文学综合插| 亚洲午夜在线观看视频在线| 久久久激情视频| 欧美久久一二三四区| 成人毛片在线观看| 日韩高清不卡在线| 亚洲欧洲制服丝袜| 2023国产精品自拍| 欧美精品日日鲁夜夜添| 成人av午夜电影| 琪琪久久久久日韩精品| 亚洲色图视频网| 久久午夜国产精品| 91精品国产一区二区人妖| 99re66热这里只有精品3直播 | 首页亚洲欧美制服丝腿| 国产精品每日更新| 欧美一区二区三区影视| 91久久香蕉国产日韩欧美9色| 国内外成人在线视频| 天天做天天摸天天爽国产一区| 国产精品久久久久久亚洲伦| 精品国产免费一区二区三区四区| 欧美日韩一区二区三区高清| 成人国产电影网| 国产精品亚洲第一区在线暖暖韩国| 图片区小说区国产精品视频| 亚洲久草在线视频| 中文无字幕一区二区三区| 日韩精品一区二区三区老鸭窝| 欧美视频一二三区| 91福利视频网站| 91视频一区二区三区| 国产风韵犹存在线视精品| 国产中文字幕精品| 免费国产亚洲视频| 日韩电影在线免费看| 午夜精品一区二区三区免费视频| 亚洲日本va午夜在线影院| 中文字幕色av一区二区三区| 国产欧美精品一区| 欧美精品一区二| 久久综合成人精品亚洲另类欧美| 日韩一区二区在线播放| 欧美精选午夜久久久乱码6080| 欧美三级韩国三级日本一级| 欧美在线免费播放|