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

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

?? jdphuff.pas

?? DELPHI版的JPEG文件解碼源程序
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
    block := JBLOCK_PTR(MCU_data[blkn]);

    { Encoded data is simply the next bit of the two's-complement DC value }
    {CHECK_BIT_BUFFER(br_state, 1, return FALSE);}
    if (bits_left < 1) then
    begin
      if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,1)) then
      begin
        decode_mcu_DC_refine := FALSE;
        exit;
      end;
      get_buffer := br_state.get_buffer;
      bits_left := br_state.bits_left;
    end;

    {if (GET_BITS(1)) then}
    Dec(bits_left);
    if (int(get_buffer shr bits_left)) and ( pred(1 shl 1) ) <> 0 then
      block^[0] := block^[0] or p1;
    { Note: since we use OR, repeating the assignment later is safe }
  end;

  { Completed MCU, so update state }
  {BITREAD_SAVE_STATE(cinfo,entropy^.bitstate);}
  cinfo^.src^.next_input_byte := br_state.next_input_byte;
  cinfo^.src^.bytes_in_buffer := br_state.bytes_in_buffer;
  entropy^.bitstate.get_buffer := get_buffer;
  entropy^.bitstate.bits_left := bits_left;

  { Account for restart interval (no-op if not using restarts) }
  Dec(entropy^.restarts_to_go);

  decode_mcu_DC_refine := TRUE;
end;


{ MCU decoding for AC successive approximation refinement scan. }

{METHODDEF}
function decode_mcu_AC_refine (cinfo : j_decompress_ptr;
                               var MCU_data : array of JBLOCKROW) : boolean;
label
  undoit, label3;
var
  entropy : phuff_entropy_ptr;
  Se : int;
  p1 : int;     { 1 in the bit position being coded }
  m1 : int;     { -1 in the bit position being coded }
  {register} s, k, r : int;
  EOBRUN : uInt;
  block : JBLOCK_PTR;
  thiscoef : JCOEF_PTR;
  {BITREAD_STATE_VARS;}
  get_buffer : bit_buf_type ; {register}
  bits_left : int; {register}
  br_state : bitread_working_state;

  tbl : d_derived_tbl_ptr;
  num_newnz : int;
  newnz_pos : array[0..DCTSIZE2-1] of int;
var
  pos : int;
var
  nb, look : int; {register}
begin
  entropy := phuff_entropy_ptr (cinfo^.entropy);
  Se := cinfo^.Se;
  p1 := 1 shl cinfo^.Al;	{ 1 in the bit position being coded }
  m1 := (-1) shl cinfo^.Al;	{ -1 in the bit position being coded }

  { Process restart marker if needed; may have to suspend }
  if (cinfo^.restart_interval <> 0) then
  begin
    if (entropy^.restarts_to_go = 0) then
      if (not process_restart(cinfo)) then
      begin
	decode_mcu_AC_refine := FALSE;
        exit;
      end;
  end;

  { If we've run out of data, don't modify the MCU. }
  if not entropy^.pub.insufficient_data then
  begin

    { Load up working state }
    {BITREAD_LOAD_STATE(cinfo,entropy^.bitstate);}
    br_state.cinfo := cinfo;
    br_state.next_input_byte := cinfo^.src^.next_input_byte;
    br_state.bytes_in_buffer := cinfo^.src^.bytes_in_buffer;
    get_buffer := entropy^.bitstate.get_buffer;
    bits_left := entropy^.bitstate.bits_left;

    EOBRUN := entropy^.saved.EOBRUN; { only part of saved state we care about }

    { There is always only one block per MCU }
    block := JBLOCK_PTR(MCU_data[0]);
    tbl := entropy^.ac_derived_tbl;

    { If we are forced to suspend, we must undo the assignments to any newly
      nonzero coefficients in the block, because otherwise we'd get confused
      next time about which coefficients were already nonzero.
      But we need not undo addition of bits to already-nonzero coefficients;
      instead, we can test the current bit position to see if we already did it.}

    num_newnz := 0;

    { initialize coefficient loop counter to start of band }
    k := cinfo^.Ss;

    if (EOBRUN = 0) then
    begin
      while (k <= Se) do
      begin
        {HUFF_DECODE(s, br_state, tbl, goto undoit, label3);}
        if (bits_left < HUFF_LOOKAHEAD) then
        begin
          if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left, 0)) then
            goto undoit;
          get_buffer := br_state.get_buffer;
          bits_left := br_state.bits_left;
          if (bits_left < HUFF_LOOKAHEAD) then
          begin
            nb := 1;
            goto label3;
          end;
        end;
        {look := PEEK_BITS(HUFF_LOOKAHEAD);}
        look := int(get_buffer shr (bits_left -  HUFF_LOOKAHEAD)) and
                       pred(1 shl HUFF_LOOKAHEAD);

        nb := tbl^.look_nbits[look];
        if (nb <> 0) then
        begin
          {DROP_BITS(nb);}
          Dec(bits_left, nb);

          s := tbl^.look_sym[look];
        end
        else
        begin
          nb := HUFF_LOOKAHEAD+1;
      label3:
          s := jpeg_huff_decode(br_state,get_buffer,bits_left,tbl,nb);
          if (s < 0) then
            goto undoit;
          get_buffer := br_state.get_buffer;
          bits_left := br_state.bits_left;
        end;

        r := s shr 4;
        s := s and 15;
        if (s <> 0) then
        begin
	  if (s <> 1) then	{ size of new coef should always be 1 }
	    WARNMS(j_common_ptr(cinfo), JWRN_HUFF_BAD_CODE);
          {CHECK_BIT_BUFFER(br_state, 1, goto undoit);}
          if (bits_left < 1) then
          begin
            if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,1)) then
              goto undoit;
            get_buffer := br_state.get_buffer;
            bits_left := br_state.bits_left;
          end;

          {if (GET_BITS(1)) then}
          Dec(bits_left);
          if (int(get_buffer shr bits_left)) and ( pred(1 shl 1) )<>0 then
	    s := p1		{ newly nonzero coef is positive }
	  else
	    s := m1;		{ newly nonzero coef is negative }
        end
        else
        begin
	  if (r <> 15) then
          begin
	    EOBRUN := 1 shl r;	{ EOBr, run length is 2^r + appended bits }
	    if (r <> 0) then
            begin
	      {CHECK_BIT_BUFFER(br_state, r, goto undoit);}
              if (bits_left < r) then
              begin
                if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,r)) then
                  goto undoit;
                get_buffer := br_state.get_buffer;
                bits_left := br_state.bits_left;
              end;

	      {r := GET_BITS(r);}
              Dec(bits_left, r);
              r := (int(get_buffer shr bits_left)) and ( pred(1 shl r) );

	      Inc(EOBRUN, r);
	    end;
	    break;		{ rest of block is handled by EOB logic }
	  end;
	  { note s := 0 for processing ZRL }
        end;
        { Advance over already-nonzero coefs and r still-zero coefs,
          appending correction bits to the nonzeroes.  A correction bit is 1
          if the absolute value of the coefficient must be increased. }

        repeat
	  thiscoef :=@(block^[jpeg_natural_order[k]]);
	  if (thiscoef^ <> 0) then
          begin
	    {CHECK_BIT_BUFFER(br_state, 1, goto undoit);}
            if (bits_left < 1) then
            begin
              if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,1)) then
                goto undoit;
              get_buffer := br_state.get_buffer;
              bits_left := br_state.bits_left;
            end;

	    {if (GET_BITS(1)) then}
            Dec(bits_left);
            if (int(get_buffer shr bits_left)) and ( pred(1 shl 1) )<>0 then
            begin
	      if ((thiscoef^ and p1) = 0) then
              begin { do nothing if already set it }
	        if (thiscoef^ >= 0) then
		  Inc(thiscoef^, p1)
	        else
		  Inc(thiscoef^, m1);
	      end;
	    end;
	  end
          else
          begin
            Dec(r);
	    if (r < 0) then
	      break;		{ reached target zero coefficient }
	  end;
	  Inc(k);
        until (k > Se);
        if (s <> 0) then
        begin
	  pos := jpeg_natural_order[k];
	  { Output newly nonzero coefficient }
	  block^[pos] := JCOEF (s);
	  { Remember its position in case we have to suspend }
	  newnz_pos[num_newnz] := pos;
          Inc(num_newnz);
        end;
        Inc(k);
      end;
    end;

    if (EOBRUN > 0) then
    begin
      { Scan any remaining coefficient positions after the end-of-band
        (the last newly nonzero coefficient, if any).  Append a correction
        bit to each already-nonzero coefficient.  A correction bit is 1
        if the absolute value of the coefficient must be increased. }

      while (k <= Se) do
      begin
        thiscoef := @(block^[jpeg_natural_order[k]]);
        if (thiscoef^ <> 0) then
        begin
	  {CHECK_BIT_BUFFER(br_state, 1, goto undoit);}
          if (bits_left < 1) then
          begin
            if (not jpeg_fill_bit_buffer(br_state,get_buffer,bits_left,1)) then
              goto undoit;
            get_buffer := br_state.get_buffer;
            bits_left := br_state.bits_left;
          end;

	  {if (GET_BITS(1)) then}
          Dec(bits_left);
          if (int(get_buffer shr bits_left)) and ( pred(1 shl 1) )<>0 then
          begin
	    if ((thiscoef^ and p1) = 0) then
            begin { do nothing if already changed it }
	      if (thiscoef^ >= 0) then
	        Inc(thiscoef^, p1)
	      else
	        Inc(thiscoef^, m1);
	    end;
	  end;
        end;
        Inc(k);
      end;
      { Count one block completed in EOB run }
      Dec(EOBRUN);
    end;

    { Completed MCU, so update state }
    {BITREAD_SAVE_STATE(cinfo,entropy^.bitstate);}
    cinfo^.src^.next_input_byte := br_state.next_input_byte;
    cinfo^.src^.bytes_in_buffer := br_state.bytes_in_buffer;
    entropy^.bitstate.get_buffer := get_buffer;
    entropy^.bitstate.bits_left := bits_left;

    entropy^.saved.EOBRUN := EOBRUN; { only part of saved state we care about }
  end;

  { Account for restart interval (no-op if not using restarts) }
  Dec(entropy^.restarts_to_go);

  decode_mcu_AC_refine := TRUE;
  exit;

undoit:
  { Re-zero any output coefficients that we made newly nonzero }
  while (num_newnz > 0) do
  begin
    Dec(num_newnz);
    block^[newnz_pos[num_newnz]] := 0;
  end;

  decode_mcu_AC_refine := FALSE;
end;


{ Module initialization routine for progressive Huffman entropy decoding. }

{GLOBAL}
procedure jinit_phuff_decoder (cinfo : j_decompress_ptr);
var
  entropy : phuff_entropy_ptr;
  coef_bit_ptr : int_ptr;
  ci, i : int;
begin
  entropy := phuff_entropy_ptr(
    cinfo^.mem^.alloc_small (j_common_ptr (cinfo), JPOOL_IMAGE,
				SIZEOF(phuff_entropy_decoder)) );
  cinfo^.entropy := jpeg_entropy_decoder_ptr (entropy);
  entropy^.pub.start_pass := start_pass_phuff_decoder;

  { Mark derived tables unallocated }
  for i := 0 to pred(NUM_HUFF_TBLS) do
  begin
    entropy^.derived_tbls[i] := NIL;
  end;

  { Create progression status table }
  cinfo^.coef_bits := coef_bits_ptrrow (
     cinfo^.mem^.alloc_small ( j_common_ptr (cinfo), JPOOL_IMAGE,
				cinfo^.num_components*DCTSIZE2*SIZEOF(int)) );
  coef_bit_ptr := @cinfo^.coef_bits^[0][0];
  for ci := 0 to pred(cinfo^.num_components) do
    for i := 0 to pred(DCTSIZE2) do
    begin
      coef_bit_ptr^ := -1;
      Inc(coef_bit_ptr);
    end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区高清| 亚洲综合免费观看高清完整版在线| 成人欧美一区二区三区白人| 日本欧美一区二区三区乱码| 91蜜桃网址入口| 国产精品久久久久久久裸模| 国产精品一区二区久激情瑜伽| 亚洲激情一二三区| www.欧美色图| 一区二区在线观看av| 99精品热视频| 悠悠色在线精品| 欧美日韩日日骚| 日韩国产精品大片| 日韩一级高清毛片| 国产精品资源在线看| 国产丝袜美腿一区二区三区| 国产精品一区二区三区99| 欧美激情艳妇裸体舞| 91免费观看视频在线| 亚洲国产精品精华液网站| 91精品国产综合久久久蜜臀粉嫩 | 亚洲另类在线一区| 欧美日韩国产经典色站一区二区三区 | 亚洲亚洲人成综合网络| 日韩欧美第一区| av在线不卡观看免费观看| 亚洲一区二区三区中文字幕在线 | 99精品国产99久久久久久白柏| 午夜国产精品影院在线观看| 欧美一区二区三区四区高清| 国产乱人伦偷精品视频不卡| 亚洲男同1069视频| 久久久www免费人成精品| 欧美中文字幕一二三区视频| 久久99久国产精品黄毛片色诱| 亚洲码国产岛国毛片在线| 久久综合久久综合久久综合| 欧美性videosxxxxx| 成人免费高清在线观看| 蜜桃一区二区三区在线| 一区二区三区在线视频播放| www久久久久| 精品久久久久久亚洲综合网| 91麻豆蜜桃一区二区三区| 国产乱码精品1区2区3区| 香蕉久久夜色精品国产使用方法| 国产三级精品视频| 国产视频亚洲色图| 欧美激情一区二区| 中文字幕免费不卡在线| 国产日韩欧美不卡| 欧美激情在线看| 国产精品福利一区二区| 欧美韩日一区二区三区四区| 久久影院电视剧免费观看| 26uuu色噜噜精品一区二区| 欧美久久一二三四区| 欧美日韩一区小说| 91精品综合久久久久久| 日韩三级在线免费观看| 久久午夜国产精品| 国产欧美精品一区二区色综合朱莉 | 免费成人美女在线观看| 麻豆一区二区在线| 成人性视频网站| 色88888久久久久久影院野外 | 久久97超碰国产精品超碰| 国内精品视频666| 国产馆精品极品| 99久久久国产精品免费蜜臀| 欧美这里有精品| 精品成人在线观看| 亚洲免费观看视频| 蜜桃精品视频在线观看| 国产成人精品亚洲午夜麻豆| 色婷婷综合久久久久中文一区二区| 色欲综合视频天天天| 精品国产乱码久久久久久夜甘婷婷 | 最好看的中文字幕久久| 国产精品毛片久久久久久久| 日韩精品乱码av一区二区| 国产一区二区在线免费观看| 欧美三级在线视频| 综合色中文字幕| 国产美女精品一区二区三区| 欧美乱妇20p| 亚洲自拍与偷拍| 成人97人人超碰人人99| 精品福利一二区| 青娱乐精品在线视频| 色婷婷精品大视频在线蜜桃视频| 欧美成人一区二区三区在线观看| 亚洲精品高清视频在线观看| 国产成人免费视频精品含羞草妖精| 欧美一区二区三区免费在线看 | 最新热久久免费视频| 国内成人免费视频| xnxx国产精品| 色网站国产精品| 久久久九九九九| 日韩高清一级片| 欧美影院精品一区| 国产精品成人在线观看| 亚洲欧美日韩一区| 国产sm精品调教视频网站| 在线免费不卡电影| 4438x亚洲最大成人网| 国产日韩在线不卡| 成人av资源网站| 国产人久久人人人人爽| 国产乱淫av一区二区三区| 国产精品美女一区二区| 99精品国产视频| 天堂成人国产精品一区| 欧美喷水一区二区| 国产一区二区三区av电影 | 国产自产v一区二区三区c| 国产精品毛片大码女人| 日韩欧美一区二区在线视频| 久久精品国产亚洲aⅴ| 中文字幕成人av| 色吊一区二区三区| 老司机精品视频在线| 欧美激情一二三区| 欧美另类变人与禽xxxxx| 国产成人免费视| 日韩精品亚洲一区二区三区免费| 精品国产免费视频| 91成人免费在线视频| 国产在线视频一区二区三区| 亚洲视频一二三| 国产欧美日韩另类一区| 91麻豆精品国产91久久久久久久久 | 一区二区三区在线观看视频| 精品国产一区二区国模嫣然| www.日韩大片| 国产精品自拍三区| 免费成人在线播放| 亚洲国产视频a| 一区二区三区中文在线观看| 久久这里只有精品6| 正在播放亚洲一区| 欧美性一二三区| 欧美日韩在线不卡| 欧美日韩国产首页在线观看| 91一区二区在线| av男人天堂一区| 91丨九色丨蝌蚪丨老版| 久久国产夜色精品鲁鲁99| 日日夜夜精品免费视频| 亚洲最大成人综合| 日韩精品乱码免费| 免费在线观看精品| 日本不卡视频在线| 国产一区二区在线观看免费| 韩国精品在线观看| 韩国女主播成人在线观看| 久久精品久久综合| 国产原创一区二区三区| 国产酒店精品激情| 成人精品免费网站| 91香蕉视频黄| 欧美日韩国产影片| 久久亚洲精华国产精华液| 国产亚洲1区2区3区| 亚洲精品一二三区| 国产真实精品久久二三区| 99久久亚洲一区二区三区青草| 91一区一区三区| 91精品国产丝袜白色高跟鞋| 欧美激情一区二区三区蜜桃视频| 亚洲精品日日夜夜| 免费久久99精品国产| 99精品国产视频| 久久久美女毛片| 久久er精品视频| 欧美日韩在线亚洲一区蜜芽| 久久亚洲一区二区三区四区| 香蕉加勒比综合久久| 97精品国产97久久久久久久久久久久| 欧美日韩在线综合| 国产精品毛片久久久久久久| 日产国产欧美视频一区精品| 99re6这里只有精品视频在线观看| 日韩精品一区国产麻豆| 亚洲一区二区3| 92国产精品观看| 国产精品狼人久久影院观看方式| 性久久久久久久久| 91啦中文在线观看| 亚洲黄一区二区三区| 国产成a人亚洲| 国产精品热久久久久夜色精品三区| 丝袜美腿亚洲色图| 欧美xxxxx裸体时装秀| av成人老司机| 欧美视频第二页| 午夜精品视频在线观看| 欧美亚洲丝袜传媒另类|