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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? jpg.c

?? 在ecos 下mingui 的移植開發(fā)
?? C
?? 第 1 頁 / 共 4 頁
字號:
	(size_t) ((size_t) rowsperchunk * (size_t) blocksperrow		  * SIZEOF(JBLOCK)));    for (i = rowsperchunk; i > 0; i--) {      result[currow++] = workspace;      workspace += blocksperrow;    }  }  return result;}/* * About virtual array management: * * The above "normal" array routines are only used to allocate strip buffers * (as wide as the image, but just a few rows high).  Full-image-sized buffers * are handled as "virtual" arrays.  The array is still accessed a strip at a * time, but the memory manager must save the whole array for repeated * accesses.  The intended implementation is that there is a strip buffer in * memory (as high as is possible given the desired memory limit), plus a * backing file that holds the rest of the array. * * The request_virt_array routines are told the total size of the image and * the maximum number of rows that will be accessed at once.  The in-memory * buffer must be at least as large as the maxaccess value. * * The request routines create control blocks but not the in-memory buffers. * That is postponed until realize_virt_arrays is called.  At that time the * total amount of space needed is known (approximately, anyway), so free * memory can be divided up fairly. * * The access_virt_array routines are responsible for making a specific strip * area accessible (after reading or writing the backing file, if necessary). * Note that the access routines are told whether the caller intends to modify * the accessed strip; during a read-only pass this saves having to rewrite * data to disk.  The access routines are also responsible for pre-zeroing * any newly accessed rows, if pre-zeroing was requested. * * In current usage, the access requests are usually for nonoverlapping * strips; that is, successive access start_row numbers differ by exactly * num_rows = maxaccess.  This means we can get good performance with simple * buffer dump/reload logic, by making the in-memory buffer be a multiple * of the access height; then there will never be accesses across bufferload * boundaries.  The code will still work with overlapping access requests, * but it doesn't handle bufferload overlaps very efficiently. */METHODDEF(jvirt_sarray_ptr)request_virt_sarray (j_common_ptr cinfo, int pool_id, boolean pre_zero,		     JDIMENSION samplesperrow, JDIMENSION numrows,		     JDIMENSION maxaccess)/* Request a virtual 2-D sample array */{  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;  jvirt_sarray_ptr result;  /* Only IMAGE-lifetime virtual arrays are currently supported */  if (pool_id != JPOOL_IMAGE)    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */  /* get control block */  result = (jvirt_sarray_ptr) alloc_small(cinfo, pool_id,					  SIZEOF(struct jvirt_sarray_control));  result->mem_buffer = NULL;	/* marks array not yet realized */  result->rows_in_array = numrows;  result->samplesperrow = samplesperrow;  result->maxaccess = maxaccess;  result->pre_zero = pre_zero;  result->b_s_open = FALSE;	/* no associated backing-store object */  result->next = mem->virt_sarray_list; /* add to list of virtual arrays */  mem->virt_sarray_list = result;  return result;}METHODDEF(jvirt_barray_ptr)request_virt_barray (j_common_ptr cinfo, int pool_id, boolean pre_zero,		     JDIMENSION blocksperrow, JDIMENSION numrows,		     JDIMENSION maxaccess)/* Request a virtual 2-D coefficient-block array */{  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;  jvirt_barray_ptr result;  /* Only IMAGE-lifetime virtual arrays are currently supported */  if (pool_id != JPOOL_IMAGE)    ERREXIT1(cinfo, JERR_BAD_POOL_ID, pool_id);	/* safety check */  /* get control block */  result = (jvirt_barray_ptr) alloc_small(cinfo, pool_id,					  SIZEOF(struct jvirt_barray_control));  result->mem_buffer = NULL;	/* marks array not yet realized */  result->rows_in_array = numrows;  result->blocksperrow = blocksperrow;  result->maxaccess = maxaccess;  result->pre_zero = pre_zero;  result->b_s_open = FALSE;	/* no associated backing-store object */  result->next = mem->virt_barray_list; /* add to list of virtual arrays */  mem->virt_barray_list = result;  return result;}METHODDEF(void)realize_virt_arrays (j_common_ptr cinfo)/* Allocate the in-memory buffers for any unrealized virtual arrays */{  my_mem_ptr mem = (my_mem_ptr) cinfo->mem;  long space_per_minheight, maximum_space, avail_mem;  long minheights, max_minheights;  jvirt_sarray_ptr sptr;  jvirt_barray_ptr bptr;  /* Compute the minimum space needed (maxaccess rows in each buffer)   * and the maximum space needed (full image height in each buffer).   * These may be of use to the system-dependent jpeg_mem_available routine.   */  space_per_minheight = 0;  maximum_space = 0;  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {    if (sptr->mem_buffer == NULL) { /* if not realized yet */      space_per_minheight += (long) sptr->maxaccess *			     (long) sptr->samplesperrow * SIZEOF(JSAMPLE);      maximum_space += (long) sptr->rows_in_array *		       (long) sptr->samplesperrow * SIZEOF(JSAMPLE);    }  }  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {    if (bptr->mem_buffer == NULL) { /* if not realized yet */      space_per_minheight += (long) bptr->maxaccess *			     (long) bptr->blocksperrow * SIZEOF(JBLOCK);      maximum_space += (long) bptr->rows_in_array *		       (long) bptr->blocksperrow * SIZEOF(JBLOCK);    }  }  if (space_per_minheight <= 0)    return;			/* no unrealized arrays, no work */  /* Determine amount of memory to actually use; this is system-dependent. */  avail_mem = jpeg_mem_available(cinfo, space_per_minheight, maximum_space,				 mem->total_space_allocated);  /* If the maximum space needed is available, make all the buffers full   * height; otherwise parcel it out with the same number of minheights   * in each buffer.   */  if (avail_mem >= maximum_space)    max_minheights = 1000000000L;  else {    max_minheights = avail_mem / space_per_minheight;    /* If there doesn't seem to be enough space, try to get the minimum     * anyway.  This allows a "stub" implementation of jpeg_mem_available().     */    if (max_minheights <= 0)      max_minheights = 1;  }  /* Allocate the in-memory buffers and initialize backing store as needed. */  for (sptr = mem->virt_sarray_list; sptr != NULL; sptr = sptr->next) {    if (sptr->mem_buffer == NULL) { /* if not realized yet */      minheights = ((long) sptr->rows_in_array - 1L) / sptr->maxaccess + 1L;      if (minheights <= max_minheights) {	/* This buffer fits in memory */	sptr->rows_in_mem = sptr->rows_in_array;      } else {	/* It doesn't fit in memory, create backing store. */	sptr->rows_in_mem = (JDIMENSION) (max_minheights * sptr->maxaccess);	jpeg_open_backing_store(cinfo, & sptr->b_s_info,				(long) sptr->rows_in_array *				(long) sptr->samplesperrow *				(long) SIZEOF(JSAMPLE));	sptr->b_s_open = TRUE;      }      sptr->mem_buffer = alloc_sarray(cinfo, JPOOL_IMAGE,				      sptr->samplesperrow, sptr->rows_in_mem);      sptr->rowsperchunk = mem->last_rowsperchunk;      sptr->cur_start_row = 0;      sptr->first_undef_row = 0;      sptr->dirty = FALSE;    }  }  for (bptr = mem->virt_barray_list; bptr != NULL; bptr = bptr->next) {    if (bptr->mem_buffer == NULL) { /* if not realized yet */      minheights = ((long) bptr->rows_in_array - 1L) / bptr->maxaccess + 1L;      if (minheights <= max_minheights) {	/* This buffer fits in memory */	bptr->rows_in_mem = bptr->rows_in_array;      } else {	/* It doesn't fit in memory, create backing store. */	bptr->rows_in_mem = (JDIMENSION) (max_minheights * bptr->maxaccess);	jpeg_open_backing_store(cinfo, & bptr->b_s_info,				(long) bptr->rows_in_array *				(long) bptr->blocksperrow *				(long) SIZEOF(JBLOCK));	bptr->b_s_open = TRUE;      }      bptr->mem_buffer = alloc_barray(cinfo, JPOOL_IMAGE,				      bptr->blocksperrow, bptr->rows_in_mem);      bptr->rowsperchunk = mem->last_rowsperchunk;      bptr->cur_start_row = 0;      bptr->first_undef_row = 0;      bptr->dirty = FALSE;    }  }}LOCAL(void)do_sarray_io (j_common_ptr cinfo, jvirt_sarray_ptr ptr, boolean writing)/* Do backing store read or write of a virtual sample array */{  long bytesperrow, file_offset, byte_count, rows, thisrow, i;  bytesperrow = (long) ptr->samplesperrow * SIZEOF(JSAMPLE);  file_offset = ptr->cur_start_row * bytesperrow;  /* Loop to read or write each allocation chunk in mem_buffer */  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {    /* One chunk, but check for short chunk at end of buffer */    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);    /* Transfer no more than is currently defined */    thisrow = (long) ptr->cur_start_row + i;    rows = MIN(rows, (long) ptr->first_undef_row - thisrow);    /* Transfer no more than fits in file */    rows = MIN(rows, (long) ptr->rows_in_array - thisrow);    if (rows <= 0)		/* this chunk might be past end of file! */      break;    byte_count = rows * bytesperrow;    if (writing)      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,					    (void *) ptr->mem_buffer[i],					    file_offset, byte_count);    else      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,					   (void *) ptr->mem_buffer[i],					   file_offset, byte_count);    file_offset += byte_count;  }}LOCAL(void)do_barray_io (j_common_ptr cinfo, jvirt_barray_ptr ptr, boolean writing)/* Do backing store read or write of a virtual coefficient-block array */{  long bytesperrow, file_offset, byte_count, rows, thisrow, i;  bytesperrow = (long) ptr->blocksperrow * SIZEOF(JBLOCK);  file_offset = ptr->cur_start_row * bytesperrow;  /* Loop to read or write each allocation chunk in mem_buffer */  for (i = 0; i < (long) ptr->rows_in_mem; i += ptr->rowsperchunk) {    /* One chunk, but check for short chunk at end of buffer */    rows = MIN((long) ptr->rowsperchunk, (long) ptr->rows_in_mem - i);    /* Transfer no more than is currently defined */    thisrow = (long) ptr->cur_start_row + i;    rows = MIN(rows, (long) ptr->first_undef_row - thisrow);    /* Transfer no more than fits in file */    rows = MIN(rows, (long) ptr->rows_in_array - thisrow);    if (rows <= 0)		/* this chunk might be past end of file! */      break;    byte_count = rows * bytesperrow;    if (writing)      (*ptr->b_s_info.write_backing_store) (cinfo, & ptr->b_s_info,					    (void *) ptr->mem_buffer[i],					    file_offset, byte_count);    else      (*ptr->b_s_info.read_backing_store) (cinfo, & ptr->b_s_info,					   (void *) ptr->mem_buffer[i],					   file_offset, byte_count);    file_offset += byte_count;  }}METHODDEF(JSAMPARRAY)access_virt_sarray (j_common_ptr cinfo, jvirt_sarray_ptr ptr,		    JDIMENSION start_row, JDIMENSION num_rows,		    boolean writable)/* Access the part of a virtual sample array starting at start_row *//* and extending for num_rows rows.  writable is true if  *//* caller intends to modify the accessed area. */{  JDIMENSION end_row = start_row + num_rows;  JDIMENSION undef_row;  /* debugging check */  if (end_row > ptr->rows_in_array || num_rows > ptr->maxaccess ||      ptr->mem_buffer == NULL)    ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);  /* Make the desired part of the virtual array accessible */  if (start_row < ptr->cur_start_row ||      end_row > ptr->cur_start_row+ptr->rows_in_mem) {    if (! ptr->b_s_open)      ERREXIT(cinfo, JERR_VIRTUAL_BUG);    /* Flush old buffer contents if necessary */    if (ptr->dirty) {      do_sarray_io(cinfo, ptr, TRUE);      ptr->dirty = FALSE;    }    /* Decide what part of virtual array to access.     * Algorithm: if target address > current window, assume forward scan,     * load starting at target address.  If target address < current window,     * assume backward scan, load so that target area is top of window.     * Note that when switching from forward write to forward read, will have     * start_row = 0, so the limiting case applies and we load from 0 anyway.     */    if (start_row > ptr->cur_start_row) {      ptr->cur_start_row = start_row;    } else {      /* use long arithmetic here to avoid overflow & unsigned problems */      long ltemp;      ltemp = (long) end_row - (long) ptr->rows_in_mem;      if (ltemp < 0)	ltemp = 0;		/* don't fall off front end of file */      ptr->cur_start_row = (JDIMENSION) ltemp;    }    /* Read in the selected part of the array.     * During the initial write pass, we will do no actual read     * because the selected part is all undefined.     */    do_sarray_io(cinfo, ptr, FALSE);  }  /* Ensure the accessed part of the array is defined; prezero if needed.   * To improve locality of access, we only prezero the part of the array   * that the caller is about to access, not the entire in-memory array.   */  if (ptr->first_undef_row < end_row) {    if (ptr->first_undef_row < start_row) {      if (writable)		/* writer skipped over a section of array */	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);      undef_row = start_row;	/* but reader is allowed to read ahead */    } else {      undef_row = ptr->first_undef_row;    }    if (writable)      ptr->first_undef_row = end_row;    if (ptr->pre_zero) {      size_t bytesperrow = (size_t) ptr->samplesperrow * SIZEOF(JSAMPLE);      undef_row -= ptr->cur_start_row; /* make indexes relative to buffer */      end_row -= ptr->cur_start_row;      while (undef_row < end_row) {	jzero_far((void *) ptr->mem_buffer[undef_row], bytesperrow);	undef_row++;      }    } else {      if (! writable)		/* reader looking at undefined data */	ERREXIT(cinfo, JERR_BAD_VIRTUAL_ACCESS);    }  }  /* Flag the buffer dirty if caller will write in it */  if (writable)    ptr->dirty = TRUE;  /* Return address of proper part of the buffer */  return ptr->mem_buffer + (start_row - ptr->cur_start_row);}METHODDEF(JBLOCKARRAY)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人的网站免费观看| 日韩美女精品在线| 精品国产123| 日韩视频一区二区三区在线播放| 欧美日韩电影一区| 在线播放欧美女士性生活| 在线一区二区观看| 欧美一三区三区四区免费在线看| 日韩欧美在线影院| 欧美国产精品v| 亚洲欧美视频在线观看视频| 亚洲男同性恋视频| 日韩经典中文字幕一区| 国产又黄又大久久| av在线不卡电影| 欧美色图激情小说| 久久综合色播五月| 国产精品久久久一区麻豆最新章节| 国产精品国产精品国产专区不片| 国产精品嫩草久久久久| 一区二区欧美国产| 卡一卡二国产精品 | 色综合天天性综合| av在线一区二区三区| 色综合久久中文综合久久牛| 欧美精品色一区二区三区| 久久新电视剧免费观看| 亚洲欧洲av色图| 亚洲va韩国va欧美va| 国产一区二区电影| 欧美色综合影院| 亚洲精品一线二线三线无人区| 国产精品久久久久一区| 亚洲情趣在线观看| 亚洲成av人片一区二区| 国产精品1区二区.| 欧美日韩久久一区二区| 国产亚洲婷婷免费| 亚洲一二三四在线| 国产乱码精品一区二区三| 色综合久久久久综合| 精品美女一区二区| 亚洲国产一区视频| 国产精品资源在线| 欧洲在线/亚洲| 26uuuu精品一区二区| 亚洲一区二区三区中文字幕| 国内久久婷婷综合| 欧美日韩精品系列| 国产精品国产自产拍高清av王其| 蜜臀a∨国产成人精品| 色综合 综合色| 国产日韩综合av| 免费人成精品欧美精品| 91热门视频在线观看| 久久久一区二区三区捆绑**| 偷拍日韩校园综合在线| 91偷拍与自偷拍精品| 久久蜜桃香蕉精品一区二区三区| 亚洲黄色小视频| 懂色av一区二区夜夜嗨| 欧美性生活久久| 欧美韩日一区二区三区四区| 免费在线看一区| 欧美三区在线观看| 亚洲欧美日韩国产另类专区| 国产高清不卡二三区| 日韩欧美亚洲一区二区| 亚洲成人7777| 色综合欧美在线| 亚洲色图视频免费播放| 丰满放荡岳乱妇91ww| 欧美草草影院在线视频| 午夜影院久久久| 在线观看三级视频欧美| 亚洲欧美偷拍另类a∨色屁股| 国产成人av电影在线| 欧美v日韩v国产v| 日韩国产欧美在线观看| 欧美午夜片在线看| 亚洲免费观看高清完整版在线观看熊| 国产不卡在线一区| 久久品道一品道久久精品| 亚洲二区视频在线| 色综合色综合色综合| 亚洲人成亚洲人成在线观看图片| www.欧美.com| 中文字幕一区二区在线播放| 成人av在线网| 国产精品免费人成网站| 成人免费三级在线| 中文字幕欧美一| av亚洲精华国产精华| 最新日韩在线视频| 成人av资源在线| 精品国产凹凸成av人网站| 久久69国产一区二区蜜臀| 精品理论电影在线| 国产精品资源网| 欧美—级在线免费片| 成人手机电影网| 日韩一区中文字幕| 日本精品一区二区三区四区的功能| 亚洲另类一区二区| 欧美日精品一区视频| 亚洲乱码日产精品bd| 99v久久综合狠狠综合久久| 亚洲日本丝袜连裤袜办公室| 欧美亚男人的天堂| 日韩激情av在线| 亚洲精品一区二区三区在线观看| 国产成人在线电影| 亚洲色欲色欲www| 欧美揉bbbbb揉bbbbb| 日本欧美一区二区三区| 久久免费电影网| av网站免费线看精品| 亚洲最大成人网4388xx| 欧美精品在线观看一区二区| 亚洲成人免费视| 日韩女优视频免费观看| 国产不卡免费视频| 亚洲精品欧美激情| 欧美一卡二卡在线| 国产精品亚洲成人| 亚洲人快播电影网| 日韩一区二区在线看| 国产精品一区二区三区四区| 国产精品妹子av| 欧美日韩和欧美的一区二区| 国产专区欧美精品| 亚洲免费观看高清完整版在线观看熊 | 亚洲一区二区三区四区在线观看| 91麻豆精品国产91久久久| 国产精品一区一区三区| 有码一区二区三区| 欧美午夜在线观看| 国产精品夜夜嗨| 性欧美疯狂xxxxbbbb| ●精品国产综合乱码久久久久| 欧美精品日韩一本| www日韩大片| 99久久综合精品| 蜜桃av噜噜一区| 亚洲精品日产精品乱码不卡| 日韩精品中文字幕一区| 欧美自拍偷拍午夜视频| 国产精品一区在线观看乱码| 亚洲品质自拍视频| 欧美激情一区二区三区不卡| 欧美精品三级日韩久久| 丁香婷婷综合激情五月色| 天天综合日日夜夜精品| 中文字幕 久热精品 视频在线 | 91年精品国产| 久久99在线观看| 一区二区三区蜜桃网| 久久久亚洲精华液精华液精华液| 色婷婷国产精品久久包臀| 看电视剧不卡顿的网站| 亚洲色图清纯唯美| 久久久综合视频| 91精品蜜臀在线一区尤物| 91亚洲精华国产精华精华液| 久久综合综合久久综合| 亚洲一卡二卡三卡四卡五卡| 国产人成一区二区三区影院| 欧美精品aⅴ在线视频| 99re这里只有精品视频首页| 六月丁香婷婷色狠狠久久| 国产精品国产三级国产普通话蜜臀 | 国产精品电影一区二区三区| 亚洲国产精品成人久久综合一区| 亚洲精品一区二区精华| 欧美电视剧免费全集观看| 欧美一区二区三区四区五区| 欧美肥妇bbw| 欧美一区2区视频在线观看| 91精品国产综合久久精品| 91精品国产综合久久精品app| 欧美日韩一区成人| 欧美久久一二区| 欧美疯狂做受xxxx富婆| 欧美色手机在线观看| 亚洲成人在线免费| 午夜伊人狠狠久久| 日韩精品电影一区亚洲| 日本成人在线不卡视频| 日本欧美一区二区在线观看| 毛片av中文字幕一区二区| 久久国产精品露脸对白| 韩国视频一区二区| 国产黑丝在线一区二区三区| 成人免费高清在线观看| 色婷婷av一区二区三区大白胸 | 亚洲第一搞黄网站| 日韩av电影免费观看高清完整版| 日韩精品乱码av一区二区| 看电影不卡的网站| 国产成人综合自拍|