Changeset 210 in 3DVCSoftware for trunk/source/Lib/TLibEncoder/TEncGOP.cpp


Ignore:
Timestamp:
11 Dec 2012, 18:52:43 (12 years ago)
Author:
tech
Message:

Reintegrated /branches/HTM-5.0-dev0 rev. 207.

File:
1 edited

Legend:

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

    r189 r210  
    246246
    247247      std::vector<TComAPS>& vAPS = m_pcEncTop->getAPS();
    248 #if VIDYO_VPS_INTEGRATION
     248#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    249249    m_pcSliceEncoder->initEncSlice ( pcPic, iPOCLast, uiPOCCurr, iNumPicRcvd, iGOPid, pcSlice, m_pcEncTop->getEncTop()->getVPS(), m_pcEncTop->getSPS(), m_pcEncTop->getPPS() );
    250250#else
     
    298298      if( pcSlice->getSliceType() == B_SLICE )
    299299      {
    300         if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); }
    301       }
     300#if QC_REM_IDV_B0046
     301      if( m_pcCfg->getGOPEntry(pcSlice->getSPS()->getViewId() && ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA))? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); }
     302#else
     303      if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); }
     304#endif
     305    }
    302306
    303307      // Set the nal unit type
     
    332336#endif
    333337
     338#if !QC_REM_IDV_B0046
    334339      pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) );
    335340      pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) );
    336 
    337       TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification();
    338       refPicListModification->setRefPicListModificationFlagL0( false );
     341#else
     342
     343    Bool bNalRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId())  ? 1: 0;
     344    pcSlice->setNumRefIdx( REF_PIC_LIST_0, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) );
     345    pcSlice->setNumRefIdx( REF_PIC_LIST_1, min( m_pcCfg->getGOPEntry( bNalRAP ? MAX_GOP : iGOPid ).m_numRefPicsActive, (pcSlice->getRPS()->getNumberOfPictures() + pcSlice->getSPS()->getNumberOfUsableInterViewRefs()) ) );
     346#endif
     347    TComRefPicListModification* refPicListModification = pcSlice->getRefPicListModification();
     348    refPicListModification->setRefPicListModificationFlagL0( false );
    339349#if !H0137_0138_LIST_MODIFICATION
    340350      refPicListModification->setNumberOfRefPicListModificationsL0(0);
     
    353363      assert( tAppEncTop != NULL );
    354364
     365
     366#if FLEX_CODING_ORDER_M23723
     367      TComPic * pcTexturePic;
     368      if(m_pcEncTop->getIsDepth() == 1)
     369      {
     370        TComPicYuv * recText;
     371        recText = tAppEncTop->getPicYuvFromView(m_pcEncTop->getViewId(), pcSlice->getPOC(), false ,true);
     372        if(recText == NULL)
     373        {
     374           pcSlice->setTexturePic(NULL);
     375        }
     376        else
     377        {
     378           pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL;
     379           pcSlice->setTexturePic( pcTexturePic );
     380        }
     381      }
     382      else
     383    {
     384        pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL;
     385        assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL );
     386          pcSlice->setTexturePic( pcTexturePic );
     387      }
     388
     389#else
    355390      TComPic * const pcTexturePic = m_pcEncTop->getIsDepth() ? tAppEncTop->getPicFromView( m_pcEncTop->getViewId(), pcSlice->getPOC(), false ) : NULL;
    356391      assert( !m_pcEncTop->getIsDepth() || pcTexturePic != NULL );
    357392      pcSlice->setTexturePic( pcTexturePic );
    358393
     394#endif
    359395      std::vector<TComPic*> apcInterViewRefPics = tAppEncTop->getInterViewRefPics( m_pcEncTop->getViewId(), pcSlice->getPOC(), m_pcEncTop->getIsDepth(), pcSlice->getSPS() );
    360396      pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics );
     
    363399      if( pcSlice->getSliceType() == B_SLICE )
    364400      {
     401#if !QC_REM_IDV_B0046
    365402        if( m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); }
     403#else
     404      Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR)) && (pcSlice->getSPS()->getViewId())  ? 1: 0;
     405      if( m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid ).m_sliceType == 'P' ) { pcSlice->setSliceType( P_SLICE ); }
     406#endif
    366407      }
    367408     
     
    451492
    452493#if SAIT_VSO_EST_A0033
    453     m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) );
    454     m_pcRdCost->setDepthPicYuv   ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) );
     494#ifdef FLEX_CODING_ORDER_M23723   
     495{
     496  Bool flagRec;
     497  flagRec =  ((m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true) == NULL) ? false: true);
     498  m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, flagRec ) );
     499  m_pcRdCost->setDepthPicYuv   ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) );
     500}
     501#else
     502  m_pcRdCost->setVideoRecPicYuv( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), false, true ) );
     503  m_pcRdCost->setDepthPicYuv   ( m_pcEncTop->getEncTop()->getPicYuvFromView( pcSlice->getViewId(), pcSlice->getPOC(), true, false ) );
     504#endif
    455505#endif
    456506#if LGE_WVSO_A0119
     
    830880      if ( m_bSeqFirst )
    831881      {
    832 #if VIDYO_VPS_INTEGRATION
     882#if QC_MVHEVC_B0046
     883      if(!m_pcEncTop->getLayerId())
     884      {
     885#endif
     886#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    833887        {
    834888          OutputNALUnit nalu(NAL_UNIT_VPS, true, m_pcEncTop->getLayerId());
     
    840894#endif
    841895#if NAL_REF_FLAG
    842 #if VIDYO_VPS_INTEGRATION
     896#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
    843897        OutputNALUnit nalu(NAL_UNIT_SPS, true, m_pcEncTop->getLayerId());
    844898#else
     
    861915
    862916#if NAL_REF_FLAG
    863 #if VIDYO_VPS_INTEGRATION
     917#if VIDYO_VPS_INTEGRATION|QC_MVHEVC_B0046
     918#if QC_MVHEVC_B0046
    864919        nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId());
     920#else
     921        nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getLayerId());
     922#endif
    865923#else
    866924        nalu = NALUnit(NAL_UNIT_PPS, true, m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth());
     
    873931        writeRBSPTrailingBits(nalu.m_Bitstream);
    874932        accessUnit.push_back(new NALUnitEBSP(nalu));
    875 
    876         m_bSeqFirst = false;
    877       }
     933#if QC_MVHEVC_B0046
     934      }
     935#endif
     936      m_bSeqFirst = false;
     937    }
    878938
    879939      /* use the main bitstream buffer for storing the marshalled picture */
     
    9931053#if NAL_REF_FLAG
    9941054        OutputNALUnit nalu( pcSlice->getNalUnitType(), pcSlice->isReferenced(),
    995 #if !VIDYO_VPS_INTEGRATION
     1055#if !VIDYO_VPS_INTEGRATION &!QC_MVHEVC_B0046
    9961056                           m_pcEncTop->getViewId(), m_pcEncTop->getIsDepth(), pcSlice->getTLayer() );
    9971057#else
     
    14691529          {
    14701530#if NAL_REF_FLAG
    1471 #if VIDYO_VPS_INTEGRATION
     1531#if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046
    14721532            OutputNALUnit nalu(NAL_UNIT_APS, true, m_pcEncTop->getLayerId());
    14731533#else
     
    15351595
    15361596#if NAL_REF_FLAG
    1537 #if VIDYO_VPS_INTEGRATION
     1597#if VIDYO_VPS_INTEGRATION | QC_MVHEVC_B0046
    15381598        OutputNALUnit nalu(NAL_UNIT_SEI, false, m_pcEncTop->getLayerId());
    15391599#else
     
    19732033  case NAL_UNIT_CODED_SLICE: return "SLICE";
    19742034#if H0566_TLA
     2035#if !QC_REM_IDV_B0046
    19752036  case NAL_UNIT_CODED_SLICE_IDV: return "IDV";
     2037#endif
    19762038  case NAL_UNIT_CODED_SLICE_CRA: return "CRA";
    19772039  case NAL_UNIT_CODED_SLICE_TLA: return "TLA";
     
    21882250    if( bInterViewOnlySlice )
    21892251    {
     2252#if !QC_REM_IDV_B0046
    21902253      return NAL_UNIT_CODED_SLICE_IDV;
     2254#else
     2255      return NAL_UNIT_CODED_SLICE_IDR;
     2256#endif
    21912257    }
    21922258    else
     
    22012267      if( bInterViewOnlySlice )
    22022268      {
     2269#if !QC_REM_IDV_B0046
    22032270        return NAL_UNIT_CODED_SLICE_IDV;
     2271#else
     2272        return NAL_UNIT_CODED_SLICE_CRA;
     2273#endif
    22042274      }
    22052275      else
     
    22162286      if( bInterViewOnlySlice )
    22172287      {
     2288#if !QC_REM_IDV_B0046
    22182289        return NAL_UNIT_CODED_SLICE_IDV;
     2290#else
     2291        return NAL_UNIT_CODED_SLICE_IDR;
     2292#endif
    22192293      }
    22202294      else
     
    24542528
    24552529  // analyze inter-view modifications
     2530#if !QC_REM_IDV_B0046
    24562531  GOPEntryMvc gem = m_pcCfg->getGOPEntry( (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDV) ? MAX_GOP : iGOPid );
     2532#else
     2533  Bool bRAP = ((getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_IDR) || (getNalUnitType(uiPOCCurr) == NAL_UNIT_CODED_SLICE_CRA)) && (pcSlice->getSPS()->getViewId()) ? 1:0;
     2534  GOPEntryMvc gem = m_pcCfg->getGOPEntry( bRAP ? MAX_GOP : iGOPid );
     2535#endif
    24572536  Int numL0Modifications = 0;
    24582537  Int numL1Modifications = 0;
Note: See TracChangeset for help on using the changeset viewer.