Changeset 133 in 3DVCSoftware for branches/HTM-4.0-dev0/source/Lib


Ignore:
Timestamp:
13 Sep 2012, 13:55:57 (12 years ago)
Author:
tech
Message:

Added RD-relevant bug fixes from HTM-4.1:

  • FIX_RESTRICTEDRESPRED_M24766
  • FIX_RDO_MACRO
  • FIX_DBL_CONTROL_DEFAULT + config files
Location:
branches/HTM-4.0-dev0/source/Lib
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0-dev0/source/Lib/TLibCommon/TComYuv.cpp

    r100 r133  
    711711  getPUXYOffset(uhPartitionSize, uiPartSize, uiPartSize, iXOffset, iYOffset);
    712712
    713   for ( y = uiPartSize-1; y >= iYOffset; y-- )
    714   {
    715     if(iPUResiPredShift[3] >= 0)
    716     {
    717       for ( x = uiPartSize-1; x >= iXOffset; x-- )
    718       {
    719         pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[3]);
    720       }
    721     }
    722 
    723     if(iPUResiPredShift[2] >= 0)
    724     {
    725       for ( x = iXOffset-1; x >= 0; x-- )
    726       {
    727         pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[2]);
     713#if FIX_LG_RESTRICTEDRESPRED_M24766
     714  for ( y = 0; y < iYOffset; y++ )
     715  {
     716    if(iPUResiPredShift[0] >= 0)
     717    {
     718      for ( x = 0; x < iXOffset; x++ )
     719      {
     720        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[0]);
     721      }
     722    }
     723
     724    if(iPUResiPredShift[1] >= 0)
     725    {
     726      for ( x = iXOffset; x < uiPartSize; x++ )
     727      {
     728        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[1]);
    728729      }
    729730    }
     
    733734  }
    734735
    735   for ( y = iYOffset-1; y >= 0; y-- )
    736   {
    737     if(iPUResiPredShift[1] >= 0)
    738     {
    739       for ( x = uiPartSize-1; x >= iXOffset; x-- )
     736  for ( y = iYOffset; y < uiPartSize; y++ )
     737  {
     738    if(iPUResiPredShift[2] >= 0)
     739    {
     740      for ( x = 0; x < iXOffset; x++ )
     741      {
     742        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[2]);
     743      }
     744    }
     745
     746    if(iPUResiPredShift[3] >= 0)
     747    {
     748      for ( x = iXOffset; x < uiPartSize; x++ )
    740749      {
    741750        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[3]);
    742       }
    743     }
    744 
    745     if(iPUResiPredShift[0] >= 0)
    746     {
    747       for ( x = iXOffset-1; x >= 0; x-- )
    748       {
    749         pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[2]);
    750751      }
    751752    }
     
    754755    pDst  += iDstStride;
    755756  }
    756 
     757#else
     758  for ( y = uiPartSize-1; y >= iYOffset; y-- )
     759  {
     760    if(iPUResiPredShift[3] >= 0)
     761    {
     762      for ( x = uiPartSize-1; x >= iXOffset; x-- )
     763      {
     764        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[3]);
     765      }
     766    }
     767
     768    if(iPUResiPredShift[2] >= 0)
     769    {
     770      for ( x = iXOffset-1; x >= 0; x-- )
     771      {
     772        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[2]);
     773      }
     774    }
     775    pSrc0 += iSrc0Stride;
     776    pSrc1 += iSrc1Stride;
     777    pDst  += iDstStride;
     778  }
     779
     780  for ( y = iYOffset-1; y >= 0; y-- )
     781  {
     782    if(iPUResiPredShift[1] >= 0)
     783    {
     784      for ( x = uiPartSize-1; x >= iXOffset; x-- )
     785      {
     786        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[3]);
     787      }
     788    }
     789
     790    if(iPUResiPredShift[0] >= 0)
     791    {
     792      for ( x = iXOffset-1; x >= 0; x-- )
     793      {
     794        pDst[x] = pSrc0[x] - (pSrc1[x] >> iPUResiPredShift[2]);
     795      }
     796    }
     797    pSrc0 += iSrc0Stride;
     798    pSrc1 += iSrc1Stride;
     799    pDst  += iDstStride;
     800  }
     801#endif
    757802#else
    758803  for ( y = uiPartSize-1; y >= 0; y-- )
     
    792837  getPUXYOffset(uhPartitionSize, uiPartSize, uiPartSize, iXOffset, iYOffset);
    793838
    794   for ( y = uiPartSize-1; y >= iYOffset; y-- )
    795   {
    796     if(iPUResiPredShift[3] >= 0)
    797     {
    798       for ( x = uiPartSize-1; x >= iXOffset; x-- )
    799       {
    800         pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[3]);
    801         pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[3]);
    802       }
    803     }
    804 
    805     if(iPUResiPredShift[2] >= 0)
    806     {
    807       for ( x = iXOffset-1; x >= 0; x-- )
    808       {
    809         pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[2]);
    810         pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[2]);
     839#if FIX_LG_RESTRICTEDRESPRED_M24766
     840  for ( y = 0; y < iYOffset; y++ )
     841  {
     842    if(iPUResiPredShift[0] >= 0)
     843    {
     844      for ( x = 0; x < iXOffset; x++ )
     845      {
     846        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[0]);
     847        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[0]);
     848      }
     849    }
     850
     851    if(iPUResiPredShift[1] >= 0)
     852    {
     853      for ( x = iXOffset; x < uiPartSize; x++ )
     854      {
     855        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[1]);
     856        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[1]);
    811857      }
    812858    }
     
    819865  }
    820866
    821   for ( y = iYOffset-1; y >= 0; y-- )
    822   {
    823     if(iPUResiPredShift[1] >= 0)
    824     {
    825       for ( x = uiPartSize-1; x >= iXOffset; x-- )
    826       {
    827         pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[1]);
    828         pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[1]);
    829       }
    830     }
    831 
    832     if(iPUResiPredShift[0] >= 0)
    833     {
    834       for ( x = iXOffset-1; x >= 0; x-- )
    835       {
    836         pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[0]);
    837         pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[0]);
     867  for ( y = iYOffset; y < uiPartSize; y++ )
     868  {
     869    if(iPUResiPredShift[2] >= 0)
     870    {
     871      for ( x = 0; x < iXOffset; x++ )
     872      {
     873        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[2]);
     874        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[2]);
     875      }
     876    }
     877
     878    if(iPUResiPredShift[3] >= 0)
     879    {
     880      for ( x = iXOffset; x < uiPartSize; x++ )
     881      {
     882        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[3]);
     883        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[3]);
    838884      }
    839885    }
     
    845891    pDstV  += iDstStride;
    846892  }
     893#else
     894  for ( y = uiPartSize-1; y >= iYOffset; y-- )
     895  {
     896    if(iPUResiPredShift[3] >= 0)
     897    {
     898      for ( x = uiPartSize-1; x >= iXOffset; x-- )
     899      {
     900        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[3]);
     901        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[3]);
     902      }
     903    }
     904
     905    if(iPUResiPredShift[2] >= 0)
     906    {
     907      for ( x = iXOffset-1; x >= 0; x-- )
     908      {
     909        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[2]);
     910        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[2]);
     911      }
     912    }
     913    pSrcU0 += iSrc0Stride;
     914    pSrcU1 += iSrc1Stride;
     915    pSrcV0 += iSrc0Stride;
     916    pSrcV1 += iSrc1Stride;
     917    pDstU  += iDstStride;
     918    pDstV  += iDstStride;
     919  }
     920
     921  for ( y = iYOffset-1; y >= 0; y-- )
     922  {
     923    if(iPUResiPredShift[1] >= 0)
     924    {
     925      for ( x = uiPartSize-1; x >= iXOffset; x-- )
     926      {
     927        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[1]);
     928        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[1]);
     929      }
     930    }
     931
     932    if(iPUResiPredShift[0] >= 0)
     933    {
     934      for ( x = iXOffset-1; x >= 0; x-- )
     935      {
     936        pDstU[x] = pSrcU0[x] - (pSrcU1[x]>>iPUResiPredShift[0]);
     937        pDstV[x] = pSrcV0[x] - (pSrcV1[x]>>iPUResiPredShift[0]);
     938      }
     939    }
     940    pSrcU0 += iSrc0Stride;
     941    pSrcU1 += iSrc1Stride;
     942    pSrcV0 += iSrc0Stride;
     943    pSrcV1 += iSrc1Stride;
     944    pDstU  += iDstStride;
     945    pDstV  += iDstStride;
     946  }
     947#endif
    847948#else
    848949  for ( y = uiPartSize-1; y >= 0; y-- )
  • branches/HTM-4.0-dev0/source/Lib/TLibCommon/TypeDef.h

    r105 r133  
    4747#define FIX_INIT_ROM                      1
    4848#define FIX_VIRT_DESTRUCTOR               1
     49#define FIX_DBL_CONTROL_DEFAULT           1
     50#define FIX_RDO_MACRO                     1
     51#define FIX_LG_RESTRICTEDRESPRED_M24766   1
    4952
    5053
  • branches/HTM-4.0-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r100 r133  
    61136113       
    61146114        Dist uiActDist = RDO_DIST_MAX;
     6115#if FIX_RDO_MACRO
    61156116#if SAIT_VSO_EST_A0033
    61166117        if ( m_pcRdCost->getUseEstimatedVSD() )
     
    61216122        }
    61226123        else       
    6123 #else
     6124#endif // SAIT_VSO_EST_A0033
    61246125        {       
    61256126          uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPredic, uiStride,  piOrig, uiStride, uiWidth, uiHeight, false, 0 );
    61266127        }
    6127 #endif
     6128#else // FIX_RDO_MACRO
     6129#if SAIT_VSO_EST_A0033
     6130        if ( m_pcRdCost->getUseEstimatedVSD() )
     6131        {         
     6132          TComPicYuv* pcVirRec = m_pcRdCost->getVideoRecPicYuv();
     6133          TComPicYuv* pcVirOrg = m_pcRdCost->getDepthPicYuv();
     6134          uiActDist = m_pcRdCost->getDistPart( piPredic, uiStride, piOrig, uiStride, pcVirRec->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirOrg->getLumaAddr(pcCU->getAddr(),pcCU->getZorderIdxInCU()), pcVirRec->getStride(), uiWidth, uiHeight );
     6135        }
     6136        else       
     6137#else  // SAIT_VSO_EST_A0033 <-- wrong #else statement should be #endif
     6138        {       
     6139          uiActDist = m_pcRdCost->getDistVS( pcCU, 0, piPredic, uiStride,  piOrig, uiStride, uiWidth, uiHeight, false, 0 );
     6140        }
     6141#endif // SAIT_VSO_EST_A0033 <-- wrong #endif should be removed
     6142#endif // FIX_RDO_MACRO
    61286143
    61296144        if( uiActDist < uiBestDist || uiBestDist == RDO_DIST_MAX )
Note: See TracChangeset for help on using the changeset viewer.