Changeset 964 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncSlice.cpp


Ignore:
Timestamp:
5 Jul 2014, 05:16:45 (10 years ago)
Author:
tech
Message:
  • Merged 11.0-dev0@963. (Update to HM 14.0 + MV-HEVC Draft 8 HLS)
  • Added coding results.
  • Changed version number.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibEncoder/TEncSlice.cpp

    r950 r964  
    221221  Int depth;
    222222  {
     223#if FIX_FIELD_DEPTH   
     224    Int poc = rpcSlice->getPOC();
     225    if(isField)
     226    {
     227      poc = (poc/2)%(m_pcCfg->getGOPSize()/2);
     228    }
     229    else
     230    {
     231      poc = poc%m_pcCfg->getGOPSize();   
     232    }
     233#else
    223234    Int poc = rpcSlice->getPOC()%m_pcCfg->getGOPSize();
     235#endif
    224236    if ( poc == 0 )
    225237    {
     
    244256      }
    245257    }
     258#if FIX_FIELD_DEPTH 
     259#if HARMONIZE_GOP_FIRST_FIELD_COUPLE
     260    if(poc != 0)
     261    {
     262#endif
     263    if(isField && rpcSlice->getPOC()%2 == 1)
     264    {
     265      depth ++;
     266    }
     267#if HARMONIZE_GOP_FIRST_FIELD_COUPLE
     268  }
     269#endif
     270#endif
    246271  }
    247272 
     
    266291 
    267292  eSliceType=B_SLICE;
     293#if EFFICIENT_FIELD_IRAP
     294  if(!(isField && pocLast == 1))
     295  {
     296#endif // EFFICIENT_FIELD_IRAP
     297#if ALLOW_RECOVERY_POINT_AS_RAP
     298  if(m_pcCfg->getDecodingRefreshType() == 3)
     299  {
     300    eSliceType = (pocLast == 0 || pocCurr % m_pcCfg->getIntraPeriod() == 0             || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     301  }
     302  else
     303  {
     304    eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     305  }
     306#else
    268307  eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     308#endif
     309#if EFFICIENT_FIELD_IRAP
     310  }
     311#endif
     312#endif
    269313 
    270314  rpcSlice->setSliceType    ( eSliceType );
    271 #endif
    272315
    273316  // ------------------------------------------------------------------------------------------------------------------
     
    450493  }
    451494#else
    452 eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     495#if EFFICIENT_FIELD_IRAP
     496  if(!(isField && pocLast == 1))
     497  {
     498#endif // EFFICIENT_FIELD_IRAP
     499#if ALLOW_RECOVERY_POINT_AS_RAP
     500  if(m_pcCfg->getDecodingRefreshType() == 3)
     501  {
     502    eSliceType = (pocLast == 0 || (pocCurr)           % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     503
     504  }
     505  else
     506  {
     507  eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     508  }
     509#else
     510  eSliceType = (pocLast == 0 || (pocCurr - isField) % m_pcCfg->getIntraPeriod() == 0 || m_pcGOPEncoder->getGOPSize() == 0) ? I_SLICE : eSliceType;
     511#endif
     512#if EFFICIENT_FIELD_IRAP
     513  }
     514#endif // EFFICIENT_FIELD_IRAP
    453515#endif
    454516
     
    566628  // store lambda
    567629  slice->setSliceQp( sliceQP );
     630#if ADAPTIVE_QP_SELECTION
    568631  slice->setSliceQpBase ( sliceQP );
     632#endif
    569633  m_pcRdCost ->setLambda( lambda );
    570634  // for RDO
     
    11051169
    11061170        m_pcRateCtrl->setRCQP( estQP );
     1171#if ADAPTIVE_QP_SELECTION
    11071172        pcCU->getSlice()->setSliceQpBase( estQP );
     1173#endif
    11081174      }
    11091175
Note: See TracChangeset for help on using the changeset viewer.