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

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

?? jfdctfst.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
字號:
Unit JFDctFst;

{ This file contains a fast, not so 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 Arai, Agui, and Nakajima's algorithm for
  scaled DCT.  Their original paper (Trans. IEICE E-71(11):1095) is in
  Japanese, but the algorithm is described in the Pennebaker & Mitchell
  JPEG textbook (see REFERENCES section in file README).  The following code
  is based directly on figure 4-8 in P&M.
  While an 8-point DCT cannot be done in less than 11 multiplies, it is
  possible to arrange the computation so that many of the multiplies are
  simple scalings of the final outputs.  These multiplies can then be
  folded into the multiplications or divisions by the JPEG quantization
  table entries.  The AA&N method leaves only 5 multiplies and 29 adds
  to be done in the DCT itself.
  The primary disadvantage of this method is that with fixed-point math,
  accuracy is lost due to imprecise representation of the scaled
  quantization values.  The smaller the quantization table entry, the less
  precise the scaled value, so this implementation does worse with high-
  quality-setting files than with low-quality ones. }

{ Original: jfdctfst.c ; Copyright (C) 1994-1996, Thomas G. Lane. }


interface

{$I jconfig.inc}

uses
  jmorecfg,
  jinclude,
  jpeglib,
  jdct;   	{ Private declarations for DCT subsystem }


{ Perform the forward DCT on one block of samples. }

{GLOBAL}
procedure jpeg_fdct_ifast (var data : array of DCTELEM);

implementation

{ This module is specialized to the case DCTSIZE = 8. }

{$ifndef DCTSIZE_IS_8}
  Sorry, this code only copes with 8x8 DCTs. { deliberate syntax err }
{$endif}


{ Scaling decisions are generally the same as in the LL&M algorithm;
  see jfdctint.c for more details.  However, we choose to descale
  (right shift) multiplication products as soon as they are formed,
  rather than carrying additional fractional bits into subsequent additions.
  This compromises accuracy slightly, but it lets us save a few shifts.
  More importantly, 16-bit arithmetic is then adequate (for 8-bit samples)
  everywhere except in the multiplications proper; this saves a good deal
  of work on 16-bit-int machines.

  Again to save a few shifts, the intermediate results between pass 1 and
  pass 2 are not upscaled, but are represented only to integral precision.

  A final compromise is to represent the multiplicative constants to only
  8 fractional bits, rather than 13.  This saves some shifting work on some
  machines, and may also reduce the cost of multiplication (since there
  are fewer one-bits in the constants). }

const
  CONST_BITS = 8;
const
  CONST_SCALE = (INT32(1) shl CONST_BITS);


const
  FIX_0_382683433 = INT32(Round(CONST_SCALE * 0.382683433)); {98}
  FIX_0_541196100 = INT32(Round(CONST_SCALE * 0.541196100)); {139}
  FIX_0_707106781 = INT32(Round(CONST_SCALE * 0.707106781)); {181}
  FIX_1_306562965 = INT32(Round(CONST_SCALE * 1.306562965)); {334}

{ 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. }

function DESCALE(x : INT32; n : int) : INT32;
var
  shift_temp : INT32;
begin
{ We can gain a little more speed, with a further compromise in accuracy,
  by omitting the addition in a descaling shift.  This yields an incorrectly
  rounded result half the time... }
{$ifndef USE_ACCURATE_ROUNDING}
  shift_temp := x;
{$else}
  shift_temp := x + (INT32(1) shl (n-1));
{$endif}

{$ifdef RIGHT_SHIFT_IS_UNSIGNED}
  if shift_temp < 0 then
    Descale :=  (shift_temp shr n) or ((not INT32(0)) shl (32-n))
  else
{$endif}
    Descale :=  (shift_temp shr n);
end;

{ Multiply a DCTELEM variable by an INT32 constant, and immediately
  descale to yield a DCTELEM result. }


   function MULTIPLY(X : DCTELEM; Y: INT32): DCTELEM;
   begin
     Multiply := DeScale((X) * (Y), CONST_BITS);
   end;


{ Perform the forward DCT on one block of samples. }

{GLOBAL}
procedure jpeg_fdct_ifast (var data : array of DCTELEM);
type
  PWorkspace = ^TWorkspace;
  TWorkspace = array [0..DCTSIZE2-1] of DCTELEM;
var
  tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7 : DCTELEM;
  tmp10, tmp11, tmp12, tmp13 : DCTELEM;
  z1, z2, z3, z4, z5, z11, z13 : DCTELEM;
  dataptr :  PWorkspace;
  ctr : int;
  {SHIFT_TEMPS}
begin
  { Pass 1: process rows. }

  dataptr := PWorkspace(@data);
  for ctr := DCTSIZE-1 downto 0 do
  begin
    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 }

    tmp10 := tmp0 + tmp3;	{ phase 2 }
    tmp13 := tmp0 - tmp3;
    tmp11 := tmp1 + tmp2;
    tmp12 := tmp1 - tmp2;

    dataptr^[0] := tmp10 + tmp11; { phase 3 }
    dataptr^[4] := tmp10 - tmp11;

    z1 := MULTIPLY(tmp12 + tmp13, FIX_0_707106781); { c4 }
    dataptr^[2] := tmp13 + z1;	{ phase 5 }
    dataptr^[6] := tmp13 - z1;

    { Odd part }

    tmp10 := tmp4 + tmp5;	{ phase 2 }
    tmp11 := tmp5 + tmp6;
    tmp12 := tmp6 + tmp7;

    { The rotator is modified from fig 4-8 to avoid extra negations. }
    z5 := MULTIPLY(tmp10 - tmp12, FIX_0_382683433); { c6 }
    z2 := MULTIPLY(tmp10, FIX_0_541196100) + z5; { c2-c6 }
    z4 := MULTIPLY(tmp12, FIX_1_306562965) + z5; { c2+c6 }
    z3 := MULTIPLY(tmp11, FIX_0_707106781); { c4 }

    z11 := tmp7 + z3;		{ phase 5 }
    z13 := tmp7 - z3;

    dataptr^[5] := z13 + z2;	{ phase 6 }
    dataptr^[3] := z13 - z2;
    dataptr^[1] := z11 + z4;
    dataptr^[7] := z11 - z4;

    Inc(DCTELEMPTR(dataptr), DCTSIZE);	{ advance pointer to next row }
  end;

  { Pass 2: process columns. }

  dataptr := PWorkspace(@data);
  for ctr := DCTSIZE-1 downto 0 do
  begin
    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 }

    tmp10 := tmp0 + tmp3;	{ phase 2 }
    tmp13 := tmp0 - tmp3;
    tmp11 := tmp1 + tmp2;
    tmp12 := tmp1 - tmp2;

    dataptr^[DCTSIZE*0] := tmp10 + tmp11; { phase 3 }
    dataptr^[DCTSIZE*4] := tmp10 - tmp11;

    z1 := MULTIPLY(tmp12 + tmp13, FIX_0_707106781); { c4 }
    dataptr^[DCTSIZE*2] := tmp13 + z1; { phase 5 }
    dataptr^[DCTSIZE*6] := tmp13 - z1;

    { Odd part }

    tmp10 := tmp4 + tmp5;	{ phase 2 }
    tmp11 := tmp5 + tmp6;
    tmp12 := tmp6 + tmp7;

    { The rotator is modified from fig 4-8 to avoid extra negations. }
    z5 := MULTIPLY(tmp10 - tmp12, FIX_0_382683433); { c6 }
    z2 := MULTIPLY(tmp10, FIX_0_541196100) + z5; { c2-c6 }
    z4 := MULTIPLY(tmp12, FIX_1_306562965) + z5; { c2+c6 }
    z3 := MULTIPLY(tmp11, FIX_0_707106781); { c4 }

    z11 := tmp7 + z3;		{ phase 5 }
    z13 := tmp7 - z3;

    dataptr^[DCTSIZE*5] := z13 + z2; { phase 6 }
    dataptr^[DCTSIZE*3] := z13 - z2;
    dataptr^[DCTSIZE*1] := z11 + z4;
    dataptr^[DCTSIZE*7] := z11 - z4;

    Inc(DCTELEMPTR(dataptr));	{ advance pointer to next column }
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩色一区| 亚洲精品欧美在线| 精品福利二区三区| 欧美一区二区不卡视频| 91精品国产综合久久久久久| 欧美精品免费视频| 欧美美女激情18p| 欧美午夜精品久久久久久超碰 | 欧美mv日韩mv| 日韩欧美一区电影| 日韩欧美一区电影| 久久综合色之久久综合| 精品成人免费观看| 国产日韩欧美a| 日韩伦理av电影| 亚洲精品免费在线观看| 亚洲一区在线观看免费| 亚洲成人动漫av| 日韩国产成人精品| 极品美女销魂一区二区三区| 国产一级精品在线| 不卡大黄网站免费看| 99久久99久久精品国产片果冻| 色综合网站在线| 欧美精选午夜久久久乱码6080| 91精品国产综合久久福利| 欧美成人欧美edvon| 国产视频一区在线播放| 成人欧美一区二区三区1314| 亚洲黄色av一区| 日本亚洲三级在线| 国产成人精品一区二区三区网站观看| voyeur盗摄精品| 欧美三片在线视频观看| 精品美女在线播放| 欧美国产日韩亚洲一区| 亚洲精品国产精品乱码不99| 丝袜美腿成人在线| 国内精品国产成人国产三级粉色| a亚洲天堂av| 欧美精品1区2区| 国产蜜臀av在线一区二区三区| 国产精品乱码一区二三区小蝌蚪| 亚洲一区影音先锋| 韩国精品免费视频| 欧美极品美女视频| 亚洲图片欧美色图| 激情深爱一区二区| 91蜜桃在线观看| 欧美一区二区三区影视| 国产精品成人免费在线| 日韩黄色片在线观看| 成人午夜av影视| 91麻豆精品91久久久久久清纯| 国产精品国产三级国产aⅴ原创| 午夜av区久久| 成人av网站大全| 日韩欧美精品在线视频| 亚洲欧美日韩在线不卡| 国产一区二区精品久久99| 欧美亚洲综合另类| 国产精品热久久久久夜色精品三区| 午夜精品福利在线| 99精品在线免费| www成人在线观看| 天堂成人免费av电影一区| 成人avav影音| 久久精品在线观看| 日韩精品免费视频人成| 色狠狠av一区二区三区| 欧美国产禁国产网站cc| 久久国产人妖系列| 欧美精选在线播放| 亚洲综合激情网| 99精品久久只有精品| 精品电影一区二区| 天天色综合成人网| 欧美综合色免费| 国产精品理伦片| 国产成人亚洲综合a∨猫咪| 欧美一级视频精品观看| 亚洲成人先锋电影| 91亚洲精品久久久蜜桃| 亚洲国产经典视频| 国产精品一区免费在线观看| 日韩视频永久免费| 日本麻豆一区二区三区视频| 欧美日韩国产乱码电影| 亚洲综合视频在线| 93久久精品日日躁夜夜躁欧美| 国产亚洲精品aa午夜观看| 国产在线一区二区综合免费视频| 91精品国产欧美一区二区| 午夜影院在线观看欧美| 欧美在线观看一区| 亚洲国产综合在线| 欧美无乱码久久久免费午夜一区| 亚洲乱码日产精品bd| 91小视频在线观看| 亚洲女性喷水在线观看一区| www.亚洲激情.com| 亚洲图片激情小说| 91麻豆国产在线观看| 亚洲欧洲日韩女同| 一本久久综合亚洲鲁鲁五月天| 国产精品成人午夜| 色婷婷综合五月| 一区二区三区四区国产精品| 色屁屁一区二区| 亚洲国产综合在线| 91精品婷婷国产综合久久性色| 日韩不卡一区二区三区 | 成人18视频在线播放| 欧美国产视频在线| 91色婷婷久久久久合中文| 成人免费一区二区三区在线观看| av网站免费线看精品| 亚洲视频资源在线| 欧美午夜一区二区三区免费大片| 亚洲6080在线| www国产成人免费观看视频 深夜成人网| 国产一区二区看久久| 中国av一区二区三区| 一本久久a久久免费精品不卡| 亚洲综合激情网| 日韩欧美视频在线| 成人免费av在线| 一区二区三区四区视频精品免费| 欧美电影在线免费观看| 激情久久五月天| 国产精品理论片在线观看| 欧美天堂一区二区三区| 日韩在线观看一区二区| 精品国产网站在线观看| 99久久久国产精品| 奇米综合一区二区三区精品视频| 337p粉嫩大胆色噜噜噜噜亚洲| av午夜精品一区二区三区| 性做久久久久久| 国产日韩精品一区二区三区在线| 色综合一区二区三区| 美女任你摸久久| 中文字幕一区二区5566日韩| 欧美午夜免费电影| 国产精品亚洲第一区在线暖暖韩国| 亚洲免费观看在线观看| 日韩欧美自拍偷拍| 不卡一区在线观看| 日本亚洲天堂网| 亚洲视频一二区| 精品久久久久久久人人人人传媒 | 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 中文字幕在线不卡一区二区三区| 欧美色爱综合网| 成人性视频免费网站| 日本不卡的三区四区五区| 中文字幕欧美激情| 欧美巨大另类极品videosbest | 精品国产精品网麻豆系列 | 亚洲欧洲综合另类| 精品国内二区三区| 欧美午夜精品久久久久久超碰| 国产精品1024| 丝袜亚洲另类丝袜在线| 国产精品久久久久国产精品日日| 777午夜精品免费视频| 91在线视频播放| 国产精品一区在线| 免费在线视频一区| 亚洲综合无码一区二区| 国产日本一区二区| 欧美电影免费提供在线观看| 欧美在线观看视频一区二区三区| 国产成人av资源| 7777精品伊人久久久大香线蕉| 不卡高清视频专区| 国产在线精品一区二区不卡了 | 美女mm1313爽爽久久久蜜臀| 一区二区三区四区视频精品免费| 久久夜色精品国产欧美乱极品| 欧美精品久久天天躁| 色婷婷亚洲综合| 成人动漫一区二区三区| 国产精品自拍网站| 美女精品自拍一二三四| 亚洲动漫第一页| 亚洲激情成人在线| 中文字幕一区av| 国产精品久久久久影院老司| 久久久久久久久久久黄色| 日韩一级二级三级| 精品视频在线免费看| 色天使久久综合网天天| 91色|porny| 99久久99久久久精品齐齐| 成人av高清在线| 99久久精品免费看国产| 不卡av电影在线播放| 本田岬高潮一区二区三区| 国产成人av一区二区|