Changeset 334 in SHVCSoftware


Ignore:
Timestamp:
9 Aug 2013, 18:05:42 (11 years ago)
Author:
ericsson
Message:

Initial reference picture list construction N0316 (Ericsson), N0082(Sony)

#define RPL_INIT_N0316_N0082 N0316, N0082: initial reference picture list construction
#define FINAL_RPL_CHANGE_N0082
N0082: final ref picture list change (encoder change)

Location:
branches/SHM-3.0-dev
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-3.0-dev/cfg/encoder_randomaccess_he10.cfg

    r310 r334  
    2727Frame7:  B    5   4        0.68     0           2                4         -1 -5  1 3             1       1        5         1 0 1 1 1 
    2828Frame8:  B    7   4        0.68     0           2                4         -1 -3 -7 1             1      -2        5         1 1 1 1 0
     29
     30FrameEL1:  B    8   1        0.442    0           4                4         -8 -10 -12 -16         0
     31FrameEL2:  B    4   2        0.3536   0           2                3         -4 -6  4               1       4        5         1 1 0 0 1
     32FrameEL3:  B    2   3        0.3536   0           2                4         -2 -4  2 6             1       2        4         1 1 1 1
     33FrameEL4:  B    1   4        0.68     0           2                4         -1  1  3 7             1       1        5         1 0 1 1 1
     34FrameEL5:  B    3   4        0.68     0           2                4         -1 -3  1 5             1      -2        5         1 1 1 1 0
     35FrameEL6:  B    6   3        0.3536   0           2                4         -2 -4 -6 2             0
     36FrameEL7:  B    5   4        0.68     0           2                4         -1 -5  1 3             0
     37FrameEL8:  B    7   4        0.68     0           2                4         -1 -3 -7 1             0
     38
    2939ListCombination               : 1           # Use combined list for uni-prediction in B-slices
    3040
  • branches/SHM-3.0-dev/cfg/encoder_randomaccess_main.cfg

    r310 r334  
    3232Frame8:  B    7   4        0.68     0            0              0           2                4         -1 -3 -7 1             1      -2        5         1 1 1 1 0
    3333
     34FrameEL1:  B    8   1        0.442    0            0              0           4                4         -8 -10 -12 -16         0
     35FrameEL2:  B    4   2        0.3536   0            0              0           2                3         -4 -6  4               1       4        5         1 1 0 0 1
     36FrameEL3:  B    2   3        0.3536   0            0              0           2                4         -2 -4  2 6             1       2        4         1 1 1 1
     37FrameEL4:  B    1   4        0.68     0            0              0           2                4         -1  1  3 7             1       1        5         1 0 1 1 1
     38FrameEL5:  B    3   4        0.68     0            0              0           2                4         -1 -3  1 5             1      -2        5         1 1 1 1 0
     39FrameEL6:  B    6   3        0.3536   0            0              0           2                4         -2 -4 -6 2             0
     40FrameEL7:  B    5   4        0.68     0            0              0           2                4         -1 -5  1 3             0
     41FrameEL8:  B    7   4        0.68     0            0              0           2                4         -1 -3 -7 1             0
    3442#=========== Motion Search =============
    3543FastSearch                    : 1           # 0:Full search  1:TZ search
  • branches/SHM-3.0-dev/cfg/encoder_randomaccess_main10.cfg

    r310 r334  
    3232Frame8:  B    7   4        0.68     0            0              0           2                4         -1 -3 -7 1             1      -2        5         1 1 1 1 0
    3333
     34FrameEL1:  B    8   1        0.442    0            0              0           4                4         -8 -10 -12 -16         0
     35FrameEL2:  B    4   2        0.3536   0            0              0           2                3         -4 -6  4               1       4        5         1 1 0 0 1
     36FrameEL3:  B    2   3        0.3536   0            0              0           2                4         -2 -4  2 6             1       2        4         1 1 1 1
     37FrameEL4:  B    1   4        0.68     0            0              0           2                4         -1  1  3 7             1       1        5         1 0 1 1 1
     38FrameEL5:  B    3   4        0.68     0            0              0           2                4         -1 -3  1 5             1      -2        5         1 1 1 1 0
     39FrameEL6:  B    6   3        0.3536   0            0              0           2                4         -2 -4 -6 2             0
     40FrameEL7:  B    5   4        0.68     0            0              0           2                4         -1 -5  1 3             0
     41FrameEL8:  B    7   4        0.68     0            0              0           2                4         -1 -3 -7 1             0
    3442#=========== Motion Search =============
    3543FastSearch                    : 1           # 0:Full search  1:TZ search
  • branches/SHM-3.0-dev/source/App/TAppEncoder/TAppEncCfg.cpp

    r330 r334  
    817817    opts.addOptions()(cOSS.str(), m_GOPList[i-1], GOPEntry());
    818818  }
     819#if FINAL_RPL_CHANGE_N0082
     820  for(Int i=1; i<MAX_GOP+1; i++) {
     821    std::ostringstream cOSS;
     822    cOSS<<"FrameEL"<<i;
     823    opts.addOptions()(cOSS.str(), m_acLayerCfg[1].m_GOPListLayer[i-1], GOPEntry());
     824  }
     825#endif
    819826  po::setDefaults(opts);
    820827  const list<const Char*>& argv_unhandled = po::scanArgv(opts, argc, (const Char**) argv);
     
    14601467#endif
    14611468 
     1469#if !FINAL_RPL_CHANGE_N0082
    14621470  Bool verifiedGOP=false;
     1471#endif
    14631472  Bool errorGOP=false;
     1473#if !FINAL_RPL_CHANGE_N0082
    14641474  Int checkGOP=1;
    14651475  Int numRefs = 1;
     1476#endif
    14661477  Int refList[MAX_NUM_REF_PICS+1];
    14671478  refList[0]=0;
     
    14711482    isOK[i]=false;
    14721483  }
     1484#if !FINAL_RPL_CHANGE_N0082
    14731485  Int numOK=0;
     1486#endif
    14741487#if !SVC_EXTENSION
    14751488  xConfirmPara( m_iIntraPeriod >=0&&(m_iIntraPeriod%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" );
     
    15141527  }
    15151528#endif
    1516 
     1529#if FINAL_RPL_CHANGE_N0082
     1530  for(UInt layer=0; layer<m_numLayers; layer++)
     1531  {
     1532    if (m_acLayerCfg[layer].m_GOPListLayer[0].m_POC<0){
     1533      memcpy( m_acLayerCfg[layer].m_GOPListLayer, m_GOPList, sizeof(GOPEntry)*MAX_GOP );
     1534    }
     1535    errorGOP = xconfirmExtraGOP( m_acLayerCfg[layer].m_GOPListLayer );
     1536    xConfirmPara(errorGOP,"Invalid GOP structure given");
     1537  }
     1538  //tentative for encoder
     1539  if( m_acLayerCfg[1].m_GOPListLayer[5].m_POC == 6  && m_acLayerCfg[1].m_GOPListLayer[7].m_POC == 7 ){
     1540    //RA, POC5
     1541    m_acLayerCfg[1].m_GOPListLayer[5].m_usedByCurrPic[2] = 0;
     1542    m_acLayerCfg[1].m_GOPListLayer[5].m_refIdc[2] = 0;
     1543    //RA, POC7
     1544    m_acLayerCfg[1].m_GOPListLayer[7].m_usedByCurrPic[2] = 0;
     1545    m_acLayerCfg[1].m_GOPListLayer[7].m_refIdc[2] = 0;
     1546  }
     1547#else
    15171548  m_extraRPSs=0;
    15181549  //start looping through frames in coding order until we can verify that the GOP structure is correct.
     
    17101741  }
    17111742  xConfirmPara(errorGOP,"Invalid GOP structure given");
     1743#endif
    17121744  m_maxTempLayer = 1;
    17131745  for(Int i=0; i<m_iGOPSize; i++)
     
    22352267}
    22362268#endif
     2269
     2270#if FINAL_RPL_CHANGE_N0082
     2271Bool  TAppEncCfg::xconfirmExtraGOP (GOPEntry * ge)
     2272{
     2273  Bool verifiedGOP=false;
     2274  Bool errorGOP=false;
     2275  Int checkGOP=1;
     2276  Int numRefs = 1;
     2277  Int refList[MAX_NUM_REF_PICS+1];
     2278  refList[0]=0;
     2279  Bool isOK[MAX_GOP];
     2280  for(Int i=0; i<MAX_GOP; i++)
     2281  {
     2282    isOK[i]=false;
     2283  }
     2284  Int numOK=0;
     2285
     2286  m_extraRPSs=0;
     2287  //start looping through frames in coding order until we can verify that the GOP structure is correct.
     2288  while(!verifiedGOP&&!errorGOP)
     2289  {
     2290    Int curGOP = (checkGOP-1)%m_iGOPSize;
     2291    Int curPOC = ((checkGOP-1)/m_iGOPSize)*m_iGOPSize + ge[curGOP].m_POC;   
     2292    if(ge[curGOP].m_POC<0)
     2293    {
     2294      printf("\nError: found fewer Reference Picture Sets than GOPSize\n");
     2295      errorGOP=true;
     2296    }
     2297    else
     2298    {
     2299      //check that all reference pictures are available, or have a POC < 0 meaning they might be available in the next GOP.
     2300      Bool beforeI = false;
     2301      for(Int i = 0; i< ge[curGOP].m_numRefPics; i++)
     2302      {
     2303        Int absPOC = curPOC+ge[curGOP].m_referencePics[i];
     2304        if(absPOC < 0)
     2305        {
     2306          beforeI=true;
     2307        }
     2308        else
     2309        {
     2310          Bool found=false;
     2311          for(Int j=0; j<numRefs; j++)
     2312          {
     2313            if(refList[j]==absPOC)
     2314            {
     2315              found=true;
     2316              for(Int k=0; k<m_iGOPSize; k++)
     2317              {
     2318                if(absPOC%m_iGOPSize == ge[k].m_POC%m_iGOPSize)
     2319                {
     2320                  if(ge[k].m_temporalId==ge[curGOP].m_temporalId)
     2321                  {
     2322                    ge[k].m_refPic = true;
     2323                  }
     2324                  ge[curGOP].m_usedByCurrPic[i]=ge[k].m_temporalId<=ge[curGOP].m_temporalId;
     2325                }
     2326              }
     2327            }
     2328          }
     2329          if(!found)
     2330          {
     2331            printf("\nError: ref pic %d is not available for GOP frame %d\n",ge[curGOP].m_referencePics[i],curGOP+1);
     2332            errorGOP=true;
     2333          }
     2334        }
     2335      }
     2336      if(!beforeI&&!errorGOP)
     2337      {
     2338        //all ref frames were present
     2339        if(!isOK[curGOP])
     2340        {
     2341          numOK++;
     2342          isOK[curGOP]=true;
     2343          if(numOK==m_iGOPSize)
     2344          {
     2345            verifiedGOP=true;
     2346          }
     2347        }
     2348      }
     2349      else
     2350      {
     2351        //create a new GOPEntry for this frame containing all the reference pictures that were available (POC > 0)
     2352        ge[m_iGOPSize+m_extraRPSs]=ge[curGOP];
     2353        Int newRefs=0;
     2354        for(Int i = 0; i< ge[curGOP].m_numRefPics; i++)
     2355        {
     2356          Int absPOC = curPOC+ge[curGOP].m_referencePics[i];
     2357          if(absPOC>=0)
     2358          {
     2359            ge[m_iGOPSize+m_extraRPSs].m_referencePics[newRefs]=ge[curGOP].m_referencePics[i];
     2360            ge[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[newRefs]=ge[curGOP].m_usedByCurrPic[i];
     2361            newRefs++;
     2362          }
     2363        }
     2364        Int numPrefRefs = ge[curGOP].m_numRefPicsActive;
     2365       
     2366        for(Int offset = -1; offset>-checkGOP; offset--)
     2367        {
     2368          //step backwards in coding order and include any extra available pictures we might find useful to replace the ones with POC < 0.
     2369          Int offGOP = (checkGOP-1+offset)%m_iGOPSize;
     2370          Int offPOC = ((checkGOP-1+offset)/m_iGOPSize)*m_iGOPSize + ge[offGOP].m_POC;
     2371          if(offPOC>=0&&ge[offGOP].m_temporalId<=ge[curGOP].m_temporalId)
     2372          {
     2373            Bool newRef=false;
     2374            for(Int i=0; i<numRefs; i++)
     2375            {
     2376              if(refList[i]==offPOC)
     2377              {
     2378                newRef=true;
     2379              }
     2380            }
     2381            for(Int i=0; i<newRefs; i++)
     2382            {
     2383              if(ge[m_iGOPSize+m_extraRPSs].m_referencePics[i]==offPOC-curPOC)
     2384              {
     2385                newRef=false;
     2386              }
     2387            }
     2388            if(newRef)
     2389            {
     2390              Int insertPoint=newRefs;
     2391              //this picture can be added, find appropriate place in list and insert it.
     2392              if(ge[offGOP].m_temporalId==ge[curGOP].m_temporalId)
     2393              {
     2394                ge[offGOP].m_refPic = true;
     2395              }
     2396              for(Int j=0; j<newRefs; j++)
     2397              {
     2398                if(ge[m_iGOPSize+m_extraRPSs].m_referencePics[j]<offPOC-curPOC||ge[m_iGOPSize+m_extraRPSs].m_referencePics[j]>0)
     2399                {
     2400                  insertPoint = j;
     2401                  break;
     2402                }
     2403              }
     2404              Int prev = offPOC-curPOC;
     2405              Int prevUsed = ge[offGOP].m_temporalId<=ge[curGOP].m_temporalId;
     2406              for(Int j=insertPoint; j<newRefs+1; j++)
     2407              {
     2408                Int newPrev = ge[m_iGOPSize+m_extraRPSs].m_referencePics[j];
     2409                Int newUsed = ge[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[j];
     2410                ge[m_iGOPSize+m_extraRPSs].m_referencePics[j]=prev;
     2411                ge[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[j]=prevUsed;
     2412                prevUsed=newUsed;
     2413                prev=newPrev;
     2414              }
     2415              newRefs++;
     2416            }
     2417          }
     2418          if(newRefs>=numPrefRefs)
     2419          {
     2420            break;
     2421          }
     2422        }
     2423        ge[m_iGOPSize+m_extraRPSs].m_numRefPics=newRefs;
     2424        ge[m_iGOPSize+m_extraRPSs].m_POC = curPOC;
     2425        if (m_extraRPSs == 0)
     2426        {
     2427          ge[m_iGOPSize+m_extraRPSs].m_interRPSPrediction = 0;
     2428          ge[m_iGOPSize+m_extraRPSs].m_numRefIdc = 0;
     2429        }
     2430        else
     2431        {
     2432          Int rIdx =  m_iGOPSize + m_extraRPSs - 1;
     2433          Int refPOC = ge[rIdx].m_POC;
     2434          Int refPics = ge[rIdx].m_numRefPics;
     2435          Int newIdc=0;
     2436          for(Int i = 0; i<= refPics; i++)
     2437          {
     2438            Int deltaPOC = ((i != refPics)? ge[rIdx].m_referencePics[i] : 0);  // check if the reference abs POC is >= 0
     2439            Int absPOCref = refPOC+deltaPOC;
     2440            Int refIdc = 0;
     2441            for (Int j = 0; j < ge[m_iGOPSize+m_extraRPSs].m_numRefPics; j++)
     2442            {
     2443              if ( (absPOCref - curPOC) == ge[m_iGOPSize+m_extraRPSs].m_referencePics[j])
     2444              {
     2445                if (ge[m_iGOPSize+m_extraRPSs].m_usedByCurrPic[j])
     2446                {
     2447                  refIdc = 1;
     2448                }
     2449                else
     2450                {
     2451                  refIdc = 2;
     2452                }
     2453              }
     2454            }
     2455            ge[m_iGOPSize+m_extraRPSs].m_refIdc[newIdc]=refIdc;
     2456            newIdc++;
     2457          }
     2458          ge[m_iGOPSize+m_extraRPSs].m_interRPSPrediction = 1; 
     2459          ge[m_iGOPSize+m_extraRPSs].m_numRefIdc = newIdc;
     2460          ge[m_iGOPSize+m_extraRPSs].m_deltaRPS = refPOC - ge[m_iGOPSize+m_extraRPSs].m_POC;
     2461        }
     2462        curGOP=m_iGOPSize+m_extraRPSs;
     2463        m_extraRPSs++;
     2464      }
     2465      numRefs=0;
     2466      for(Int i = 0; i< ge[curGOP].m_numRefPics; i++)
     2467      {
     2468        Int absPOC = curPOC+ge[curGOP].m_referencePics[i];
     2469        if(absPOC >= 0)
     2470        {
     2471          refList[numRefs]=absPOC;
     2472          numRefs++;
     2473        }
     2474      }
     2475      refList[numRefs]=curPOC;
     2476      numRefs++;
     2477    }
     2478    checkGOP++;
     2479  }
     2480
     2481  return errorGOP; //update
     2482}
     2483#endif
    22372484//! \}
  • branches/SHM-3.0-dev/source/App/TAppEncoder/TAppEncCfg.h

    r313 r334  
    348348  Void  xPrintParameter ();                                   ///< print configuration values
    349349  Void  xPrintUsage     ();                                   ///< print usage
     350#if FINAL_RPL_CHANGE_N0082
     351  Bool  xconfirmExtraGOP (GOPEntry * ge);
     352#endif
    350353#if M0040_ADAPTIVE_RESOLUTION_CHANGE
    351354  Int       m_adaptiveResolutionChange;                       ///< Indicate adaptive resolution change frame
  • branches/SHM-3.0-dev/source/App/TAppEncoder/TAppEncLayerCfg.h

    r313 r334  
    8181  Int       m_scaledRefLayerBottomOffset[MAX_LAYERS];
    8282#endif 
     83#if FINAL_RPL_CHANGE_N0082
     84  GOPEntry  m_GOPListLayer[MAX_GOP];                            ///< for layer
     85#endif
    8386public:
    8487  TAppEncLayerCfg();
     
    141144  Bool    getRCForceIntraQP()         {return m_RCForceIntraQP;        }
    142145#endif
     146#if FINAL_RPL_CHANGE_N0082
     147  GOPEntry getGOPEntry(Int i )        {return m_GOPListLayer[i];  }
     148#endif
    143149}; // END CLASS DEFINITION TAppEncLayerCfg
    144150
  • branches/SHM-3.0-dev/source/App/TAppEncoder/TAppEncTop.cpp

    r328 r334  
    136136    m_acTEncTop[layer].setDecodingRefreshType          ( m_iDecodingRefreshType );
    137137    m_acTEncTop[layer].setGOPSize                      ( m_iGOPSize );
     138#if FINAL_RPL_CHANGE_N0082
     139    m_acTEncTop[layer].setGopList                      ( m_acLayerCfg[layer].m_GOPListLayer );
     140#else
    138141    m_acTEncTop[layer].setGopList                      ( m_GOPList );
     142#endif
    139143    m_acTEncTop[layer].setExtraRPSs                    ( m_extraRPSs );
    140144    for(Int i = 0; i < MAX_TLAYER; i++)
  • branches/SHM-3.0-dev/source/Lib/TLibCommon/TComSlice.cpp

    r324 r334  
    584584      rpsCurrList0[cIdx] = RefPicSetStCurr0[i];
    585585    }
     586#if RPL_INIT_N0316_N0082
     587#if REF_IDX_FRAMEWORK
     588    if( m_layerId > 0 )
     589    {
     590#if JCTVC_M0458_INTERLAYER_RPS_SIG
     591      for( i = 0; i < m_activeNumILRRefIdx && cIdx < numPocTotalCurr; cIdx ++, i ++)     
     592#else
     593      for( i = 0; i < m_numILRRefIdx && cIdx < numPocTotalCurr; cIdx ++, i ++)
     594#endif
     595      {
     596        Int refLayerIdc = m_interLayerPredLayerIdc[i];
     597#if ILR_RESTR
     598        Int maxSubLayerForILPPlus1 = getVPS()->getMaxSublayerForIlpPlus1(ilpPic[refLayerIdc]->getSlice(0)->getLayerId());
     599        if( ((Int)(ilpPic[refLayerIdc]->getSlice(0)->getTLayer())<=maxSubLayerForILPPlus1-1) || (maxSubLayerForILPPlus1==0 && ilpPic[refLayerIdc]->getSlice(0)->getRapPicFlag()) )
     600#endif
     601          rpsCurrList0[cIdx] = ilpPic[refLayerIdc];
     602      }
     603    }
     604#endif
     605#endif
    586606    for ( i=0; i<NumPocStCurr1; i++, cIdx++)
    587607    {
     
    592612      rpsCurrList0[cIdx] = RefPicSetLtCurr[i];
    593613    }   
    594 
     614#if !RPL_INIT_N0316_N0082
    595615#if REF_IDX_FRAMEWORK
    596616    if( m_layerId > 0 )
     
    611631    }
    612632#endif
     633#endif
    613634  assert(cIdx == numPocTotalCurr);
    614635
     
    692713  TComRefPicListModification* refPicListModification = &m_RefPicListModification;
    693714  Int numberOfRpsCurrTempList = this->getNumRpsCurrTempList();  // total number of ref pics in listTemp0 including inter-layer ref pics
     715#if RPL_INIT_N0316_N0082
     716  Int numberOfPocBeforeCurr = this->getNumNegativeRpsCurrTempList();  // number of negative temporal ref pics
     717#endif
    694718
    695719  assert(m_aiNumRefIdx[REF_PIC_LIST_0] > 1);
     
    697721
    698722  //set L0 inter-layer reference picture modification
     723#if RPL_INIT_N0316_N0082
     724  Bool hasModification = (m_aiNumRefIdx[REF_PIC_LIST_0] == (numberOfPocBeforeCurr + m_activeNumILRRefIdx)) ? false : true;
     725#else
    699726  Bool hasModification = (m_aiNumRefIdx[REF_PIC_LIST_0] == numberOfRpsCurrTempList) ? false : true;
     727#endif
     728#if FINAL_RPL_CHANGE_N0082
     729  hasModification = false; //modification is not necessary
     730#endif
    700731  refPicListModification->setRefPicListModificationFlagL0(hasModification);
    701732  if(hasModification)
     
    721752#endif
    722753      {
     754#if RPL_INIT_N0316_N0082
     755        if((numberOfPocBeforeCurr) >= m_aiNumRefIdx[REF_PIC_LIST_0])
     756          refPicListModification->setRefPicSetIdxL0(m_aiNumRefIdx[REF_PIC_LIST_0] - i, numberOfPocBeforeCurr);
     757        else
     758        {
     759          refPicListModification->setRefPicSetIdxL0(m_aiNumRefIdx[REF_PIC_LIST_0] - i, numberOfPocBeforeCurr);
     760          for (Int j = numberOfPocBeforeCurr; j < (m_aiNumRefIdx[REF_PIC_LIST_0] - i); j++)
     761            refPicListModification->setRefPicSetIdxL0(j, j + m_activeNumILRRefIdx);
     762        }
     763#else
    723764        refPicListModification->setRefPicSetIdxL0(m_aiNumRefIdx[REF_PIC_LIST_0] - i, numberOfRpsCurrTempList - i);
     765#endif
    724766      }
    725767    }
     
    758800}
    759801#endif
    760 
     802#if RPL_INIT_N0316_N0082
     803Int TComSlice::getNumNegativeRpsCurrTempList()
     804{
     805  if( m_eSliceType == I_SLICE )
     806  {
     807    return 0;
     808  }
     809
     810  Int numPocBeforeCurr = 0;
     811  for( UInt i = 0; i < m_pcRPS->getNumberOfNegativePictures(); i++ )
     812  {
     813    if(m_pcRPS->getUsed(i))
     814    {
     815      numPocBeforeCurr++;
     816    }
     817  }
     818
     819  return numPocBeforeCurr;
     820}
     821#endif
    761822Int TComSlice::getNumRpsCurrTempList()
    762823{
  • branches/SHM-3.0-dev/source/Lib/TLibCommon/TComSlice.h

    r328 r334  
    15671567  Bool      getMvdL1ZeroFlag ()                                  { return m_bLMvdL1Zero;    }
    15681568  Int       getNumRpsCurrTempList();
     1569#if RPL_INIT_N0316_N0082
     1570  Int       getNumNegativeRpsCurrTempList();
     1571#endif
    15691572  Int       getList1IdxToList0Idx ( Int list1Idx )               { return m_list1IdxToList0Idx[list1Idx]; }
    15701573  Void      setReferenced(Bool b)                               { m_bRefenced = b; }
  • branches/SHM-3.0-dev/source/Lib/TLibCommon/TypeDef.h

    r333 r334  
    4747#if SVC_EXTENSION
    4848#define MAX_LAYERS                       2      ///< max number of layers the codec is supposed to handle
    49 
     49#define RPL_INIT_N0316_N0082             1      ///< N0316, N0082: initial reference picture list construction
     50#define FINAL_RPL_CHANGE_N0082           1      ///< N0082: final ref picture list change (encoder)
    5051#define M0464_TILE_BOUNDARY_ALIGNED_FLAG 1      ///< VUI flag to indicate tile boundary alignment
    5152#define M0463_VUI_EXT_ILP_REF            1      ///< VUI extension inter-layer dependency offset signalling
  • branches/SHM-3.0-dev/source/Lib/TLibEncoder/TEncTop.cpp

    r323 r334  
    886886  for( Int i = 0; i < getGOPSize()+m_extraRPSs; i++)
    887887  {
     888#if FINAL_RPL_CHANGE_N0082
     889    GOPEntry ge = m_ppcTEncTop[m_cSPS.getLayerId()]->getGOPEntry(i);
     890#else
    888891    GOPEntry ge = getGOPEntry(i);
     892#endif
    889893    rps = rpsList->getReferencePictureSet(i);
    890894    rps->setNumberOfPictures(ge.m_numRefPics);
Note: See TracChangeset for help on using the changeset viewer.