Ignore:
Timestamp:
8 Mar 2013, 16:13:08 (12 years ago)
Author:
mediatek-htm
Message:

Added FCO_FIX, FCO_FIX_SPS_CHANGE, and FCO_DVP_REFINE_C0132_C0170 macros to support FCO.
The new macros are default disabled in CTC.

Location:
branches/HTM-6.0-Mediatek/source/Lib/TLibDecoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.0-Mediatek/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r296 r303  
    15011501      if( uiCode )
    15021502      {
     1503#if FCO_FIX_SPS_CHANGE
     1504        UInt  uiViewId, uiCamParPrecision;
     1505        Int   iVOI;
     1506        Bool  bCamParSlice;
     1507        READ_UVLC( uiCode, "view_id" );
     1508        READ_SVLC( iCode, "view_order_idx" );
     1509        uiViewId = uiCode;
     1510        iVOI = iCode;
     1511
     1512        if ( uiViewId == 0 )
     1513        {
     1514          pcSPS->initMultiviewSPSDepth    ( uiViewId, iVOI );
     1515        }
     1516        else
     1517        {
     1518          READ_UVLC( uiCamParPrecision, "camera_parameter_precision" );
     1519          READ_FLAG( uiCode, "camera_parameter_in_slice_header" );    bCamParSlice = ( uiCode == 1 );
     1520          if( !bCamParSlice )
     1521          {
     1522            for( UInt uiBaseId = 0; uiBaseId < uiViewId; uiBaseId++ )
     1523            {
     1524              READ_SVLC( iCode, "coded_scale" );   m_aaiTempScale [ uiBaseId ][ uiViewId ] = iCode;
     1525              READ_SVLC( iCode, "coded_offset" );   m_aaiTempOffset[ uiBaseId ][ uiViewId ] = iCode;
     1526              READ_SVLC( iCode, "inverse_coded_scale_plus_coded_scale" );   m_aaiTempScale [ uiViewId ][ uiBaseId ] = iCode - m_aaiTempScale [ uiBaseId ][ uiViewId ];
     1527              READ_SVLC( iCode, "inverse_coded_offset_plus_coded_offset" );   m_aaiTempOffset[ uiViewId ][ uiBaseId ] = iCode - m_aaiTempOffset[ uiBaseId ][ uiViewId ];
     1528            }
     1529          }
     1530          pcSPS->initMultiviewSPSDepth( uiViewId, iVOI, uiCamParPrecision, bCamParSlice, m_aaiTempScale, m_aaiTempOffset );
     1531
     1532        }
     1533#else
    15031534        READ_UVLC( uiCode, "view_id" );
    15041535        READ_SVLC(  iCode, "view_order_idx" );
    15051536        pcSPS->initMultiviewSPSDepth    ( uiCode, iCode );
     1537#endif
    15061538#if DEPTH_MAP_GENERATION
     1539#if FCO_FIX_SPS_CHANGE
     1540        pcSPS->setPredDepthMapGeneration( uiViewId, true );
     1541#else
    15071542        pcSPS->setPredDepthMapGeneration( uiCode, true );
     1543#endif
    15081544#endif
    15091545#if H3D_IVRP
  • branches/HTM-6.0-Mediatek/source/Lib/TLibDecoder/TDecTop.cpp

    r296 r303  
    193193
    194194  AOF( pcSlice->getSPS()->getViewId() < MAX_VIEW_NUM );
     195#if !FCO_FIX  // Under flexible coding order, depth may need the camera parameters
    195196  if ( pcSlice->getSPS()->isDepth  () )
    196197  {
    197198    return;
    198199  }
     200#endif
    199201  Bool  bFirstAU          = ( pcSlice->getPOC()               == 0 );
    200202  Bool  bFirstSliceInAU   = ( pcSlice->getPOC()               != Int ( m_iLastPOC ) );
    201203  Bool  bFirstSliceInView = ( pcSlice->getSPS()->getViewId()  != UInt( m_iLastViewId ) || bFirstSliceInAU );
    202204  AOT(  bFirstSliceInAU  &&   pcSlice->getSPS()->getViewId()  != 0 );
     205#if FCO_FIX
     206#else
    203207  AOT( !bFirstSliceInAU  &&   pcSlice->getSPS()->getViewId()   < UInt( m_iLastViewId ) );
     208#endif
    204209  AOT( !bFirstSliceInAU  &&   pcSlice->getSPS()->getViewId()   > UInt( m_iLastViewId + 1 ) );
    205210  AOT( !bFirstAU         &&   pcSlice->getSPS()->getViewId()   > m_uiMaxViewId );
     
    11711176  }
    11721177#endif
     1178
     1179#if FCO_DVP_REFINE_C0132_C0170
     1180  if(m_bFirstSliceInPicture)
     1181  {
     1182    pcPic->setDepthCoded(false);
     1183
     1184    if(m_viewId != 0)
     1185    {
     1186      if( m_isDepth == 0)
     1187      {
     1188        TComPic * recDepthMapBuffer;
     1189        recDepthMapBuffer = m_tAppDecTop->getPicFromView( m_viewId, pcSlice->getPOC(), true );
     1190        pcPic->setRecDepthMap(recDepthMapBuffer);
     1191
     1192        if(recDepthMapBuffer != NULL)
     1193        {
     1194          pcPic->setDepthCoded(true);
     1195        }
     1196      }
     1197    }
     1198  }
     1199#endif
     1200
    11731201
    11741202#if MERL_VSP_C0152 // set BW LUT
Note: See TracChangeset for help on using the changeset viewer.