Changeset 305 in 3DVCSoftware


Ignore:
Timestamp:
15 Mar 2013, 05:18:01 (11 years ago)
Author:
lg
Message:

JCT3V-C0223 with Macro FIX_LGE_WP_FOR_3D_C0223 & For texture-only coding Macro FIX_APPENCTOP_T_ONLY

Location:
branches/HTM-6.0-LG/source/Lib
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.0-LG/source/Lib/TLibCommon/TComPicYuv.cpp

    r56 r305  
    6060  m_piPicOrgU       = NULL;
    6161  m_piPicOrgV       = NULL;
    62  
     62
     63#if FIX_APPENCTOP_T_ONLY
     64  m_cuOffsetY       = NULL;
     65  m_cuOffsetC       = NULL;
     66  m_buOffsetY       = NULL;
     67  m_buOffsetC       = NULL;
     68#endif 
     69
    6370  m_bIsBorderExtended = false;
    6471}
     
    137144  if( m_apiPicBufU ){ xFree( m_apiPicBufU );    m_apiPicBufU = NULL; }
    138145  if( m_apiPicBufV ){ xFree( m_apiPicBufV );    m_apiPicBufV = NULL; }
    139 
     146#if FIX_APPENCTOP_T_ONLY
     147  if( m_cuOffsetY )
     148  {
     149#endif
    140150  delete[] m_cuOffsetY;
    141151  delete[] m_cuOffsetC;
    142152  delete[] m_buOffsetY;
    143153  delete[] m_buOffsetC;
     154#if FIX_APPENCTOP_T_ONLY
     155  }
     156#endif
    144157}
    145158
  • branches/HTM-6.0-LG/source/Lib/TLibCommon/TComPrediction.cpp

    r303 r305  
    10661066    else
    10671067    {
     1068#if FIX_LGE_WP_FOR_3D_C0223
     1069      if ( ( pcCU->getSlice()->getPPS()->getUseWP()      && pcCU->getSlice()->getSliceType() == P_SLICE ) ||
     1070         ( pcCU->getSlice()->getPPS()->getWPBiPredIdc() && pcCU->getSlice()->getSliceType() == B_SLICE ) )
     1071#else
    10681072      if ( pcCU->getSlice()->getPPS()->getWPBiPredIdc() )
     1073#endif
    10691074      {
    10701075#if DEPTH_MAP_GENERATION
     
    11001105    }
    11011106  }
    1102 
     1107#if FIX_LGE_WP_FOR_3D_C0223
     1108  if ( pcCU->getSlice()->getPPS()->getWPBiPredIdc() && pcCU->getSlice()->getSliceType() == B_SLICE  )
     1109#else
    11031110  if ( pcCU->getSlice()->getPPS()->getWPBiPredIdc() )
     1111#endif
    11041112  {
    11051113#if MERL_VSP_C0152
     
    11101118    xWeightedPredictionBi( pcCU, &m_acYuvPred[0], &m_acYuvPred[1], iRefIdx[0], iRefIdx[1], uiPartAddr, iWidth, iHeight, rpcYuvPred );
    11111119  }
     1120#if FIX_LGE_WP_FOR_3D_C0223
     1121  else if ( pcCU->getSlice()->getPPS()->getUseWP() && pcCU->getSlice()->getSliceType() == P_SLICE )
     1122#endif
     1123  {
     1124#if MERL_VSP_C0152
     1125    if(pcCU->getVSPIndex(uiPartAddr))
     1126      m_acYuvPred[0].copyPartToPartYuv( rpcYuvPred, uiPartAddr, iWidth, iHeight );
     1127    else
     1128#endif
     1129      xWeightedPredictionUni( pcCU, &m_acYuvPred[0], uiPartAddr, iWidth, iHeight, REF_PIC_LIST_0, rpcYuvPred, iPartIdx );
     1130  }
     1131
     1132
     1133
     1134
     1135
    11121136  else
    11131137  {
  • branches/HTM-6.0-LG/source/Lib/TLibCommon/TComRdCostWeightPrediction.cpp

    r56 r305  
    106106      piUsed += iStrideUsed;
    107107  }
    108 #else
     108#if FIX_LGE_WP_FOR_3D_C0223
     109  }
     110  else
     111  {
     112#endif
     113#if FIX_LGE_WP_FOR_3D_C0223 //comment of #else
     114    //#else
     115#endif
     116#endif
    109117  for( ; iRows != 0; iRows-- )
    110118  {
     
    118126    piCur += iStrideCur;
    119127  }
    120     #endif
     128#if FIX_LGE_WP_FOR_3D_C0223 //comment of #endif
     129  //#endif
     130#endif
    121131    #if HHI_INTERVIEW_SKIP
    122132      }
  • branches/HTM-6.0-LG/source/Lib/TLibCommon/TypeDef.h

    r303 r305  
    166166#define HHI_DEPTH_INTRA_SEARCH_RAU_C0160  1   // JCT3V-C0160 change 1: full Intra search in depth random access units
    167167#define FIX_POZNAN_CABAC_INIT_FLAG        1
     168#define FIX_LGE_WP_FOR_3D_C0223           1   // JCT3V-C0223 Weighted Prediction Bug-fix for 3D-HEVC. Caution! There is still crush using WP with Residual Prediction.
     169#define FIX_APPENCTOP_T_ONLY              1   // For Texture-only coding
    168170
    169171///// ***** FCO  *********
  • branches/HTM-6.0-LG/source/Lib/TLibDecoder/TDecTop.cpp

    r303 r305  
    11281128    }
    11291129
     1130#if !FIX_LGE_WP_FOR_3D_C0223
    11301131    if( pcSlice->getRefPicListCombinationFlag() && pcSlice->getPPS()->getWPBiPredIdc()==1 && pcSlice->getSliceType()==B_SLICE )
    11311132    {
    11321133      pcSlice->setWpParamforLC();
    11331134    }
     1135#endif
    11341136    pcSlice->setNoBackPredFlag( false );
    11351137    if ( pcSlice->getSliceType() == B_SLICE && !pcSlice->getRefPicListCombinationFlag())
  • branches/HTM-6.0-LG/source/Lib/TLibEncoder/TEncCavlc.cpp

    r303 r305  
    11161116    }
    11171117#endif
    1118  
     1118
     1119#if FIX_LGE_WP_FOR_3D_C0223
     1120    if ( (pcSlice->getPPS()->getUseWP() && pcSlice->getSliceType()==P_SLICE) || (pcSlice->getPPS()->getWPBiPredIdc() && pcSlice->getSliceType()==B_SLICE) )
     1121#else
    11191122    if ( (pcSlice->getPPS()->getUseWP() && pcSlice->getSliceType()==P_SLICE) || (pcSlice->getPPS()->getWPBiPredIdc()==1 && pcSlice->getSliceType()==B_SLICE) )
     1123#endif   
    11201124    {
    11211125      xCodePredWeightTable( pcSlice );
  • branches/HTM-6.0-LG/source/Lib/TLibEncoder/TEncSlice.cpp

    r303 r305  
    677677    xCalcACDCParamSlice(pcSlice);
    678678  }
    679 
    680   Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==1);
    681   Bool bWp_implicit = (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==2);
    682 
    683   if ( bWp_explicit || bWp_implicit )
     679#if FIX_LGE_WP_FOR_3D_C0223
     680  Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc());
     681
     682  if ( bWp_explicit )
    684683  {
    685684    //------------------------------------------------------------------------------
     
    690689      printf("Weighted Prediction is not supported with slice mode determined by max number of bins.\n"); exit(0);
    691690    }
     691    xEstimateWPParamSlice( pcSlice );
     692    pcSlice->initWpScaling();
     693#if !FIX_LGE_WP_FOR_3D_C0223 // Interim fix for encoder/decoder mismatch of non-fade sequence
     694    // check WP on/off
     695    xCheckWPEnable( pcSlice );
     696#endif
     697  }
     698#else
     699
     700  Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==1);
     701  Bool bWp_implicit = (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==2);
     702
     703  if ( bWp_explicit || bWp_implicit )
     704  {
     705    //------------------------------------------------------------------------------
     706    //  Weighted Prediction implemented at Slice level. SliceMode=2 is not supported yet.
     707    //------------------------------------------------------------------------------
     708    if ( pcSlice->getSliceMode()==2 || pcSlice->getEntropySliceMode()==2 )
     709    {
     710      printf("Weighted Prediction is not supported with slice mode determined by max number of bins.\n"); exit(0);
     711    }
    692712
    693713    if( bWp_explicit )
     
    704724    }
    705725  }
    706 
     726#endif
    707727#if ADAPTIVE_QP_SELECTION
    708728  if( m_pcCfg->getUseAdaptQpSelect() )
Note: See TracChangeset for help on using the changeset viewer.