Ignore:
Timestamp:
8 Apr 2015, 15:26:52 (9 years ago)
Author:
tech
Message:

Clean up Part 3.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-14.0-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r1185 r1187  
    255255      curCost += m_CUTransquantBypassFlagSCModel.calcCost( curSliceType, qp, (UChar*)INIT_CU_TRANSQUANT_BYPASS_FLAG );
    256256#if H_3D_DIM
    257     if( m_pcSlice->getIntraSdcWedgeFlag() || m_pcSlice->getIntraContourFlag() )
    258     {
    259       curCost += m_cDepthIntraModeSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE );
    260       curCost += m_cDdcFlagSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_FLAG );
    261       curCost += m_cDdcDataSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_DATA );
    262       curCost += m_cAngleFlagSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 
    263     }
     257      if( m_pcSlice->getIntraSdcWedgeFlag() || m_pcSlice->getIntraContourFlag() )
     258      {
     259        curCost += m_cDepthIntraModeSCModel.calcCost    ( curSliceType, qp, (UChar*)INIT_DEPTH_INTRA_MODE );
     260        curCost += m_cDdcFlagSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_FLAG );
     261        curCost += m_cDdcDataSCModel.calcCost           ( curSliceType, qp, (UChar*)INIT_DDC_DATA );
     262        curCost += m_cAngleFlagSCModel.calcCost         ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 
     263      }
    264264#endif
    265265      if (curCost < bestCost)
     
    626626  Bool bDepthMapDetect   = (pcTexture != NULL);
    627627  Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE);
    628  
     628
    629629  Bool rapPic     = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA);
    630630
     
    664664    return;
    665665  }
    666  
     666
    667667#if H_MV_ENC_DEC_TRAC         
    668668  DTRACE_CU("part_mode", eSize )
     
    672672    {
    673673#endif
    674   switch(eSize)
    675   {
    676     case SIZE_2Nx2N:
    677     {
    678       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    679       break;
    680     }
    681     case SIZE_2NxN:
    682     case SIZE_2NxnU:
    683     case SIZE_2NxnD:
    684     {
    685       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    686       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    687       if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
    688       {
    689         if (eSize == SIZE_2NxN)
    690         {
    691           m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    692         }
    693         else
    694         {
    695           m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    696           m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
    697         }
    698       }
    699       break;
    700     }
    701     case SIZE_Nx2N:
    702     case SIZE_nLx2N:
    703     case SIZE_nRx2N:
    704     {
    705       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    706       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    707       if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    708       {
    709         m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    710       }
    711       if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
    712       {
    713         if (eSize == SIZE_Nx2N)
    714         {
    715           m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    716         }
    717         else
    718         {
    719           m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
    720           m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
    721         }
    722       }
    723       break;
    724     }
    725     case SIZE_NxN:
    726     {
    727       if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    728       {
    729         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    730         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    731         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    732       }
    733       break;
    734     }
    735     default:
    736     {
    737       assert(0);
    738     }
    739   }
     674      switch(eSize)
     675      {
     676      case SIZE_2Nx2N:
     677        {
     678          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     679          break;
     680        }
     681      case SIZE_2NxN:
     682      case SIZE_2NxnU:
     683      case SIZE_2NxnD:
     684        {
     685          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     686          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     687          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     688          {
     689            if (eSize == SIZE_2NxN)
     690            {
     691              m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     692            }
     693            else
     694            {
     695              m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     696              m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
     697            }
     698          }
     699          break;
     700        }
     701      case SIZE_Nx2N:
     702      case SIZE_nLx2N:
     703      case SIZE_nRx2N:
     704        {
     705          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     706          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     707          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     708          {
     709            m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     710          }
     711          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     712          {
     713            if (eSize == SIZE_Nx2N)
     714            {
     715              m_pcBinIf->encodeBin(1, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     716            }
     717            else
     718            {
     719              m_pcBinIf->encodeBin(0, m_cCUPartSizeSCModel.get( 0, 0, 3 ));
     720              m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
     721            }
     722          }
     723          break;
     724        }
     725      case SIZE_NxN:
     726        {
     727          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     728          {
     729            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     730            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     731            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     732          }
     733          break;
     734        }
     735      default:
     736        {
     737          assert(0);
     738        }
     739      }
    740740#if H_3D_QTLPC
    741741    }
     
    10891089    {
    10901090#endif
    1091     if(predIdx[j] != -1)
    1092     {
    1093       m_pcBinIf->encodeBinEP( predIdx[j] ? 1 : 0 );
    1094       if (predIdx[j])
    1095       {
    1096         m_pcBinIf->encodeBinEP( predIdx[j]-1 );
    1097       }
     1091      if(predIdx[j] != -1)
     1092      {
     1093        m_pcBinIf->encodeBinEP( predIdx[j] ? 1 : 0 );
     1094        if (predIdx[j])
     1095        {
     1096          m_pcBinIf->encodeBinEP( predIdx[j]-1 );
     1097        }
    10981098#if H_MV_ENC_DEC_TRAC
    1099       DTRACE_CU("mpm_idx", predIdx[j] );
    1100 #endif
    1101     }
    1102     else
    1103     {
    1104       if (preds[j][0] > preds[j][1])
    1105       {
    1106         std::swap(preds[j][0], preds[j][1]);
    1107       }
    1108       if (preds[j][0] > preds[j][2])
    1109       {
    1110         std::swap(preds[j][0], preds[j][2]);
    1111       }
    1112       if (preds[j][1] > preds[j][2])
    1113       {
    1114         std::swap(preds[j][1], preds[j][2]);
    1115       }
    1116       for(Int i = (predNum[j] - 1); i >= 0; i--)
    1117       {
    1118         dir[j] = dir[j] > preds[j][i] ? dir[j] - 1 : dir[j];
    1119       }
    1120       m_pcBinIf->encodeBinsEP( dir[j], 5 );
     1099        DTRACE_CU("mpm_idx", predIdx[j] );
     1100#endif
     1101      }
     1102      else
     1103      {
     1104        if (preds[j][0] > preds[j][1])
     1105        {
     1106          std::swap(preds[j][0], preds[j][1]);
     1107        }
     1108        if (preds[j][0] > preds[j][2])
     1109        {
     1110          std::swap(preds[j][0], preds[j][2]);
     1111        }
     1112        if (preds[j][1] > preds[j][2])
     1113        {
     1114          std::swap(preds[j][1], preds[j][2]);
     1115        }
     1116        for(Int i = (predNum[j] - 1); i >= 0; i--)
     1117        {
     1118          dir[j] = dir[j] > preds[j][i] ? dir[j] - 1 : dir[j];
     1119        }
     1120        m_pcBinIf->encodeBinsEP( dir[j], 5 );
    11211121#if H_MV_ENC_DEC_TRAC
    1122       DTRACE_CU("rem_intra_luma_pred_mode", dir[j] );
    1123 #endif
    1124     }
     1122        DTRACE_CU("rem_intra_luma_pred_mode", dir[j] );
     1123#endif
     1124      }
    11251125#if H_3D_DIM
    11261126    }
     
    14671467    {   
    14681468#endif
    1469     piPCMSample = pcCU->getPCMSampleCb() + uiChromaOffset;
    1470     uiWidth = pcCU->getWidth(uiAbsPartIdx)/2;
    1471     uiHeight = pcCU->getHeight(uiAbsPartIdx)/2;
    1472     uiSampleBits = pcCU->getSlice()->getSPS()->getPCMBitDepthChroma();
    1473 
    1474     for(uiY = 0; uiY < uiHeight; uiY++)
    1475     {
    1476       for(uiX = 0; uiX < uiWidth; uiX++)
    1477       {
    1478         UInt uiSample = piPCMSample[uiX];
    1479 
    1480         m_pcBinIf->xWritePCMCode(uiSample, uiSampleBits);
    1481       }
    1482       piPCMSample += uiWidth;
    1483     }
    1484 
    1485     piPCMSample = pcCU->getPCMSampleCr() + uiChromaOffset;
    1486     uiWidth = pcCU->getWidth(uiAbsPartIdx)/2;
    1487     uiHeight = pcCU->getHeight(uiAbsPartIdx)/2;
    1488     uiSampleBits = pcCU->getSlice()->getSPS()->getPCMBitDepthChroma();
    1489 
    1490     for(uiY = 0; uiY < uiHeight; uiY++)
    1491     {
    1492       for(uiX = 0; uiX < uiWidth; uiX++)
    1493       {
    1494         UInt uiSample = piPCMSample[uiX];
    1495 
    1496         m_pcBinIf->xWritePCMCode(uiSample, uiSampleBits);
    1497       }
    1498       piPCMSample += uiWidth;
    1499     }
     1469      piPCMSample = pcCU->getPCMSampleCb() + uiChromaOffset;
     1470      uiWidth = pcCU->getWidth(uiAbsPartIdx)/2;
     1471      uiHeight = pcCU->getHeight(uiAbsPartIdx)/2;
     1472      uiSampleBits = pcCU->getSlice()->getSPS()->getPCMBitDepthChroma();
     1473
     1474      for(uiY = 0; uiY < uiHeight; uiY++)
     1475      {
     1476        for(uiX = 0; uiX < uiWidth; uiX++)
     1477        {
     1478          UInt uiSample = piPCMSample[uiX];
     1479
     1480          m_pcBinIf->xWritePCMCode(uiSample, uiSampleBits);
     1481        }
     1482        piPCMSample += uiWidth;
     1483      }
     1484
     1485      piPCMSample = pcCU->getPCMSampleCr() + uiChromaOffset;
     1486      uiWidth = pcCU->getWidth(uiAbsPartIdx)/2;
     1487      uiHeight = pcCU->getHeight(uiAbsPartIdx)/2;
     1488      uiSampleBits = pcCU->getSlice()->getSPS()->getPCMBitDepthChroma();
     1489
     1490      for(uiY = 0; uiY < uiHeight; uiY++)
     1491      {
     1492        for(uiX = 0; uiX < uiWidth; uiX++)
     1493        {
     1494          UInt uiSample = piPCMSample[uiX];
     1495
     1496          m_pcBinIf->xWritePCMCode(uiSample, uiSampleBits);
     1497        }
     1498        piPCMSample += uiWidth;
     1499      }
    15001500#if H_3D_DISABLE_CHROMA
    15011501    }
Note: See TracChangeset for help on using the changeset viewer.