Changeset 468 in SHVCSoftware for branches/SHM-4.0-dev/source/Lib


Ignore:
Timestamp:
14 Nov 2013, 09:02:43 (11 years ago)
Author:
nokia
Message:

Integration of O0194: Support different bit-depth values for different layers, enable weighted prediction for ILR for color gamut scalability.

Location:
branches/SHM-4.0-dev/source/Lib
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-4.0-dev/source/Lib/TLibCommon/TComUpsampleFilter.cpp

    r467 r468  
    279279#if  N0214_INTERMEDIATE_BUFFER_16BITS
    280280#if O0194_JOINT_US_BITSHIFT
    281   Int nShift = 20 - g_bitDepthYLayer[1];
     281    Int nShift = 20 - g_bitDepthYLayer[1];
    282282#else
    283283    Int nShift = US_FILTER_PREC*2 - shift1;
  • branches/SHM-4.0-dev/source/Lib/TLibCommon/TypeDef.h

    r467 r468  
    4545#define RANDOM_ACCESS_SEI_FIX            1
    4646#if SVC_EXTENSION
    47 #define MFM_ENCCONSTRAINT                1      ///< JCTVC-O0216: Encoder constraint for motion field mapping
    48 
    49 #define O0194_DIFFERENT_BITDEPTH_EL_BL   1      ///< JCTVC-O0194: Support for different bitdepth values for BL and EL, add required configuration parameters
     47#define O0194_DIFFERENT_BITDEPTH_EL_BL   1      ///< JCTVC-O0194: Support for different bitdepth values for BL and EL, add required configuration parameters (and Some bugfixes when REPN_FORMAT_IN_VPS (JCTVC-N0092) is enabled)
    5048#define O0194_JOINT_US_BITSHIFT          1      ///< JCTVC-O0194: Joint Upsampling and bit-shift
    5149#define O0194_WEIGHTED_PREDICTION_CGS    1      ///< JCTVC-O0194: Weighted prediciton for color gamut scalability
    52 #define O0194_REPN_FORMAT_IN_VPS_BUGFIX  1      ///< JCTVC-O0194: Some bugfixes when REPN_FORMAT_IN_VPS (JCTVC-N0092) is enabled
    53 
     50#define MFM_ENCCONSTRAINT                1      ///< JCTVC-O0216: Encoder constraint for motion field mapping
    5451#define VPS_NUH_LAYER_ID                 1      ///< JCTVC-N0085: Assert that the nuh_layer_id of VPS NAL unit should be 0
    5552#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
  • branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r467 r468  
    20072007
    20082008#if REPN_FORMAT_IN_VPS
    2009 #if O0194_REPN_FORMAT_IN_VPS_BUGFIX
     2009#if O0194_DIFFERENT_BITDEPTH_EL_BL
    20102010    g_bitDepthYLayer[rpcSlice->getLayerId()]     = rpcSlice->getBitDepthY();
    20112011    g_bitDepthCLayer[rpcSlice->getLayerId()]     = rpcSlice->getBitDepthC();
  • branches/SHM-4.0-dev/source/Lib/TLibDecoder/TDecCu.cpp

    r466 r468  
    616616    curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
    617617  }
    618 #if O0194_REPN_FORMAT_IN_VPS_BUGFIX
     618#if O0194_DIFFERENT_BITDEPTH_EL_BL
     619  // Bug-fix
    619620#if REPN_FORMAT_IN_VPS
    620621  m_pcTrQuant->setQPforQuant  ( pcCU->getQP(0), eText, pcCU->getSlice()->getQpBDOffsetC(), curChromaQpOffset );
     
    776777  // Cb and Cr
    777778  Int curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCbQpOffset() + pcCU->getSlice()->getSliceQpDeltaCb();
    778 #if O0194_REPN_FORMAT_IN_VPS_BUGFIX
     779#if O0194_DIFFERENT_BITDEPTH_EL_BL
     780  // Bug-fix
    779781#if REPN_FORMAT_IN_VPS
    780782  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), TEXT_CHROMA, pcCU->getSlice()->getQpBDOffsetC(), curChromaQpOffset );
     
    792794
    793795  curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
    794 #if O0194_REPN_FORMAT_IN_VPS_BUGFIX
     796#if O0194_DIFFERENT_BITDEPTH_EL_BL
     797  // Bug-fix
    795798#if REPN_FORMAT_IN_VPS
    796799  m_pcTrQuant->setQPforQuant( pcCU->getQP( uiAbsPartIdx ), TEXT_CHROMA, pcCU->getSlice()->getQpBDOffsetC(), curChromaQpOffset );
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/TEncSlice.cpp

    r466 r468  
    931931  }
    932932#if O0194_WEIGHTED_PREDICTION_CGS
    933   else{
     933  else
     934  {
    934935    // Calculate for the base layer to be used in EL as Inter layer reference
    935936    xCalcACDCParamSlice(pcSlice);
  • branches/SHM-4.0-dev/source/Lib/TLibEncoder/WeightPredAnalysis.cpp

    r467 r468  
    232232      slice->getRefPic(eRefPicList, refIdxTemp)->getSlice(0)->getWpAcDcParam(refWeightACDCParam);
    233233#if O0194_WEIGHTED_PREDICTION_CGS
    234       if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(1)){
     234      if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(slice->getLayerId()))
     235      {
    235236        refWeightACDCParam = (wpACDCParam *)g_refWeightACDCParam;
    236237      }
     
    250251        Int64 refAC = refWeightACDCParam[comp].iAC;
    251252#if O0194_WEIGHTED_PREDICTION_CGS
    252         if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(1)){
     253        if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(slice->getLayerId()))
     254        {
    253255          refAC *= (double)currWeightACDCParam[comp].iSamples/refWeightACDCParam[comp].iSamples;
    254256#if O0194_JOINT_US_BITSHIFT
     
    264266        Int offset = (Int)( ((currDC<<log2Denom) - ((Int64)weight * refDC) + (Int64)realOffset) >> realLog2Denom );
    265267#if O0194_WEIGHTED_PREDICTION_CGS
    266         if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(1)){
     268        if (slice->getRefPic(eRefPicList, refIdxTemp)->isILR(slice->getLayerId())){
    267269        }
    268270        else{
     
    293295#if O0194_WEIGHTED_PREDICTION_CGS
    294296        // make sure the reference frames other than ILR are not using weighted prediction
    295         if (!(slice->getRefPic(eRefPicList, refIdxTemp)->isILR(1)))
    296         {
     297        if (!(slice->getRefPic(eRefPicList, refIdxTemp)->isILR(slice->getLayerId()))){
    297298          continue;
    298299        }
Note: See TracChangeset for help on using the changeset viewer.