Changeset 313 in 3DVCSoftware for trunk/source/Lib/TLibEncoder


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

Reintegrated branch 6.0-dev0 rev. 312.

Location:
trunk/source/Lib/TLibEncoder
Files:
4 edited

Legend:

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

    r296 r313  
    663663      WRITE_UVLC( pcSPS->getViewId(), "view_id" );
    664664      WRITE_SVLC( pcSPS->getViewOrderIdx(), "view_order_idx" );
     665#if FCO_FIX_SPS_CHANGE
     666      if ( pcSPS->getViewId() )
     667      {
     668        WRITE_UVLC( pcSPS->getCamParPrecision(), "camera_parameter_precision" );
     669        WRITE_FLAG( pcSPS->hasCamParInSliceHeader() ? 1 : 0, "camera_parameter_in_slice_header" );
     670        if( !pcSPS->hasCamParInSliceHeader() )
     671        {
     672          for( UInt uiId = 0; uiId < pcSPS->getViewId(); uiId++ )
     673          {
     674            WRITE_SVLC( pcSPS->getCodedScale    ()[ uiId ], "coded_scale" );
     675            WRITE_SVLC( pcSPS->getCodedOffset   ()[ uiId ], "coded_offset" );
     676            WRITE_SVLC( pcSPS->getInvCodedScale ()[ uiId ] + pcSPS->getCodedScale ()[ uiId ], "inverse_coded_scale_plus_coded_scale" );
     677            WRITE_SVLC( pcSPS->getInvCodedOffset()[ uiId ] + pcSPS->getCodedOffset()[ uiId ], "inverse_coded_offset_plus_coded_offset" );
     678          }
     679        }     
     680      }
     681#endif
    665682    }
    666683    else
     
    10991116    }
    11001117#endif
    1101  
     1118
     1119#if FIX_LGE_WP_FOR_3D_C0223
     1120    if ( (pcSlice->getPPS()->getUseWP() && pcSlice->getSliceType()==P_SLICE) || (pcSlice->getPPS()->getWPBiPredIdc() && pcSlice->getSliceType()==B_SLICE) )
     1121#else
    11021122    if ( (pcSlice->getPPS()->getUseWP() && pcSlice->getSliceType()==P_SLICE) || (pcSlice->getPPS()->getWPBiPredIdc()==1 && pcSlice->getSliceType()==B_SLICE) )
     1123#endif   
    11031124    {
    11041125      xCodePredWeightTable( pcSlice );
  • trunk/source/Lib/TLibEncoder/TEncGOP.cpp

    r296 r313  
    726726      m_uiStoredStartCUAddrForEncodingEntropySlice[uiStartCUAddrEntropySliceIdx++]  = uiNextCUAddr;
    727727
     728#if FCO_DVP_REFINE_C0132_C0170
     729      pcPic->setDepthCoded(false);
     730
     731      if(pcSlice->getViewId() != 0)
     732      {
     733        if(pcSlice->getSPS()->isDepth() == 0 )
     734        {
     735          TComPic * recDepthMapBuffer;
     736          recDepthMapBuffer = m_pcEncTop->getEncTop()->getPicFromView( pcSlice->getViewId(), pcSlice->getPOC(), true );
     737          pcSlice->getPic()->setRecDepthMap(recDepthMapBuffer);
     738          if(recDepthMapBuffer->getReconMark())
     739          {
     740            pcPic->setDepthCoded(true);
     741          }
     742        }
     743      }
     744#endif
     745
    728746#if DEPTH_MAP_GENERATION
    729747      // init view component and predict virtual depth map
  • trunk/source/Lib/TLibEncoder/TEncSlice.cpp

    r296 r313  
    6060  m_pcBufferLowLatSbacCoders    = NULL;
    6161  m_pcBufferLowLatBinCoderCABACs  = NULL;
     62#if FCO_DVP_REFINE_C0132_C0170
     63  m_pPicBaseTxt = NULL;
     64  m_pPicBaseDepth = NULL;
     65#endif
    6266}
    6367
     
    673677    xCalcACDCParamSlice(pcSlice);
    674678  }
    675 
    676   Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==1);
    677   Bool bWp_implicit = (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==2);
    678 
    679   if ( bWp_explicit || bWp_implicit )
     679#if FIX_LGE_WP_FOR_3D_C0223
     680  Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc());
     681
     682  if ( bWp_explicit )
    680683  {
    681684    //------------------------------------------------------------------------------
     
    686689      printf("Weighted Prediction is not supported with slice mode determined by max number of bins.\n"); exit(0);
    687690    }
     691    xEstimateWPParamSlice( pcSlice );
     692    pcSlice->initWpScaling();
     693#if !FIX_LGE_WP_FOR_3D_C0223 // Interim fix for encoder/decoder mismatch of non-fade sequence
     694    // check WP on/off
     695    xCheckWPEnable( pcSlice );
     696#endif
     697  }
     698#else
     699
     700  Bool bWp_explicit = (pcSlice->getSliceType()==P_SLICE && pcSlice->getPPS()->getUseWP()) || (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==1);
     701  Bool bWp_implicit = (pcSlice->getSliceType()==B_SLICE && pcSlice->getPPS()->getWPBiPredIdc()==2);
     702
     703  if ( bWp_explicit || bWp_implicit )
     704  {
     705    //------------------------------------------------------------------------------
     706    //  Weighted Prediction implemented at Slice level. SliceMode=2 is not supported yet.
     707    //------------------------------------------------------------------------------
     708    if ( pcSlice->getSliceMode()==2 || pcSlice->getEntropySliceMode()==2 )
     709    {
     710      printf("Weighted Prediction is not supported with slice mode determined by max number of bins.\n"); exit(0);
     711    }
    688712
    689713    if( bWp_explicit )
     
    700724    }
    701725  }
    702 
     726#endif
    703727#if ADAPTIVE_QP_SELECTION
    704728  if( m_pcCfg->getUseAdaptQpSelect() )
  • trunk/source/Lib/TLibEncoder/TEncTop.cpp

    r296 r313  
    712712  if( m_isDepth )
    713713  {
     714#if FCO_FIX_SPS_CHANGE
     715    m_cSPS.initMultiviewSPSDepth    ( m_viewId, m_iViewOrderIdx, m_uiCamParPrecision, m_bCamParInSliceHeader, m_aaiCodedScale, m_aaiCodedOffset );
     716#else
    714717    m_cSPS.initMultiviewSPSDepth    ( m_viewId, m_iViewOrderIdx );
     718#endif
     719
    715720#if DEPTH_MAP_GENERATION
    716721    m_cSPS.setPredDepthMapGeneration( m_viewId, true );
Note: See TracChangeset for help on using the changeset viewer.