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

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

?? jcapistd.c

?? JPEG source code converts the image into compressed format
?? C
字號:
/*
 * 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一区二区三区免费野_久草精品视频
日韩三级在线观看| 国产91精品免费| 亚洲欧美国产77777| 国产三级一区二区三区| 精品国产伦一区二区三区观看体验| 欧美日韩国产一级片| 欧美亚洲尤物久久| 欧美精品日韩综合在线| 欧美一区午夜视频在线观看 | 欧美一级久久久| 欧美日本免费一区二区三区| 欧美日韩美女一区二区| 欧美日本一区二区三区四区| 欧美一区二区在线看| 精品乱人伦一区二区三区| 久久综合国产精品| 国产精品久久777777| 亚洲精品欧美专区| 日韩精品三区四区| 国产高清久久久| 91丨porny丨蝌蚪视频| 在线观看精品一区| 欧美电影免费提供在线观看| 久久欧美一区二区| 亚洲视频一二三| 日本强好片久久久久久aaa| 蜜桃久久精品一区二区| 国产成人精品综合在线观看| 色94色欧美sute亚洲13| 7777精品伊人久久久大香线蕉超级流畅| 专区另类欧美日韩| 天天综合网天天综合色| 麻豆专区一区二区三区四区五区| 国产91色综合久久免费分享| 午夜激情久久久| 色八戒一区二区三区| 国产精品视频yy9299一区| ...中文天堂在线一区| 午夜影院在线观看欧美| 精品一区二区三区蜜桃| 色悠悠亚洲一区二区| 日韩精品一区二区在线| 一区二区成人在线观看| 国产毛片一区二区| 欧美精品第1页| 国产精品久久久久久久蜜臀| 日本不卡一区二区| 色婷婷久久99综合精品jk白丝| 欧美成人vr18sexvr| 亚洲成人免费视频| aaa亚洲精品一二三区| 精品国产一二三区| 五月综合激情婷婷六月色窝| 国产欧美中文在线| 欧美精品一区二区三区高清aⅴ| 亚洲欧洲www| 国产成人aaa| 26uuu亚洲综合色| 日韩电影在线一区二区三区| 色综合色综合色综合| 18欧美亚洲精品| 不卡的av网站| 国产精品嫩草99a| 国产成人免费高清| 国产亚洲综合在线| 精品一区二区三区在线观看国产| 欧美日韩国产高清一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 国产在线精品免费| 91麻豆精品国产91久久久使用方法 | 精品一区二区成人精品| 911国产精品| 日韩综合小视频| 91麻豆精品国产91久久久久久久久 | 亚洲国产精品精华液网站| 91免费视频观看| 亚洲黄色av一区| 欧美日韩另类一区| 午夜激情久久久| 日韩欧美久久一区| 韩国欧美国产1区| 久久久久久久av麻豆果冻| 国产成人av电影在线观看| 久久蜜桃av一区二区天堂| 国产精品一线二线三线精华| 国产午夜精品在线观看| 国产成人免费av在线| 国产精品福利av| 日本韩国精品一区二区在线观看| 亚洲影视在线播放| 欧美一区二区在线免费观看| 久久国产精品露脸对白| 中文字幕欧美国产| 91福利在线免费观看| 亚洲chinese男男1069| 欧美一区二区三区视频在线 | 久久久99久久精品欧美| 国产精品资源在线| 亚洲欧洲综合另类在线| 亚洲最新视频在线观看| 欧美成人性战久久| 欧美电影一区二区三区| 久久久综合精品| 亚洲色图欧美激情| 欧美精品黑人性xxxx| 国产精品综合二区| 亚洲第一成年网| www成人在线观看| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美在线你懂得| 精品亚洲免费视频| 亚洲美女偷拍久久| 精品999在线播放| 欧洲视频一区二区| 久久99久久99小草精品免视看| 国产精品乱码一区二三区小蝌蚪| 欧美在线色视频| 高清beeg欧美| 在线亚洲高清视频| 日日摸夜夜添夜夜添亚洲女人| 久草热8精品视频在线观看| 8x8x8国产精品| 久久国产综合精品| 久久久久免费观看| 手机精品视频在线观看| 亚洲特级片在线| 国产视频一区二区在线观看| 久久伊人蜜桃av一区二区| 久久蜜桃av一区二区天堂| 捆绑紧缚一区二区三区视频| 成人免费一区二区三区视频| 精品国产不卡一区二区三区| 欧美日韩在线观看一区二区 | 国产成人精品午夜视频免费| 午夜在线电影亚洲一区| 亚洲精品成人悠悠色影视| 久久精品国产精品亚洲红杏| 一区二区视频免费在线观看| 91污在线观看| 成人免费观看男女羞羞视频| 激情综合亚洲精品| 麻豆精品新av中文字幕| 亚洲国产综合人成综合网站| 一区二区三区免费看视频| 亚洲欧美视频在线观看| 国产精品久久久久久久蜜臀| 国产欧美精品国产国产专区| 国产亚洲精品精华液| 久久网站热最新地址| 久久嫩草精品久久久精品| 精品sm在线观看| 国产日本亚洲高清| 国产精品无码永久免费888| 久久亚洲捆绑美女| 国产欧美精品日韩区二区麻豆天美| 久久久久久一二三区| 久久综合狠狠综合| 国产精品色哟哟网站| 国产精品传媒在线| 亚洲一区二区三区自拍| 亚洲成人综合网站| 免费在线观看视频一区| 久久精品久久精品| 国产精品91xxx| 99精品视频在线观看免费| 91麻豆成人久久精品二区三区| 色婷婷激情久久| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区三区日韩| 91精品免费观看| 日韩免费电影一区| 国产丝袜欧美中文另类| 亚洲人成伊人成综合网小说| 亚洲精品少妇30p| 日本欧美在线看| 国产成a人亚洲精品| 91福利在线免费观看| 91精品一区二区三区在线观看| 日韩精品在线一区| 国产精品另类一区| 午夜视频久久久久久| 国产乱码一区二区三区| 色狠狠一区二区| 日韩欧美精品在线| 日韩久久一区二区| 久久精品久久99精品久久| av中文字幕一区| 日韩精品一区二区三区视频播放| 中文字幕一区在线| 蜜桃一区二区三区四区| 一本一本大道香蕉久在线精品| 精品欧美乱码久久久久久1区2区| 国产精品麻豆视频| 美腿丝袜亚洲综合| 色婷婷av久久久久久久| 精品99一区二区三区| 亚洲高清三级视频| 不卡视频免费播放| 精品毛片乱码1区2区3区| 亚洲一二三四久久|