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

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

?? skl_mpg4_enc.cpp

?? mpeg4編解碼器
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
      else Reduced_VOP = -1;    }  }}void SKL_MP4_ENC_I::Setup_Frame_Params(SKL_MP4_FRAME *Frame){  int Param;    // we ask the analyzer for the final non-VOL params.     // It might have better hints than we do.  Get_Analyzer()->Get_Param( "quant", &Frame->Quant );  Get_Analyzer()->Get_Param( "fcode", &Frame->Fwd_Code );  if (Frame->Coding==B_VOP)    Get_Analyzer()->Get_Param( "fcode-bwd", &Frame->Bwd_Code );  if (Frame->Reduced_VOP>=0) Frame->Reduced_VOP = 0;  if (Frame->Coding != B_VOP && Frame->Coding != S_VOP) {    int Reduc;    if (Get_Analyzer()->Get_Param( "reduced-frame", &Reduc)) {      if (Reduc>1) Reduc = 1;      Frame->Reduced_VOP = Reduc;    }  }  if (Frame->Coding==P_VOP || Frame->Coding==S_VOP) {    if (!Get_Analyzer()->Get_Param( "rounding", &Frame->Rounding))      Frame->Rounding ^= 1;  }  else {    if (Frame->Coding==B_VOP)      Frame->Rounding = 0;  }  if (Frame->Coding==S_VOP) {    Get_Analyzer()->Get_Param( "gmc-mode", &Param );    if (Param>0) {      Frame->Coding = S_VOP;      Sprite_Mode   = SPRITE_GMC;      Get_Analyzer()->Get_Param( "gmc-pts", &Sprite_Nb_Pts);      const int (*Warps)[2] = (int (*)[2])Get_Analyzer()->Get_Param( "gmc-warp-pts" );      for(int n=0; n<Sprite_Nb_Pts; ++n) {        S_Warp_Pts[n][0] = Warps[n][0];        S_Warp_Pts[n][1] = Warps[n][1];      }    }    else {      Frame->Coding = P_VOP;      Sprite_Mode = SPRITE_NONE;    }  }  Get_Analyzer()->Get_Param( "inter-threshold", &_Inter_Coding_Threshold );    Get_Analyzer()->Get_Param( "use-trellis", &Param );  Set_Trellis_Usage(!!Param);  Cur->Coding = Frame->Coding;  /* TODO: DC_Thresh? Alt_Vert_Scan? ... */}//////////////////////////////////////////////////////////// Main entry point//////////////////////////////////////////////////////////int SKL_MP4_ENC_I::Encode(SKL_BYTE *Buf, int Max_Len){  SKL_ASSERT(Width!=0 && Height!=0 && Get_Analyzer()!=0);  if (Last==0) {  // no user input. Check if we have a pending B-VOP in store...    return 0;  }  SKL_MP4_FRAME *Frame = this;  Cur = Last;                       // get Input frame  Last = 0;                         // mark it consumed  Frame->Time = Cur->Time_Ticks;    // set time  Cur->Map = All_Maps[Cur_Map].Map; // assign analysis map  Cur->MV  = All_Maps[Cur_Map].MV;  // assign analysis MV map  if (++Cur_Map==Nb_Maps)    Cur_Map = 0;  Future->Map = 0;                  // sanity check  Future->MV = 0;                   // ""    // Analyze new frame -> decide: Coding, MB types, Quant, dQ, ...      // 1rst pass: Motion analysis  Frame->Coding = Get_Analyzer()->Analyze(this);  if (Frame->Coding==I_VOP && _Key_VOL_Headers)    _Need_VOL_Header = 1;  Setup_VOL_Params();  // might trigger a _Need_VOL_Header    // We, as encoder, have the final word about frame Coding type.  if (_Need_VOL_Header)  {      // it's not a real scene change. Just a checkpoint: we must      // insert an I-VOP after a VOL header) => Don't reset the MVs!      // They might be useful for the next frame analysis.    Frame->Coding = I_VOP;  }  if (Frame->Coding==B_VOP) {}  else if (Frame->Coding==S_VOP) {}    // 2nd pass for spatial analysis (dQ)  Get_Analyzer()->Analyze_dQ(this, Frame->Coding==B_VOP);    // Frame params are now ready => code bitstream syntax  Setup_Frame_Params(Frame);  Code_Frame(Buf, Max_Len, this);    // send some stats to the analyzer  Get_Analyzer()->Post_Coding_Update( this );  Frame_Number++;    // display debug infos  if (Debug_Level) {    if (Debug_Level==4) Dump_Map(Cur, 0);    else if (Debug_Level==5) Dump_Map(Cur, 1);    else if (Debug_Level==6) Dump_Map(Cur, 2);  }    // reorder frames if needed  int Ticks;    // save current time first, before swapping  Get_Analyzer()->Get_Param( "frame-ticks", &Ticks );  SKL_UINT64 Next_Time_Ticks = Cur->Time_Ticks + Ticks;  if (Frame->Coding!=B_VOP) {    Aux    = Past;    Past   = Cur;    Cur    = Future;    Future = Aux;    Aux    = Cur;    Time_Last_Coded = Past->Time_Ticks;    Time_Ref = Past->Time_Ticks / Time_Frequency;   // sync-point#if 0       // secure tickers every 65k-ticks, to avoid overflows    if (Time_Last_Coded>0x10000) {      Time_Ref -= 0x10000;      Time_Last_Coded -= 0x10000;      Next_Time_Ticks -= 0x10000 * Time_Frequency;    }#endif  }    // setup time of next-to-be-encoded frame, just in    // case the user forgets to (or doesn't care doing so).  Aux->Time_Ticks = Next_Time_Ticks;  Aux->Time = (double)(SKL_INT64)Next_Time_Ticks / (double)(SKL_INT64)Time_Frequency;  Aux->Map = 0; // sanity check  Aux->MV  = 0; // ""  Aux->Coding = -1; // sanity check  return Coded_Bits/8;}//////////////////////////////////////////////////////////// class SKL_MP4_ENC_I//////////////////////////////////////////////////////////SKL_MP4_ENC_I::SKL_MP4_ENC_I(SKL_MEM_I *Mem)  : SKL_MP4_I(Mem)  , SKL_MP4_ENC()  , _Dflt_Analyzer(Skl_MP4_Get_Default_Analyzer(Mem)){  _Buf_Size     = 0;  _Buf          = 0;  _Buf_Len      = 0;    _In_Pic = 0;  _Need_VOL_Header = 1;  _Key_VOL_Headers = 0;   _Emit_SEQ_Codes = 0;  _Analyzer = 0;  _Use_Trellis = -1;  Set_Trellis_Usage(1);  Init_VOL(0);  Set_Analyzer( _Dflt_Analyzer );  Clear_Aux();}SKL_MP4_ENC_I::~SKL_MP4_ENC_I(){  Clear_Aux();  Clear_Buf();  if (_Analyzer!=0) _Analyzer->Shut_Down();  _Analyzer = 0;  Skl_MP4_Destroy_Default_Analyzer( _Dflt_Analyzer );}SKL_MP4_ANALYZER *SKL_MP4_ENC_I::Set_Analyzer(SKL_MP4_ANALYZER *Anl){  SKL_MP4_ANALYZER *Previous = _Analyzer;  if (_Analyzer!=0) _Analyzer->Shut_Down();  _Analyzer = (Anl==0) ? _Dflt_Analyzer : Anl;  _Analyzer->Wake_Up(Previous);  return Previous;}SKL_MP4_ANALYZER *SKL_MP4_ENC_I::Get_Analyzer() const{  return _Analyzer;}void SKL_MP4_ENC_I::Set_Slicer(SKL_MP4_SLICER Slicer, SKL_ANY Slicer_Data) {  SKL_MP4_I::Set_Slicer(Slicer, Slicer_Data);}SKL_MEM_I *SKL_MP4_ENC_I::Set_Memory_Manager(SKL_MEM_I *Mem){  return SKL_MP4_I::Set_Memory_Manager(Mem);}void SKL_MP4_ENC_I::Set_Custom_Matrix(int Intra, const SKL_BYTE *M) {  if (Set_Matrix(Intra, M))    _Need_VOL_Header = 1;}int SKL_MP4_ENC_I::Ioctl(SKL_CST_STRING Param){  if (Param==0) return -1;  if (!strcmp(Param, "emit-key-headers")) {    _Key_VOL_Headers = 1;    return 1;  }  else if (!strcmp(Param, "no-emit-key-headers")) {    _Key_VOL_Headers = 0;    return 1;  }  else if (!strcmp(Param, "emit-sequence-codes")) {    _Emit_SEQ_Codes = 1;    return 1;  }  else if (!strcmp(Param, "no-emit-sequence-codes")) {    _Emit_SEQ_Codes = 0;    return 1;  }  return 0;}//////////////////////////////////////////////////////////void SKL_MP4_ENC_I::Alloc_Aux() { /* nothing more needed, for now */ }void SKL_MP4_ENC_I::Clear_Aux() { /* nothing more needed, for now */ }SKL_MP4_PIC *SKL_MP4_ENC_I::Prepare_For_Input(int W, int H){  if (W<=0 || W>2048 || H<=0 || H>2048)    return 0;  if (Width!=W || Height!=H)  {    Init_Pics(W, H, 3, 2);  // will store new W/H    Alloc_Aux();            // init our own rest    _Need_VOL_Header = 1;        }   // user input is always 'Aux'   // Time_Ticks should be ok from last encoding  Last = Aux;  return Last;}void SKL_MP4_ENC_I::Set_CPU( SKL_CPU_FEATURE Cpu ){  SKL_MP4_I::Set_CPU(Cpu);  Set_Trellis_Usage(_Use_Trellis);}void SKL_MP4_ENC_I::Set_Trellis_Usage(const int Do_It){  _Use_Trellis = Do_It;}//////////////////////////////////////////////////////////// Interface Wrappersvoid SKL_MP4_ENC_I::Set_Debug_Level(int Level) {  SKL_MP4_I::Set_Debug_Level( Level );}const SKL_MP4_PIC *SKL_MP4_ENC_I::Prepare_Next_Frame(int Width, int Height){  _In_Pic = Prepare_For_Input(Width, Height);  return _In_Pic;}const SKL_MP4_PIC *SKL_MP4_ENC_I::Get_Next_Frame() const{  return _In_Pic;}const SKL_MP4_PIC *SKL_MP4_ENC_I::Get_Last_Coded_Frame() const{  return Past;   // TODO: this is wrong for B-vop}void SKL_MP4_ENC_I::Get_All_Frames(SKL_MP4_PIC *Pic) const{  SKL_MP4_I::Get_All_Frames(Pic);}int SKL_MP4_ENC_I::Encode(){  size_t Needed_Size = (_In_Pic->Width*_In_Pic->Height)*2; // TODO: safety factor?  int Buf_Size_Max = 0;  if (Get_Analyzer()->Get_Param("buffer-size", &Buf_Size_Max))    if (Buf_Size_Max>0 && Needed_Size>(size_t)Buf_Size_Max)      Needed_Size = Buf_Size_Max;  if (Needed_Size<4096) Needed_Size = 4096;  Check_Buf_Size( Needed_Size );  _Buf_Len = Encode(_Buf, _Buf_Len);  return _Buf_Len;}int SKL_MP4_ENC_I::Finish_Encoding(){  // TODO: Check for a pending B-VOP...  // TODO: should we emit a SEQ_END code?    if (_Emit_SEQ_Codes) {    SKL_FBB Bits(_Buf);    Bits.Put_DWord(SEQ_END_CODE);    _Buf_Len = 4;    return 4;  }  return 0;}const SKL_BYTE *SKL_MP4_ENC_I::Get_Bits() const {  return _Buf;}int SKL_MP4_ENC_I::Get_Bits_Length() const {  return _Buf_Len;}void SKL_MP4_ENC_I::Check_Buf_Size(const size_t Needed_Size){  if (Needed_Size>_Buf_Size)  {    SKL_BYTE *New_Buf = (Mem!=0) ? (SKL_BYTE*)Mem->New( Needed_Size )                                 : (SKL_BYTE*)malloc( Needed_Size );    if (New_Buf==0)      Skl_Throw( SKL_MEM_EXCEPTION("Byte buffer", Needed_Size) );    if (_Buf_Len>0)      SKL_MEMCPY(New_Buf, _Buf, _Buf_Len);    Clear_Buf();    _Buf      = New_Buf;    _Buf_Size = Needed_Size;  }  else {    // TODO: shrink the _Buf from time to time?  }}void SKL_MP4_ENC_I::Clear_Buf() {  if (_Buf_Size>0) {    if (Mem) Mem->Delete( _Buf, _Buf_Size );    else free( _Buf );  }  _Buf_Size = 0;  _Buf = 0;  /* Don't touch _Len, here. We might just be swapping buffers.. */}//////////////////////////////////////////////////////////// SKL_MP4_ENC//////////////////////////////////////////////////////////SKL_MP4_ENC::SKL_MP4_ENC() {}SKL_MP4_ENC::~SKL_MP4_ENC() {}//////////////////////////////////////////////////////////// C factoryextern "C" {SKL_EXPORTSKL_MP4_ENC *Skl_MP4_New_Encoder() {   return (SKL_MP4_ENC*)::new SKL_MP4_ENC_I((SKL_MEM_I*)0);}SKL_EXPORTvoid Skl_MP4_Delete_Encoder(SKL_MP4_ENC *Enc) { ::delete (SKL_MP4_ENC_I*)Enc; }} // extern "C"//////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产aⅴ精品一区二区三区色成熟| 国产精品伊人色| 亚洲男帅同性gay1069| 国产欧美日韩久久| 中文字幕va一区二区三区| 国产日本欧洲亚洲| 中文字幕视频一区二区三区久| 国产欧美精品一区二区色综合 | 国产精品一区二区久久不卡| 美女网站色91| 成人av在线播放网站| 91蝌蚪国产九色| 538在线一区二区精品国产| 欧美va亚洲va香蕉在线| 中文字幕一区日韩精品欧美| 亚洲国产视频网站| 日本欧美在线观看| 色综合视频一区二区三区高清| bt7086福利一区国产| 色婷婷精品大视频在线蜜桃视频| 欧美亚洲综合一区| 亚洲国产日日夜夜| 麻豆国产欧美一区二区三区| 成人精品视频一区二区三区尤物| 91久久久免费一区二区| 国产视频一区二区在线观看| 美女任你摸久久 | 亚洲电影一级片| 不卡的电视剧免费网站有什么| 91精品国产91久久久久久一区二区| 国产精品第五页| 99久久综合国产精品| 国产日韩欧美综合一区| 国产麻豆一精品一av一免费| 91麻豆精品91久久久久同性| 一区二区三区在线视频免费| av中文字幕不卡| 亚洲三级视频在线观看| 91久久线看在观草草青青 | 在线免费观看成人短视频| 国产精品盗摄一区二区三区| 成人永久免费视频| 国产精品久久久久久久久动漫 | 亚洲婷婷国产精品电影人久久| 成人av中文字幕| 五月天亚洲精品| 久久午夜电影网| 日本道精品一区二区三区 | 欧美亚洲另类激情小说| 久久精品999| 中文字幕一区二区三区在线不卡| 在线看国产一区| 国产中文字幕一区| 亚洲午夜精品一区二区三区他趣| 国产乱码精品一区二区三区忘忧草 | 麻豆精品视频在线| 国产婷婷一区二区| 日韩一区二区在线看| av一本久道久久综合久久鬼色| 亚洲va欧美va人人爽午夜| 久久久久久**毛片大全| 欧美一级淫片007| 欧美伊人精品成人久久综合97| 国产69精品久久777的优势| 美国十次了思思久久精品导航| 亚洲午夜在线视频| 亚洲欧美日韩国产手机在线| 日韩美女啊v在线免费观看| 国产亚洲欧美日韩俺去了| 久久综合九色综合97婷婷| 欧美一区二区三区人| 欧美精品tushy高清| 国产欧美精品一区| 色狠狠色狠狠综合| 中文字幕免费不卡在线| 欧美成人一区二区三区片免费| 国产一区二区三区四区五区美女| 久久久久久久一区| 91精品国产综合久久婷婷香蕉 | 亚洲精品国产一区二区三区四区在线| 91精品国产综合久久婷婷香蕉| 成人永久免费视频| 91视频一区二区三区| 精品视频123区在线观看| 欧美精品丝袜中出| www成人在线观看| 久久精品视频网| 中文字幕日韩欧美一区二区三区| 国产精品传媒视频| 蜜桃视频一区二区三区在线观看| 粉嫩aⅴ一区二区三区四区五区 | 精品亚洲欧美一区| 韩国精品一区二区| 色av成人天堂桃色av| 精品久久久久久无| 亚洲成人综合在线| 在线亚洲+欧美+日本专区| 91小视频在线观看| 亚洲资源中文字幕| 欧美日韩aaaaaa| 麻豆一区二区三| 日韩三级视频在线看| 久久先锋影音av鲁色资源网| 99久久夜色精品国产网站| 国产欧美日韩精品a在线观看| 国产一区二区福利| 国产精品美女久久久久久| 99久久精品费精品国产一区二区| 亚洲一区视频在线观看视频| 欧美在线观看你懂的| 天天综合色天天综合色h| 日韩三级视频在线看| 国产一区二区不卡| 国产精品灌醉下药二区| 久久精品av麻豆的观看方式| 亚洲柠檬福利资源导航| 欧美另类z0zxhd电影| 精品一区二区免费看| 亚洲国产精品av| 欧美自拍丝袜亚洲| 日本人妖一区二区| 国产视频一区二区在线| 97久久超碰精品国产| 欧美bbbbb| 亚洲视频在线一区观看| 94-欧美-setu| 国产精品99久久久久久宅男| 亚洲美腿欧美偷拍| 日韩精品一区二区三区三区免费| 成人精品视频.| 亚洲国产一区二区视频| 日韩精品专区在线影院重磅| 风间由美性色一区二区三区| 亚洲国产视频a| 欧美韩国日本综合| 91精品国产综合久久久久久久久久| 国产高清不卡一区二区| 欧美视频中文一区二区三区在线观看| 看电影不卡的网站| 亚洲高清视频在线| 国产精品成人免费精品自在线观看 | 欧美亚洲综合网| 高清在线观看日韩| 国产精品久久久久久久久动漫| 69成人精品免费视频| 91小视频在线免费看| 国产电影精品久久禁18| 日产欧产美韩系列久久99| 亚洲黄色性网站| 国产偷v国产偷v亚洲高清 | 亚洲激情图片一区| 欧美国产综合一区二区| 欧美一级xxx| 欧美日韩亚州综合| 99久久99久久精品免费观看 | 国产三级欧美三级| 欧美一级二级三级乱码| 欧美日韩中字一区| 成人一道本在线| www.欧美亚洲| 成人激情午夜影院| 粉嫩在线一区二区三区视频| 日产精品久久久久久久性色| 亚洲精品欧美二区三区中文字幕| 亚洲免费观看高清完整版在线观看 | 成人国产精品免费| 国产一区二区三区观看| 久久激情五月激情| 午夜精品在线看| 亚洲一区二区三区视频在线| 亚洲精品欧美综合四区| 尤物视频一区二区| 亚洲综合久久久久| 亚洲国产综合视频在线观看| 亚洲精品视频一区| 亚洲国产一二三| 天堂va蜜桃一区二区三区漫画版| 亚洲国产日韩综合久久精品| 亚洲国产精品传媒在线观看| 中文字幕一区二区三区不卡| 国产精品久久综合| 亚洲欧美电影一区二区| 亚洲激情一二三区| 亚洲精品综合在线| 亚洲成av人片一区二区梦乃| 日韩国产欧美视频| 精品伊人久久久久7777人| 国产一本一道久久香蕉| 懂色av一区二区三区免费看| 成人不卡免费av| 欧美在线观看一二区| 欧美高清www午色夜在线视频| 亚洲精品一区二区精华| 国产精品欧美综合在线| 亚洲欧美日韩人成在线播放| 日韩激情视频在线观看| 北条麻妃国产九九精品视频| 在线亚洲高清视频| 欧美精品一区男女天堂| 国产精品久久久久一区|