Changeset 313 in 3DVCSoftware for trunk/source/App/TAppEncoder


Ignore:
Timestamp:
20 Mar 2013, 21:35:14 (12 years ago)
Author:
tech
Message:

Reintegrated branch 6.0-dev0 rev. 312.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/App/TAppEncoder/TAppEncTop.cpp

    r296 r313  
    429429      m_cVPS.setDependentLayer                                        ( layerId-1, layerId);
    430430#endif
     431#if FCO_FIX_SPS_CHANGE
     432      m_acTEncDepthTopList[iViewIdx]->setCamParPrecision              ( m_cCameraData.getCamParsCodedPrecision  () );
     433      m_acTEncDepthTopList[iViewIdx]->setCamParInSliceHeader          ( m_cCameraData.getVaryingCameraParameters() );
     434      m_acTEncDepthTopList[iViewIdx]->setCodedScale                   ( m_cCameraData.getCodedScale             () );
     435      m_acTEncDepthTopList[iViewIdx]->setCodedOffset                  ( m_cCameraData.getCodedOffset            () );
     436#else
    431437      m_acTEncDepthTopList[iViewIdx]->setCamParPrecision              ( 0 );
    432438      m_acTEncDepthTopList[iViewIdx]->setCamParInSliceHeader          ( false );
    433439      m_acTEncDepthTopList[iViewIdx]->setCodedScale                   ( 0 );
    434440      m_acTEncDepthTopList[iViewIdx]->setCodedOffset                  ( 0 );
     441#endif
    435442
    436443      //====== Coding Structure ========
     
    970977    {
    971978      Int  iNumEncoded = 0;
     979
    972980#if !QC_MVHEVC_B0046
    973981      UInt iNextPoc = m_acTEncTopList[0] -> getFrameId( gopId );
     
    977985      }
    978986#endif
     987
    979988
    980989#if FLEX_CODING_ORDER_M23723
     
    9941003            assert(isdigit(m_pchMVCJointCodingOrder[i]));
    9951004            iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     1005#if (FCO_FIX && MERL_VSP_C0152)
     1006            Int iCurPoc = m_acTEncTopList[iViewIdx]->getFrameId(gopId);
     1007            if( iCurPoc < m_acTEncTopList[iViewIdx]->getFrameToBeEncoded() && iViewIdx!=0 )
     1008            {
     1009              TComPic* pcBaseTxtPic   = getPicFromView(  0, m_acTEncTopList[iViewIdx]->getFrameId(gopId), false ); //get base view reconstructed texture
     1010              TComPic* pcBaseDepthPic = getPicFromView(  0, m_acTEncTopList[iViewIdx]->getFrameId(gopId), true );  //get base view reconstructed depth
     1011              TEncSlice* pEncSlice = m_acTEncTopList[iViewIdx]->getSliceEncoder();
     1012              pEncSlice->setRefPicBaseTxt(pcBaseTxtPic);
     1013              pEncSlice->setRefPicBaseDepth(pcBaseDepthPic);
     1014            }
     1015            setBWVSPLUT( iViewIdx, gopId, false);           
     1016#endif
    9961017
    9971018            m_acTEncTopList[iViewIdx]->encode( eos[iViewIdx], pcPicYuvOrg, *m_picYuvRec[iViewIdx], outputAccessUnits, iNumEncoded, gopId );
     
    10081029              assert(isdigit(m_pchMVCJointCodingOrder[i]));
    10091030              iViewIdx = (Int)(m_pchMVCJointCodingOrder[i]-'0');
     1031
    10101032#if SAIT_VSO_EST_A0033
    10111033              if( m_bUseVSO && iNextPoc < m_iFrameToBeEncoded )
     
    10151037              }
    10161038#endif
     1039#if (FCO_FIX && MERL_VSP_C0152)
     1040              Int iCurPocDepth = m_acTEncDepthTopList[iViewIdx]->getFrameId(gopId);
     1041              if( iCurPocDepth < m_acTEncDepthTopList[iViewIdx]->getFrameToBeEncoded() && iViewIdx!=0 )
     1042              {
     1043                TComPic* pcBaseDepthPic = getPicFromView(  0, m_acTEncDepthTopList[iViewIdx]->getFrameId(gopId), true );
     1044                TEncSlice* pcSlice = (TEncSlice*) m_acTEncDepthTopList[iViewIdx]->getSliceEncoder();
     1045                pcSlice->setRefPicBaseDepth(pcBaseDepthPic);
     1046              }
     1047              setBWVSPLUT( iViewIdx, gopId, true);
     1048#endif
    10171049              m_acTEncDepthTopList[iViewIdx]->encode( depthEos[iViewIdx], pcDepthPicYuvOrg, *m_picYuvDepthRec[iViewIdx], outputAccessUnits, iNumDepthEncoded, gopId );
    10181050              xWriteOutput(bitstreamFile, iNumDepthEncoded, outputAccessUnits, iViewIdx, true);
     
    10391071
    10401072#if MERL_VSP_C0152
     1073#if MERL_VSP_C0152_BugFix_ForNoDepthCase
     1074        if(m_bUsingDepthMaps) //VSP can be used only when depth is available as input
     1075        {
     1076#endif
    10411077        Int iCurPoc = m_acTEncDepthTopList[iViewIdx]->getFrameId(gopId);
    10421078        if( iCurPoc < m_acTEncDepthTopList[iViewIdx]->getFrameToBeEncoded() && iViewIdx!=0 )
     
    10491085        }
    10501086        setBWVSPLUT( iViewIdx, gopId, false);
     1087#if MERL_VSP_C0152_BugFix_ForNoDepthCase
     1088        }
     1089        else
     1090        {
     1091          Int iCurPoc = m_acTEncTopList[iViewIdx]->getFrameId(gopId);
     1092          if( iCurPoc < m_acTEncTopList[iViewIdx]->getFrameToBeEncoded() && iViewIdx!=0 )
     1093          {
     1094            TEncSlice* pEncSlice = m_acTEncTopList[iViewIdx]->getSliceEncoder();
     1095            pEncSlice->setRefPicBaseTxt(NULL);//Initialize the base view reconstructed texture buffer
     1096            pEncSlice->setRefPicBaseDepth(NULL);//Initialize the base view reconstructed depth buffer
     1097          }
     1098        }
     1099#endif
     1100
    10511101#endif
    10521102        // call encoding function for one frame
Note: See TracChangeset for help on using the changeset viewer.