Changeset 589 in 3DVCSoftware


Ignore:
Timestamp:
22 Aug 2013, 13:02:16 (11 years ago)
Author:
kwu-htm
Message:

JCT3V-E0117, "CE6-related: Simplified DC calculation for SDC"

  • a check list file (KWU_E0117.doc)
  • a coding result file (E0117_vs_rev585.xls)
Location:
branches/HTM-DEV-2.0-dev3-KWU
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-DEV-2.0-dev3-KWU/source/Lib/TLibCommon/TComPrediction.cpp

    r583 r589  
    25892589}
    25902590#endif
     2591
    25912592#if H_3D_DIM_SDC
    2592 Void TComPrediction::analyzeSegmentsSDC( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride )
     2593Void TComPrediction::analyzeSegmentsSDC( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride
     2594#if KWU_SDC_SIMPLE_DC_E0117
     2595                                         ,UInt uiIntraMode
     2596                                         ,Bool orgDC
     2597#endif
     2598                                        )
    25932599{
    25942600  Int iSumDepth[2];
     
    25962602  Int iSumPix[2];
    25972603  memset(iSumPix, 0, sizeof(Int)*2);
    2598  
     2604 
     2605#if KWU_SDC_SIMPLE_DC_E0117
     2606  if (orgDC == false)
     2607  {
     2608    if ( getDimType(uiIntraMode) == DMM1_IDX )
     2609    {
     2610      UChar ucSegmentLT = pMask[0];
     2611      UChar ucSegmentRT = pMask[uiSize-1];
     2612      UChar ucSegmentLB = pMask[uiMaskStride * (uiSize-1)];
     2613      UChar ucSegmentRB = pMask[uiMaskStride * (uiSize-1) + (uiSize-1)];
     2614
     2615      rpSegMeans[ucSegmentLT] = pOrig[0];
     2616      rpSegMeans[ucSegmentRT] = pOrig[uiSize-1];
     2617      rpSegMeans[ucSegmentLB] = pOrig[uiStride * (uiSize-1) ];
     2618      rpSegMeans[ucSegmentRB] = pOrig[uiStride * (uiSize-1) + (uiSize-1) ];
     2619    }
     2620    else if (uiIntraMode == PLANAR_IDX)
     2621    {
     2622      Pel* pLeftTop = pOrig;
     2623      Pel* pRightTop = pOrig + (uiSize-1);
     2624      Pel* pLeftBottom = (pOrig+ (uiStride*(uiSize-1)));
     2625      Pel* pRightBottom = (pOrig+ (uiStride*(uiSize-1)) + (uiSize-1));
     2626
     2627      rpSegMeans[0] = (*pLeftTop + *pRightTop + *pLeftBottom + *pRightBottom + 2)>>2;
     2628    }
     2629    return;
     2630  }
     2631#endif
     2632
    25992633  Int subSamplePix;
    26002634  if ( uiSize == 64 || uiSize == 32 )
  • branches/HTM-DEV-2.0-dev3-KWU/source/Lib/TLibCommon/TComPrediction.h

    r531 r589  
    174174  Void predIntraLumaDepth         ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiIntraMode, Pel* piPred, UInt uiStride, Int iWidth, Int iHeight, Bool bFastEnc = false );
    175175#if H_3D_DIM_SDC
    176   Void analyzeSegmentsSDC         ( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride );
     176  Void analyzeSegmentsSDC         ( Pel* pOrig, UInt uiStride, UInt uiSize, Pel* rpSegMeans, UInt uiNumSegments, Bool* pMask, UInt uiMaskStride
     177#if KWU_SDC_SIMPLE_DC_E0117
     178                                    ,UInt uiIntraMode
     179                                    ,Bool orgDC=false
     180#endif
     181    );
    177182#endif
    178183#endif
  • branches/HTM-DEV-2.0-dev3-KWU/source/Lib/TLibCommon/TypeDef.h

    r573 r589  
    180180                                              // HHI_DEPTH_INTRA_SEARCH_RAU_C0160
    181181                                              // LG_ZEROINTRADEPTHRESI_A0087
     182#define KWU_SDC_SIMPLE_DC_E0117           1   // Simplified DC calculation for SDC
    182183#define SCU_HS_DMM4_REMOVE_DIV_E0242      1   // DMM4 Division Removal
    183184#define SCU_HS_FAST_DEPTH_INTRA_E0238     1   // Fast DMM and RBC Mode Selection
  • branches/HTM-DEV-2.0-dev3-KWU/source/Lib/TLibDecoder/TDecCu.cpp

    r531 r589  
    794794  // get DC prediction for each segment
    795795  Pel apDCPredValues[2];
     796#if KWU_SDC_SIMPLE_DC_E0117
     797  m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode);
     798#else
    796799  m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride);
     800#endif
    797801 
    798802  // reconstruct residual based on mask + DC residuals
  • branches/HTM-DEV-2.0-dev3-KWU/source/Lib/TLibEncoder/TEncSearch.cpp

    r583 r589  
    18911891  // get DC prediction for each segment
    18921892  Pel apDCPredValues[2];
     1893#if KWU_SDC_SIMPLE_DC_E0117
     1894  analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode );
     1895#else
    18931896  analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride );
     1897#endif
    18941898 
    18951899  // get original DC for each segment
    18961900  Pel apDCOrigValues[2];
     1901#if KWU_SDC_SIMPLE_DC_E0117
     1902  analyzeSegmentsSDC(piOrg, uiStride, uiWidth, apDCOrigValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode, true );
     1903#else
    18971904  analyzeSegmentsSDC(piOrg, uiStride, uiWidth, apDCOrigValues, uiNumSegments, pbMask, uiMaskStride );
     1905#endif
    18981906 
    18991907  for( UInt uiSegment = 0; uiSegment < uiNumSegments; uiSegment++ )
Note: See TracChangeset for help on using the changeset viewer.