Ignore:
Timestamp:
19 Nov 2012, 21:15:40 (12 years ago)
Author:
mitsubishi-htm
Message:

A second release, as planned

  • Migrate to HTM 4.1
  • Move VSP related switches to cfg file instead of #define in the source code
  • A few bug fixes
  • For VC project files, only VC9 file is updated

TODO

  • Migrate to HTM 5.0, to be used as anchor for CE1 toward Geneva meeting
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-4.0.1-VSP-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r166 r193  
    17571757      }
    17581758    }
     1759#if VSP_N
     1760    if( pcSPS->getViewId() )
     1761    {
     1762      READ_FLAG( uiCode, "vsp_present_flag" );
     1763      pcSPS->setVspPresentFlag( (Bool)uiCode );
     1764#if VSP_CFG
     1765      if( pcSPS->getVspPresentFlag() )
     1766      {
     1767        READ_FLAG( uiCode, "vsp_depth_present_flag" );
     1768        pcSPS->setVspDepthPresentFlag( (Bool)uiCode );
     1769      }
     1770#endif
     1771    }
     1772#endif
    17591773    READ_FLAG( uiCode, "sps_extension2_flag");
    17601774    if (uiCode)
     
    17811795  UInt  uiCode;
    17821796  Int   iCode;
    1783  
     1797#if VSP_CFG
     1798  Int   iNumOfVspRefsL0 = 0;
     1799  Int   iNumOfVspRefsL1 = 0;
     1800#endif
    17841801#if ENC_DEC_TRACE
    17851802  xTraceSliceHeader(rpcSlice);
     
    20062023      READ_UVLC (    uiCode, "aps_id" );  rpcSlice->setAPSId(uiCode);
    20072024    }
     2025
     2026#if VSP_SLICE_HEADER && VSP_CFG
     2027    if( rpcSlice->getSPS()->getViewId()!=0
     2028     && rpcSlice->getSliceType() != I_SLICE
     2029     && rpcSlice->getSPS()->getVspPresentFlag()
     2030      )
     2031    {
     2032      if( !rpcSlice->getSPS()->isDepth() || rpcSlice->getSPS()->getVspDepthPresentFlag() )
     2033      {
     2034        READ_UVLC( uiCode, "num_vsp_ref_pics");
     2035        rpcSlice->setVspFlag( uiCode > 0 ? true : false );
     2036        rpcSlice->setNumVspRefPics( uiCode );
     2037        //printf("SH:num_vsp_ref_pics(%d)\n",uiCode);
     2038        for( UInt i = 0; i < rpcSlice->getNumVspRefPics(); i++ )
     2039        {
     2040          READ_UVLC( uiCode, "vsp_ref_list0_pos");
     2041          rpcSlice->setVspRefPos( REF_PIC_LIST_0, i, uiCode );
     2042          //printf("SH:vsp_ref_list0_pos(%d)\n",uiCode);
     2043          if( rpcSlice->getSliceType() == B_SLICE )
     2044          {
     2045            READ_UVLC( uiCode, "vsp_ref_list1_pos");
     2046            rpcSlice->setVspRefPos( REF_PIC_LIST_1, i, uiCode );
     2047            //printf("SH:vsp_ref_list1_pos(%d)\n",uiCode);
     2048          }
     2049        }
     2050        iNumOfVspRefsL0 = ( (rpcSlice->getSPS()->getViewId()==0
     2051                         || (!rpcSlice->getSPS()->getVspDepthPresentFlag() && rpcSlice->getSPS()->isDepth())
     2052                         || !rpcSlice->getVspFlag()
     2053                         || rpcSlice->getVspRefPos(REF_PIC_LIST_0, 0) == 0 ) ? 0 : 1 );
     2054        iNumOfVspRefsL1 = ( (rpcSlice->getSPS()->getViewId()==0
     2055                         || (!rpcSlice->getSPS()->getVspDepthPresentFlag() && rpcSlice->getSPS()->isDepth())
     2056                         || !rpcSlice->getVspFlag()
     2057                         || rpcSlice->getVspRefPos(REF_PIC_LIST_1, 0) == 0 ) ? 0 : 1 );
     2058      }
     2059    }
     2060#endif
     2061
    20082062    if (!rpcSlice->isIntra())
    20092063    {
     
    20112065      if (uiCode)
    20122066      {
    2013         READ_CODE (3, uiCode, "num_ref_idx_l0_active_minus1" );  rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 );
     2067        READ_CODE (3, uiCode, "num_ref_idx_l0_active_minus1" ); 
     2068#if VSP_CFG
     2069        rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 + iNumOfVspRefsL0 );
     2070#else
     2071        rpcSlice->setNumRefIdx( REF_PIC_LIST_0, uiCode + 1 );
     2072#endif
    20142073        if (rpcSlice->isInterB())
    20152074        {
    2016           READ_CODE (3, uiCode, "num_ref_idx_l1_active_minus1" );  rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 );
     2075          READ_CODE (3, uiCode, "num_ref_idx_l1_active_minus1" ); 
     2076#if VSP_CFG
     2077          rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 + iNumOfVspRefsL1 );
     2078#else
     2079          rpcSlice->setNumRefIdx( REF_PIC_LIST_1, uiCode + 1 );
     2080#endif
    20172081        }
    20182082        else
     
    21832247    if(uiCode)
    21842248    {
    2185       READ_UVLC( uiCode, "num_ref_idx_lc_active_minus1" );      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 );
     2249      READ_UVLC( uiCode, "num_ref_idx_lc_active_minus1" );     
     2250#if VSP_CFG
     2251      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 + iNumOfVspRefsL0 );
     2252#else
     2253      rpcSlice->setNumRefIdx( REF_PIC_LIST_C, uiCode + 1 );
     2254#endif
    21862255     
    21872256#if H0412_REF_PIC_LIST_RESTRICTION
     
    23482417#endif
    23492418
     2419#if !VSP_CFG
    23502420#if VSP_SLICE_HEADER
    23512421  if( rpcSlice->getSPS()->getViewId()!=0
    2352 #if VSP_TEXT_ONLY
    2353       && !(rpcSlice->getSPS()->isDepth())
    2354 #endif
     2422   && rpcSlice->getSPS()->getVspPresentFlag()
    23552423    )
    23562424  {
    23572425    READ_FLAG( uiCode, "vsp_flag" );
    23582426    rpcSlice->setVspFlag( uiCode ? true : false );
    2359   }
     2427    if( rpcSlice->getVspFlag() )
     2428    {
     2429      READ_FLAG( uiCode, "vsp_depth_disable_flag" );
     2430      rpcSlice->setVspDepthDisableFlag( uiCode ? true : false );
     2431    }
     2432  }
     2433#endif
    23602434#endif
    23612435
Note: See TracChangeset for help on using the changeset viewer.