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

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

?? skl_bits.h

?? mpeg4編解碼器
?? H
字號:
/******************************************************** * Some code. Copyright (C) 2003 by Pascal Massimino.   * * All Rights Reserved.      (http://skal.planet-d.net) * * For Educational/Academic use ONLY. See 'LICENSE.TXT'.* ********************************************************//* * skl_bits.h * *  bitstream I/O + masking utils ********************************************************/#ifndef _SKL_BITS_H_#define _SKL_BITS_H_//////////////////////////////////////////////////////////// Bit-masking utils//////////////////////////////////////////////////////////class SKL_BMASKS {  public:    static const SKL_UINT32 And[33];    // (1<<n)-1    static const SKL_UINT32 Or[33];     // 1<<(n-1)    static int Is_Power_Of_2(int Value)      { return (!(Value & (Value-1))); }  // wow!    static const SKL_BYTE Bit_Sizes[256];    static int Get_Size(int Value) {      int Size = 0;      while (Value>=256) { Value>>=8; Size+=8; }      return Size + Bit_Sizes[Value];    }    // Get_Size() actually returns 'ceil(log2(Value))'    // So here's a wrapper:    static int Log2(int Value) { return Get_Size(Value); }      // and even faster, using IEEE float representation:    static SKL_INT32 fLog2(float v) {      SKL_INT32 I = (SKL_INT32&)v;      return ((I&0x7f800000)>>23) - 127; // extract un-biased 8-bit exponent    }    static SKL_INT32 fLog2(SKL_INT32 v) { return fLog2((float)v); }    static const SKL_BYTE First_Bit_Set[256];    static int Get_First_Bit_Set_16(int V) {      SKL_ASSERT(V>0 && V<=0xffff);      if (V>>8) return First_Bit_Set[(V>>8)];      else return First_Bit_Set[V]+8;    }    static int Get_First_Bit_Set_8(int V) {      SKL_ASSERT(V>0 && V<=0xff);      return First_Bit_Set[V];    }};//////////////////////////////////////////////////////////// These are fast, inlined, MSBF bitstream.// It heavily supposes you know what you're doing.// Read/write overflow is *NOT* checked. //////////////////////////////////////////////////////////struct SKL_FBB {  SKL_BYTE  *Buf;  SKL_INT32  Bits_Left;  SKL_UINT32 Bits;  SKL_FBB() {}  SKL_FBB(const SKL_BYTE *buf) { Init(buf); } // read  SKL_FBB(SKL_BYTE *buf) { Init(buf); }       // write    inline void Init(const SKL_BYTE *buf) {    SKL_ASSERT(buf!=0);    Buf       = (SKL_BYTE*)buf;    Bits_Left = 0;    Bits      = 0x0;  }  inline void Copy(const SKL_FBB *In) {    Buf       = In->Buf;    Bits_Left = In->Bits_Left;    Bits      = In->Bits;  }    // -- loading bytes/words  inline SKL_UINT32 Next_Byte() { return *Buf++; }  inline SKL_UINT32 Next_Word() {    SKL_UINT32 Val = (Buf[0]<<8) | (Buf[1]);    Buf += 2;    return Val;  }  inline void Load() {    SKL_ASSERT(Bits_Left<=24);    Bits_Left += 8;    Bits |= Next_Byte() << (32-Bits_Left);  }  inline void Load_Word() {    SKL_ASSERT(Bits_Left<=24);    Bits_Left += 16;    Bits |= Next_Word() << (32-Bits_Left);  }  inline void Check_Bits(int Nb) {  // unsigned    SKL_ASSERT(Nb<=24);    while (Bits_Left<Nb) Load();  }  inline void Check_Bits_Word(int Nb) {  // unsigned    SKL_ASSERT(Nb<=16);    if (Bits_Left<Nb) Load_Word();  // only load 1 word  }  inline SKL_UINT32 Get_Bits(int Nb) {  // unsigned    Check_Bits(Nb);    SKL_INT32 Val = Bits >> (32-Nb);    Bits <<= Nb;    Bits_Left -= Nb;    return Val;  }  inline SKL_UINT32 Get_Bits_Word(int Nb) {  // unsigned    Check_Bits_Word(Nb);    SKL_INT32 Val = Bits >> (32-Nb);    Bits <<= Nb;    Bits_Left -= Nb;    return Val;  }    // -- checking forthcoming bits  inline SKL_UINT32 See_Bits_Safe(int Nb) const {    SKL_ASSERT(Bits_Left>=Nb);    return (Bits >> (32-Nb));  }  inline SKL_UINT32 See_Bits(int Nb) {  // unsigned    Check_Bits(Nb);    return (Bits >> (32-Nb));  }  inline SKL_UINT32 See_Bits_Word(int Nb) {  // unsigned    Check_Bits_Word(Nb);    return (Bits >> (32-Nb));  }    // -- discard, forward and backward  inline void Discard(int Nb) {    Check_Bits(Nb);    Bits <<= Nb;    Bits_Left -= Nb;  }  inline void Discard_Word(int Nb) {    Check_Bits_Word(Nb);    Bits <<= Nb;    Bits_Left -= Nb;  }  inline void Discard_Safe(int Nb) {    SKL_ASSERT(Bits_Left>=Nb);    Bits <<= Nb;    Bits_Left -= Nb;  }  inline void Rewind(int Nb)  {    SKL_ASSERT(Nb>=0);    Nb += Bits_Left + 7;    Buf -= Nb/8;    Nb = 1 + (Nb&7);    Bits = Next_Byte()<<(32-Nb);    Bits_Left = Nb;  }  inline void Forward(int Nb)  {    SKL_ASSERT(Nb>=0);    if (Nb>=Bits_Left) {      Nb -= Bits_Left;      Buf += Nb/8;      Bits_Left = 8-(Nb&7);      Bits = Next_Byte()<<(32-Nb);    }    else {      Bits_Left -= Nb;      Bits <<= Nb;    }  }  inline void Skip_Bytes(int Nb) {   // warning! unsafe!    SKL_ASSERT(Is_Aligned());    Buf += Nb;  }  inline int Is_Aligned() const { return !(Bits_Left&7); }  inline void Align() { if (Bits_Left&7) Discard_Safe( Bits_Left&7 ); }    // -- positioning  inline SKL_BYTE *Pos() const { return Buf - Bits_Left/8; }  inline SKL_SAFE_INT Bit_Pos() const    { return ((SKL_SAFE_INT)Buf)*8 - Bits_Left; }    // Safely storing the offset in *bits* would theoretically    // require 32+8 bits. Using a known reference (Pos0) not far    // from current position helps avoiding overflow.    // Note that overflow can only happen if you use a bit buffer    // bigger than 16.7 Mo :)  inline SKL_SAFE_INT Safe_Bit_Pos(SKL_BYTE *Pos0) const    { return ((SKL_SAFE_INT)(Buf-Pos0)*8 - Bits_Left); }    // -- Writing bits  inline void Put_Bits(SKL_UINT32 Val, int Nb)  {    SKL_ASSERT(Nb<32 && !(Val&~SKL_BMASKS::And[Nb]));    Bits_Left += Nb;    if (Bits_Left>32) {      Bits_Left -= 32;      Bits |= Val >> Bits_Left;      *Buf++ = ( Bits>>24 ) & 0xff;      *Buf++ = ( Bits>>16 ) & 0xff;      *Buf++ = ( Bits>> 8 ) & 0xff;      *Buf++ = ( Bits>> 0 ) & 0xff;      Bits = Val<<(32-Bits_Left);    }    else Bits |= Val<<(32-Bits_Left);  }  inline void Put_Bits0(int Nb) // emits the bit '0' Nb times  {    SKL_ASSERT(Nb>=0);    Bits_Left += Nb;    while (Bits_Left>32) {      Bits_Left -= 32;      *Buf++ = ( Bits>>24 ) & 0xff;      *Buf++ = ( Bits>>16 ) & 0xff;      *Buf++ = ( Bits>> 8 ) & 0xff;      *Buf++ = ( Bits>> 0 ) & 0xff;      Bits = 0;    }  }  inline void Put_Bits1(int Nb) // emits the bit '1' Nb times  {    SKL_ASSERT(Nb>=0);    Bits |= SKL_BMASKS::And[32-Bits_Left];    Bits_Left += Nb;    while (Bits_Left>32) {      Bits_Left -= 32;      *Buf++ = ( Bits>>24 ) & 0xff;      *Buf++ = ( Bits>>16 ) & 0xff;      *Buf++ = ( Bits>> 8 ) & 0xff;      *Buf++ = ( Bits>> 0 ) & 0xff;      Bits = 0xffffffff;    }    Bits &= ~SKL_BMASKS::And[32-Bits_Left];  }  inline void Put_Word(SKL_UINT32 Val)  {    SKL_ASSERT(Is_Flushed());    *Buf++ = ( Val>>8 ) & 0xff;    *Buf++ = ( Val>>0 ) & 0xff;  }  inline void Put_DWord(SKL_UINT32 Val)  {    SKL_ASSERT(Is_Flushed());    *Buf++ = ( Val>>24 ) & 0xff;    *Buf++ = ( Val>>16 ) & 0xff;    *Buf++ = ( Val>> 8 ) & 0xff;    *Buf++ = ( Val>> 0 ) & 0xff;  }  inline SKL_BYTE *Write_Pos() const { return Buf + Bits_Left/8; }  inline SKL_SAFE_INT Write_Bit_Pos() const    { return ((SKL_SAFE_INT)Buf)*8 + Bits_Left; }  inline SKL_SAFE_INT Safe_Write_Bit_Pos(SKL_BYTE *Pos0) const    { return ((SKL_SAFE_INT)(Buf-Pos0)*8 + Bits_Left); }   // -- sync pending bits and align to byte  inline void Flush_Write() {    while (Bits_Left>0) {      *Buf++ = (Bits >> 24) & 0xff;      Bits <<= 8;      Bits_Left -= 8;    }    Bits_Left = 0;    SKL_ASSERT(Bits==0);  }  inline int Is_Flushed() const { return (Bits_Left==0); }    // exponential Golomb codes#if 1    // Table-based not inlined version  static const SKL_BYTE  EG_Len[512-16];  static const SKL_UINT8 UEG_Val[512-16];  static const SKL_INT8  SEG_Val[512-16];  SKL_UINT32 UEG();               // unsigned  SKL_INT32  SEG();               // signed  static const SKL_UINT16 UEG_Tab[256][2];  static const SKL_UINT16 SEG_Tab[256][2];  void Put_UEG(SKL_UINT32 v);   // unsigned  void Put_SEG(SKL_INT32 v);    // signed#else      // Reference, slow but robust, versions  inline SKL_UINT32 UEG()              // unsigned  {    int Len = 0;    while (!Get_Bits(1)) Len++;    return (Len==0) ? 0 : (1<<Len)-1 + Get_Bits(Len);  }  inline SKL_INT32 SEG()               // signed  {    int Len = 0;    while (!Get_Bits(1)) Len++;    if (Len==0) return 0;    SKL_INT32 Val = (1<<Len) | Get_Bits(Len);    return (Val&1) ? -(Val>>1) : (Val>>1);  }  inline void Put_UEG(SKL_UINT32 v)              // unsigned  {    if (v) {      v += 1;      const int Len = SKL_BMASKS::Log2(v);      //  Put_Bits(v, 2*Len-1);   <- this could overflow if 2*Len-1>24      Put_Bits(0, Len-1);      Put_Bits(v, Len  );    }    else Put_Bits(1,1);  }  inline void Put_SEG(SKL_INT32 v)               // signed  {    if (v) {      int Len;      if (v<0) v = 1-2*v;      else     v = 2*v;      Len = SKL_BMASKS::Log2(v);      //  Put_Bits(v, 2*Len-1);   <- this could overflow if 2*Len-1>24      Put_Bits(0, Len-1);      Put_Bits(v, Len  );    }    else Put_Bits(1,1);  }#endif    // computes code length  static int UEG_Len(SKL_UINT32 v)              // unsigned  {    return 2*SKL_BMASKS::Log2(v+1) - 1;  }  static int SEG_Len(SKL_INT32 v)               // signed  {    if (v==0) return 1;    if (v<0) v = 1-2*v;    else     v = 2*v;    return 2*SKL_BMASKS::Log2(v) - 1;  }};//////////////////////////////////////////////////////////// MACRO-ized version//////////////////////////////////////////////////////////#define SKL_FBB_DECL             SKL_BYTE *Buf; SKL_INT32 Bits_Left; SKL_UINT32 Bits#define SKL_FBB_START(FBB)       Buf = (FBB).Buf; Bits_Left = (FBB).Bits_Left; Bits = (FBB).Bits#define SKL_FBB_STOP(FBB)        (FBB).Buf = Buf; (FBB).Bits_Left = Bits_Left; (FBB).Bits = Bits#define SKL_FBB_NEXT_WORD        do { Bits_Left+=16; Bits |= ((Buf[0]<<8) | Buf[1])<<(32-Bits_Left); Buf+=2; } while(0)#define SKL_FBB_LOAD_WORD(NB)    if (Bits_Left<NB) SKL_FBB_NEXT_WORD#define SKL_FBB_NEXT_BYTE        do { Bits_Left+=16; Bits |= Buf[1]<<(32-Bits_Left); Buf+=1; } while(0)#define SKL_FBB_LOAD_BYTE(NB)    if (Bits_Left<NB) SKL_FBB_NEXT_BYTE#define SKL_FBB_BITS(NB)         (Bits>>(32-NB))#define SKL_FBB_BITS_SIGNED(NB)  (((SKL_INT32)Bits)>>(32-NB))#define SKL_FBB_CHECK(NB)        while (Bits_Left<NB) SKL_FBB_NEXT_BYTE#define SKL_FBB_DISCARD(NB)      do { SKL_FBB_CHECK(NB); Bits<<=NB; Bits_Left-= NB; } while(0)#define SKL_FBB_DISCARD_SAFE(NB) do { Bits<<=NB; Bits_Left-= NB; } while(0)//////////////////////////////////////////////////////////#endif  /* _SKL_BITS_H_ */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区在线播放 | 欧美电影影音先锋| 国产成人av电影在线| 极品美女销魂一区二区三区免费 | 日韩国产在线观看| 亚洲一级电影视频| 亚洲一区二区三区视频在线| 亚洲一区在线电影| 天天综合网天天综合色| 天天色综合成人网| 国产做a爰片久久毛片| 国产精品123区| 成人永久免费视频| 成人免费毛片片v| 在线一区二区观看| 欧美一区二区三区色| 日韩精品专区在线影院观看| 精品国产1区二区| 亚洲国产精品黑人久久久| 国产精品欧美极品| 一区二区在线免费| 日韩va亚洲va欧美va久久| 狠狠色狠狠色综合日日91app| 国产成人h网站| 欧洲av在线精品| 日韩欧美在线1卡| 国产视频一区在线播放| 亚洲精品成人精品456| 全国精品久久少妇| 国产91丝袜在线18| 欧美人伦禁忌dvd放荡欲情| 精品久久久久久久久久久久久久久 | 欧美一区二区视频在线观看2020| 欧美一区二区三区喷汁尤物| 国产日韩欧美精品一区| 亚洲国产精品精华液网站| 看电影不卡的网站| 91小视频在线观看| 欧美成人精品福利| 亚洲综合精品自拍| 国产一区三区三区| 欧美三级中文字幕| 国产精品天天看| 美腿丝袜亚洲综合| 一本久久a久久免费精品不卡| 欧美mv和日韩mv的网站| 亚洲美女偷拍久久| 成人自拍视频在线| 欧美一级电影网站| 亚洲永久精品国产| 成人午夜看片网址| 欧美大片在线观看| 五月婷婷综合在线| 色天天综合色天天久久| 久久久无码精品亚洲日韩按摩| 亚洲国产精品久久久久婷婷884| 成人性生交大片免费看视频在线 | 亚洲欧美日韩小说| 国产精品12区| 26uuu另类欧美亚洲曰本| 亚洲综合丝袜美腿| 99这里都是精品| 欧美国产综合色视频| 看电视剧不卡顿的网站| 欧美一区二区福利在线| 亚洲成人av一区二区三区| 99国产精品国产精品久久| 精品电影一区二区三区| 免费成人av在线播放| 制服丝袜日韩国产| 夜夜嗨av一区二区三区中文字幕| 9l国产精品久久久久麻豆| 亚洲精品一区二区三区影院 | 中文字幕成人在线观看| 精品影院一区二区久久久| 欧美喷水一区二区| 亚洲第一久久影院| 8x8x8国产精品| 久久91精品国产91久久小草| 91精品国产麻豆国产自产在线| 亚洲视频一区在线| 日本韩国一区二区三区| 一区二区三国产精华液| 91国偷自产一区二区三区观看| 亚洲啪啪综合av一区二区三区| gogogo免费视频观看亚洲一| 国产精品久久久99| 99re成人在线| 亚洲一区二区视频在线| 在线不卡免费av| 久久精品国产77777蜜臀| 久久综合色天天久久综合图片| 国产suv精品一区二区883| 中文字幕av在线一区二区三区| 国产成人午夜精品5599| 亚洲区小说区图片区qvod| 色狠狠av一区二区三区| 午夜av区久久| 久久精品一区蜜桃臀影院| 91污在线观看| 免费欧美高清视频| 日本一区二区在线不卡| 在线看日本不卡| 精品在线观看视频| 中文字幕字幕中文在线中不卡视频| 色偷偷久久一区二区三区| 青娱乐精品视频在线| 成人欧美一区二区三区黑人麻豆 | 国产成人亚洲综合a∨猫咪| 中文字幕一区二| 欧美精品一级二级| 国产91在线|亚洲| 亚洲线精品一区二区三区八戒| 精品国产乱码久久久久久影片| av在线不卡电影| 日韩电影在线一区二区三区| 国产精品欧美久久久久一区二区| 欧美探花视频资源| 不卡的av网站| 免费在线观看视频一区| 中文字幕亚洲综合久久菠萝蜜| 91精品国产欧美一区二区18| 99精品桃花视频在线观看| 日韩福利视频网| 一区二区三区波多野结衣在线观看| 欧美一区二区三区在线观看| av资源网一区| 国产suv精品一区二区6| 丝袜国产日韩另类美女| 亚洲欧洲另类国产综合| 久久综合久久99| 91精品久久久久久久91蜜桃| 99精品桃花视频在线观看| 国产制服丝袜一区| 麻豆视频一区二区| 婷婷开心激情综合| 亚洲黄色av一区| 亚洲精品乱码久久久久久久久| 国产欧美精品区一区二区三区| 91精品国产色综合久久| 欧美日韩精品综合在线| 在线观看国产日韩| 色综合久久久久综合体桃花网| 国产高清视频一区| 成人性生交大合| 国产精品一线二线三线精华| 国产美女精品在线| 久久99精品久久久久婷婷| 日本免费新一区视频| 手机精品视频在线观看| 天堂va蜜桃一区二区三区漫画版| 亚洲综合免费观看高清完整版在线| 亚洲精选一二三| 亚洲风情在线资源站| 亚洲www啪成人一区二区麻豆| 一区二区三区视频在线看| 一区二区三区成人| 天天综合天天做天天综合| 婷婷成人激情在线网| 日韩精品1区2区3区| 久久99久久精品| 蓝色福利精品导航| 成人丝袜高跟foot| 99久久伊人精品| 色婷婷av久久久久久久| 欧美日韩一区三区四区| 91精选在线观看| 精品国产一区二区三区四区四| 久久久亚洲综合| 亚洲视频电影在线| 香蕉av福利精品导航| 蜜桃免费网站一区二区三区| 国产一区在线不卡| 日本高清无吗v一区| 欧美日韩www| 精品av久久707| 亚洲欧洲精品天堂一级| 亚洲国产精品自拍| 国产一区二区三区日韩| 99久久er热在这里只有精品15| 欧美日韩国产综合视频在线观看 | 成人精品免费网站| 91久久线看在观草草青青| 91精品欧美久久久久久动漫| 久久先锋影音av| 亚洲尤物在线视频观看| 久久精品国产99国产| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩精品一区二区三区蜜桃| 欧美一区二区三区免费观看视频| 国产精品美女久久久久aⅴ国产馆| 国产区在线观看成人精品 | 蜜桃av一区二区在线观看| 韩国三级在线一区| 色综合色狠狠天天综合色| 精品日韩一区二区| **性色生活片久久毛片| 黑人精品欧美一区二区蜜桃| 欧美自拍偷拍一区| 国产精品麻豆一区二区|