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

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

?? jmemdos.c

?? JPEG算法源代碼(包含JPEG的各種算法實現的VC++的源代碼)
?? C
?? 第 1 頁 / 共 2 頁
字號:
	XMSH src_handle;
	XMSPTR src;
	XMSH dst_handle;
	XMSPTR dst;
      } XMSspec;

#define ODD(X)	(((X) & 1L) != 0)


METHODDEF(void)
read_xms_store (j_common_ptr cinfo, backing_store_ptr info,
		void FAR * buffer_address,
		long file_offset, long byte_count)
{
  XMScontext ctx;
  XMSspec spec;
  char endbuffer[2];

  /* The XMS driver can't cope with an odd length, so handle the last byte
   * specially if byte_count is odd.  We don't expect this to be common.
   */

  spec.length = byte_count & (~ 1L);
  spec.src_handle = info->handle.xms_handle;
  spec.src.offset = file_offset;
  spec.dst_handle = 0;
  spec.dst.ptr = buffer_address;
  
  ctx.ds_si = (void far *) & spec;
  ctx.ax = 0x0b00;		/* EMB move */
  jxms_calldriver(xms_driver, (XMScontext far *) & ctx);
  if (ctx.ax != 1)
    ERREXIT(cinfo, JERR_XMS_READ);

  if (ODD(byte_count)) {
    read_xms_store(cinfo, info, (void FAR *) endbuffer,
		   file_offset + byte_count - 1L, 2L);
    ((char FAR *) buffer_address)[byte_count - 1L] = endbuffer[0];
  }
}


METHODDEF(void)
write_xms_store (j_common_ptr cinfo, backing_store_ptr info,
		 void FAR * buffer_address,
		 long file_offset, long byte_count)
{
  XMScontext ctx;
  XMSspec spec;
  char endbuffer[2];

  /* The XMS driver can't cope with an odd length, so handle the last byte
   * specially if byte_count is odd.  We don't expect this to be common.
   */

  spec.length = byte_count & (~ 1L);
  spec.src_handle = 0;
  spec.src.ptr = buffer_address;
  spec.dst_handle = info->handle.xms_handle;
  spec.dst.offset = file_offset;

  ctx.ds_si = (void far *) & spec;
  ctx.ax = 0x0b00;		/* EMB move */
  jxms_calldriver(xms_driver, (XMScontext far *) & ctx);
  if (ctx.ax != 1)
    ERREXIT(cinfo, JERR_XMS_WRITE);

  if (ODD(byte_count)) {
    read_xms_store(cinfo, info, (void FAR *) endbuffer,
		   file_offset + byte_count - 1L, 2L);
    endbuffer[0] = ((char FAR *) buffer_address)[byte_count - 1L];
    write_xms_store(cinfo, info, (void FAR *) endbuffer,
		    file_offset + byte_count - 1L, 2L);
  }
}


METHODDEF(void)
close_xms_store (j_common_ptr cinfo, backing_store_ptr info)
{
  XMScontext ctx;

  ctx.dx = info->handle.xms_handle;
  ctx.ax = 0x0a00;
  jxms_calldriver(xms_driver, (XMScontext far *) & ctx);
  TRACEMS1(cinfo, 1, JTRC_XMS_CLOSE, info->handle.xms_handle);
  /* we ignore any error return from the driver */
}


LOCAL(boolean)
open_xms_store (j_common_ptr cinfo, backing_store_ptr info,
		long total_bytes_needed)
{
  XMScontext ctx;

  /* Get address of XMS driver */
  jxms_getdriver((XMSDRIVER far *) & xms_driver);
  if (xms_driver == NULL)
    return FALSE;		/* no driver to be had */

  /* Get version number, must be >= 2.00 */
  ctx.ax = 0x0000;
  jxms_calldriver(xms_driver, (XMScontext far *) & ctx);
  if (ctx.ax < (unsigned short) 0x0200)
    return FALSE;

  /* Try to get space (expressed in kilobytes) */
  ctx.dx = (unsigned short) ((total_bytes_needed + 1023L) >> 10);
  ctx.ax = 0x0900;
  jxms_calldriver(xms_driver, (XMScontext far *) & ctx);
  if (ctx.ax != 1)
    return FALSE;

  /* Succeeded, save the handle and away we go */
  info->handle.xms_handle = ctx.dx;
  info->read_backing_store = read_xms_store;
  info->write_backing_store = write_xms_store;
  info->close_backing_store = close_xms_store;
  TRACEMS1(cinfo, 1, JTRC_XMS_OPEN, ctx.dx);
  return TRUE;			/* succeeded */
}

#endif /* XMS_SUPPORTED */


/*
 * Access methods for expanded memory.
 */

#if EMS_SUPPORTED

/* The EMS move specification structure requires word and long fields aligned
 * at odd byte boundaries.  Some compilers will align struct fields at even
 * byte boundaries.  While it's usually possible to force byte alignment,
 * that causes an overall performance penalty and may pose problems in merging
 * JPEG into a larger application.  Instead we accept some rather dirty code
 * here.  Note this code would fail if the hardware did not allow odd-byte
 * word & long accesses, but all 80x86 CPUs do.
 */

typedef void far * EMSPTR;

typedef union {			/* EMS move specification structure */
	long length;		/* It's easy to access first 4 bytes */
	char bytes[18];		/* Misaligned fields in here! */
      } EMSspec;

/* Macros for accessing misaligned fields */
#define FIELD_AT(spec,offset,type)  (*((type *) &(spec.bytes[offset])))
#define SRC_TYPE(spec)		FIELD_AT(spec,4,char)
#define SRC_HANDLE(spec)	FIELD_AT(spec,5,EMSH)
#define SRC_OFFSET(spec)	FIELD_AT(spec,7,unsigned short)
#define SRC_PAGE(spec)		FIELD_AT(spec,9,unsigned short)
#define SRC_PTR(spec)		FIELD_AT(spec,7,EMSPTR)
#define DST_TYPE(spec)		FIELD_AT(spec,11,char)
#define DST_HANDLE(spec)	FIELD_AT(spec,12,EMSH)
#define DST_OFFSET(spec)	FIELD_AT(spec,14,unsigned short)
#define DST_PAGE(spec)		FIELD_AT(spec,16,unsigned short)
#define DST_PTR(spec)		FIELD_AT(spec,14,EMSPTR)

#define EMSPAGESIZE	16384L	/* gospel, see the EMS specs */

#define HIBYTE(W)  (((W) >> 8) & 0xFF)
#define LOBYTE(W)  ((W) & 0xFF)


METHODDEF(void)
read_ems_store (j_common_ptr cinfo, backing_store_ptr info,
		void FAR * buffer_address,
		long file_offset, long byte_count)
{
  EMScontext ctx;
  EMSspec spec;

  spec.length = byte_count;
  SRC_TYPE(spec) = 1;
  SRC_HANDLE(spec) = info->handle.ems_handle;
  SRC_PAGE(spec)   = (unsigned short) (file_offset / EMSPAGESIZE);
  SRC_OFFSET(spec) = (unsigned short) (file_offset % EMSPAGESIZE);
  DST_TYPE(spec) = 0;
  DST_HANDLE(spec) = 0;
  DST_PTR(spec)    = buffer_address;
  
  ctx.ds_si = (void far *) & spec;
  ctx.ax = 0x5700;		/* move memory region */
  jems_calldriver((EMScontext far *) & ctx);
  if (HIBYTE(ctx.ax) != 0)
    ERREXIT(cinfo, JERR_EMS_READ);
}


METHODDEF(void)
write_ems_store (j_common_ptr cinfo, backing_store_ptr info,
		 void FAR * buffer_address,
		 long file_offset, long byte_count)
{
  EMScontext ctx;
  EMSspec spec;

  spec.length = byte_count;
  SRC_TYPE(spec) = 0;
  SRC_HANDLE(spec) = 0;
  SRC_PTR(spec)    = buffer_address;
  DST_TYPE(spec) = 1;
  DST_HANDLE(spec) = info->handle.ems_handle;
  DST_PAGE(spec)   = (unsigned short) (file_offset / EMSPAGESIZE);
  DST_OFFSET(spec) = (unsigned short) (file_offset % EMSPAGESIZE);
  
  ctx.ds_si = (void far *) & spec;
  ctx.ax = 0x5700;		/* move memory region */
  jems_calldriver((EMScontext far *) & ctx);
  if (HIBYTE(ctx.ax) != 0)
    ERREXIT(cinfo, JERR_EMS_WRITE);
}


METHODDEF(void)
close_ems_store (j_common_ptr cinfo, backing_store_ptr info)
{
  EMScontext ctx;

  ctx.ax = 0x4500;
  ctx.dx = info->handle.ems_handle;
  jems_calldriver((EMScontext far *) & ctx);
  TRACEMS1(cinfo, 1, JTRC_EMS_CLOSE, info->handle.ems_handle);
  /* we ignore any error return from the driver */
}


LOCAL(boolean)
open_ems_store (j_common_ptr cinfo, backing_store_ptr info,
		long total_bytes_needed)
{
  EMScontext ctx;

  /* Is EMS driver there? */
  if (! jems_available())
    return FALSE;

  /* Get status, make sure EMS is OK */
  ctx.ax = 0x4000;
  jems_calldriver((EMScontext far *) & ctx);
  if (HIBYTE(ctx.ax) != 0)
    return FALSE;

  /* Get version, must be >= 4.0 */
  ctx.ax = 0x4600;
  jems_calldriver((EMScontext far *) & ctx);
  if (HIBYTE(ctx.ax) != 0 || LOBYTE(ctx.ax) < 0x40)
    return FALSE;

  /* Try to allocate requested space */
  ctx.ax = 0x4300;
  ctx.bx = (unsigned short) ((total_bytes_needed + EMSPAGESIZE-1L) / EMSPAGESIZE);
  jems_calldriver((EMScontext far *) & ctx);
  if (HIBYTE(ctx.ax) != 0)
    return FALSE;

  /* Succeeded, save the handle and away we go */
  info->handle.ems_handle = ctx.dx;
  info->read_backing_store = read_ems_store;
  info->write_backing_store = write_ems_store;
  info->close_backing_store = close_ems_store;
  TRACEMS1(cinfo, 1, JTRC_EMS_OPEN, ctx.dx);
  return TRUE;			/* succeeded */
}

#endif /* EMS_SUPPORTED */


/*
 * Initial opening of a backing-store object.
 */

GLOBAL(void)
jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info,
			 long total_bytes_needed)
{
  /* Try extended memory, then expanded memory, then regular file. */
#if XMS_SUPPORTED
  if (open_xms_store(cinfo, info, total_bytes_needed))
    return;
#endif
#if EMS_SUPPORTED
  if (open_ems_store(cinfo, info, total_bytes_needed))
    return;
#endif
  if (open_file_store(cinfo, info, total_bytes_needed))
    return;
  ERREXITS(cinfo, JERR_TFILE_CREATE, "");
}


/*
 * These routines take care of any system-dependent initialization and
 * cleanup required.
 */

GLOBAL(long)
jpeg_mem_init (j_common_ptr cinfo)
{
  next_file_num = 0;		/* initialize temp file name generator */
  return DEFAULT_MAX_MEM;	/* default for max_memory_to_use */
}

GLOBAL(void)
jpeg_mem_term (j_common_ptr cinfo)
{
  /* Microsoft C, at least in v6.00A, will not successfully reclaim freed
   * blocks of size > 32Kbytes unless we give it a kick in the rear, like so:
   */
#ifdef NEED_FHEAPMIN
  _fheapmin();
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av小说网| 国产福利精品一区二区| 国产精品乱码一区二三区小蝌蚪| 7777精品伊人久久久大香线蕉完整版| 91日韩精品一区| 在线视频欧美区| 欧美三级在线播放| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 99re热这里只有精品视频| 豆国产96在线|亚洲| 成人aa视频在线观看| av网站免费线看精品| 色综合 综合色| 欧美性色黄大片| 欧美精选午夜久久久乱码6080| 宅男在线国产精品| 亚洲精品老司机| 国产精品视频免费看| 亚洲欧洲精品天堂一级| 一区二区久久久久| 青青草国产成人av片免费 | 日韩欧美在线123| 26uuu亚洲婷婷狠狠天堂| 久久精品一区二区三区不卡牛牛| 国产精品丝袜在线| 性久久久久久久| 国产伦精一区二区三区| 97精品超碰一区二区三区| 欧美日韩精品久久久| 欧美精品一区二区三区在线| 欧美国产一区二区| 午夜精品一区在线观看| 国产一区免费电影| 91福利区一区二区三区| 日韩欧美一二三区| 国产精品国产三级国产普通话三级| 亚洲一区二区三区四区在线 | 99久久婷婷国产综合精品电影 | 国产人成亚洲第一网站在线播放 | 国产麻豆欧美日韩一区| 一本久久a久久精品亚洲| 91精品国产入口| 中文字幕av一区二区三区| 亚洲成av人片www| 成人免费毛片片v| 91精品国产乱| 亚洲一级二级在线| 激情欧美一区二区三区在线观看| 日本精品视频一区二区三区| 久久亚洲精品国产精品紫薇| 亚洲亚洲精品在线观看| www.成人在线| 2024国产精品| 琪琪一区二区三区| 欧美优质美女网站| 亚洲视频一区在线观看| 国产精品白丝jk白祙喷水网站| 欧美日韩精品综合在线| 亚洲同性同志一二三专区| 国产一区二区三区免费看| 91麻豆精品国产自产在线观看一区| 综合av第一页| 国产91精品入口| 久久免费视频一区| 久久成人羞羞网站| 欧美一区二区三区免费观看视频| 亚洲一区二区免费视频| 色妹子一区二区| 亚洲免费av网站| 91丨九色丨尤物| 亚洲欧美精品午睡沙发| av一区二区三区四区| 国产精品免费免费| 北条麻妃一区二区三区| 中文字幕av免费专区久久| 粉嫩13p一区二区三区| 中文字幕av在线一区二区三区| 成人影视亚洲图片在线| 国产精品日产欧美久久久久| 国产精品66部| 国产精品动漫网站| 一本一道波多野结衣一区二区| 亚洲精品欧美二区三区中文字幕| 91麻豆swag| 日韩精品一区第一页| 日韩午夜激情av| 国产毛片精品视频| 中文字幕国产精品一区二区| 91丨九色丨黑人外教| 亚洲一区二区三区四区在线观看 | 久久久国产午夜精品| 国产福利不卡视频| 国产精品美女久久久久久久| 色综合天天视频在线观看 | 美女mm1313爽爽久久久蜜臀| 欧美电影免费提供在线观看| 国产一区三区三区| 最新久久zyz资源站| 欧美视频一区二区三区| 美女脱光内衣内裤视频久久网站| 久久视频一区二区| 色哟哟一区二区在线观看| 日韩av中文字幕一区二区三区| 精品久久久久久久久久久久包黑料 | 经典一区二区三区| 国产精品三级av| 欧美日本精品一区二区三区| 精品一区二区免费看| 亚洲国产成人在线| 欧美日韩1区2区| 国产不卡视频一区| 亚洲国产aⅴ天堂久久| 国产亚洲精品aa| 欧美四级电影在线观看| 国产精品一区三区| 亚洲午夜成aⅴ人片| 国产天堂亚洲国产碰碰| 欧美日韩亚洲国产综合| 豆国产96在线|亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产亚洲人成网站| 制服丝袜av成人在线看| 99久久免费精品| 国产精品99久久久久久久vr| 午夜精品一区二区三区免费视频| 欧美激情一区三区| 日韩一级大片在线观看| 在线中文字幕不卡| 成人永久看片免费视频天堂| 久久精品国产77777蜜臀| 一区二区三区在线视频免费观看| 国产偷国产偷亚洲高清人白洁| 在线不卡欧美精品一区二区三区| 99视频一区二区三区| 韩国三级电影一区二区| 日韩av中文在线观看| 亚洲国产一区二区在线播放| 亚洲人成网站精品片在线观看| 久久亚洲捆绑美女| 日韩精品专区在线影院重磅| 欧美精选在线播放| 欧美男人的天堂一二区| 在线观看一区日韩| 日本电影欧美片| 成人精品国产一区二区4080| 国产大陆精品国产| 国产风韵犹存在线视精品| 国产综合久久久久久鬼色| 看电影不卡的网站| 久久电影国产免费久久电影 | 欧美精品一区二| 日韩欧美在线123| 欧美成人猛片aaaaaaa| 精品精品国产高清一毛片一天堂| 日韩一级精品视频在线观看| 日韩欧美久久久| 精品国产亚洲在线| 欧美精品一区二区三区很污很色的| 日韩美女在线视频| www国产精品av| 国产欧美日产一区| 国产精品久久久久久久久晋中| 国产精品免费久久| 一区二区三区免费在线观看| 亚洲一区二区三区视频在线播放| 亚洲一卡二卡三卡四卡无卡久久| 亚洲成人动漫在线免费观看| 日韩av网站免费在线| 国产毛片精品一区| 9i在线看片成人免费| 欧美视频在线一区| 精品蜜桃在线看| 国产精品五月天| 亚洲一区二区在线播放相泽| 三级欧美韩日大片在线看| 日韩高清在线观看| 国产精品亚洲视频| 欧美在线不卡一区| 欧美一级艳片视频免费观看| 久久久久国产一区二区三区四区| 国产精品视频看| 日日夜夜精品视频天天综合网| 国产一区二区三区| 色国产精品一区在线观看| 日韩写真欧美这视频| 国产欧美一区二区在线| 亚洲国产综合人成综合网站| 久久99久久久欧美国产| 91小视频在线免费看| 日韩欧美亚洲国产精品字幕久久久 | 婷婷国产在线综合| 国产一区在线不卡| 欧美性videosxxxxx| 久久久久久久综合日本| 亚洲午夜在线电影| 成人免费精品视频| 日韩免费看网站| 亚洲综合偷拍欧美一区色| 国产一区在线观看视频| 69久久夜色精品国产69蝌蚪网|