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

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

?? skl_mpg4_rvop.cpp

?? mpeg4編解碼器
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
  Tmp[3][1] = SCALE_UP_MV(MV2[1][1]);  Clip_Field(Tmp[0], Tmp[0]);   // TODO: dunno if it's correct.  Clip_Field(Tmp[1], Tmp[1]);  Clip_Field(Tmp[2], Tmp[2]);  Clip_Field(Tmp[3], Tmp[3]);  if (!VOL->Quarter) {    SKL_BYTE * Y = Y1;    Predict_16x8 (Y,        Y        +Fwd_CoLoc, Tmp[0], Ops);    Predict_16x8 (Y+BpS8,   Y+BpS8   +Fwd_CoLoc, Tmp[0], Ops);    Predict_16x8 (Y+16,     Y+16     +Fwd_CoLoc, Tmp[1], Ops);    Predict_16x8 (Y+16+BpS8,Y+16+BpS8+Fwd_CoLoc, Tmp[1], Ops);    Y += 2*BpS8;    Predict_16x8 (Y,        Y        +Fwd_CoLoc, Tmp[2], Ops);    Predict_16x8 (Y+BpS8,   Y+BpS8   +Fwd_CoLoc, Tmp[2], Ops);    Predict_16x8 (Y+16,     Y+16     +Fwd_CoLoc, Tmp[3], Ops);    Predict_16x8 (Y+16+BpS8,Y+16+BpS8+Fwd_CoLoc, Tmp[3], Ops);  }  else {    SKL_BYTE * Y = Y1;    Predict_16x16_QP(Y,   Y   +Fwd_CoLoc, Tmp[0], Ops);    Predict_16x16_QP(Y+16,Y+16+Fwd_CoLoc, Tmp[1], Ops);    Y += 2*BpS8;    Predict_16x16_QP(Y,   Y   +Fwd_CoLoc, Tmp[2], Ops);    Predict_16x16_QP(Y+16,Y+16+Fwd_CoLoc, Tmp[3], Ops);  }  SKL_MV uv_MV;  Derive_uv_MV_From_4MV(uv_MV, &Tmp[0], &Tmp[2]);  const int Halves = (uv_MV[0]&1) | ((uv_MV[1]&1)<<1);  const int Off = Fwd_CoLoc + (uv_MV[1]>>1)*BpS + (uv_MV[0]>>1);  Ops->HP_16x8[Halves](U,      U     +Off, BpS);  Ops->HP_16x8[Halves](U+BpS8, U+BpS8+Off, BpS);  Ops->HP_16x8[Halves](V,      V     +Off, BpS);  Ops->HP_16x8[Halves](V+BpS8, V+BpS8+Off, BpS);}#undef SCALE_UP_MV//////////////////////////////////////////////////////////static void Read_Reduced_P_VOP(SKL_FBB * const Bits, const SKL_MP4_I * const VOP){  SKL_ASSERT(VOP->Reduced_VOP>0);  SKL_MB MB(VOP);  SKL_INT16 Base[7*64+SKL_ALIGN];  SKL_INT16 * const In = (SKL_INT16*)SKL_ALIGN_PTR(Base, SKL_ALIGN);  while(MB.y<VOP->MB_H)  {    MB.Init_Scanline(VOP, 0);    const SKL_MV *Left_Predictor = MB.MVs - 1;    while(MB.x<VOP->MB_W)    {      if (Bits->Get_Bits(1)) // not coded      {        SKL_ASSERT(!MB.MC_Sel);   // no Reduced_VOP for GMC        MB.MB_Type = SKL_MB_SKIPPED;        MB.Predict_Reduced_With_0MV();        MB.Store_Zero_MV();                  MB.Set_Not_Intra();        Left_Predictor = &MB.MVs[1];                // no post-filter for skipped macroblock      }      else      {        MB.Decode_Inter_Infos(Bits, Left_Predictor);        SKL_ASSERT(MB.MC_Sel==0); // no reduced VOP for GMC        if (MB.MB_Type >= SKL_MB_INTRA)  {  /* INTRA or INTRA_Q */          MB.Decode_Intra_Blocks(Bits, In, VOP);          MB.Copy_16To8_Upsampled(In+1*64);          MB.Store_Zero_MV();          Left_Predictor = &MB.MVs[1];        }        else        {          MB.Set_Not_Intra();          if (MB.MB_Type == SKL_MB_INTER4V)          {            MB.Predict_Reduced_With_4MV(MB.MVs, MB.MVs2);            Left_Predictor = &MB.MVs[1];          }          else   /*  INTER or INTER_Q */          {            if (MB.Field_Pred)            {                                // Impl: we don't multiply the final field                 // vectors by 2 (cf. Store_16x8_MV())              MB.Predict_Reduced_Fields(MB.MVs, MB.Field_Dir);              MB.Store_16x8_MV(&MB.MVs2[0], &MB.MVs[0]); // field MV mode              Left_Predictor = &MB.MVs2[1]; // wow!            }            else            {              MB.Predict_Reduced_With_1MV(MB.MVs[0]);              MB.Store_16x16_MV();          // 16x16 mode              Left_Predictor = &MB.MVs[1];            }          }          MB.Decode_Inter_Blocks(Bits, In, VOP);          MB.Add_16To8_Upsampled(In + 1*64);        }        Post_Filter(&MB);      }      MB.Store_Map_Infos();      MB.Expand_Reduced();      if (!MB.Resync || !MB.Resync_Marker(Bits))        MB.Next_Reduced();      if (VOP->Debug_Level==5) {        if (MB.MB_Type==SKL_MB_SKIPPED) printf( "s" );         else if (MB.Field_Pred==1) printf( "=" );        else if (MB.MB_Type==SKL_MB_INTER4V) printf( "4" );        else printf( "%c", ".-="[1+MB.Field_DCT] );        if (MB.x==VOP->MB_W)    printf( "\n" );      }    }    if (VOP->Debug_Level==2) VOP->Dump_Line(0, &MB);    if (MB.y>0 && VOP->Slicer) VOP->Slicer(VOP->Cur, (MB.y-2)*16, 32, VOP->Slicer_Data);    MB.y += 2;  }  if (VOP->Debug_Level==1)  VOP->Dump_MVs(VOP->Cur, 2);  if (MB.y>0 && VOP->Slicer) VOP->Slicer(VOP->Cur, (MB.y-2)*16, 32, VOP->Slicer_Data);}//////////////////////////////////////////////////////////// entry pointvoid SKL_MP4_I::Read_Reduced_VOP(SKL_FBB * const Bits) const{  SKL_ASSERT(Reduced_VOP==1 && Coding!=B_VOP && Coding!=S_VOP);  if      (Coding==I_VOP) Read_Reduced_I_VOP(Bits, this);  else /* P/S-VOP */      Read_Reduced_P_VOP(Bits, this);}//////////////////////////////////////////////////////////////  Encoding////////////////////////////////////////////////////////////void SKL_MB_ENC::Copy_8To16_Downsampled(SKL_INT16 Out[6*64]) const{  if (Field_DCT<=0) {    VOL->MB_Ops.Filter_18x18_To_8x8(Out+0*64, Y1,           BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+1*64, Y1+16,        BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+2*64, Y1+16*BpS,    BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+3*64, Y1+16*BpS+16, BpS);  }  else {    VOL->MB_Ops.Filter_18x18_To_8x8(Out+0*64, Y1,        2*BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+1*64, Y1+16,     2*BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+2*64, Y1+BpS,    2*BpS);    VOL->MB_Ops.Filter_18x18_To_8x8(Out+3*64, Y1+BpS+16, 2*BpS);  }  VOL->MB_Ops.Filter_18x18_To_8x8(Out+4*64, U, BpS);  VOL->MB_Ops.Filter_18x18_To_8x8(Out+5*64, V, BpS);}void SKL_MB_ENC::Diff_8To16_Downsampled(SKL_INT16 Out[6*64]) const{  if (Field_DCT<=0) {    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+0*64, Y1,           BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+1*64, Y1+16,        BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+2*64, Y1+16*BpS,    BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+3*64, Y1+16*BpS+16, BpS);  }  else {    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+0*64, Y1,        2*BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+1*64, Y1+16,     2*BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+2*64, Y1+BpS,    2*BpS);    VOL->MB_Ops.Filter_Diff_18x18_To_8x8(Out+3*64, Y1+BpS+16, 2*BpS);  }  VOL->MB_Ops.Filter_Diff_18x18_To_8x8( Out+4*64, U, BpS);  VOL->MB_Ops.Filter_Diff_18x18_To_8x8( Out+5*64, V, BpS);}//////////////////////////////////////////////////////////  void SKL_MB_ENC::Decimate_Reduced_Intra(SKL_INT16 Out[12*64]) const{  Copy_8To16_Downsampled(Out+6*64);  // import  SKL_INT16 *C = Out;                // Decimate  const SKL_MP4_ENC_I * const Vol = (const SKL_MP4_ENC_I *)VOL;  for(int blk=0; blk<6; ++blk) {    const int DC_Q = SKL_MP4_I::DC_Scales[(blk<4)][Quant-1];    Vol->Decimate_Intra(C, C+6*64, Quant, DC_Q);    C += 64;  }  Copy_16To8_Upsampled(Out+6*64);    // transfer back decimated data}//////////////////////////////////////////////////////////void SKL_MP4_ENC_I::Write_Reduced_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;      MB.Set_Final_Params();      SKL_ASSERT(MB.MB_Type == SKL_MB_INTRA);      MB.Decimate_Reduced_Intra(In);      MB.Encode_Intra(Bits, In, 1);      Post_Filter(&MB);      MB.Expand_Reduced();      MB.Next_Reduced();    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (MB.y>0 && Slicer) Slicer(Cur, (MB.y-2)*16, 32, Slicer_Data);    MB.y+=2;  }  if (MB.y>0 && Slicer) Slicer(Cur, (MB.y-2)*16, 32, Slicer_Data);  Texture_Bits = MB.Get_Texture_Bits();  MV_Bits = MB.Get_MV_Bits();}///////////////////////////////////////////////////////////*#define SCALE_DOWN(V)   \  (V)[0][0] = ( (V)[0][0] + (V)[2][0] + (V)[2*MV_Stride][0] + (V)[2*MV_Stride+2][0] ) >> 3; \  (V)[0][1] = ( (V)[0][1] + (V)[2][1] + (V)[2*MV_Stride][1] + (V)[2*MV_Stride+2][1] ) >> 3*/#define SCALE_DOWN(V)   (V)[0][0] /= 2; (V)[0][1] /= 2static inline int Find_Last(const SKL_INT16 C[6*64], const int *Zigzag, int i){  while(i>=0)    if (C[Zigzag[i]])      return i;    else i--;  return -1;}void SKL_MB_ENC::Decimate_Reduced_Inter(SKL_INT16 Out[12*64]){  if (MB_Type==SKL_MB_SKIPPED) {    Predict_Reduced_With_0MV();    Store_Zero_MV();    return;  }    // Fwd predict  int Skippable = (dQuant==0) && SKL_IS_ZERO_MV(MVs[0]);  Copy_8To16_Downsampled(Out+6*64);    // save original data  if (Field_Pred) {                    // form predictions    Predict_Reduced_Fields(MVs, Field_Dir);    Store_16x8_MV(&MVs2[0], &MVs[0]);    SKL_COPY_MV(MVs[1], MVs2[0]);      // update left predictor    if (Skippable) Skippable &= SKL_IS_ZERO_MV(MVs2[0]);  }  else {    if (MB_Type!=SKL_MB_INTER4V) {      Predict_Reduced_With_1MV(MVs[0]);      Store_16x16_MV();    }    else {      Predict_Reduced_With_4MV(&MVs[0], &MVs2[0]);      if (Skippable) {        Skippable &= SKL_IS_ZERO_MV(MVs [1]);        Skippable &= SKL_IS_ZERO_MV(MVs2[0]);        Skippable &= SKL_IS_ZERO_MV(MVs2[1]);      }    }  }  Diff_8To16_Downsampled(Out+6*64);    // diff original/predicted data  SKL_INT16 *C = Out;                  // Decimate and set Cbp  Cbp = 0x00;  const SKL_MP4_ENC_I * const Vol = (const SKL_MP4_ENC_I *)VOL;  for(int blk=0; blk<6; ++blk)  {    const int SAV = Vol->Decimate_Inter(C, C+6*64,Quant);    if (SAV>0) {      Last[blk] = Find_Last(C, SKL_MP4_I::Scan_Order[0], 63);      SKL_ASSERT(Last[blk]>=0);      Cbp |= 1<<(5-blk);    }    else Last[blk] = -1;    C += 64;  }  if (Skippable && Cbp==0)    MB_Type = SKL_MB_SKIPPED;          // won't be coded (don't transfer back data)  else    Add_16To8_Upsampled(Out+6*64);     // transfer back decimated delta data}void SKL_MP4_ENC_I::Write_Reduced_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();      SKL_ASSERT(MB.MB_Type!=SKL_MB_INTER4V);      if (MB.MB_Type!=SKL_MB_SKIPPED) {        SCALE_DOWN(MB.MVs);        MB.Set_Final_Params();      }      if (MB.MB_Type==SKL_MB_INTRA) MB.Decimate_Reduced_Intra(In);      else                          MB.Decimate_Reduced_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);        Post_Filter(&MB);      }      MB.Store_Map_Infos();      MB.Expand_Reduced();      MB.Next_Reduced();    }    if (Debug_Level==2) Dump_Line(0, &MB);    if (MB.y>0 && Slicer) Slicer(Cur, (MB.y-2)*16, 32, Slicer_Data);    MB.y += 2;  }  if (MB.y>0 && Slicer) Slicer(Cur, (MB.y-2)*16, 32, Slicer_Data);  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}#undef SCALE_DOWN//////////////////////////////////////////////////////////

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费精品99久久国产综合精品| 国产女同互慰高潮91漫画| 成人免费视频app| 久久疯狂做爰流白浆xx| 麻豆精品在线视频| 久久国产精品72免费观看| 久久电影网电视剧免费观看| 黄网站免费久久| 国产精品一级片在线观看| 国产成人在线视频网址| 波多野结衣精品在线| 97精品久久久午夜一区二区三区| 99这里只有精品| 在线国产电影不卡| 91麻豆精品国产91久久久更新时间 | 中文字幕乱码亚洲精品一区 | 国产无一区二区| 国产精品成人在线观看| 一区二区三区欧美在线观看| 洋洋成人永久网站入口| 日本sm残虐另类| 国产精品一区在线| 国产99久久久国产精品潘金网站| 99精品在线观看视频| 欧美日韩另类一区| 精品久久久三级丝袜| 国产精品黄色在线观看| 日韩高清欧美激情| 国产精品18久久久久久vr| 成人av电影在线网| 6080国产精品一区二区| 日韩理论在线观看| 一二三区精品视频| 激情五月婷婷综合网| 91视频观看视频| 欧美日韩国产电影| 欧美成人艳星乳罩| 国产欧美日韩久久| 亚洲小说欧美激情另类| 国产一区二区三区四区五区美女 | 一区二区欧美精品| 裸体健美xxxx欧美裸体表演| 成人黄色av电影| 884aa四虎影成人精品一区| 欧美国产97人人爽人人喊| 亚洲制服丝袜一区| 国产成人精品免费视频网站| 8x8x8国产精品| 亚洲精品乱码久久久久久久久| 日韩成人一级片| 成人精品在线视频观看| 日韩亚洲欧美在线| 一区二区三区在线播放| 国产成人福利片| 91精品国产综合久久福利软件| 综合精品久久久| 国产一区久久久| 欧美一区二区美女| 亚洲国产精品久久人人爱蜜臀| 成人中文字幕合集| 久久久久久久久岛国免费| 亚洲777理论| 欧美性生活大片视频| 国产精品区一区二区三| 极品美女销魂一区二区三区免费| 欧美视频日韩视频在线观看| 国产精品久久久久久亚洲毛片| 麻豆精品在线视频| 日韩一区二区三区视频在线 | 国产精品一二三四区| 欧美一区二区三区视频在线| 午夜精品久久久久久久 | 婷婷六月综合网| 欧美三级在线视频| 亚洲综合色成人| 欧洲另类一二三四区| 一区二区三区在线视频观看58 | 亚洲一区视频在线观看视频| 91麻豆精品国产| 亚洲国产综合人成综合网站| 欧美做爰猛烈大尺度电影无法无天| 亚洲精品免费在线| 欧洲精品在线观看| 亚洲444eee在线观看| 欧美一区欧美二区| 精品一区二区免费看| 久久欧美中文字幕| 成人午夜电影小说| 一个色综合网站| 欧美日韩亚州综合| 麻豆中文一区二区| 国产精品美女久久久久久久网站| 成人一级视频在线观看| 亚洲青青青在线视频| 色播五月激情综合网| 日本午夜一本久久久综合| 欧美xxxxxxxx| 成人av在线影院| 亚洲成人一区在线| 久久亚洲春色中文字幕久久久| 成人av免费在线播放| 亚洲综合一区二区三区| 欧美成人vps| 99精品视频一区二区| 日韩综合小视频| 国产婷婷色一区二区三区四区 | 日韩女优毛片在线| 成人97人人超碰人人99| 五月婷婷综合激情| 欧美激情在线免费观看| 欧美日韩三级视频| 国产白丝精品91爽爽久久| 亚洲乱码国产乱码精品精的特点 | 九九国产精品视频| 亚洲精品一二三| 日韩免费成人网| 91捆绑美女网站| 精品制服美女丁香| 亚洲自拍偷拍图区| 国产免费成人在线视频| 欧美日韩一区久久| 成人免费电影视频| 免费成人av资源网| 亚洲自拍偷拍av| 国产日韩一级二级三级| 欧美精品久久一区| www.欧美色图| 国产麻豆精品久久一二三| 亚洲大尺度视频在线观看| 国产精品久久影院| 日韩欧美国产不卡| 欧美视频在线不卡| 91偷拍与自偷拍精品| 精彩视频一区二区| 日韩电影免费在线| 亚洲一二三四在线观看| 国产精品第13页| 久久久久久久久蜜桃| 欧美成人精品1314www| 日韩一区二区三区免费看| 欧美三级日韩三级| 欧美伊人久久大香线蕉综合69| 成人app网站| www.在线欧美| av一本久道久久综合久久鬼色| 国产精品一区二区不卡| 激情久久久久久久久久久久久久久久| 午夜激情一区二区| 午夜精品一区二区三区电影天堂| 亚洲男人天堂av| 亚洲天堂福利av| 中文字幕一区二| 亚洲美女在线一区| 亚洲黄网站在线观看| 一区二区三区四区激情| 亚洲综合无码一区二区| 一区二区高清视频在线观看| 一片黄亚洲嫩模| 一二三四区精品视频| 亚洲成国产人片在线观看| 婷婷六月综合亚洲| 捆绑调教一区二区三区| 久久国产精品免费| 国产不卡在线一区| 99re在线视频这里只有精品| 91电影在线观看| 69堂国产成人免费视频| 2020日本不卡一区二区视频| 久久久亚洲午夜电影| 国产精品久久久久久久久免费丝袜| 国产精品久久久久久久久果冻传媒| 亚洲色图制服诱惑| 亚洲成人av资源| 久久超级碰视频| av电影在线不卡| 欧美日韩国产精选| 精品日产卡一卡二卡麻豆| 国产精品情趣视频| 亚洲bt欧美bt精品| 国产一区二区在线视频| 一本久久综合亚洲鲁鲁五月天| 欧美剧情片在线观看| 久久人人97超碰com| 亚洲女与黑人做爰| 麻豆91在线看| 色综合久久99| 日韩精品专区在线影院观看| 国产精品视频九色porn| 亚洲成人免费影院| 国产麻豆一精品一av一免费| 色婷婷久久一区二区三区麻豆| 日韩欧美国产小视频| 亚洲色图视频网站| 久久99精品久久久久| 一本色道久久加勒比精品| 欧美成人官网二区| 亚洲成av人在线观看| 成人国产一区二区三区精品| 欧美精三区欧美精三区| 国产精品大尺度|