Ignore:
Timestamp:
22 Jan 2014, 09:44:36 (10 years ago)
Author:
mediatek-htm
Message:

JCT3V-G0055 Integrated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-9.3-dev2-MediaTek/source/Lib/TLibEncoder/TEncSbac.cpp

    r773 r790  
    678678 
    679679  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);
    680 
     680#if MTK_TEX_DEP_PAR_G0055
     681  Bool depthDependent = false;
     682  UInt uiTexturePart = eSize;
     683#endif
    681684  if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() )
    682685  {
     
    684687    UInt uiCUIdx            = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU();
    685688    assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth);
     689#if !MTK_TEX_DEP_PAR_G0055
    686690    if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) != SIZE_NxN)
     691#else
     692    if(pcTextureCU->getDepth(uiCUIdx) == uiDepth )
     693    {
     694      depthDependent = true;
     695      uiTexturePart = pcTextureCU->getPartitionSize( uiCUIdx );
     696    }
     697    if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) == SIZE_2Nx2N)
     698#endif
    687699    {
    688700      assert( eSize == SIZE_2Nx2N );
     
    702714    return;
    703715  }
    704  
     716
    705717#if H_MV_ENC_DEC_TRAC         
    706718  DTRACE_CU("part_mode", eSize )
    707719#endif       
    708   switch(eSize)
    709   {
    710     case SIZE_2Nx2N:
    711     {
    712       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    713       break;
    714     }
    715     case SIZE_2NxN:
    716     case SIZE_2NxnU:
    717     case SIZE_2NxnD:
    718     {
    719       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    720       m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    721       if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
    722       {
    723         if (eSize == SIZE_2NxN)
     720#if MTK_TEX_DEP_PAR_G0055
     721    if (depthDependent==false || uiTexturePart == SIZE_NxN|| uiTexturePart == SIZE_2Nx2N)
     722    {
     723#endif
     724      switch(eSize)
     725      {
     726      case SIZE_2Nx2N:
    724727        {
    725           m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 ));
     728          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     729          break;
    726730        }
    727         else
     731      case SIZE_2NxN:
     732      case SIZE_2NxnU:
     733      case SIZE_2NxnD:
    728734        {
    729           m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 ));         
     735          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     736          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     737          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     738          {
     739            if (eSize == SIZE_2NxN)
     740            {
     741              m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 ));
     742            }
     743            else
     744            {
     745              m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 ));         
     746              m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
     747            }
     748          }
     749          break;
     750        }
     751      case SIZE_Nx2N:
     752      case SIZE_nLx2N:
     753      case SIZE_nRx2N:
     754        {
     755          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     756          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     757          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     758          {
     759            m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     760          }
     761          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     762          {
     763            if (eSize == SIZE_Nx2N)
     764            {
     765              m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 ));
     766            }
     767            else
     768            {
     769              m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 ));
     770              m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
     771            }
     772          }
     773          break;
     774        }
     775      case SIZE_NxN:
     776        {
     777          if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
     778          {
     779            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     780            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     781            m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
     782          }
     783          break;
     784        }
     785      default:
     786        {
     787          assert(0);
     788        }
     789      }
     790#if MTK_TEX_DEP_PAR_G0055
     791    }
     792    else if(uiTexturePart == SIZE_2NxN || uiTexturePart == SIZE_2NxnU || uiTexturePart == SIZE_2NxnD)
     793    {
     794      //assert(eSize!=SIZE_NxN);
     795      //assert(eSize!=SIZE_Nx2N);
     796      //assert(eSize==SIZE_2Nx2N || eSize==SIZE_2NxN || eSize==SIZE_2NxnU || eSize==SIZE_2NxnD);
     797      switch(eSize)
     798      {
     799      case SIZE_2Nx2N:
     800        {
     801          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     802          break;
     803        }
     804      case SIZE_2NxN:
     805        {
     806          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     807          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     808          {     
     809            m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     810          }
     811          break;
     812        }
     813      case SIZE_2NxnU:
     814      case SIZE_2NxnD:
     815        {
     816          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     817          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    730818          m_pcBinIf->encodeBinEP((eSize == SIZE_2NxnU? 0: 1));
     819          break;
    731820        }
    732       }
    733       break;
    734     }
    735     case SIZE_Nx2N:
    736     case SIZE_nLx2N:
    737     case SIZE_nRx2N:
    738     {
    739       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    740       m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    741       if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    742       {
    743         m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    744       }
    745       if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
    746       {
    747         if (eSize == SIZE_Nx2N)
     821      default:
    748822        {
    749           m_pcBinIf->encodeBin(1, m_cCUAMPSCModel.get( 0, 0, 0 ));
     823          assert(0);
    750824        }
    751         else
     825      }
     826    }
     827    else if(uiTexturePart == SIZE_Nx2N|| uiTexturePart==SIZE_nLx2N || uiTexturePart==SIZE_nRx2N)
     828    {
     829      //assert(eSize!=SIZE_NxN);
     830      //assert(eSize!=SIZE_2NxN);
     831      //assert(eSize==SIZE_2Nx2N ||eSize==SIZE_Nx2N || eSize==SIZE_nLx2N || eSize==SIZE_nRx2N);
     832      switch(eSize)
     833      {
     834      case SIZE_2Nx2N:
    752835        {
    753           m_pcBinIf->encodeBin(0, m_cCUAMPSCModel.get( 0, 0, 0 ));
     836          m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     837          break;
     838        }
     839      case SIZE_Nx2N:
     840        {
     841          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     842          if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) )
     843          {     
     844            m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 1) );
     845          }
     846          break;
     847        }
     848      case SIZE_nLx2N:
     849      case SIZE_nRx2N:
     850        {
     851          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
     852          m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    754853          m_pcBinIf->encodeBinEP((eSize == SIZE_nLx2N? 0: 1));
     854          break;
    755855        }
    756       }
    757       break;
    758     }
    759     case SIZE_NxN:
    760     {
    761       if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getWidth(uiAbsPartIdx) == 8 && pcCU->getHeight(uiAbsPartIdx) == 8 ) )
    762       {
    763         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 0) );
    764         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) );
    765         m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) );
    766       }
    767       break;
    768     }
    769     default:
    770     {
     856      default:
     857        {
     858          assert(0);
     859        }
     860      }
     861    }
     862    else
     863    {
     864      printf("uiTexturePart=%d",uiTexturePart);
    771865      assert(0);
    772866    }
    773   }
     867#endif
    774868}
    775869
Note: See TracChangeset for help on using the changeset viewer.