Changeset 823 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibDecoder


Ignore:
Timestamp:
9 Jul 2014, 03:42:42 (11 years ago)
Author:
seregin
Message:

update to HM-15.0

Location:
branches/SHM-dev/source/Lib/TLibDecoder
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r815 r823  
    255255  if( pcPPS->getTilesEnabledFlag() )
    256256  {
    257     READ_UVLC ( uiCode, "num_tile_columns_minus1" );                pcPPS->setNumColumnsMinus1( uiCode );
    258     READ_UVLC ( uiCode, "num_tile_rows_minus1" );                   pcPPS->setNumRowsMinus1( uiCode );
    259     READ_FLAG ( uiCode, "uniform_spacing_flag" );                   pcPPS->setUniformSpacingFlag( uiCode );
    260 
    261     if( !pcPPS->getUniformSpacingFlag())
    262     {
    263       UInt* columnWidth = (UInt*)malloc(pcPPS->getNumColumnsMinus1()*sizeof(UInt));
    264       for(UInt i=0; i<pcPPS->getNumColumnsMinus1(); i++)
     257    READ_UVLC ( uiCode, "num_tile_columns_minus1" );                pcPPS->setNumTileColumnsMinus1( uiCode ); 
     258    READ_UVLC ( uiCode, "num_tile_rows_minus1" );                   pcPPS->setNumTileRowsMinus1( uiCode ); 
     259    READ_FLAG ( uiCode, "uniform_spacing_flag" );                   pcPPS->setTileUniformSpacingFlag( uiCode == 1 );
     260
     261    if( !pcPPS->getTileUniformSpacingFlag())
     262    {
     263      std::vector<Int> columnWidth(pcPPS->getNumTileColumnsMinus1());
     264      for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++)
    265265      {
    266266        READ_UVLC( uiCode, "column_width_minus1" );
    267267        columnWidth[i] = uiCode+1;
    268268      }
    269       pcPPS->setColumnWidth(columnWidth);
    270       free(columnWidth);
    271 
    272       UInt* rowHeight = (UInt*)malloc(pcPPS->getNumRowsMinus1()*sizeof(UInt));
    273       for(UInt i=0; i<pcPPS->getNumRowsMinus1(); i++)
     269      pcPPS->setTileColumnWidth(columnWidth);
     270
     271      std::vector<Int> rowHeight (pcPPS->getTileNumRowsMinus1());
     272      for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++)
    274273      {
    275274        READ_UVLC( uiCode, "row_height_minus1" );
    276275        rowHeight[i] = uiCode + 1;
    277276      }
    278       pcPPS->setRowHeight(rowHeight);
    279       free(rowHeight);
    280     }
    281 
    282     if(pcPPS->getNumColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)
     277      pcPPS->setTileRowHeight(rowHeight);
     278    }
     279
     280    if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0)
    283281    {
    284282      READ_FLAG ( uiCode, "loop_filter_across_tiles_enabled_flag" );   pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode ? true : false );
     
    10251023        READ_FLAG( uiCode, "cprms_present_flag[i]" );               pcVPS->setCprmsPresentFlag( uiCode == 1 ? true : false, i );
    10261024      }
     1025      else
     1026      {
     1027        pcVPS->setCprmsPresentFlag( true, i );
     1028      }
     1029
    10271030      parseHrdParameters(pcVPS->getHrdParameters(i), pcVPS->getCprmsPresentFlag( i ), pcVPS->getMaxTLayers() - 1);
    10281031    }
  • branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp

    r822 r823  
    854854  pps->setSPS(sps);
    855855#if REPN_FORMAT_IN_VPS
    856   pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumColumnsMinus1() + 1) : 1);
    857 #else
    858   pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumColumnsMinus1() + 1) : 1);
     856  pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1);
     857#else
     858  pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1);
    859859#endif
    860860  pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) );
     
    16511651  Bool bNextSlice     = pcSlice->isNextSlice();
    16521652
    1653   UInt uiCummulativeTileWidth;
    1654   UInt uiCummulativeTileHeight;
    1655   UInt i, j, p;
    1656 
    1657   //set NumColumnsMins1 and NumRowsMinus1
    1658   pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() );
    1659   pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() );
    1660 
    1661   //create the TComTileArray
    1662   pcPic->getPicSym()->xCreateTComTileArray();
    1663 
    1664   if( pcSlice->getPPS()->getUniformSpacingFlag() )
    1665   {
    1666     //set the width for each tile
    1667     for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++)
    1668     {
    1669       for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++)
    1670       {
    1671         pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->
    1672           setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1)
    1673           - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) );
    1674       }
    1675     }
    1676 
    1677     //set the height for each tile
    1678     for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++)
    1679     {
    1680       for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++)
    1681       {
    1682         pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->
    1683           setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1)
    1684           - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) );   
    1685       }
    1686     }
    1687   }
    1688   else
    1689   {
    1690     //set the width for each tile
    1691     for(j=0; j < pcSlice->getPPS()->getNumRowsMinus1()+1; j++)
    1692     {
    1693       uiCummulativeTileWidth = 0;
    1694       for(i=0; i < pcSlice->getPPS()->getNumColumnsMinus1(); i++)
    1695       {
    1696         pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcSlice->getPPS()->getColumnWidth(i) );
    1697         uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(i);
    1698       }
    1699       pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth );
    1700     }
    1701 
    1702     //set the height for each tile
    1703     for(j=0; j < pcSlice->getPPS()->getNumColumnsMinus1()+1; j++)
    1704     {
    1705       uiCummulativeTileHeight = 0;
    1706       for(i=0; i < pcSlice->getPPS()->getNumRowsMinus1(); i++)
    1707       {
    1708         pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcSlice->getPPS()->getRowHeight(i) );
    1709         uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(i);
    1710       }
    1711       pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight );
    1712     }
    1713   }
    1714 
    1715   pcPic->getPicSym()->xInitTiles();
     1653  UInt i;
     1654  pcPic->getPicSym()->initTiles(pcSlice->getPPS());
    17161655
    17171656  //generate the Coding Order Map and Inverse Coding Order Map
Note: See TracChangeset for help on using the changeset viewer.