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

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

?? jfdctfst.pas

?? 用pascal寫的jpeg codec, 測試過的
?? 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. }

{$ifdef DCTSIZE != 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
  ONE   = INT32(1);
  CONST_SCALE = (ONE 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 + (ONE 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一区二区三区免费野_久草精品视频
国产成人午夜视频| 欧美午夜电影网| 国产**成人网毛片九色| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产一区二区三区综合| 老司机精品视频导航| 成人精品免费网站| 欧美欧美欧美欧美| 久久久久久久久久久99999| 亚洲欧美综合网| 日韩av中文字幕一区二区三区 | 调教+趴+乳夹+国产+精品| 久久精品国产成人一区二区三区| 激情五月播播久久久精品| av一区二区三区在线| 欧美精品色一区二区三区| 国产色91在线| 日日嗨av一区二区三区四区| 国产白丝网站精品污在线入口| 91行情网站电视在线观看高清版| 精品乱人伦一区二区三区| 亚洲三级久久久| 国产麻豆一精品一av一免费| 欧美日韩国产另类不卡| 久久久亚洲精品一区二区三区| 亚洲国产欧美在线| 国产成人精品一区二区三区四区 | 精品一区二区免费视频| 99国产一区二区三精品乱码| 日韩欧美亚洲国产另类| 亚洲午夜成aⅴ人片| 欧美午夜免费电影| 乱中年女人伦av一区二区| kk眼镜猥琐国模调教系列一区二区| 欧美精品乱人伦久久久久久| 亚洲欧美日韩人成在线播放| 国产自产高清不卡| 欧美丰满一区二区免费视频| 久久精品日产第一区二区三区高清版 | 国产视频一区在线观看| 亚洲在线视频免费观看| 97久久久精品综合88久久| 国产视频一区在线播放| 国产资源精品在线观看| 欧美一区二区黄色| 亚洲国产日韩在线一区模特| 色综合天天狠狠| 久久嫩草精品久久久精品一| 奇米影视一区二区三区| 在线电影一区二区三区| 亚洲不卡在线观看| 欧美日韩精品欧美日韩精品| 夜夜嗨av一区二区三区中文字幕| 国产酒店精品激情| 久久久久久久久久电影| 国产老肥熟一区二区三区| 欧美tk丨vk视频| 激情综合一区二区三区| 久久综合网色—综合色88| 国产一区二区伦理| 中文字幕精品一区二区精品绿巨人| 狠狠色狠狠色综合| 久久精品视频在线看| 成人黄色小视频| 日韩码欧中文字| 精品视频一区三区九区| 青青草伊人久久| 久久亚洲一区二区三区四区| 国产精品香蕉一区二区三区| 日韩一卡二卡三卡国产欧美| 久久av资源网| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美日韩在线三级| 五月婷婷激情综合网| 日韩免费观看高清完整版 | 国产亚洲短视频| zzijzzij亚洲日本少妇熟睡| 夜夜揉揉日日人人青青一国产精品 | 久久女同性恋中文字幕| 成人在线视频一区二区| 尤物视频一区二区| 日韩视频一区在线观看| 国内精品嫩模私拍在线| 亚洲三级在线观看| 日韩欧美在线网站| 99久久精品国产一区二区三区| 午夜精品在线看| 国产日韩欧美一区二区三区乱码 | 91国产成人在线| 久久电影网电视剧免费观看| 国产精品午夜久久| 欧美喷水一区二区| 成人动漫精品一区二区| 日日摸夜夜添夜夜添国产精品| 中文字幕第一页久久| 欧美日韩国产乱码电影| 成人免费看片app下载| 日韩精品色哟哟| 亚洲另类一区二区| 久久精品人人做人人爽人人| 成人av电影免费观看| 日本免费在线视频不卡一不卡二| 欧美激情艳妇裸体舞| 777欧美精品| av电影在线观看一区| 激情综合色丁香一区二区| 一区二区高清在线| 日本一区二区视频在线观看| 欧美一区二区私人影院日本| 色香蕉久久蜜桃| 成人免费视频播放| 国产在线一区观看| 日韩福利视频网| 亚洲黄色av一区| 亚洲一区二区三区在线看| 樱桃国产成人精品视频| 亚洲精品第1页| 视频一区二区三区中文字幕| 亚洲成人1区2区| 三级一区在线视频先锋| 天堂成人国产精品一区| 日韩av一级电影| 日本午夜一区二区| 麻豆精品精品国产自在97香蕉| 视频在线在亚洲| 九色porny丨国产精品| 国产乱色国产精品免费视频| 国产激情偷乱视频一区二区三区| 国产精品亚洲综合一区在线观看| 国产福利精品一区二区| 成人激情免费视频| 在线亚洲人成电影网站色www| 91精品91久久久中77777| 欧美裸体bbwbbwbbw| 日韩女优av电影| 国产欧美日韩亚州综合| 亚洲女女做受ⅹxx高潮| 亚洲国产成人高清精品| 蜜臀精品久久久久久蜜臀| 国产一区二区三区日韩| 成人精品国产免费网站| 色老汉一区二区三区| 91精品国产丝袜白色高跟鞋| 2020国产成人综合网| 日韩一区中文字幕| 日韩精品欧美成人高清一区二区| 久久99精品久久只有精品| 成人午夜电影久久影院| 欧美日韩大陆一区二区| 久久精品视频一区| 亚洲成人免费看| 国产一区在线观看视频| 91成人在线观看喷潮| 精品电影一区二区三区 | 亚洲一区二区三区中文字幕| 蜜臀av亚洲一区中文字幕| av亚洲精华国产精华精华| 欧美日韩在线播放三区四区| 久久奇米777| 亚洲18色成人| 成人免费毛片a| 日韩一区二区三区免费看| 国产精品毛片大码女人| 日韩高清在线一区| 成年人网站91| 日韩欧美另类在线| 亚洲最大的成人av| 国产精品一色哟哟哟| 在线精品亚洲一区二区不卡| 欧美变态凌虐bdsm| 亚洲mv在线观看| 成人免费看的视频| 久久综合色婷婷| 天堂一区二区在线| 91精品福利视频| 国产精品久线观看视频| 久色婷婷小香蕉久久| 欧美日韩综合在线| 亚洲视频1区2区| 成人黄色在线网站| 国产欧美精品在线观看| 精品一区二区在线免费观看| 欧美日韩亚洲综合在线| 亚洲美腿欧美偷拍| 成人精品亚洲人成在线| 久久新电视剧免费观看| 亚洲高清免费视频| 在线观看免费视频综合| 亚洲欧美成aⅴ人在线观看| 国产精品18久久久久久久网站| 日韩欧美123| 久久er99精品| wwwwww.欧美系列| 久久国产精品99精品国产| 欧美一区二区精品在线| 日韩av中文字幕一区二区三区| 欧美日韩国产欧美日美国产精品| 一区二区三区精品视频在线| jizzjizzjizz欧美| 1024成人网|