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

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

?? jfdctint.c

?? 常好且全面的jpeg圖像壓縮算法
?? C
字號(hào):
/*
 * jfdctint.c
 *
 * This file contains a slow-but-accurate integer implementation of the
 * forward DCT (Discrete Cosine Transform).
 *
 * A 2-D DCT can be done by 1-D DCT on each row followed by 1-D DCT
 * on each column.  Direct algorithms are also available, but they are
 * much more complex and seem not to be any faster when reduced to code.
 *
 * This implementation is based on an algorithm described in
 *   C. Loeffler, A. Ligtenberg and G. Moschytz, "Practical Fast 1-D DCT
 *   Algorithms with 11 Multiplications", Proc. Int'l. Conf. on Acoustics,
 *   Speech, and Signal Processing 1989 (ICASSP '89), pp. 988-991.
 * The primary algorithm described there uses 11 multiplies and 29 adds.
 * We use their alternate method with 12 multiplies and 32 adds.
 * The advantage of this method is that no data path contains more than one
 * multiplication; this allows a very simple and accurate implementation in
 * scaled fixed-point arithmetic, with a minimal number of shifts.
 */


#include "commondecls.h"


#define CONST_BITS  13
#define PASS1_BITS  2


/* Some C compilers fail to reduce "FIX(constant)" at compile time, thus
 * causing a lot of useless floating-point operations at run time.
 * To get around this we use the following pre-calculated constants.
 * If you change CONST_BITS you may want to add appropriate values.
 * (With a reasonable C compiler, you can just rely on the FIX() macro...)
 */


#define FIX_0_298631336  ((INT32)  2446)	/* FIX(0.298631336) */
#define FIX_0_390180644  ((INT32)  3196)	/* FIX(0.390180644) */
#define FIX_0_541196100  ((INT32)  4433)	/* FIX(0.541196100) */
#define FIX_0_765366865  ((INT32)  6270)	/* FIX(0.765366865) */
#define FIX_0_899976223  ((INT32)  7373)	/* FIX(0.899976223) */
#define FIX_1_175875602  ((INT32)  9633)	/* FIX(1.175875602) */
#define FIX_1_501321110  ((INT32)  12299)	/* FIX(1.501321110) */
#define FIX_1_847759065  ((INT32)  15137)	/* FIX(1.847759065) */
#define FIX_1_961570560  ((INT32)  16069)	/* FIX(1.961570560) */
#define FIX_2_053119869  ((INT32)  16819)	/* FIX(2.053119869) */
#define FIX_2_562915447  ((INT32)  20995)	/* FIX(2.562915447) */
#define FIX_3_072711026  ((INT32)  25172)	/* FIX(3.072711026) */


/* Multiply an INT32 variable by an INT32 constant to yield an INT32 result.
 * For 8-bit samples with the recommended scaling, all the variable
 * and constant values involved are no more than 16 bits wide, so a
 * 16x16->32 bit multiply can be used instead of a full 32x32 multiply.
 * For 12-bit samples, a full 32-bit multiplication will be needed.
 */


#define MULTIPLY(var,const)  ((var) * (const))



/*
 * Perform the forward DCT on one block of samples.
 */

void
jpeg_fdct_islow (DCTELEM * data)
{
  INT32 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7;
  INT32 tmp10, tmp11, tmp12, tmp13;
  INT32 z1, z2, z3, z4, z5;
  DCTELEM *dataptr;
  int ctr;
  SHIFT_TEMPS

  /* Pass 1: process rows. */
  /* Note results are scaled up by sqrt(8) compared to a true DCT; */
  /* furthermore, we scale the results by 2**PASS1_BITS. */

  dataptr = data;
  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
    tmp0 = dataptr[0] + dataptr[7];
    tmp7 = dataptr[0] - dataptr[7];
    tmp1 = dataptr[1] + dataptr[6];
    tmp6 = dataptr[1] - dataptr[6];
    tmp2 = dataptr[2] + dataptr[5];
    tmp5 = dataptr[2] - dataptr[5];
    tmp3 = dataptr[3] + dataptr[4];
    tmp4 = dataptr[3] - dataptr[4];
    
    /* Even part per LL&M figure 1 --- note that published figure is faulty;
     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
     */
    
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    
    dataptr[0] = (DCTELEM) ((tmp10 + tmp11) << PASS1_BITS);
    dataptr[4] = (DCTELEM) ((tmp10 - tmp11) << PASS1_BITS);
    
    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
    dataptr[2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
				   CONST_BITS-PASS1_BITS);
    dataptr[6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
				   CONST_BITS-PASS1_BITS);
    
    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
     * cK represents cos(K*pi/16).
     * i0..i3 in the paper are tmp4..tmp7 here.
     */
    
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
    
    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
    
    z3 += z5;
    z4 += z5;
    
    dataptr[7] = (DCTELEM) DESCALE(tmp4 + z1 + z3, CONST_BITS-PASS1_BITS);
    dataptr[5] = (DCTELEM) DESCALE(tmp5 + z2 + z4, CONST_BITS-PASS1_BITS);
    dataptr[3] = (DCTELEM) DESCALE(tmp6 + z2 + z3, CONST_BITS-PASS1_BITS);
    dataptr[1] = (DCTELEM) DESCALE(tmp7 + z1 + z4, CONST_BITS-PASS1_BITS);
    
    dataptr += DCTSIZE;		/* advance pointer to next row */
  }

  /* Pass 2: process columns.
   * We remove the PASS1_BITS scaling, but leave the results scaled up
   * by an overall factor of 8.
   */

  dataptr = data;
  for (ctr = DCTSIZE-1; ctr >= 0; ctr--) {
    tmp0 = dataptr[DCTSIZE*0] + dataptr[DCTSIZE*7];
    tmp7 = dataptr[DCTSIZE*0] - dataptr[DCTSIZE*7];
    tmp1 = dataptr[DCTSIZE*1] + dataptr[DCTSIZE*6];
    tmp6 = dataptr[DCTSIZE*1] - dataptr[DCTSIZE*6];
    tmp2 = dataptr[DCTSIZE*2] + dataptr[DCTSIZE*5];
    tmp5 = dataptr[DCTSIZE*2] - dataptr[DCTSIZE*5];
    tmp3 = dataptr[DCTSIZE*3] + dataptr[DCTSIZE*4];
    tmp4 = dataptr[DCTSIZE*3] - dataptr[DCTSIZE*4];
    
    /* Even part per LL&M figure 1 --- note that published figure is faulty;
     * rotator "sqrt(2)*c1" should be "sqrt(2)*c6".
     */
    
    tmp10 = tmp0 + tmp3;
    tmp13 = tmp0 - tmp3;
    tmp11 = tmp1 + tmp2;
    tmp12 = tmp1 - tmp2;
    
    dataptr[DCTSIZE*0] = (DCTELEM) DESCALE(tmp10 + tmp11, PASS1_BITS);
    dataptr[DCTSIZE*4] = (DCTELEM) DESCALE(tmp10 - tmp11, PASS1_BITS);
    
    z1 = MULTIPLY(tmp12 + tmp13, FIX_0_541196100);
    dataptr[DCTSIZE*2] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp13, FIX_0_765366865),
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*6] = (DCTELEM) DESCALE(z1 + MULTIPLY(tmp12, - FIX_1_847759065),
					   CONST_BITS+PASS1_BITS);
    
    /* Odd part per figure 8 --- note paper omits factor of sqrt(2).
     * cK represents cos(K*pi/16).
     * i0..i3 in the paper are tmp4..tmp7 here.
     */
    
    z1 = tmp4 + tmp7;
    z2 = tmp5 + tmp6;
    z3 = tmp4 + tmp6;
    z4 = tmp5 + tmp7;
    z5 = MULTIPLY(z3 + z4, FIX_1_175875602); /* sqrt(2) * c3 */
    
    tmp4 = MULTIPLY(tmp4, FIX_0_298631336); /* sqrt(2) * (-c1+c3+c5-c7) */
    tmp5 = MULTIPLY(tmp5, FIX_2_053119869); /* sqrt(2) * ( c1+c3-c5+c7) */
    tmp6 = MULTIPLY(tmp6, FIX_3_072711026); /* sqrt(2) * ( c1+c3+c5-c7) */
    tmp7 = MULTIPLY(tmp7, FIX_1_501321110); /* sqrt(2) * ( c1+c3-c5-c7) */
    z1 = MULTIPLY(z1, - FIX_0_899976223); /* sqrt(2) * (c7-c3) */
    z2 = MULTIPLY(z2, - FIX_2_562915447); /* sqrt(2) * (-c1-c3) */
    z3 = MULTIPLY(z3, - FIX_1_961570560); /* sqrt(2) * (-c3-c5) */
    z4 = MULTIPLY(z4, - FIX_0_390180644); /* sqrt(2) * (c5-c3) */
    
    z3 += z5;
    z4 += z5;
    
    dataptr[DCTSIZE*7] = (DCTELEM) DESCALE(tmp4 + z1 + z3,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*5] = (DCTELEM) DESCALE(tmp5 + z2 + z4,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*3] = (DCTELEM) DESCALE(tmp6 + z2 + z3,
					   CONST_BITS+PASS1_BITS);
    dataptr[DCTSIZE*1] = (DCTELEM) DESCALE(tmp7 + z1 + z4,
					   CONST_BITS+PASS1_BITS);
    
    dataptr++;			/* advance pointer to next column */
  }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区四区五区入口| 亚洲天堂成人在线观看| 午夜精品久久久久久久99水蜜桃| 欧美性猛交一区二区三区精品 | 亚洲精品在线一区二区| 精品一区二区三区香蕉蜜桃| 2欧美一区二区三区在线观看视频| 精品一区二区三区香蕉蜜桃| 国产欧美一区二区精品忘忧草| 成人毛片老司机大片| 亚洲视频免费在线| 欧美日韩午夜影院| 久久精品国产第一区二区三区| 久久久国际精品| 波多野结衣亚洲一区| 亚洲美女视频在线观看| 欧美精品亚洲一区二区在线播放| 青青国产91久久久久久| 国产午夜三级一区二区三| 91蜜桃网址入口| 日韩主播视频在线| 国产欧美1区2区3区| 欧美无人高清视频在线观看| 久久99精品国产.久久久久久| 国产精品嫩草影院av蜜臀| 91国模大尺度私拍在线视频| 男男视频亚洲欧美| 国产精品每日更新在线播放网址 | 午夜精品福利视频网站| 精品国产伦理网| 91在线porny国产在线看| 日本sm残虐另类| 亚洲欧美另类久久久精品2019| 欧美一级日韩不卡播放免费| 成人av动漫在线| 久久精品国产亚洲5555| 一区二区三区久久| 久久女同精品一区二区| 欧美在线观看视频一区二区三区| 国产一区二区三区| 亚洲成人午夜影院| 中文字幕一区二区三区在线不卡| 欧美精品tushy高清| 欧美男女性生活在线直播观看 | 久久99国产精品久久99果冻传媒| 亚洲欧洲成人av每日更新| 欧美一区二区三区四区久久| 99久久精品免费精品国产| 免费不卡在线观看| 亚洲午夜电影网| 综合欧美亚洲日本| 久久综合色天天久久综合图片| 91久久精品一区二区三区| 国产精品一区二区黑丝| 日本怡春院一区二区| 一区二区三区在线观看动漫| 久久精品在这里| 精品欧美乱码久久久久久| 欧美日韩免费在线视频| 色欧美88888久久久久久影院| 国产精品综合在线视频| 男男视频亚洲欧美| 日本最新不卡在线| 亚洲综合999| 亚洲欧美区自拍先锋| 国产精品美女久久久久久| 久久精品一区二区三区不卡牛牛| 91精品国产综合久久久久| 在线观看日韩国产| 色菇凉天天综合网| 91视频在线看| 色综合久久中文综合久久牛| 成人激情免费网站| 成人一级片在线观看| 国产精品资源网| 国产麻豆精品久久一二三| 美国av一区二区| 久久成人免费电影| 精品无人码麻豆乱码1区2区 | 国产精品一二三在| 精品午夜一区二区三区在线观看| 麻豆精品一二三| 精品在线一区二区| 国产在线播放一区| 国产乱人伦偷精品视频不卡| 国产精品99久久久久久久女警| 韩日欧美一区二区三区| 韩国精品主播一区二区在线观看| 精品一区二区三区av| 国产美女在线精品| 成人免费视频网站在线观看| 成人性生交大片免费看视频在线 | 久久99精品国产.久久久久| 久久国产生活片100| 国产精品一线二线三线| 国产凹凸在线观看一区二区| 成人avav影音| 欧美亚男人的天堂| 欧美一区日韩一区| 欧美精品一区二区三区在线播放| 亚洲国产精品精华液ab| 亚洲人精品午夜| 日日欢夜夜爽一区| 国产成人午夜精品影院观看视频 | 亚洲大型综合色站| 免费在线观看成人| 岛国精品在线观看| 欧美影视一区在线| 欧美不卡一区二区三区四区| 蜜桃精品视频在线| 成人免费视频网站在线观看| 91福利国产精品| 日韩精品一区二区三区中文不卡 | 欧美精品一区二区三区蜜桃视频| 久久精品欧美一区二区三区麻豆| 亚洲同性gay激情无套| 水蜜桃久久夜色精品一区的特点| 激情亚洲综合在线| 97se亚洲国产综合自在线不卡| 欧美色综合影院| 国产日韩亚洲欧美综合| 亚洲综合在线视频| 激情亚洲综合在线| 日本高清不卡视频| 国产性做久久久久久| 艳妇臀荡乳欲伦亚洲一区| 国产美女在线观看一区| 欧美视频日韩视频| 国产精品伦理在线| 久久精品久久精品| 欧美怡红院视频| 中文字幕免费不卡| 捆绑调教一区二区三区| 欧美亚洲综合一区| 国产精品久久久久久久久免费樱桃| 亚洲综合色区另类av| 粗大黑人巨茎大战欧美成人| 欧美精品日日鲁夜夜添| 亚洲丝袜制服诱惑| 国产成人无遮挡在线视频| 3751色影院一区二区三区| 国产精品久久久久aaaa樱花| 久久成人免费网| 91精品婷婷国产综合久久竹菊| 亚洲另类春色国产| 99亚偷拍自图区亚洲| 久久久亚洲午夜电影| 五月天亚洲婷婷| 欧美日韩一区二区三区不卡| 日韩一区在线免费观看| 丁香一区二区三区| 久久久综合视频| 极品少妇xxxx精品少妇| 欧美一区二区三区日韩视频| 亚洲一区二区三区国产| 色综合天天综合网天天看片| 国产精品久久777777| 国产一区二区毛片| 精品国免费一区二区三区| 奇米精品一区二区三区在线观看一| 欧美综合欧美视频| 亚洲在线成人精品| 91久久免费观看| 亚洲综合激情网| 欧美日韩精品欧美日韩精品一综合| 尤物视频一区二区| 色诱亚洲精品久久久久久| 亚洲欧美一区二区不卡| 99re8在线精品视频免费播放| 中文字幕在线观看一区二区| 大白屁股一区二区视频| 国产精品免费人成网站| 成人av网站在线观看| 国产精品高潮久久久久无| caoporm超碰国产精品| 日韩美女视频一区二区| 色久优优欧美色久优优| 亚洲综合一区二区三区| 欧美年轻男男videosbes| 日韩国产精品久久| 日韩一区二区电影在线| 紧缚捆绑精品一区二区| 国产欧美日韩中文久久| 99re这里只有精品视频首页| 亚洲精品视频免费看| 欧美日韩国产精品自在自线| 免费在线观看日韩欧美| 久久综合999| 99久久综合色| av在线播放不卡| 亚洲欧洲精品一区二区精品久久久| 日本韩国欧美一区| 日本不卡在线视频| 国产女人18毛片水真多成人如厕| 99国产精品国产精品毛片| 亚洲欧美区自拍先锋| 91精品国产一区二区| 国产一区二区免费看| 亚洲欧洲综合另类| 91精品国产日韩91久久久久久|