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

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

?? rangecoder.h

?? lzma 壓縮 4.06version
?? H
字號:
// Compress/RangeCoder/RangeCoder.h

#ifndef __COMPRESS_RANGECODER_H
#define __COMPRESS_RANGECODER_H

#include "../../Common/InBuffer.h"
#include "../../Common/OutBuffer.h"

namespace NCompress {
namespace NRangeCoder {

const int kNumTopBits = 24;
const UInt32 kTopValue = (1 << kNumTopBits);

class CEncoder
{
  UInt64 Low;
  UInt32 Range;
  UInt32 _ffNum;
  Byte _cache;
public:
  COutBuffer Stream;
  bool Create(UInt32 bufferSize) { return Stream.Create(bufferSize); }

  void SetStream(ISequentialOutStream *stream) { Stream.SetStream(stream); }
  void Init()
  {
    Stream.Init();
    Low = 0;
    Range = 0xFFFFFFFF;
    _ffNum = 0;
    _cache = 0;
  }

  void FlushData()
  {
    // Low += 1; 
    for(int i = 0; i < 5; i++)
      ShiftLow();
  }

  HRESULT FlushStream() { return Stream.Flush();  }

  void ReleaseStream() { Stream.ReleaseStream(); }

  void Encode(UInt32 start, UInt32 size, UInt32 total)
  {
    Low += start * (Range /= total);
    Range *= size;
    while (Range < kTopValue)
    {
      Range <<= 8;
      ShiftLow();
    }
  }

  /*
  void EncodeDirectBitsDiv(UInt32 value, UInt32 numTotalBits)
  {
    Low += value * (Range >>= numTotalBits);
    Normalize();
  }
  
  void EncodeDirectBitsDiv2(UInt32 value, UInt32 numTotalBits)
  {
    if (numTotalBits <= kNumBottomBits)
      EncodeDirectBitsDiv(value, numTotalBits);
    else
    {
      EncodeDirectBitsDiv(value >> kNumBottomBits, (numTotalBits - kNumBottomBits));
      EncodeDirectBitsDiv(value & ((1 << kBottomValueBits) - 1), kNumBottomBits);
    }
  }
  */
  void ShiftLow()
  {
    if (Low < (UInt32)0xFF000000 || UInt32(Low >> 32) == 1) 
    {
      Stream.WriteByte(Byte(_cache + Byte(Low >> 32)));            
      for (;_ffNum != 0; _ffNum--) 
        Stream.WriteByte(Byte(0xFF + Byte(Low >> 32)));
      _cache = Byte(UInt32(Low) >> 24);                      
    } 
    else 
      _ffNum++;                               
    Low = UInt32(Low) << 8;                           
  }
  
  void EncodeDirectBits(UInt32 value, int numTotalBits)
  {
    for (int i = numTotalBits - 1; i >= 0; i--)
    {
      Range >>= 1;
      if (((value >> i) & 1) == 1)
        Low += Range;
      if (Range < kTopValue)
      {
        Range <<= 8;
        ShiftLow();
      }
    }
  }

  void EncodeBit(UInt32 size0, UInt32 numTotalBits, UInt32 symbol)
  {
    UInt32 newBound = (Range >> numTotalBits) * size0;
    if (symbol == 0)
      Range = newBound;
    else
    {
      Low += newBound;
      Range -= newBound;
    }
    while (Range < kTopValue)
    {
      Range <<= 8;
      ShiftLow();
    }
  }

  UInt64 GetProcessedSize() {  return Stream.GetProcessedSize() + _ffNum; }
};

class CDecoder
{
public:
  CInBuffer Stream;
  UInt32 Range;
  UInt32 Code;
  bool Create(UInt32 bufferSize) { return Stream.Create(bufferSize); }

  void Normalize()
  {
    while (Range < kTopValue)
    {
      Code = (Code << 8) | Stream.ReadByte();
      Range <<= 8;
    }
  }
  
  void SetStream(ISequentialInStream *stream) { Stream.SetStream(stream); }
  void Init()
  {
    Stream.Init();
    Code = 0;
    Range = 0xFFFFFFFF;
    for(int i = 0; i < 5; i++)
      Code = (Code << 8) | Stream.ReadByte();
  }

  void ReleaseStream() { Stream.ReleaseStream(); }

  UInt32 GetThreshold(UInt32 total)
  {
    return (Code) / ( Range /= total);
  }

  void Decode(UInt32 start, UInt32 size)
  {
    Code -= start * Range;
    Range *= size;
    Normalize();
  }

  /*
  UInt32 DecodeDirectBitsDiv(UInt32 numTotalBits)
  {
    Range >>= numTotalBits;
    UInt32 threshold = Code / Range;
    Code -= threshold * Range;
    
    Normalize();
    return threshold;
  }

  UInt32 DecodeDirectBitsDiv2(UInt32 numTotalBits)
  {
    if (numTotalBits <= kNumBottomBits)
      return DecodeDirectBitsDiv(numTotalBits);
    UInt32 result = DecodeDirectBitsDiv(numTotalBits - kNumBottomBits) << kNumBottomBits;
    return (result | DecodeDirectBitsDiv(kNumBottomBits));
  }
  */

  UInt32 DecodeDirectBits(UInt32 numTotalBits)
  {
    UInt32 range = Range;
    UInt32 code = Code;        
    UInt32 result = 0;
    for (UInt32 i = numTotalBits; i > 0; i--)
    {
      range >>= 1;
      /*
      result <<= 1;
      if (code >= range)
      {
        code -= range;
        result |= 1;
      }
      */
      UInt32 t = (code - range) >> 31;
      code -= range & (t - 1);
      // range = rangeTmp + ((range & 1) & (1 - t));
      result = (result << 1) | (1 - t);

      if (range < kTopValue)
      {
        code = (code << 8) | Stream.ReadByte();
        range <<= 8; 
      }
    }
    Range = range;
    Code = code;
    return result;
  }

  UInt32 DecodeBit(UInt32 size0, UInt32 numTotalBits)
  {
    UInt32 newBound = (Range >> numTotalBits) * size0;
    UInt32 symbol;
    if (Code < newBound)
    {
      symbol = 0;
      Range = newBound;
    }
    else
    {
      symbol = 1;
      Code -= newBound;
      Range -= newBound;
    }
    Normalize();
    return symbol;
  }

  UInt64 GetProcessedSize() {return Stream.GetProcessedSize(); }
};

}}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品少妇一区二区三区在线播放| 粉嫩绯色av一区二区在线观看| 在线亚洲欧美专区二区| 亚洲男人的天堂在线aⅴ视频| av欧美精品.com| 一区二区久久久久| 色94色欧美sute亚洲13| 亚洲香肠在线观看| 欧美精品久久久久久久多人混战 | 九九精品一区二区| 精品久久人人做人人爽| 国产成a人亚洲| 亚洲免费观看高清在线观看| 欧美视频日韩视频| 美国毛片一区二区三区| 国产欧美一区二区三区在线看蜜臀 | 2021久久国产精品不只是精品| 国产精品亚洲专一区二区三区| 欧美国产日本韩| 欧洲色大大久久| 麻豆国产一区二区| 国产精品久久久久影院亚瑟| 欧美性色aⅴ视频一区日韩精品| 老司机午夜精品| 亚洲日本免费电影| 日韩一区二区精品| 99九九99九九九视频精品| 午夜激情综合网| 国产免费久久精品| 欧美久久久久免费| 处破女av一区二区| 日韩精品电影一区亚洲| 日本一区二区三区dvd视频在线| 欧美日韩中文精品| 国产成人aaa| 日韩激情视频在线观看| 国产精品激情偷乱一区二区∴| 欧美三区在线观看| 国产河南妇女毛片精品久久久| 亚洲午夜一区二区三区| 国产网红主播福利一区二区| 欧美日韩一本到| www.亚洲色图| 国内成人免费视频| 婷婷久久综合九色国产成人| 国产精品理论片在线观看| 日韩三级视频在线看| 色综合av在线| 国产成人精品三级麻豆| 免费看精品久久片| 亚洲一区二区三区四区在线观看 | 日韩av午夜在线观看| 久久久久国产精品麻豆| 在线成人小视频| 色呦呦国产精品| 国产mv日韩mv欧美| 国产一区高清在线| 天天影视网天天综合色在线播放| 国产精品久久久久久一区二区三区| 欧美tk—视频vk| 欧美精选在线播放| 色狠狠综合天天综合综合| 国产大片一区二区| 久久国产三级精品| 青椒成人免费视频| 亚洲高清在线精品| 一区二区三区中文在线| 国产精品高潮呻吟| 欧美韩国日本一区| 精品国产伦一区二区三区免费| 欧美肥妇bbw| 91精品一区二区三区在线观看| 在线观看一区日韩| 色琪琪一区二区三区亚洲区| 成人成人成人在线视频| 成人黄页毛片网站| 成人永久免费视频| 成人在线综合网| 成人免费观看av| 成人国产在线观看| 91网站在线播放| 91捆绑美女网站| 91电影在线观看| 欧美日韩国产经典色站一区二区三区| 欧美一区中文字幕| 欧美日韩精品一区视频| 欧美高清视频www夜色资源网| 欧美群妇大交群的观看方式| 欧美日韩高清一区| 日韩网站在线看片你懂的| 日韩欧美国产电影| www国产成人免费观看视频 深夜成人网| 欧美大肚乱孕交hd孕妇| 精品99一区二区三区| 国产网站一区二区三区| 国产精品久久久久久久久动漫| 亚洲日本va在线观看| 亚洲伊人色欲综合网| 免费在线观看日韩欧美| 国产在线精品一区二区夜色 | 欧美大片一区二区三区| 久久日韩精品一区二区五区| 国产女同性恋一区二区| 亚洲视频在线观看一区| 日韩国产一二三区| 国产精品一区不卡| 一本一道波多野结衣一区二区| 欧美日韩亚洲不卡| 亚洲精品一区二区在线观看| 国产精品国产精品国产专区不片 | 欧美福利视频一区| 久久精品人人做人人综合| 国产精品高潮久久久久无| 亚洲成人黄色小说| 国产综合色产在线精品| 色天使久久综合网天天| 欧美电影免费观看高清完整版在线| 国产午夜精品久久久久久久| 夜夜夜精品看看| 国内精品嫩模私拍在线| 日本高清不卡视频| 精品成人在线观看| 亚洲精品欧美综合四区| 毛片一区二区三区| 91在线观看污| 日韩欧美国产一区二区在线播放| 国产精品视频在线看| 日本aⅴ亚洲精品中文乱码| 成人一区二区三区| 日韩一区二区三区av| 亚洲女厕所小便bbb| 国产在线看一区| 欧美精品精品一区| 亚洲色图欧洲色图婷婷| 韩日欧美一区二区三区| 欧美色图激情小说| 国产欧美日韩在线看| 日韩二区三区在线观看| 色婷婷精品久久二区二区蜜臀av| 精品福利一区二区三区 | 中文字幕成人av| 美女视频黄久久| 一本大道久久a久久精二百| 欧美国产精品中文字幕| 久久成人免费网| 欧美日韩精品福利| 一区二区三区四区视频精品免费| 国产成人自拍在线| 精品999久久久| 免费久久99精品国产| 色狠狠色狠狠综合| 中文字幕在线不卡| 国产福利精品导航| www久久精品| 久久99精品视频| 69堂精品视频| 香蕉久久一区二区不卡无毒影院| 91一区二区三区在线播放| 国产视频一区二区在线观看| 国产在线精品一区二区三区不卡| 91精品国产综合久久香蕉的特点| 亚洲观看高清完整版在线观看 | 亚洲伊人伊色伊影伊综合网| 91亚洲国产成人精品一区二三| 日本一区二区在线不卡| 国产精品一区二区黑丝| 精品少妇一区二区三区在线视频| 免费观看日韩av| 日韩一区二区电影| 久久国产福利国产秒拍| 日韩一区二区三区高清免费看看| 日韩精品亚洲专区| 91精品国产品国语在线不卡| 午夜久久久久久久久| 欧美乱妇15p| 琪琪一区二区三区| 欧美变态tickling挠脚心| 蜜桃视频一区二区三区在线观看| 日韩欧美成人一区二区| 国产在线麻豆精品观看| 国产亚洲欧洲一区高清在线观看| 国产福利不卡视频| 亚洲国产高清在线| 日本乱人伦aⅴ精品| 午夜欧美视频在线观看| 日韩欧美亚洲国产精品字幕久久久| 蜜臀av性久久久久蜜臀av麻豆| 欧美mv日韩mv国产网站| 成人性生交大片免费看视频在线 | 婷婷丁香久久五月婷婷| 日韩写真欧美这视频| 国内精品伊人久久久久av影院| 欧美高清一级片在线观看| 一本一道久久a久久精品综合蜜臀| 亚洲成人自拍网| 精品国产乱码久久久久久图片| 懂色av一区二区三区蜜臀| 一区二区三区不卡在线观看| 欧美一级片免费看| 国产一区不卡视频|