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

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

?? skl_mpg4_enc.cpp

?? mpeg4編解碼器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
  SKL_ASSERT(Bits->Is_Flushed() && _Need_VOL_Header!=0);  Bits->Put_DWord(FIRST_CODE|0x00);    // VO start: start + id[0x00..0x1f]  Bits->Put_DWord(VOL_CODE  |VOL_Id);  // VOL start: start code + id[0x20..0x2f]  Bits->Put_Bits(0, 1);                // random access  Bits->Put_Bits(1, 8);                // VO type indication (1=Simple Object)  Bits->Put_Bits(1, 1);                // obj-layer identified.  Bits->Put_Bits(Verid, 4);            // version id  Bits->Put_Bits(1, 3);                // priority  Bits->Put_Bits(1, 4);                // aspect-ratio = 1  if (!Low_Delay) {                    // control params?    Bits->Put_Bits(1, 1);    Bits->Put_Bits(1, 2);              // Chroma format: 420    Bits->Put_Bits(Low_Delay, 1);      // low delay. '1' means: no B-VOP in VOP    Bits->Put_Bits(0, 1);              // vbv param -skip-  }  else Bits->Put_Bits(0, 1);           // -skip-  Bits->Put_Bits(0, 2);                // VOL shape = rect.  Bits->Put_Bits(1, 1);                // marker bit  Bits->Put_Bits(Time_Frequency, 16);  // time increment  Bits->Put_Bits(1, 1);                // marker bit  if (Ticks_Per_VOP) {    Bits->Put_Bits(1, 1);              // fixed rate = yes    Bits->Put_Bits(Ticks_Per_VOP, Ticks_Bits);  }  else Bits->Put_Bits(0, 1);           // fixed rate = no  Bits->Put_Bits(1, 1);                // marker bit  Bits->Put_Bits(Width,  13);          // Width  Bits->Put_Bits(1, 1);                // marker bit  Bits->Put_Bits(Height, 13);          // Height  Bits->Put_Bits(1, 1);                // marker bit  Bits->Put_Bits(!!Interlace, 1);      // interlacing (impl note:Interlace=[0..6])  Bits->Put_Bits(1, 1);                // overlapped motion comp.  Bits->Put_Bits(Sprite_Mode,     Verid==1 ? 1 : 2);                 // sprite enable  if (Sprite_Mode>SPRITE_NONE) {    SKL_ASSERT(Sprite_Mode!=SPRITE_STATIC); // not supported. Only GMC is.    Bits->Put_Bits(Sprite_Nb_Pts, 6);    Bits->Put_Bits(Sprite_Accuracy, 2);    Bits->Put_Bits(Sprite_Brightness, 1);  }  if (Shape!=0 && Verid>1)    Bits->Put_Bits(1,1);               // sadct disable  Bits->Put_Bits(Not_8b, 1);           // not 8 bit  if (Not_8b) {    Bits->Put_Bits(Quant_Prec, 4);     // quant prec    Bits->Put_Bits(Bpp, 4);            // bits per pixel  }  Bits->Put_Bits(Get_Quant_Type(), 1); // quant type  if (Get_Quant_Type()==1) {           // MPEG4 custom matrix    Bits->Put_Bits(Custom_Intra, 1);   // intra matrix    if (Custom_Intra)      Write_Matrix(Bits, Intra_Matrix);    Bits->Put_Bits(Custom_Inter, 1);   // inter matrix    if (Custom_Inter)      Write_Matrix(Bits, Inter_Matrix);  }    if (Verid!=1)    Bits->Put_Bits(Quarter, 1);          // QPel  Bits->Put_Bits(1, 1);                  // complexity est.  Bits->Put_Bits(!Resync, 1);            // resync marker disable  Bits->Put_Bits(Data_Partitioned, 1);   // partitioned  if (Data_Partitioned)    Bits->Put_Bits(Rev_VLC, 1);          // reversible vlc  if (Verid!=1) {    Bits->Put_Bits(0, 1);                // new pred    Bits->Put_Bits((Reduced_VOP>=0), 1); // reduced VOP  }  Bits->Put_Bits(0, 1);                  // scalability  Stuffed_Align(Bits);  if (Debug_Level==3) Print_Infos();}  // section 6.2.5void SKL_MP4_ENC_I::Write_VOP_Header(SKL_FBB * const Bits,                                     const SKL_MP4_FRAME *VOP) const{  SKL_ASSERT(Bits->Is_Flushed());  if (VOP->Frame_Number==0)    Write_User_Data(Bits, 1+strlen(ID_STRING), (const SKL_BYTE *)ID_STRING);  Bits->Put_DWord(VOP_CODE);                   // 32b marker  Bits->Put_Bits(VOP->Coding, 2);              // Coding type  SKL_INT64 Elapsed = VOP->Time - Time_Ref*Time_Frequency;  SKL_INT64 Seconds = Elapsed / Time_Frequency;  if (Elapsed<0) Elapsed = 0;   // hoho, wrong time stamp, it seems...  else Elapsed -= Seconds * Time_Frequency;//  printf( "Ref:%lld Last_Coded:%lld Time:%lld Elapsed:%d Seconds:%d\n",//    Time_Ref, Time_Last_Coded, VOP->Time, Elapsed, Seconds );//  printf( "Tick bits:%d, Time_Freq:%d\n", Ticks_Bits, Time_Frequency);  while(Seconds-->0) Bits->Put_Bits(1, 1);         // seconds elapsed  Bits->Put_Bits(0, 1);   Bits->Put_Bits(1, 1);                            // marker bit  Bits->Put_Bits((SKL_UINT32)Elapsed, Ticks_Bits); // time ticks increment  Bits->Put_Bits(1, 1);                            // marker bit  Bits->Put_Bits(1, 1);                            // coded  if (VOP->Coding==P_VOP || VOP->Coding==S_VOP)    Bits->Put_Bits(VOP->Rounding, 1);              // rounding type  if ( VOP->Reduced_VOP>=0 && VOP->Coding!=B_VOP )    Bits->Put_Bits(VOP->Reduced_VOP>0, 1);  Bits->Put_Bits(VOP->DC_Thresh, 3);               // intra dc vlc thresh.  if (Interlace) {                                 // interlacing mode    Bits->Put_Bits(!!VOP->Top_Field_First, 1);     // display top field first    Bits->Put_Bits(!!VOP->Alt_Vert_Scan, 1);       // alt. vert. scan  }  if (VOP->Coding==S_VOP && VOP->Sprite_Nb_Pts>0) {    Write_Sprite_Trajectory(Bits, VOP->S_Warp_Pts, VOP->Sprite_Nb_Pts);    SKL_ASSERT(Sprite_Brightness==0);              // no brightness change supported  }  Bits->Put_Bits(VOP->Quant, Quant_Prec);          // global frame quantizer  if (VOP->Coding!=I_VOP)    Bits->Put_Bits(VOP->Fwd_Code, 3);              // fcode  if (VOP->Coding==B_VOP)    Bits->Put_Bits(VOP->Bwd_Code, 3);              // bcode}//////////////////////////////////////////////////////////// VOP Codingvoid SKL_MP4_ENC_I::Write_I_VOP(SKL_FBB * const Bits){  SKL_INT16 Base[12*64+SKL_ALIGN];  SKL_INT16 * const In = (SKL_INT16*)SKL_ALIGN_PTR(Base, SKL_ALIGN);  SKL_MB_ENC MB(this);  while(MB.y<MB_H)  {    MB.Init_Scanline(this, 0);    while(MB.x<MB_W)    {      MB.MB_Type = SKL_MB_INTRA;    // force INTRA type      MB.Set_Final_Params();      MB.Decimate_Intra(In);      MB.Encode_Intra(Bits, In, 1);      MB++;    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (Slicer) Slicer(Cur, MB.y*16, 16, Slicer_Data);    MB.y++;  }  Texture_Bits = MB.Get_Texture_Bits();  MV_Bits = MB.Get_MV_Bits();}void SKL_MP4_ENC_I::Write_P_VOP(SKL_FBB * const Bits){  SKL_INT16 Base[12*64+SKL_ALIGN];  SKL_INT16 * const In = (SKL_INT16*)SKL_ALIGN_PTR(Base, SKL_ALIGN);  SKL_MB_ENC MB(this);  while(MB.y<MB_H)  {    MB.Init_Scanline(this, 0);    while(MB.x<MB_W)    {      MB.Set_Type();      if (MB.MB_Type==SKL_MB_INTRA) MB.Decimate_Intra(In);      else                          MB.Decimate_Inter(In);      if (MB.MB_Type==SKL_MB_SKIPPED)      {        Bits->Put_Bits( 1, 1 );          // not_coded        MB.Set_Not_Intra();      }      else {        Bits->Put_Bits( 0, 1 );          // coded        if (MB.MB_Type>=SKL_MB_INTRA) MB.Encode_Intra(Bits, In, 0);        else                          MB.Encode_Inter(Bits, In, Fwd_Code);      }      MB.Store_Map_Infos();      MB++;    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (Slicer) Slicer(Cur, MB.y*16, 16, Slicer_Data);    MB.y++;  }  Texture_Bits = MB.Get_Texture_Bits();  MV_Bits = MB.Get_MV_Bits();  if (Debug_Level==1) Dump_MVs(Cur, 2);  // will trash the encoded frame}void SKL_MP4_ENC_I::Write_S_VOP(SKL_FBB * const Bits){  SKL_INT16 Base[12*64+SKL_ALIGN];  SKL_INT16 * const In = (SKL_INT16*)SKL_ALIGN_PTR(Base, SKL_ALIGN);  SKL_ASSERT(Sprite_Nb_Pts>0);  // otherwise, it should be a P-VOP  SKL_ASSERT(Sprite_Mode==SPRITE_GMC && Sprite_Brightness==0);  GMC_Ops.Setup(Width, Height, S_Warp_Pts, Sprite_Nb_Pts, Sprite_Accuracy);  SKL_MB_ENC MB(this);  while(MB.y<MB_H)  {    MB.Init_Scanline(this, 0);    while(MB.x<MB_W)    {      MB.Set_Type();      SKL_ASSERT(MB.MB_Type!=SKL_MB_SKIPPED);      if (MB.MB_Type==SKL_MB_INTRA) MB.Decimate_Intra(In);      else if (MB.MC_Sel)           MB.Decimate_Inter_GMC(In);      else                          MB.Decimate_Inter(In);      if (MB.MB_Type==SKL_MB_SKIPPED)      {        Bits->Put_Bits( 1, 1 );       // 'GMC' not_coded (but predicted...)        MB.MB_Type = SKL_MB_INTER;        MB.Set_Not_Intra();      }      else {        Bits->Put_Bits( 0, 1 );       // coded        if (MB.MB_Type>=SKL_MB_INTRA) MB.Encode_Intra(Bits, In, 0);        else                          MB.Encode_Inter(Bits, In, Fwd_Code);      }      MB.Store_Map_Infos();      MB++;    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (Slicer) Slicer(Cur, MB.y*16, 16, Slicer_Data);    MB.y++;  }  Texture_Bits = MB.Get_Texture_Bits();  MV_Bits = MB.Get_MV_Bits();  if (Debug_Level==1) Dump_MVs(Cur, 2); // will trash the encoded frame}void SKL_MP4_ENC_I::Write_B_VOP(SKL_FBB * const Bits){  SKL_INT16 Base[6*64+6*64+SKL_ALIGN];  SKL_INT16 * const In = (SKL_INT16*)SKL_ALIGN_PTR(Base, SKL_ALIGN);  if (Time_TFrame==0)       // First B-VOP. => store Tframe of section 7.7.2.2    Time_TFrame = Cur->Time_Ticks - Time_Last_Coded;  SKL_MB_ENC MB(this);  while(MB.y<MB_H)  {    MB.Init_Scanline(this, 0);    while(MB.x<MB_W)    {      MB.Set_Type();      if (MB.MB_Type==SKL_MB_INTRA)      {        // Oops!! No INTRA in B-VOP!!!        fprintf(stderr, "INTRA requested in B-VOP!!\n");      }      MB.Decimate_Inter(In);      if (MB.MB_Type==SKL_MB_SKIPPED)      {        Bits->Put_Bits( 1, 1 );          // not_coded        MB.Store_Zero_MV();        MB.Set_Not_Intra();      }      else {        Bits->Put_Bits( 0, 1 );          // coded        MB.Encode_Inter_B(Bits, In, Fwd_Code, Bwd_Code);      }      MB.Store_Map_Infos();      MB++;    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (Slicer) Slicer(Cur, MB.y*16, 16, Slicer_Data);    MB.y++;  }  Texture_Bits = MB.Get_Texture_Bits();  MV_Bits = MB.Get_MV_Bits();  if (Debug_Level==1)  Dump_MVs(Cur, 2); // will trash frame}void SKL_MP4_ENC_I::Code_Frame(SKL_BYTE * const Buf, int Max_Len,                                       const SKL_MP4_FRAME * const Frame){    // Codes 'Cur' frame into bitstream  SKL_FBB Bits(Buf);  if (_Need_VOL_Header) {    if (_Emit_SEQ_Codes==1) {      Bits.Put_DWord(SEQ_START_CODE);      Bits.Put_Bits( 0x02, 8 );   // Simple Profile, Level 2      Bits.Flush_Write();      _Emit_SEQ_Codes = 2;    }    Write_VOL_Header(&Bits);    _Need_VOL_Header = 0;  }  Write_VOP_Header(&Bits, Frame);  Set_Rounding();  Cur->Coding = Frame->Coding;  if (Slicer) Slicer(Cur, 0, 0, Slicer_Data); // "start of scan" call  if (Frame->Coding==I_VOP) {    if (Reduced_VOP<1) Write_I_VOP(&Bits);    else               Write_Reduced_I_VOP(&Bits);  }  else if (Frame->Coding==B_VOP) Write_B_VOP(&Bits);  else {      /* P/S-VOP */                 if (Reduced_VOP<1) {      if (Frame->Coding==P_VOP) Write_P_VOP(&Bits);      else                      Write_S_VOP(&Bits);    }    else                        Write_Reduced_P_VOP(&Bits);  }  Make_Edges_Enc(Cur);  // replicate edges of *decimated* frame  Switch_Off();  if (Slicer) Slicer(Cur, Cur->Height, 0, Slicer_Data); // "end of scan" call  Stuffed_Align(&Bits);  Coded_Bits = 8*(Bits.Write_Pos() - Buf);    // done coding.}//////////////////////////////////////////////////////////// Input analysis and frame coding preparation//////////////////////////////////////////////////////////void SKL_MP4_ENC_I::Setup_VOL_Params(){  int IParam;  if (Get_Analyzer()->Get_Param( "bframe", &IParam ))    if (Low_Delay!=(!IParam)) {      _Need_VOL_Header = 1;      Low_Delay = (!IParam);    }  {    int Mode, Acc, Nb;    if (Get_Analyzer()->Get_Param( "gmc-mode", &Mode ) &&        Get_Analyzer()->Get_Param( "gmc-pts", &Nb ) &&        Get_Analyzer()->Get_Param( "gmc-accuracy", &Acc ) ) {      Mode = (Mode>=0) ? SPRITE_GMC : SPRITE_NONE;      if (Frame_Number==0 || Sprite_Mode!=Mode)        _Need_VOL_Header = 1;      Sprite_Mode = Mode;      if (Mode==SPRITE_GMC && (Sprite_Nb_Pts!=Nb || Sprite_Accuracy!=Acc))      {        _Need_VOL_Header = 1;        Sprite_Brightness = 0;        Sprite_Accuracy   = Acc;        Sprite_Nb_Pts     = Nb;      }    }  }  if (Get_Analyzer()->Get_Param( "subpixel", &IParam )) {    int Sub = (IParam==2);    if (Quarter!=Sub) {      _Need_VOL_Header = 1;      Quarter = Sub;    }  }  if (Get_Analyzer()->Get_Param( "quant-type", &IParam ))    if (Get_Quant_Type()!=IParam) {      _Need_VOL_Header = 1;      Set_Quant_Type( IParam );    }  int Intl = 0;  if (Get_Analyzer()->Get_Param( "interlace-dct", &IParam ))    Intl |= IParam;       // bits 0,1  if (Get_Analyzer()->Get_Param( "interlace-field", &IParam ))    Intl |= (IParam<<2);  // bits 2,3  if (Interlace!=Intl) {    _Need_VOL_Header = 1;    Interlace = Intl;  }  if (Get_Analyzer()->Get_Param( "frequency", &IParam ))    if (Time_Frequency!=IParam) {      _Need_VOL_Header = 1;      Set_Time_Frequency( IParam );    }  if (Get_Analyzer()->Get_Param( "reduced-frame", &IParam )) {    if ((Reduced_VOP>=0)!=(IParam>=0)) {      _Need_VOL_Header = 1;      if (IParam>=0) Reduced_VOP = 0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞午夜av一区二区三区| 亚洲丝袜美腿综合| 日韩亚洲欧美中文三级| 亚洲国产精品一区二区www| 亚洲高清免费视频| 国产乱理伦片在线观看夜一区| 91精品国产欧美一区二区成人| 午夜不卡av免费| 日韩视频一区在线观看| 久久 天天综合| 国产精品免费免费| 中日韩av电影| 亚洲va欧美va国产va天堂影院| 欧美日韩大陆一区二区| 美女爽到高潮91| 国产精品日韩成人| 欧美性受极品xxxx喷水| 日本成人超碰在线观看| 在线观看亚洲专区| 久久精品国产精品青草| 国产精品美女久久久久aⅴ国产馆| av福利精品导航| 爽好久久久欧美精品| 亚洲精品一区二区三区福利 | 加勒比av一区二区| 国产精品每日更新| 69堂精品视频| 粉嫩aⅴ一区二区三区四区| 亚洲bt欧美bt精品777| 国产亚洲欧洲一区高清在线观看| 91理论电影在线观看| 青青草精品视频| 国产精品毛片久久久久久久| 4438x成人网最大色成网站| 成人性生交大片免费看在线播放| 亚洲综合在线视频| 久久精品人人做人人爽97| 欧美日韩国产另类不卡| 大桥未久av一区二区三区中文| 亚洲国产精品自拍| 国产日韩欧美电影| 欧美成人在线直播| 欧美日韩一区二区三区在线看| 国产成人免费视频网站高清观看视频| 亚洲精品日产精品乱码不卡| 久久亚洲二区三区| 欧美一级淫片007| 91蜜桃婷婷狠狠久久综合9色| 国产在线不卡一卡二卡三卡四卡| 亚洲国产成人av网| 亚洲男人天堂av网| 国产欧美日韩卡一| 精品国产一区二区在线观看| 欧美另类高清zo欧美| 一本到不卡精品视频在线观看 | 国产成都精品91一区二区三| 亚洲国产另类av| 国产精品盗摄一区二区三区| 久久久亚洲高清| 欧美一区二区三区播放老司机| 日本久久电影网| 成a人片亚洲日本久久| 国产精品羞羞答答xxdd| 久久av老司机精品网站导航| 亚洲午夜久久久| 亚洲欧美日韩在线不卡| 亚洲同性gay激情无套| 国产精品亲子乱子伦xxxx裸| 国产亚洲精品资源在线26u| 久久新电视剧免费观看| 欧美va天堂va视频va在线| 91精品一区二区三区久久久久久| 欧美最新大片在线看| 在线看国产一区二区| 色天天综合色天天久久| 91麻豆国产香蕉久久精品| 99久久精品国产麻豆演员表| 成人精品视频一区二区三区| 成人午夜精品在线| 丰满少妇在线播放bd日韩电影| 狠狠色狠狠色综合日日91app| 免费不卡在线观看| 久草中文综合在线| 国产精一区二区三区| 粗大黑人巨茎大战欧美成人| 不卡的av在线| 日本韩国一区二区| 欧美男男青年gay1069videost| 欧美久久一二三四区| 日韩午夜av一区| 久久尤物电影视频在线观看| 欧美成人r级一区二区三区| 久久精品人人爽人人爽| 国产精品欧美一区二区三区| 一区二区三区国产精品| 午夜精品成人在线| 亚洲欧美日韩小说| 国产精品福利影院| 国产三区在线成人av| 欧美日本一区二区| 一区二区三区日韩欧美| 一区二区三区免费观看| 亚洲成a人v欧美综合天堂下载| 日本亚洲电影天堂| 国产精品中文字幕日韩精品 | 久久先锋影音av鲁色资源| 国产日韩欧美综合在线| 亚洲视频一区二区在线观看| 一区二区不卡在线播放| 日本伊人色综合网| 国产69精品久久99不卡| 一本色道久久综合精品竹菊| 欧美喷水一区二区| 亚洲国产高清aⅴ视频| 亚洲最快最全在线视频| 九九在线精品视频| 色诱视频网站一区| 极品少妇xxxx精品少妇| 日本人妖一区二区| 精品一区免费av| 成人va在线观看| 884aa四虎影成人精品一区| 国产精品网站导航| 日本va欧美va瓶| 99久久精品久久久久久清纯| 91精品国产入口在线| 亚洲欧美综合在线精品| 日韩av二区在线播放| 99国产精品久久久久久久久久久| 欧美人妇做爰xxxⅹ性高电影| 国产精品网站在线| 蜜臀久久久久久久| 91久久精品午夜一区二区| 久久综合精品国产一区二区三区 | 亚洲欧洲精品一区二区精品久久久 | 99久久精品国产麻豆演员表| 欧美精品久久久久久久多人混战| 国产精品福利一区二区| 九九久久精品视频| 欧美精品三级在线观看| 亚洲精品视频在线观看网站| 国产福利一区在线观看| 欧美成人女星排名| 视频一区二区三区中文字幕| 久久影视一区二区| 日韩av电影天堂| 欧美日韩精品高清| 一区二区成人在线观看| 成人黄动漫网站免费app| 亚洲精品一区二区三区福利| 五月天欧美精品| 欧美日韩一区成人| 午夜久久电影网| 欧美日韩国产美| 亚洲成a人v欧美综合天堂下载| 色综合久久久久综合体| 国产精品网站在线观看| 国产精品综合视频| 欧美不卡一区二区三区四区| 亚洲午夜羞羞片| 欧美日韩在线一区二区| 亚洲欧洲韩国日本视频| 国产在线一区二区综合免费视频| 成人黄色电影在线 | 成人自拍视频在线观看| 欧美日韩午夜在线视频| 亚洲自拍偷拍av| 色先锋aa成人| 中文字幕一区在线观看视频| 久久国产精品无码网站| 91精品国产综合久久香蕉的特点| 一区二区欧美国产| 91玉足脚交白嫩脚丫在线播放| 中文字幕在线不卡| 91丨porny丨蝌蚪视频| 国产精品美女久久久久av爽李琼 | 五月激情丁香一区二区三区| 国产精品一区二区在线观看不卡 | 91福利国产精品| 亚洲私人黄色宅男| 97久久超碰国产精品| 国产精品人成在线观看免费 | 国产女人18毛片水真多成人如厕 | 国产乱国产乱300精品| 久久综合色天天久久综合图片| 麻豆视频一区二区| 久久精品男人的天堂| 国产激情精品久久久第一区二区| 欧美精品一区在线观看| 国产一区二区日韩精品| 国产精品久久久久天堂| 91色在线porny| 亚洲激情在线播放| 国产999精品久久久久久绿帽| 国产精品美女久久福利网站| av在线不卡观看免费观看| 亚洲精品乱码久久久久久 | 国产美女精品人人做人人爽| 久久久久国色av免费看影院| 一本到三区不卡视频|