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

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

?? jdct.h

?? 精通VC++圖像處理編程的光盤中的代碼,代碼包含了采用VC++實現的數字圖像處理及壓縮的多個代碼,內容豐富
?? H
字號:
/*
 * jdct.h
 *
 * 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 include file contains common declarations for the forward and
 * inverse DCT modules.  These declarations are private to the DCT managers
 * (jcdctmgr.c, jddctmgr.c) and the individual DCT algorithms.
 * The individual DCT algorithms are kept in separate files to ease 
 * machine-dependent tuning (e.g., assembly coding).
 */


/*
 * A forward DCT routine is given a pointer to a work area of type DCTELEM[];
 * the DCT is to be performed in-place in that buffer.  Type DCTELEM is int
 * for 8-bit samples, INT32 for 12-bit samples.  (NOTE: Floating-point DCT
 * implementations use an array of type FAST_FLOAT, instead.)
 * The DCT inputs are expected to be signed (range +-CENTERJSAMPLE).
 * The DCT outputs are returned scaled up by a factor of 8; they therefore
 * have a range of +-8K for 8-bit data, +-128K for 12-bit data.  This
 * convention improves accuracy in integer implementations and saves some
 * work in floating-point ones.
 * Quantization of the output coefficients is done by jcdctmgr.c.
 */

#if BITS_IN_JSAMPLE == 8
typedef int DCTELEM;		/* 16 or 32 bits is fine */
#else
typedef INT32 DCTELEM;		/* must have 32 bits */
#endif

typedef JMETHOD(void, forward_DCT_method_ptr, (DCTELEM * data));
typedef JMETHOD(void, float_DCT_method_ptr, (FAST_FLOAT * data));


/*
 * An inverse DCT routine is given a pointer to the input JBLOCK and a pointer
 * to an output sample array.  The routine must dequantize the input data as
 * well as perform the IDCT; for dequantization, it uses the multiplier table
 * pointed to by compptr->dct_table.  The output data is to be placed into the
 * sample array starting at a specified column.  (Any row offset needed will
 * be applied to the array pointer before it is passed to the IDCT code.)
 * Note that the number of samples emitted by the IDCT routine is
 * DCT_scaled_size * DCT_scaled_size.
 */

/* typedef inverse_DCT_method_ptr is declared in jpegint.h */

/*
 * Each IDCT routine has its own ideas about the best dct_table element type.
 */

typedef MULTIPLIER ISLOW_MULT_TYPE; /* short or int, whichever is faster */
#if BITS_IN_JSAMPLE == 8
typedef MULTIPLIER IFAST_MULT_TYPE; /* 16 bits is OK, use short if faster */
#define IFAST_SCALE_BITS  2	/* fractional bits in scale factors */
#else
typedef INT32 IFAST_MULT_TYPE;	/* need 32 bits for scaled quantizers */
#define IFAST_SCALE_BITS  13	/* fractional bits in scale factors */
#endif
typedef FAST_FLOAT FLOAT_MULT_TYPE; /* preferred floating type */


/*
 * Each IDCT routine is responsible for range-limiting its results and
 * converting them to unsigned form (0..MAXJSAMPLE).  The raw outputs could
 * be quite far out of range if the input data is corrupt, so a bulletproof
 * range-limiting step is required.  We use a mask-and-table-lookup method
 * to do the combined operations quickly.  See the comments with
 * prepare_range_limit_table (in jdmaster.c) for more info.
 */

#define IDCT_range_limit(cinfo)  ((cinfo)->sample_range_limit + CENTERJSAMPLE)

#define RANGE_MASK  (MAXJSAMPLE * 4 + 3) /* 2 bits wider than legal samples */


/* Short forms of external names for systems with brain-damaged linkers. */

#ifdef NEED_SHORT_EXTERNAL_NAMES
#define jpeg_fdct_islow		jFDislow
#define jpeg_fdct_ifast		jFDifast
#define jpeg_fdct_float		jFDfloat
#define jpeg_idct_islow		jRDislow
#define jpeg_idct_ifast		jRDifast
#define jpeg_idct_float		jRDfloat
#define jpeg_idct_4x4		jRD4x4
#define jpeg_idct_2x2		jRD2x2
#define jpeg_idct_1x1		jRD1x1
#endif /* NEED_SHORT_EXTERNAL_NAMES */

/* Extern declarations for the forward and inverse DCT routines. */

EXTERN(void) jpeg_fdct_islow JPP((DCTELEM * data));
EXTERN(void) jpeg_fdct_ifast JPP((DCTELEM * data));
EXTERN(void) jpeg_fdct_float JPP((FAST_FLOAT * data));

EXTERN(void) jpeg_idct_islow
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_ifast
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_float
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_4x4
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_2x2
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));
EXTERN(void) jpeg_idct_1x1
    JPP((j_decompress_ptr cinfo, jpeg_component_info * compptr,
	 JCOEFPTR coef_block, JSAMPARRAY output_buf, JDIMENSION output_col));


/*
 * Macros for handling fixed-point arithmetic; these are used by many
 * but not all of the DCT/IDCT modules.
 *
 * All values are expected to be of type INT32.
 * Fractional constants are scaled left by CONST_BITS bits.
 * CONST_BITS is defined within each module using these macros,
 * and may differ from one module to the next.
 */

#define ONE	((INT32) 1)
#define CONST_SCALE (ONE << CONST_BITS)

/* Convert a positive real constant to an integer scaled by CONST_SCALE.
 * Caution: some C compilers fail to reduce "FIX(constant)" at compile time,
 * thus causing a lot of useless floating-point operations at run time.
 */

#define FIX(x)	((INT32) ((x) * CONST_SCALE + 0.5))

/* Descale and correctly round an INT32 value that's scaled by N bits.
 * We assume RIGHT_SHIFT rounds towards minus infinity, so adding
 * the fudge factor is correct for either sign of X.
 */

#define DESCALE(x,n)  RIGHT_SHIFT((x) + (ONE << ((n)-1)), n)

/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
 * This macro is used only when the two inputs will actually be no more than
 * 16 bits wide, so that a 16x16->32 bit multiply can be used instead of a
 * full 32x32 multiply.  This provides a useful speedup on many machines.
 * Unfortunately there is no way to specify a 16x16->32 multiply portably
 * in C, but some C compilers will do the right thing if you provide the
 * correct combination of casts.
 */

#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT16) (const)))
#endif
#ifdef SHORTxLCONST_32		/* known to work with Microsoft C 6.0 */
#define MULTIPLY16C16(var,const)  (((INT16) (var)) * ((INT32) (const)))
#endif

#ifndef MULTIPLY16C16		/* default definition */
#define MULTIPLY16C16(var,const)  ((var) * (const))
#endif

/* Same except both inputs are variables. */

#ifdef SHORTxSHORT_32		/* may work if 'int' is 32 bits */
#define MULTIPLY16V16(var1,var2)  (((INT16) (var1)) * ((INT16) (var2)))
#endif

#ifndef MULTIPLY16V16		/* default definition */
#define MULTIPLY16V16(var1,var2)  ((var1) * (var2))
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合网av| 国产精品一区二区无线| 99热99精品| 亚洲天堂av一区| 欧美军同video69gay| 麻豆国产精品官网| 久久久精品免费免费| 91麻豆精品在线观看| 天涯成人国产亚洲精品一区av| 日韩精品一区二区三区老鸭窝 | 678五月天丁香亚洲综合网| 日本不卡视频在线观看| 日韩免费电影网站| 日韩欧美三级在线| 久久伊99综合婷婷久久伊| 欧美性大战久久| 国产ts人妖一区二区| 五月激情综合婷婷| 美女网站视频久久| 国产精品自拍网站| 97超碰欧美中文字幕| 国产麻豆视频精品| 亚洲成人av一区二区三区| 中文字幕乱码久久午夜不卡| 日韩视频一区二区三区| 91久久一区二区| 国产福利一区二区三区视频| 日韩制服丝袜av| 亚洲欧美视频在线观看视频| 久久久www免费人成精品| 国产精品拍天天在线| 精品久久久久久久一区二区蜜臀| 欧美色网一区二区| 欧美大白屁股肥臀xxxxxx| 国产亚洲精品bt天堂精选| 欧美一区二区三区精品| 精品视频一区二区不卡| 在线观看视频91| 91麻豆蜜桃一区二区三区| 91精品国产91久久久久久最新毛片| 久久一区二区三区四区| 亚洲黄一区二区三区| 亚洲人快播电影网| 国产在线不卡一区| 色婷婷av久久久久久久| 一区二区视频在线看| 欧美成人一区二区| 国产精品三级av| 青青草国产成人av片免费| 成人av午夜电影| 成人看片黄a免费看在线| 国产激情91久久精品导航| 美女任你摸久久| 国产sm精品调教视频网站| 8v天堂国产在线一区二区| 国产精品成人免费精品自在线观看| 国产亚洲欧美在线| 天堂资源在线中文精品| 91在线国内视频| 久久精品人人做人人爽97| 日韩av电影免费观看高清完整版| 日本欧美久久久久免费播放网| 99re亚洲国产精品| 精品理论电影在线| 日本午夜精品一区二区三区电影 | 亚洲chinese男男1069| 国产成人精品aa毛片| 日韩一区二区三区电影 | 欧美视频一二三区| 美女视频黄免费的久久 | 制服.丝袜.亚洲.中文.综合| 中文成人av在线| 国产一区欧美一区| 欧美va天堂va视频va在线| 亚洲gay无套男同| 欧美男人的天堂一二区| 波多野结衣中文字幕一区二区三区 | 亚洲色图都市小说| 成人综合在线网站| 亚洲国产精品国自产拍av| 国内久久婷婷综合| 欧美成人一区二区三区片免费 | 麻豆久久一区二区| 在线成人免费观看| 日产国产欧美视频一区精品| 9191久久久久久久久久久| 亚洲福利国产精品| 精品中文字幕一区二区| 日韩精品一区二区三区蜜臀| 狠狠色狠狠色综合| 久久精品视频在线看| 国产精品一二三四| 亚洲特黄一级片| 欧美在线观看你懂的| 亚洲国产va精品久久久不卡综合| 欧美日本视频在线| 看电影不卡的网站| 91极品美女在线| 午夜精品一区在线观看| 日韩一卡二卡三卡| 国产不卡视频在线观看| 中文字幕日韩一区| 国产高清成人在线| 1区2区3区精品视频| 欧美视频在线播放| 久久www免费人成看片高清| 精品成a人在线观看| 日韩高清在线电影| 国产欧美一区二区精品性| 日本系列欧美系列| 日韩理论片一区二区| 国产一区二区三区久久悠悠色av| 国产三级精品三级在线专区| 91免费版pro下载短视频| 丝袜美腿成人在线| 久久精品在线免费观看| 欧美人与z0zoxxxx视频| 久久成人免费网站| 亚洲视频一区二区在线| 欧美不卡在线视频| proumb性欧美在线观看| 日韩极品在线观看| 国产精品久久久久久久第一福利| 欧美久久久久中文字幕| 国产精品一区二区久久不卡| 亚洲午夜免费视频| 中文字幕va一区二区三区| 91精品国产欧美日韩| 91欧美激情一区二区三区成人| 日韩av在线播放中文字幕| 亚洲日本青草视频在线怡红院| 久久综合色播五月| 欧美最新大片在线看| 成人ar影院免费观看视频| 久久久久久久久久久电影| 亚洲国产精品高清| 欧美日韩电影一区| 成人av手机在线观看| 狠狠色丁香久久婷婷综| 五月天欧美精品| 一区二区视频免费在线观看| 国产精品久久福利| 国产三级欧美三级| www精品美女久久久tv| 欧美一级片在线| 欧美日韩在线亚洲一区蜜芽| 色呦呦国产精品| 91在线免费看| 色综合久久中文字幕| 丁香亚洲综合激情啪啪综合| 国产一区美女在线| 精品一区二区三区在线视频| 三级一区在线视频先锋| 午夜精品久久久久久久蜜桃app| 亚洲人亚洲人成电影网站色| 亚洲欧洲成人自拍| ...中文天堂在线一区| 国产精品美女久久久久久| 中文字幕欧美三区| 国产精品进线69影院| 中文字幕一区在线观看| 成人免费在线视频观看| 亚洲欧美另类小说| 亚洲伦理在线精品| 亚洲自拍偷拍综合| 91精品国产色综合久久不卡电影 | 色综合天天综合网国产成人综合天| 亚洲综合久久av| 亚洲第一主播视频| 美日韩一级片在线观看| 国产一区二区三区国产| 成人激情黄色小说| 一本到三区不卡视频| 欧美日本高清视频在线观看| 91精品国产色综合久久不卡电影| 日韩精品一区国产麻豆| 久久久久久99精品| 亚洲视频一区在线| 日韩成人一级大片| 国产精品资源站在线| 一本色道久久综合亚洲91| 欧美精品在线观看播放| 久久久亚洲欧洲日产国码αv| 国产精品理论片| 亚洲丰满少妇videoshd| 国产乱色国产精品免费视频| 99国产精品久| 日韩你懂的电影在线观看| 亚洲国产激情av| 日韩精品乱码免费| 成人在线视频首页| 制服丝袜中文字幕一区| 欧美国产精品专区| 五月婷婷久久丁香| 成人做爰69片免费看网站| 7777精品伊人久久久大香线蕉经典版下载| 欧美成人福利视频| 亚洲精品免费电影| 狠狠色丁香久久婷婷综| 色天使色偷偷av一区二区|