Changeset 189 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncCu.cpp


Ignore:
Timestamp:
18 Nov 2012, 22:11:37 (12 years ago)
Author:
tech
Message:

Reintegrated branch 4.1-dev0 Rev. 188.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncCu.cpp

    r126 r189  
    451451  TComPic* pcPic = rpcBestCU->getPic();
    452452
    453 #if OL_DEPTHLIMIT_A0044
    454   TComSPS *sps = pcPic->getSlice(0)->getSPS();
    455   TComPic *pcTexture;
    456   TComDataCU * pcTextureCU;
    457   Bool  depthMapDetect =  false;
    458   UInt         uiPrevTexPartIndex = 0;
    459 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    460   Bool bIntraSliceDetect = false;
    461 #endif
    462   Bool bTry2NxN = false;
    463   Bool bTryNx2N = false;
    464     pcTexture = rpcBestCU->getSlice()->getTexturePic();
    465     if(pcTexture != NULL) //depth map being encoded
    466     {
    467     depthMapDetect = true;
    468 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    469       bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType()==I_SLICE);
    470 #endif
    471     if(uiDepth == 0)
    472     {
    473       pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() );
    474       pcTexture->setPartInfo(pcTextureCU->readPartInfo());
    475       pcTexture->setTexPartIndex(0);
    476     }
    477     }
    478     else
    479     {
    480       depthMapDetect = false;
    481     }
    482 #endif
     453#if OL_QTLIMIT_PREDCODING_B0068
     454  TComSPS *sps         = pcPic->getSlice(0)->getSPS();
     455  TComPic *pcTexture   = rpcBestCU->getSlice()->getTexturePic();
     456
     457  Bool  depthMapDetect    = (pcTexture != NULL);
     458  Bool  bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType() == I_SLICE);
     459
     460  Bool bTry2NxN = true;
     461  Bool bTryNx2N = true;
     462#endif
     463
    483464  // get Original YUV data from picture
    484465  m_ppcOrigYuv[uiDepth]->copyFromPicYuv( pcPic->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() );
     
    511492  UInt uiTPelY   = rpcBestCU->getCUPelY();
    512493  UInt uiBPelY   = uiTPelY + rpcBestCU->getHeight(0) - 1;
     494
     495#if LGE_ILLUCOMP_B0045
     496  Bool bICEnabled = (!rpcTempCU->getSlice()->getIsDepth() && rpcTempCU->getSlice()->getViewId());
     497
     498  bICEnabled = bICEnabled && rpcTempCU->getSlice()->getApplyIC();
     499#endif
    513500
    514501#if HHI_INTERVIEW_SKIP
     
    618605      // variables for fast encoder decision
    619606      bEarlySkip  = false;
    620       bTrySplit    = true;
     607      bTrySplit   = true;
    621608      fRD_Skip    = MAX_DOUBLE;
    622609
    623610      rpcTempCU->initEstData( uiDepth, iQP );
    624611
    625 #if OL_DEPTHLIMIT_A0044
     612#if OL_QTLIMIT_PREDCODING_B0068
    626613      //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU
    627 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    628       if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL())
    629 #else
    630       if(depthMapDetect && sps->getUseDPL()) //depth map being encoded
    631 #endif
    632       {
    633         assert(uiDepth == pcTexture->accessPartInfo(1));
    634         if(pcTexture->accessPartInfo(0) == 1) //NxN modes
     614      if(depthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC())
     615      {
     616        TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU
     617        UInt uiCUIdx            = rpcBestCU->getZorderIdxInCU();
     618        assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); //Depth cannot be more partitionned than the texture.
     619        if (pcTextureCU->getDepth(uiCUIdx) > uiDepth || pcTextureCU->getPartitionSize(uiCUIdx) == SIZE_NxN) //Texture was split.
    635620        {
    636621          bTrySplit = true;
    637           bTryNx2N = true;
    638           bTry2NxN = true;
    639           uiPrevTexPartIndex = pcTexture->getTexPartIndex();
    640           pcTexture->incrementTexPartIndex();
     622          bTryNx2N  = true;
     623          bTry2NxN  = true;
    641624        }
    642         else if(pcTexture->accessPartInfo(0) == 0) //2Nx2N modes
    643         {
    644           UInt uiTexdepth;
    645           UInt temp_uiTexPartIndex;
    646           bTrySplit = false;
    647 
    648           //scan ahead till next depth
    649           uiTexdepth = pcTexture->accessPartInfo(1);
    650           uiPrevTexPartIndex = pcTexture->getTexPartIndex();
    651           pcTexture->incrementTexPartIndex();
    652           temp_uiTexPartIndex = pcTexture->getTexPartIndex(); //store in case to rewind
    653 
    654           while(uiTexdepth != pcTexture->accessPartInfo(1) && uiTexdepth != 0)
    655           {
    656             if(pcTexture->accessPartInfo(1) < uiTexdepth)
    657             {
    658               break;
    659             }
    660             pcTexture->incrementTexPartIndex();
    661 
    662             if(pcTexture->accessPartInfo(1) == OL_END_CU)
    663             {
    664               pcTexture->setTexPartIndex(temp_uiTexPartIndex);
    665               uiTexdepth++;
    666               if(uiTexdepth >= g_uiMaxCUDepth)
    667               {     
    668                 break;
    669               }
    670             }
    671           }
    672         }
    673         else if(pcTexture->accessPartInfo(0) == OL_END_CU)
     625        else
    674626        {
    675627          bTrySplit = false;
    676           bTryNx2N = false;
    677           bTry2NxN = false;
     628          bTryNx2N  = false;
     629          bTry2NxN  = false;
    678630        }
    679         else if(pcTexture->accessPartInfo(0) == 2) //2NxN case
    680         {
    681           bTrySplit = false;
    682           bTryNx2N = false;
    683           bTry2NxN = true;
    684           uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
    685           pcTexture->incrementTexPartIndex(); ;
    686         }
    687         else if(pcTexture->accessPartInfo(0) == 3) //Nx2N case
    688         {
    689           bTrySplit = false;
    690           bTryNx2N = true;
    691           bTry2NxN = false;
    692           uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 
    693           pcTexture->incrementTexPartIndex(); ;
    694         }
    695       }
    696 #endif
    697 
     631      }
     632#endif
    698633
    699634      // do inter modes, SKIP and 2Nx2N
     
    718653        {
    719654          Bool bResPredFlag  = ( uiResPrdId > 0 );
     655#if LGE_ILLUCOMP_B0045
     656          for(UInt uiICId = 0; uiICId < (bICEnabled ? 2 : 1); uiICId++)
     657          {
     658            Bool bICFlag = (uiICId ? true : false);
     659            rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
     660#endif
    720661#endif
    721662#if HHI_INTER_VIEW_RESIDUAL_PRED
     
    740681            }
    741682          }
    742 
     683#if LGE_ILLUCOMP_B0045_ENCSIMP
     684          if(bICFlag && rpcBestCU->getMergeFlag(0) && !rpcBestCU->getICFlag(0))
     685          {
     686             bICEnabled = false;
     687             break;
     688          }
     689#endif
    743690          // 2Nx2N, NxN
    744691          if ( !bEarlySkip )
     
    759706            }
    760707          }
     708#if LGE_ILLUCOMP_B0045
     709         }
     710#endif
    761711#if HHI_INTER_VIEW_RESIDUAL_PRED
    762712        } // uiResPrdId
     
    764714      } // != I_SLICE
    765715
    766 #if OL_DEPTHLIMIT_A0044
    767 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    768       if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    769 #else
    770       if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    771 #endif
     716#if LGE_ILLUCOMP_B0045_ENCSIMP
     717    bICEnabled = rpcBestCU->getICFlag(0);
     718#endif
     719
     720#if OL_QTLIMIT_PREDCODING_B0068
     721      if(depthMapDetect && !bIntraSliceDetect  && sps->getUseQTLPC())
    772722      {
    773723        bTrySplitDQP = bTrySplit;
     
    775725      else
    776726      {
     727#endif
    777728        if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
    778729        {
     
    786737          bTrySplitDQP = bTrySplit;
    787738        }
    788       }
    789 #else
    790 
    791       if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() )
    792       {
    793         if(iQP == iBaseQP)
    794         {
    795           bTrySplitDQP = bTrySplit;
    796         }
    797       }
    798       else
    799       {
    800         bTrySplitDQP = bTrySplit;
    801       }
    802 #endif
     739#if OL_QTLIMIT_PREDCODING_B0068
     740      }
     741#endif
     742
    803743#if LOSSLESS_CODING
    804744      if (isAddLowestQP && (iQP == lowestQP))
     
    841781        {
    842782          Bool bResPredFlag  = ( uiResPrdId > 0 );
     783#if LGE_ILLUCOMP_B0045
     784          for(UInt uiICId = 0; uiICId < (bICEnabled ? 2 : 1); uiICId++)
     785          {
     786            Bool bICFlag = (uiICId ? true : false);
     787            rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uiDepth);
     788#endif
    843789#endif
    844790          // 2Nx2N, NxN
     
    850796              if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu)
    851797              {
    852 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    853 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    854                 if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    855 #else
    856                 if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    857 #endif
     798#if OL_QTLIMIT_PREDCODING_B0068 //try InterNxN
     799                if(bTrySplit)
    858800                {
    859                   if (bTrySplit)
    860                   {
    861 #endif
    862 #if HHI_INTER_VIEW_RESIDUAL_PRED
    863                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    864 #endif
    865 #if HHI_INTERVIEW_SKIP
    866                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec   );
    867 #else
    868                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN   );
    869 #endif
    870                     rpcTempCU->initEstData( uiDepth, iQP );
    871 #if OL_DEPTHLIMIT_A0044
    872                   }//bTrySplit
    873                 }//depthMapDetect
    874                 else//do things normally
    875                 {
     801#endif
    876802#if HHI_INTER_VIEW_RESIDUAL_PRED
    877803                  rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
     
    883809#endif
    884810                  rpcTempCU->initEstData( uiDepth, iQP );
     811#if OL_QTLIMIT_PREDCODING_B0068
    885812                }
    886813#endif
     
    890817
    891818          { // 2NxN, Nx2N
    892 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    893 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    894             if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    895 #else
    896             if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    897 #endif
     819#if OL_QTLIMIT_PREDCODING_B0068 //try Nx2N
     820            if(bTryNx2N)
    898821            {
    899               if (bTryNx2N)
    900               {
    901 #endif
    902                 if(doNotBlockPu)
    903                 {
    904 #if HHI_INTER_VIEW_RESIDUAL_PRED
    905                   rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    906 #endif
    907 #if HHI_INTERVIEW_SKIP
    908                   xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec   );
    909 #else
    910                   xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N  );
    911 #endif
    912                   rpcTempCU->initEstData( uiDepth, iQP );
    913                   if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N )
    914                   {
    915                     doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    916                   }
    917                 }
    918 #if OL_DEPTHLIMIT_A0044
    919               }//bTryNx2N
    920             }//depthMapDetect
    921             else//do things normally
    922             {
     822#endif
    923823              if(doNotBlockPu)
    924824              {
     
    937837                }
    938838              }
     839#if OL_QTLIMIT_PREDCODING_B0068
    939840            }
    940841#endif
    941842
    942 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    943 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    944             if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    945 #else
    946             if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    947 #endif
     843#if OL_QTLIMIT_PREDCODING_B0068 //try 2NxN
     844            if(bTry2NxN)
    948845            {
    949               if (bTry2NxN)
    950               {
    951 #endif
    952                 if(doNotBlockPu)
    953                 {
    954 #if HHI_INTER_VIEW_RESIDUAL_PRED
    955                   rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    956 #endif
    957 #if HHI_INTERVIEW_SKIP
    958                   xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec   );
    959 #else
    960                   xCheckRDCostInter      ( rpcBestCU, rpcTempCU, SIZE_2NxN  );
    961 #endif
    962                   rpcTempCU->initEstData( uiDepth, iQP );
    963                   if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN)
    964                   {
    965                     doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    966                   }
    967                 }
    968 #if OL_DEPTHLIMIT_A0044
    969               }//bTryNx2N
    970             }//depthMapDetect
    971             else//do things normally
    972             {
     846#endif
    973847              if(doNotBlockPu)
    974848              {
     
    987861                }
    988862              }
     863#if OL_QTLIMIT_PREDCODING_B0068
    989864            }
    990865#endif
     
    1009884            if ( bTestAMP_Hor )
    1010885            {
    1011 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    1012 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    1013               if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    1014 #else
    1015               if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    1016 #endif
     886#if OL_QTLIMIT_PREDCODING_B0068 //try 2NxnU & 2NxnD
     887              if(bTry2NxN)
    1017888              {
    1018                 if (bTry2NxN)
    1019                 {
    1020 #endif
    1021                   if(doNotBlockPu)
    1022                   {
    1023 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1024                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1025 #endif
    1026 #if HHI_INTERVIEW_SKIP
    1027                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec );
    1028 #else
    1029                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU );
    1030 #endif
    1031                     rpcTempCU->initEstData( uiDepth, iQP );
    1032                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
    1033                     {
    1034                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1035                     }
    1036                   }
    1037                   if(doNotBlockPu)
    1038                   {
    1039 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1040                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1041 #endif
    1042 #if HHI_INTERVIEW_SKIP
    1043                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec );
    1044 #else
    1045                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD );
    1046 #endif
    1047                     rpcTempCU->initEstData( uiDepth, iQP );
    1048                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
    1049                     {
    1050                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1051                     }
    1052                   }
    1053 #if OL_DEPTHLIMIT_A0044
    1054                 }//bTry2NxN
    1055               }//depthMapDetect
    1056               else//do things normally
    1057               {
     889#endif
    1058890                if(doNotBlockPu)
    1059891                {
     
    1088920                  }
    1089921                }
     922#if OL_QTLIMIT_PREDCODING_B0068
    1090923              }
    1091924#endif
     
    1094927            else if ( bTestMergeAMP_Hor )
    1095928            {
    1096 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    1097 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    1098               if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    1099 #else
    1100               if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    1101 #endif
     929#if OL_QTLIMIT_PREDCODING_B0068 //try 2NxnU & 2NxnD Merge
     930              if(bTry2NxN)
    1102931              {
    1103                 if (bTry2NxN)
    1104                 {
    1105 #endif
    1106                   if(doNotBlockPu)
    1107                   {
    1108 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1109                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1110 #endif
    1111 #if HHI_INTERVIEW_SKIP
    1112                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec, true );
    1113 #else
    1114                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true );
    1115 #endif
    1116                     rpcTempCU->initEstData( uiDepth, iQP );
    1117                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU )
    1118                     {
    1119                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1120                     }
    1121                   }
    1122                   if(doNotBlockPu)
    1123                   {
    1124 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1125                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1126 #endif
    1127 #if HHI_INTERVIEW_SKIP
    1128                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec, true );
    1129 #else
    1130                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true );
    1131 #endif
    1132                     rpcTempCU->initEstData( uiDepth, iQP );
    1133                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD )
    1134                     {
    1135                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1136                     }
    1137                   }
    1138 #if OL_DEPTHLIMIT_A0044
    1139                 }//bTry2NxN
    1140               }//depthMapDetect
    1141               else//do things normally
    1142               {
     932#endif
    1143933                if(doNotBlockPu)
    1144934                {
     
    1173963                  }
    1174964                }
    1175 
     965#if OL_QTLIMIT_PREDCODING_B0068
    1176966              }
    1177967#endif
     
    1182972            if ( bTestAMP_Ver )
    1183973            {
    1184 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    1185 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    1186               if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    1187 #else
    1188               if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    1189 #endif
     974#if OL_QTLIMIT_PREDCODING_B0068 //try nLx2N & nRx2N
     975              if(bTryNx2N)
    1190976              {
    1191                 if (bTryNx2N)
    1192                 {
    1193 #endif
    1194                   if(doNotBlockPu)
    1195                   {
    1196 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1197                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1198 #endif
    1199 #if HHI_INTERVIEW_SKIP
    1200                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec );
    1201 #else
    1202                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N );
    1203 #endif
    1204                     rpcTempCU->initEstData( uiDepth, iQP );
    1205                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
    1206                     {
    1207                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1208                     }
    1209                   }
    1210                   if(doNotBlockPu)
    1211                   {
    1212 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1213                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1214 #endif
    1215 #if HHI_INTERVIEW_SKIP
    1216                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec );
    1217 #else
    1218                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N );
    1219 #endif
    1220                     rpcTempCU->initEstData( uiDepth, iQP );
    1221                   }
    1222 #if OL_DEPTHLIMIT_A0044
    1223                 }//bTryNx2N
    1224               }//depthMapDetect
    1225               else//do things normally
    1226               {
     977#endif
    1227978                if(doNotBlockPu)
    1228979                {
     
    12531004                  rpcTempCU->initEstData( uiDepth, iQP );
    12541005                }
     1006#if OL_QTLIMIT_PREDCODING_B0068
    12551007              }
    12561008#endif
     
    12591011            else if ( bTestMergeAMP_Ver )
    12601012            {
    1261 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none
    1262 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    1263               if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    1264 #else
    1265               if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    1266 #endif
     1013#if OL_QTLIMIT_PREDCODING_B0068 //try nLx2N & nRx2N (Merge)
     1014              if(bTryNx2N)
    12671015              {
    1268                 if (bTryNx2N)
    1269                 {
    1270 #endif
    1271                   if(doNotBlockPu)
    1272                   {
    1273 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1274                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1275 #endif
    1276 #if HHI_INTERVIEW_SKIP
    1277                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec, true );
    1278 #else
    1279                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true );
    1280 #endif
    1281                     rpcTempCU->initEstData( uiDepth, iQP );
    1282                     if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N )
    1283                     {
    1284                       doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0;
    1285                     }
    1286                   }
    1287                   if(doNotBlockPu)
    1288                   {
    1289 #if HHI_INTER_VIEW_RESIDUAL_PRED
    1290                     rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag );
    1291 #endif
    1292 #if HHI_INTERVIEW_SKIP
    1293                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec, true );
    1294 #else
    1295                     xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true );
    1296 #endif
    1297                     rpcTempCU->initEstData( uiDepth, iQP );
    1298                   }
    1299 #if OL_DEPTHLIMIT_A0044
    1300                 }//bTryNx2N
    1301               }//depthMapDetect
    1302               else//do things normally
    1303               {
     1016#endif
    13041017                if(doNotBlockPu)
    13051018                {
     
    13301043                  rpcTempCU->initEstData( uiDepth, iQP );
    13311044                }
     1045#if OL_QTLIMIT_PREDCODING_B0068
    13321046              }
    13331047#endif
     
    13751089#endif
    13761090          } //! Try AMP (SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N)
     1091#endif
     1092#if LGE_ILLUCOMP_B0045
     1093         }
    13771094#endif
    13781095#if HHI_INTER_VIEW_RESIDUAL_PRED
     
    14011118#endif
    14021119        {
     1120#if LGE_ILLUCOMP_B0045
     1121          rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
     1122#endif
    14031123          xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
    14041124          rpcTempCU->initEstData( uiDepth, iQP );
    14051125          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth )
    14061126          {
    1407 #if OL_DEPTHLIMIT_A0044 //add code here to select or deselect NxN mode for Intra
    1408 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART
    1409             if(depthMapDetect && !bIntraSliceDetect  && sps->getUseDPL())
    1410 #else
    1411             if(depthMapDetect  && sps->getUseDPL()) //depth map being encoded
    1412 #endif
     1127#if OL_QTLIMIT_PREDCODING_B0068 //Try IntraNxN
     1128            if(bTrySplit)
    14131129            {
    1414               if (bTrySplit)
    1415               {
    1416 
    1417 #endif
    1418                 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
    1419                 {
    1420                   xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
    1421                   rpcTempCU->initEstData( uiDepth, iQP );
    1422                 }
    1423 #if OL_DEPTHLIMIT_A0044
    1424               }//bTrySplit
    1425             }//depthMapDetect
    1426             else
    1427             {
     1130#endif
    14281131              if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
    14291132              {
     1133#if LGE_ILLUCOMP_B0045
     1134                rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
     1135#endif
    14301136                xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
    14311137                rpcTempCU->initEstData( uiDepth, iQP );
    14321138              }
     1139#if OL_QTLIMIT_PREDCODING_B0068
    14331140            }
    14341141#endif
     
    14511158#endif
    14521159        {
     1160#if LGE_ILLUCOMP_B0045
     1161          rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth);
     1162#endif
    14531163          xCheckIntraPCM (rpcBestCU, rpcTempCU);
    14541164          rpcTempCU->initEstData( uiDepth, iQP );
     
    16381348
    16391349#if HHI_VSO
    1640 #if HHI_VSO_SET_OPTIM
    1641 #else
    1642           if( m_pcRdCost->getUseRenModel() ) // necessary ??
    1643           {
    1644             UInt  uiWidth     = m_ppcRecoYuvBest[uhNextDepth]->getWidth   (  );
    1645             UInt  uiHeight    = m_ppcRecoYuvBest[uhNextDepth]->getHeight  (   );
    1646             Pel*  piSrc       = m_ppcRecoYuvBest[uhNextDepth]->getLumaAddr( 0 );
    1647             UInt  uiSrcStride = m_ppcRecoYuvBest[uhNextDepth]->getStride  (   );
    1648             m_pcRdCost->setRenModelData( pcSubBestPartCU, 0, piSrc, uiSrcStride, uiWidth, uiHeight );
    1649           }
    1650 #endif
    16511350#endif
    16521351        }
     
    20861785  if( pcCU->isSkipped( uiAbsPartIdx ) )
    20871786  {
    2088 #if OL_DEPTHLIMIT_A0044
    2089     if(pcCU->getPartDumpFlag())
    2090     {
    2091       pcCU->updatePartInfo(0,uiDepth);
    2092       pcCU->incrementPartInfo();
    2093     }
    2094 #endif
    20951787    m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx, 0 );
     1788#if LGE_ILLUCOMP_B0045
     1789    m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
     1790#endif
    20961791#if HHI_INTER_VIEW_RESIDUAL_PRED
    20971792    m_pcEntropyCoder->encodeResPredFlag( pcCU, uiAbsPartIdx, 0 );
     
    21221817  // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
    21231818  m_pcEntropyCoder->encodePredInfo( pcCU, uiAbsPartIdx );
     1819#if LGE_ILLUCOMP_B0045
     1820    m_pcEntropyCoder->encodeICFlag  ( pcCU, uiAbsPartIdx );
     1821#endif
    21241822#if HHI_INTER_VIEW_RESIDUAL_PRED
    21251823    if( !pcCU->isIntra( uiAbsPartIdx ) )
     
    21651863  Bool  bResPrdAvail  = rpcTempCU->getResPredAvail( 0 );
    21661864  Bool  bResPrdFlag   = rpcTempCU->getResPredFlag ( 0 );
     1865#endif
     1866#if LGE_ILLUCOMP_B0045
     1867  Bool  bICFlag = rpcTempCU->getICFlag(0);
    21671868#endif
    21681869
     
    22401941          rpcTempCU->setResPredFlagSubParts ( bResPrdFlag,  0, 0, uhDepth );
    22411942#endif
     1943#if LGE_ILLUCOMP_B0045
     1944          rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uhDepth);
     1945#endif
    22421946
    22431947          // do MC
    22441948#if HHI_INTERVIEW_SKIP
    2245       if ( (uiNoResidual == 0) || bSkipRes ){
    2246 #else
    2247       if ( uiNoResidual == 0 ){
    2248 #endif
     1949      if ( (uiNoResidual == 0) || bSkipRes )
     1950#else
     1951      if ( uiNoResidual == 0 )
     1952#endif
     1953        {
    22491954            m_pcPredSearch->motionCompensation ( rpcTempCU, m_ppcPredYuvTemp[uhDepth] );
    22501955            // save pred adress
     
    24762181  m_ppcRecoYuvTemp[uiDepth]->copyToPicLuma(rpcTempCU->getPic()->getPicYuvRec(), rpcTempCU->getAddr(), rpcTempCU->getZorderIdxInCU() );
    24772182 
     2183#if RWTH_SDC_DLT_B0036
     2184  if( !rpcTempCU->getSDCFlag( 0 ) )
     2185#endif
    24782186  m_pcPredSearch  ->estIntraPredChromaQT( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC );
    24792187 
     
    29442652  assert( bRecursiveCall == ( uhDepth != uhTextureModeDepth ) );
    29452653
     2654#if !MTK_UNCONSTRAINED_MVI_B0083
    29462655  if( uhDepth == uhTextureModeDepth )
    29472656  {
     
    29542663    }
    29552664  }
     2665#endif
    29562666
    29572667#if HHI_VSO
     
    30592769    rpcTempCU->setTextureModeDepthSubParts( uhTextureModeDepth, 0, uhDepth );
    30602770    rpcTempCU->copyTextureMotionDataFrom( pcTextureCU, uhDepth, rpcTempCU->getZorderIdxInCU() );
     2771#if FIX_MPI_B0065
     2772    UInt uiAbsPartIdx = rpcTempCU->getZorderIdxInCU();
     2773    if( rpcTempCU->getDepth(0) > pcTextureCU->getDepth(uiAbsPartIdx))
     2774    {
     2775      rpcTempCU->setPartSizeSubParts( SIZE_NxN, 0, uhDepth );
     2776    }
     2777    else
     2778    {
     2779      PartSize partSize = pcTextureCU->getPartitionSize(uiAbsPartIdx);
     2780      rpcTempCU->setPartSizeSubParts( partSize, 0, uhDepth );
     2781    }
     2782#else
    30612783    rpcTempCU->setPartSizeSubParts( SIZE_NxN, 0, uhDepth );
     2784#endif
    30622785    for( UInt ui = 0; ui < rpcTempCU->getTotalNumPart(); ui++ )
    30632786    {
     
    31522875  {
    31532876    m_pcEntropyCoder->encodeMergeIndex( pcCU, 0, 0, true );
     2877#if LGE_ILLUCOMP_B0045
     2878    m_pcEntropyCoder->encodeICFlag( pcCU, 0, true );
     2879#endif
    31542880  }
    31552881  else
     
    31592885    // prediction Info ( Intra : direction mode, Inter : Mv, reference idx )
    31602886    m_pcEntropyCoder->encodePredInfo( pcCU, 0, true );
     2887#if LGE_ILLUCOMP_B0045
     2888    m_pcEntropyCoder->encodeICFlag( pcCU, 0,          true );
     2889#endif
    31612890  }
    31622891  xRestoreDepthWidthHeight( pcCU );
Note: See TracChangeset for help on using the changeset viewer.