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

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

?? jcapistd.c

?? About JPEG, executable on Visual C++
?? C
字號:
////////////////////////////////////////////////////////////////////////
//
//	Note : this file is included as part of the Smaller Animals Software
//	JpegFile package. Though this file has not been modified from it's 
//	original IJG 6a form, it is not the responsibility on the Independent
//	JPEG Group to answer questions regarding this code.
//	
//	Any questions you have about this code should be addressed to :
//
//	CHRISDL@PAGESZ.NET	- the distributor of this package.
//
//	Remember, by including this code in the JpegFile package, Smaller 
//	Animals Software assumes all responsibilities for answering questions
//	about it. If we (SA Software) can't answer your questions ourselves, we 
//	will direct you to people who can.
//
//	Thanks, CDL.
//
////////////////////////////////////////////////////////////////////////
/*
 * jcapistd.c
 *
 * Copyright (C) 1994-1996, 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 application interface code for the compression half
 * of the JPEG library.  These are the "standard" API routines that are
 * used in the normal full-compression case.  They are not used by a
 * transcoding-only application.  Note that if an application links in
 * jpeg_start_compress, it will end up linking in the entire compressor.
 * We thus must separate this file from jcapimin.c to avoid linking the
 * whole compression library into a transcoder.
 */

#define JPEG_INTERNALS
#include "jinclude.h"
#include "jpeglib.h"


/*
 * Compression initialization.
 * Before calling this, all parameters and a data destination must be set up.
 *
 * We require a write_all_tables parameter as a failsafe check when writing
 * multiple datastreams from the same compression object.  Since prior runs
 * will have left all the tables marked sent_table=TRUE, a subsequent run
 * would emit an abbreviated stream (no tables) by default.  This may be what
 * is wanted, but for safety's sake it should not be the default behavior:
 * programmers should have to make a deliberate choice to emit abbreviated
 * images.  Therefore the documentation and examples should encourage people
 * to pass write_all_tables=TRUE; then it will take active thought to do the
 * wrong thing.
 */

GLOBAL(void)
jpeg_start_compress (j_compress_ptr cinfo, boolean write_all_tables)
{
  if (cinfo->global_state != CSTATE_START)
    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);

  if (write_all_tables)
    jpeg_suppress_tables(cinfo, FALSE);	/* mark all tables to be written */

  /* (Re)initialize error mgr and destination modules */
  (*cinfo->err->reset_error_mgr) ((j_common_ptr) cinfo);
  (*cinfo->dest->init_destination) (cinfo);
  /* Perform master selection of active modules */
  jinit_compress_master(cinfo);
  /* Set up for the first pass */
  (*cinfo->master->prepare_for_pass) (cinfo);
  /* Ready for application to drive first pass through jpeg_write_scanlines
   * or jpeg_write_raw_data.
   */
  cinfo->next_scanline = 0;
  cinfo->global_state = (cinfo->raw_data_in ? CSTATE_RAW_OK : CSTATE_SCANNING);
}


/*
 * Write some scanlines of data to the JPEG compressor.
 *
 * The return value will be the number of lines actually written.
 * This should be less than the supplied num_lines only in case that
 * the data destination module has requested suspension of the compressor,
 * or if more than image_height scanlines are passed in.
 *
 * Note: we warn about excess calls to jpeg_write_scanlines() since
 * this likely signals an application programmer error.  However,
 * excess scanlines passed in the last valid call are *silently* ignored,
 * so that the application need not adjust num_lines for end-of-image
 * when using a multiple-scanline buffer.
 */

GLOBAL(JDIMENSION)
jpeg_write_scanlines (j_compress_ptr cinfo, JSAMPARRAY scanlines,
		      JDIMENSION num_lines)
{
  JDIMENSION row_ctr, rows_left;

  if (cinfo->global_state != CSTATE_SCANNING)
    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
  if (cinfo->next_scanline >= cinfo->image_height)
    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);

  /* Call progress monitor hook if present */
  if (cinfo->progress != NULL) {
    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
    cinfo->progress->pass_limit = (long) cinfo->image_height;
    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
  }

  /* Give master control module another chance if this is first call to
   * jpeg_write_scanlines.  This lets output of the frame/scan headers be
   * delayed so that application can write COM, etc, markers between
   * jpeg_start_compress and jpeg_write_scanlines.
   */
  if (cinfo->master->call_pass_startup)
    (*cinfo->master->pass_startup) (cinfo);

  /* Ignore any extra scanlines at bottom of image. */
  rows_left = cinfo->image_height - cinfo->next_scanline;
  if (num_lines > rows_left)
    num_lines = rows_left;

  row_ctr = 0;
  (*cinfo->main->process_data) (cinfo, scanlines, &row_ctr, num_lines);
  cinfo->next_scanline += row_ctr;
  return row_ctr;
}


/*
 * Alternate entry point to write raw data.
 * Processes exactly one iMCU row per call, unless suspended.
 */

GLOBAL(JDIMENSION)
jpeg_write_raw_data (j_compress_ptr cinfo, JSAMPIMAGE data,
		     JDIMENSION num_lines)
{
  JDIMENSION lines_per_iMCU_row;

  if (cinfo->global_state != CSTATE_RAW_OK)
    ERREXIT1(cinfo, JERR_BAD_STATE, cinfo->global_state);
  if (cinfo->next_scanline >= cinfo->image_height) {
    WARNMS(cinfo, JWRN_TOO_MUCH_DATA);
    return 0;
  }

  /* Call progress monitor hook if present */
  if (cinfo->progress != NULL) {
    cinfo->progress->pass_counter = (long) cinfo->next_scanline;
    cinfo->progress->pass_limit = (long) cinfo->image_height;
    (*cinfo->progress->progress_monitor) ((j_common_ptr) cinfo);
  }

  /* Give master control module another chance if this is first call to
   * jpeg_write_raw_data.  This lets output of the frame/scan headers be
   * delayed so that application can write COM, etc, markers between
   * jpeg_start_compress and jpeg_write_raw_data.
   */
  if (cinfo->master->call_pass_startup)
    (*cinfo->master->pass_startup) (cinfo);

  /* Verify that at least one iMCU row has been passed. */
  lines_per_iMCU_row = cinfo->max_v_samp_factor * DCTSIZE;
  if (num_lines < lines_per_iMCU_row)
    ERREXIT(cinfo, JERR_BUFFER_SIZE);

  /* Directly compress the row. */
  if (! (*cinfo->coef->compress_data) (cinfo, data)) {
    /* If compressor did not consume the whole row, suspend processing. */
    return 0;
  }

  /* OK, we processed one iMCU row. */
  cinfo->next_scanline += lines_per_iMCU_row;
  return lines_per_iMCU_row;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品一线二线三线无人区| 欧美sm极限捆绑bd| 国产麻豆9l精品三级站| 亚洲色欲色欲www| 日韩欧美专区在线| 91传媒视频在线播放| 国产在线精品视频| 天堂av在线一区| 亚洲欧洲av一区二区三区久久| 日韩欧美在线影院| 欧美日韩综合在线| 91亚洲男人天堂| 国产99久久久国产精品免费看| 丝袜美腿一区二区三区| 中文字幕五月欧美| 日本一区二区三区在线观看| 91精品婷婷国产综合久久竹菊| 99热精品一区二区| 国产成人欧美日韩在线电影 | 久久综合综合久久综合| 亚洲已满18点击进入久久| 国产精品色一区二区三区| 精品国产一区二区亚洲人成毛片| 欧美日韩一卡二卡| 欧美性色欧美a在线播放| 不卡免费追剧大全电视剧网站| 久久99热狠狠色一区二区| 五月激情综合网| 91偷拍与自偷拍精品| 国产成人亚洲精品狼色在线| 久久国产精品无码网站| 免费人成网站在线观看欧美高清| 亚洲bt欧美bt精品777| 亚洲精品国产精品乱码不99| 最新不卡av在线| 亚洲人成在线播放网站岛国| 国产精品美女视频| 一区在线播放视频| 中文字幕一区二区三| 日韩美女啊v在线免费观看| 国产三级三级三级精品8ⅰ区| 久久久777精品电影网影网| 久久久亚洲国产美女国产盗摄| 精品久久久三级丝袜| 久久久不卡网国产精品二区| 久久精品欧美日韩| 国产精品免费网站在线观看| 日韩理论片网站| 中文字幕在线视频一区| 欧美精品在线观看一区二区| 国产成人av影院| 成人免费视频视频在线观看免费 | 日韩一区精品字幕| 日本中文在线一区| 久久国产精品无码网站| 国产高清精品网站| www.视频一区| 欧美中文字幕一二三区视频| 欧美日韩一区中文字幕| 日韩手机在线导航| 国产欧美一区二区三区在线老狼| 中文字幕一区二区在线播放| 亚洲美女视频在线| 日本vs亚洲vs韩国一区三区| 国产高清久久久久| 色婷婷综合久久久久中文| 欧美精品成人一区二区三区四区| 日韩免费看网站| 自拍偷拍国产亚洲| 奇米一区二区三区| 波多野结衣精品在线| 欧美日韩亚洲高清一区二区| 精品国产一区二区三区久久久蜜月| 国产片一区二区| 亚洲3atv精品一区二区三区| 韩国精品久久久| 一本大道久久a久久综合婷婷| 91精品国产综合久久香蕉的特点 | 天堂一区二区在线| 国产成人综合在线| 在线观看国产日韩| 国产视频一区二区三区在线观看| 夜夜嗨av一区二区三区四季av | 色呦呦网站一区| 日韩欧美国产1| 亚洲精品成人悠悠色影视| 免费看日韩a级影片| 91免费国产在线| 精品国产91乱码一区二区三区| 亚洲乱码日产精品bd| 极品美女销魂一区二区三区| 在线亚洲一区二区| 久久久国产一区二区三区四区小说 | 欧美视频在线不卡| 国产亚洲污的网站| 免费高清在线视频一区·| 色8久久人人97超碰香蕉987| 午夜精品国产更新| 成人福利电影精品一区二区在线观看 | 久草在线在线精品观看| 一本久久精品一区二区| 久久久精品一品道一区| 日本欧美加勒比视频| 色婷婷激情综合| 国产欧美日韩综合| 中文一区二区完整视频在线观看 | 欧美高清视频不卡网| 婷婷综合久久一区二区三区| 99这里都是精品| 日韩欧美国产一二三区| 久久久www成人免费无遮挡大片| 国产精品久久久久久久久免费相片 | 日本系列欧美系列| 精品欧美一区二区在线观看| 国产精一品亚洲二区在线视频| 国产日韩成人精品| 欧美日韩一区视频| 国产在线播放一区三区四| 亚洲欧美一区二区在线观看| 欧美三级视频在线| 国产高清精品久久久久| 亚洲va欧美va人人爽午夜| 日韩一二在线观看| 91老师片黄在线观看| 国产在线精品一区二区| 视频一区视频二区中文| 欧美精品欧美精品系列| 国产成人h网站| 激情欧美日韩一区二区| 日韩1区2区3区| 亚洲一区二区四区蜜桃| 久久精品水蜜桃av综合天堂| 欧美剧情电影在线观看完整版免费励志电影| 精品中文字幕一区二区| 午夜久久久久久电影| 国产精品三级视频| 国产网站一区二区| 久久精品一区二区| 欧美mv日韩mv| 91精品国产综合久久精品麻豆| 国产在线精品免费| 男男视频亚洲欧美| 毛片av一区二区| 亚洲3atv精品一区二区三区| 一区二区三区四区不卡在线| 亚洲欧洲日韩综合一区二区| 日韩美女啊v在线免费观看| 亚洲色图制服诱惑| 亚洲美女少妇撒尿| 亚洲高清视频在线| 韩国毛片一区二区三区| 久久99久久99精品免视看婷婷| 国产亚洲一区二区在线观看| 欧美国产成人精品| 中文字幕欧美一| 亚洲成av人片在线观看| 秋霞电影网一区二区| 久久99热这里只有精品| 波多野结衣中文一区| 日本高清视频一区二区| 欧美日韩高清影院| 久久午夜电影网| 亚洲免费三区一区二区| 午夜久久电影网| 成人午夜在线免费| 欧洲视频一区二区| 国产一区二区伦理片| 国产一区二区精品在线观看| 国产精品自在欧美一区| 免费看精品久久片| 国产高清在线观看免费不卡| 欧美在线制服丝袜| 精品福利视频一区二区三区| 国产精品麻豆一区二区| 亚洲视频 欧洲视频| 国产一区二区三区免费播放 | 成人黄色在线看| 久久精品一区二区| 欧美久久久久久蜜桃| 亚洲精品写真福利| 国产在线国偷精品免费看| 欧美精品v日韩精品v韩国精品v| 亚洲精品国产高清久久伦理二区 | 国产成人自拍网| 日本一区二区免费在线观看视频| 国产成人免费xxxxxxxx| 精品蜜桃在线看| 国产成人午夜99999| 国产精品毛片a∨一区二区三区| 老司机精品视频导航| 欧美高清视频一二三区| 亚洲国产精品久久人人爱| 在线日韩一区二区| 一区二区激情视频| 在线观看亚洲精品| 亚洲成人久久影院| 日韩亚洲欧美在线| 一本久久a久久免费精品不卡| 奇米在线7777在线精品 | 日韩av网站免费在线|