Changeset 1081 in 3DVCSoftware for branches/HTM-12.1-dev0/source/Lib


Ignore:
Timestamp:
22 Oct 2014, 01:32:55 (10 years ago)
Author:
tech
Message:

Update to HTM-15.0

Location:
branches/HTM-12.1-dev0/source/Lib
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/CommonDef.h

    r1067 r1081  
    6161#if H_MV
    6262#define NV_VERSION        "12.1"                ///< Current software version
    63 #define HM_VERSION        "14.0"                ///<
     63#define HM_VERSION        "15.0"                ///<
    6464#else
    6565#define NV_VERSION        "14.0"                 ///< Current software version
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/SEI.h

    r964 r1081  
    161161  UInt m_bpSeqParameterSetId;
    162162  Bool m_rapCpbParamsPresentFlag;
    163   Bool m_cpbDelayOffset;
    164   Bool m_dpbDelayOffset;
     163  UInt m_cpbDelayOffset;
     164  UInt m_dpbDelayOffset;
    165165  UInt m_initialCpbRemovalDelay         [MAX_CPB_CNT][2];
    166166  UInt m_initialCpbRemovalDelayOffset   [MAX_CPB_CNT][2];
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComPicSym.cpp

    r872 r1081  
    3838#include "TComPicSym.h"
    3939#include "TComSampleAdaptiveOffset.h"
     40#include "TComSlice.h"
    4041
    4142//! \ingroup TLibCommon
     
    6364,m_iNumColumnsMinus1 (0)
    6465,m_iNumRowsMinus1(0)
    65 ,m_apcTComTile(NULL)
    6666,m_puiCUOrderMap(0)
    6767,m_puiTileIdxMap(NULL)
     
    101101    delete [] m_apcTComSlice;
    102102  }
    103   m_apcTComSlice      = new TComSlice*[m_uiNumCUsInFrame*m_uiNumPartitions]; 
     103  m_apcTComSlice      = new TComSlice*[m_uiNumCUsInFrame];
    104104  m_apcTComSlice[0]   = new TComSlice;
    105105  m_uiNumAllocatedSlice = 1;
     
    148148  m_apcTComDataCU = NULL;
    149149
    150   for(Int i = 0; i < (m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ )
    151   {
    152     delete m_apcTComTile[i];
    153   }
    154   delete [] m_apcTComTile;
    155 
    156   m_apcTComTile = NULL;
    157 
    158150  delete [] m_puiCUOrderMap;
    159151  m_puiCUOrderMap = NULL;
     
    173165Void TComPicSym::allocateNewSlice()
    174166{
     167  assert ((m_uiNumAllocatedSlice + 1) <= m_uiNumCUsInFrame);
    175168  m_apcTComSlice[m_uiNumAllocatedSlice ++] = new TComSlice;
    176169  if (m_uiNumAllocatedSlice>=2)
     
    201194}
    202195
    203 Void TComPicSym::xCreateTComTileArray()
    204 {
    205   m_apcTComTile = new TComTile*[(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1)];
    206   for( UInt i=0; i<(m_iNumColumnsMinus1+1)*(m_iNumRowsMinus1+1); i++ )
    207   {
    208     m_apcTComTile[i] = new TComTile;
    209   }
    210 }
    211 
    212 Void TComPicSym::xInitTiles()
    213 {
    214   UInt  uiTileIdx;
    215   UInt  uiColumnIdx = 0;
    216   UInt  uiRowIdx = 0;
    217   UInt  uiRightEdgePosInCU;
    218   UInt  uiBottomEdgePosInCU;
    219   Int   i, j;
     196Void TComPicSym::initTiles(TComPPS *pps)
     197{
     198  //set NumColumnsMinus1 and NumRowsMinus1
     199  setNumColumnsMinus1( pps->getNumTileColumnsMinus1() );
     200  setNumRowsMinus1( pps->getTileNumRowsMinus1() );
     201
     202  const Int numCols = pps->getNumTileColumnsMinus1() + 1;
     203  const Int numRows = pps->getTileNumRowsMinus1() + 1;
     204  const Int numTiles = numRows * numCols;
     205
     206  // allocate memory for tile parameters
     207  m_tileParameters.resize(numTiles);
     208
     209  if( pps->getTileUniformSpacingFlag() )
     210  {
     211    //set width and height for each (uniform) tile
     212    for(Int row=0; row < numRows; row++)
     213    {
     214      for(Int col=0; col < numCols; col++)
     215      {
     216        const Int tileIdx = row * numCols + col;
     217        m_tileParameters[tileIdx].setTileWidth( (col+1)*getFrameWidthInCU()/numCols
     218                                              - (col*getFrameWidthInCU())/numCols );
     219        m_tileParameters[tileIdx].setTileHeight( (row+1)*getFrameHeightInCU()/numRows
     220                                               - (row*getFrameHeightInCU())/numRows );
     221      }
     222    }
     223  }
     224  else
     225  {
     226    //set the width for each tile
     227    for(Int row=0; row < numRows; row++)
     228    {
     229      Int cumulativeTileWidth = 0;
     230      for(Int col=0; col < getNumColumnsMinus1(); col++)
     231  {
     232  }
     233      m_tileParameters[row * numCols + getNumColumnsMinus1()].setTileWidth( getFrameWidthInCU()-cumulativeTileWidth );
     234}
     235
     236    //set the height for each tile
     237    for(Int col=0; col < numCols; col++)
     238{
     239      Int cumulativeTileHeight = 0;
     240      for(Int row=0; row < getNumRowsMinus1(); row++)
     241      {
     242        m_tileParameters[row * numCols + col].setTileHeight( pps->getTileRowHeight(row) );
     243        cumulativeTileHeight += pps->getTileRowHeight(row);
     244      }
     245      m_tileParameters[getNumRowsMinus1() * numCols + col].setTileHeight( getFrameHeightInCU()-cumulativeTileHeight );
     246    }
     247  }
     248
     249#if TILE_SIZE_CHECK
     250  Int minWidth  = 1;
     251  Int minHeight = 1;
     252  const Int profileIdc = pps->getSPS()->getPTL()->getGeneralPTL()->getProfileIdc();
     253  if (  profileIdc == Profile::MAIN || profileIdc == Profile::MAIN10)
     254  {
     255    if (pps->getTilesEnabledFlag())
     256    {
     257      minHeight = 64  / g_uiMaxCUHeight;
     258      minWidth  = 256 / g_uiMaxCUWidth;
     259    }
     260  }
     261  for(Int row=0; row < numRows; row++)
     262  {
     263    for(Int col=0; col < numCols; col++)
     264    {
     265      const Int tileIdx = row * numCols + col;
     266      assert (m_tileParameters[tileIdx].getTileWidth() >= minWidth);
     267      assert (m_tileParameters[tileIdx].getTileHeight() >= minHeight);
     268    }
     269  }
     270#endif
    220271
    221272  //initialize each tile of the current picture
    222   for( uiRowIdx=0; uiRowIdx < m_iNumRowsMinus1+1; uiRowIdx++ )
    223   {
    224     for( uiColumnIdx=0; uiColumnIdx < m_iNumColumnsMinus1+1; uiColumnIdx++ )
    225     {
    226       uiTileIdx = uiRowIdx * (m_iNumColumnsMinus1+1) + uiColumnIdx;
     273  for( Int row=0; row < numRows; row++ )
     274  {
     275    for( Int col=0; col < numCols; col++ )
     276    {
     277      const Int tileIdx = row * numCols + col;
    227278
    228279      //initialize the RightEdgePosInCU for each tile
    229       uiRightEdgePosInCU = 0;
    230       for( i=0; i <= uiColumnIdx; i++ )
    231       {
    232         uiRightEdgePosInCU += this->getTComTile(uiRowIdx * (m_iNumColumnsMinus1+1) + i)->getTileWidth();
    233       }
    234       this->getTComTile(uiTileIdx)->setRightEdgePosInCU(uiRightEdgePosInCU-1);
     280      Int rightEdgePosInCTU = 0;
     281      for( Int i=0; i <= col; i++ )
     282      {
     283        rightEdgePosInCTU += m_tileParameters[row * numCols + i].getTileWidth();
     284      }
     285      m_tileParameters[tileIdx].setRightEdgePosInCU(rightEdgePosInCTU-1);
    235286
    236287      //initialize the BottomEdgePosInCU for each tile
    237       uiBottomEdgePosInCU = 0;
    238       for( i=0; i <= uiRowIdx; i++ )
    239       {
    240         uiBottomEdgePosInCU += this->getTComTile(i * (m_iNumColumnsMinus1+1) + uiColumnIdx)->getTileHeight();
    241       }
    242       this->getTComTile(uiTileIdx)->setBottomEdgePosInCU(uiBottomEdgePosInCU-1);
     288      Int bottomEdgePosInCTU = 0;
     289      for( Int i=0; i <= row; i++ )
     290      {
     291        bottomEdgePosInCTU += m_tileParameters[i * numCols + col].getTileHeight();
     292      }
     293      m_tileParameters[tileIdx].setBottomEdgePosInCU(bottomEdgePosInCTU-1);
    243294
    244295      //initialize the FirstCUAddr for each tile
    245       this->getTComTile(uiTileIdx)->setFirstCUAddr( (this->getTComTile(uiTileIdx)->getBottomEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileHeight() +1)*m_uiWidthInCU +
    246         this->getTComTile(uiTileIdx)->getRightEdgePosInCU() - this->getTComTile(uiTileIdx)->getTileWidth() + 1);
    247     }
    248   }
     296      m_tileParameters[tileIdx].setFirstCUAddr( (m_tileParameters[tileIdx].getBottomEdgePosInCU() - m_tileParameters[tileIdx].getTileHeight() + 1) * getFrameWidthInCU() +
     297                                                 m_tileParameters[tileIdx].getRightEdgePosInCU() - m_tileParameters[tileIdx].getTileWidth() + 1);
     298    }
     299  }
     300
     301  Int  columnIdx = 0;
     302  Int  rowIdx = 0;
    249303
    250304  //initialize the TileIdxMap
    251   for( i=0; i<m_uiNumCUsInFrame; i++)
    252   {
    253     for(j=0; j < m_iNumColumnsMinus1+1; j++)
    254     {
    255       if(i % m_uiWidthInCU <= this->getTComTile(j)->getRightEdgePosInCU())
    256       {
    257         uiColumnIdx = j;
    258         j = m_iNumColumnsMinus1+1;
    259       }
    260     }
    261     for(j=0; j < m_iNumRowsMinus1+1; j++)
    262     {
    263       if(i/m_uiWidthInCU <= this->getTComTile(j*(m_iNumColumnsMinus1 + 1))->getBottomEdgePosInCU())
    264       {
    265         uiRowIdx = j;
    266         j = m_iNumRowsMinus1 + 1;
    267       }
    268     }
    269     m_puiTileIdxMap[i] = uiRowIdx * (m_iNumColumnsMinus1 + 1) + uiColumnIdx;
     305  for( Int i=0; i<m_uiNumCUsInFrame; i++)
     306  {
     307    for( Int col=0; col < numCols; col++)
     308    {
     309      if(i % getFrameWidthInCU() <= m_tileParameters[col].getRightEdgePosInCU())
     310      {
     311        columnIdx = col;
     312        break;
     313      }
     314    }
     315    for(Int row=0; row < numRows; row++)
     316    {
     317      if(i / getFrameWidthInCU() <= m_tileParameters[row*numCols].getBottomEdgePosInCU())
     318      {
     319        rowIdx = row;
     320        break;
     321      }
     322    }
     323    m_puiTileIdxMap[i] = rowIdx * numCols + columnIdx;
    270324  }
    271325
     
    417471
    418472TComTile::TComTile()
     473: m_uiTileWidth         (0)
     474, m_uiTileHeight        (0)
     475, m_uiRightEdgePosInCU  (0)
     476, m_uiBottomEdgePosInCU (0)
     477, m_uiFirstCUAddr       (0)
     478
    419479{
    420480}
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComPicSym.h

    r872 r1081  
    4545#include "TComDataCU.h"
    4646class TComSampleAdaptiveOffset;
     47class TComPPS;
    4748
    4849//! \ingroup TLibCommon
     
    102103  Int           m_iNumColumnsMinus1;
    103104  Int           m_iNumRowsMinus1;
    104   TComTile**    m_apcTComTile;
     105  std::vector<TComTile> m_tileParameters;
    105106  UInt*         m_puiCUOrderMap;       //the map of LCU raster scan address relative to LCU encoding order
    106107  UInt*         m_puiTileIdxMap;       //the map of the tile index relative to LCU raster scan address
     
    133134  Int          getNumRowsMinus1()                                    { return m_iNumRowsMinus1; }
    134135  Int          getNumTiles()                                         { return (m_iNumRowsMinus1+1)*(m_iNumColumnsMinus1+1); }
    135   TComTile*    getTComTile  ( UInt tileIdx )                         { return *(m_apcTComTile + tileIdx); }
     136  TComTile*    getTComTile  ( UInt tileIdx )                         { return &(m_tileParameters[tileIdx]); }
    136137  Void         setCUOrderMap( Int encCUOrder, Int cuAddr )           { *(m_puiCUOrderMap + encCUOrder) = cuAddr; }
    137138  UInt         getCUOrderMap( Int encCUOrder )                       { return *(m_puiCUOrderMap + (encCUOrder>=m_uiNumCUsInFrame ? m_uiNumCUsInFrame : encCUOrder)); }
     
    141142  UInt         getPicSCUEncOrder( UInt SCUAddr );
    142143  UInt         getPicSCUAddr( UInt SCUEncOrder );
    143   Void         xCreateTComTileArray();
    144   Void         xInitTiles();
     144  Void         initTiles(TComPPS *pps);
    145145  UInt         xCalculateNxtCUAddr( UInt uiCurrCUAddr );
    146146  SAOBlkParam* getSAOBlkParam() { return m_saoBlkParams;}
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComSlice.cpp

    r1078 r1081  
    28732873, m_entropyCodingSyncEnabledFlag   (false)
    28742874, m_loopFilterAcrossTilesEnabledFlag  (true)
    2875 , m_uniformSpacingFlag           (0)
    2876 , m_iNumColumnsMinus1            (0)
    2877 , m_puiColumnWidth               (NULL)
    2878 , m_iNumRowsMinus1               (0)
    2879 , m_puiRowHeight                 (NULL)
    2880 , m_iNumSubstreams             (1)
     2875, m_uniformSpacingFlag           (false)
     2876, m_numTileColumnsMinus1         (0)
     2877, m_numTileRowsMinus1            (0)
     2878, m_numSubstreams               (1)
    28812879, m_signHideFlag(0)
    28822880, m_cabacInitPresentFlag        (false)
     
    29112909TComPPS::~TComPPS()
    29122910{
    2913   if( m_iNumColumnsMinus1 > 0 && m_uniformSpacingFlag == 0 )
    2914   {
    2915     if (m_puiColumnWidth) delete [] m_puiColumnWidth;
    2916     m_puiColumnWidth = NULL;
    2917   }
    2918   if( m_iNumRowsMinus1 > 0 && m_uniformSpacingFlag == 0 )
    2919   {
    2920     if (m_puiRowHeight) delete [] m_puiRowHeight;
    2921     m_puiRowHeight = NULL;
    2922   }
    29232911  delete m_scalingList;
    29242912}
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComSlice.h

    r1076 r1081  
    19701970 
    19711971  Bool     m_loopFilterAcrossTilesEnabledFlag;
    1972   Int      m_uniformSpacingFlag;
    1973   Int      m_iNumColumnsMinus1;
    1974   UInt*    m_puiColumnWidth;
    1975   Int      m_iNumRowsMinus1;
    1976   UInt*    m_puiRowHeight;
    1977 
    1978   Int      m_iNumSubstreams;
     1972  Bool             m_uniformSpacingFlag;
     1973  Int              m_numTileColumnsMinus1;
     1974  Int              m_numTileRowsMinus1;
     1975  std::vector<Int> m_tileColumnWidth;
     1976  std::vector<Int> m_tileRowHeight;
     1977
     1978  Int      m_numSubstreams;
    19791979
    19801980  Int      m_signHideFlag;
     
    20732073  Bool    getDependentSliceSegmentsEnabledFlag() const     { return m_dependentSliceSegmentsEnabledFlag; }
    20742074  Void    setDependentSliceSegmentsEnabledFlag(Bool val)   { m_dependentSliceSegmentsEnabledFlag = val; }
    2075   Bool    getTilesEnabledFlag() const                      { return m_tilesEnabledFlag; }
    2076   Void    setTilesEnabledFlag(Bool val)                    { m_tilesEnabledFlag = val; }
    20772075  Bool    getEntropyCodingSyncEnabledFlag() const          { return m_entropyCodingSyncEnabledFlag; }
    20782076  Void    setEntropyCodingSyncEnabledFlag(Bool val)        { m_entropyCodingSyncEnabledFlag = val; }
    2079   Void     setUniformSpacingFlag            ( Bool b )          { m_uniformSpacingFlag = b; }
    2080   Bool     getUniformSpacingFlag            ()                  { return m_uniformSpacingFlag; }
    2081   Void     setNumColumnsMinus1              ( Int i )           { m_iNumColumnsMinus1 = i; }
    2082   Int      getNumColumnsMinus1              ()                  { return m_iNumColumnsMinus1; }
    2083   Void     setColumnWidth ( UInt* columnWidth )
    2084   {
    2085     if( m_uniformSpacingFlag == 0 && m_iNumColumnsMinus1 > 0 )
    2086     {
    2087       m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ];
    2088 
    2089       for(Int i=0; i<m_iNumColumnsMinus1; i++)
    2090       {
    2091         m_puiColumnWidth[i] = columnWidth[i];
    2092       }
    2093     }
    2094   }
    2095   UInt     getColumnWidth  (UInt columnIdx) { return *( m_puiColumnWidth + columnIdx ); }
    2096   Void     setNumRowsMinus1( Int i )        { m_iNumRowsMinus1 = i; }
    2097   Int      getNumRowsMinus1()               { return m_iNumRowsMinus1; }
    2098   Void     setRowHeight    ( UInt* rowHeight )
    2099   {
    2100     if( m_uniformSpacingFlag == 0 && m_iNumRowsMinus1 > 0 )
    2101     {
    2102       m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ];
    2103 
    2104       for(Int i=0; i<m_iNumRowsMinus1; i++)
    2105       {
    2106         m_puiRowHeight[i] = rowHeight[i];
    2107       }
    2108     }
    2109   }
    2110   UInt     getRowHeight           (UInt rowIdx)    { return *( m_puiRowHeight + rowIdx ); }
    2111   Void     setNumSubstreams(Int iNumSubstreams)               { m_iNumSubstreams = iNumSubstreams; }
    2112   Int      getNumSubstreams()                                 { return m_iNumSubstreams; }
     2077
     2078  Void     setTilesEnabledFlag       (Bool val)                             { m_tilesEnabledFlag = val; }
     2079  Bool     getTilesEnabledFlag       () const                               { return m_tilesEnabledFlag; }
     2080  Void     setTileUniformSpacingFlag (Bool b)                               { m_uniformSpacingFlag = b; }
     2081  Bool     getTileUniformSpacingFlag () const                               { return m_uniformSpacingFlag; }
     2082  Void     setNumTileColumnsMinus1   (Int i)                                { m_numTileColumnsMinus1 = i; }
     2083  Int      getNumTileColumnsMinus1   () const                               { return m_numTileColumnsMinus1; }
     2084  Void     setTileColumnWidth        (const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; }
     2085  UInt     getTileColumnWidth        (UInt columnIdx) const                 { return  m_tileColumnWidth[columnIdx]; }
     2086  Void     setNumTileRowsMinus1      (Int i)                                { m_numTileRowsMinus1 = i; }
     2087  Int      getTileNumRowsMinus1      () const                               { return m_numTileRowsMinus1; }
     2088  Void     setTileRowHeight          (const std::vector<Int>& rowHeight)    { m_tileRowHeight = rowHeight;  }
     2089  UInt     getTileRowHeight          (UInt rowIdx) const                    { return m_tileRowHeight[rowIdx]; }
     2090
     2091  Void     setNumSubstreams    (Int numSubstreams)                     { m_numSubstreams = numSubstreams; }
     2092  Int      getNumSubstreams    ()                                      { return m_numSubstreams; }
    21132093
    21142094  Void      setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; }
  • branches/HTM-12.1-dev0/source/Lib/TLibCommon/TypeDef.h

    r1078 r1081  
    369369#define H_MV_HLS_PTL_LIMITS                  0
    370370#define H_MV_HLS7_GEN                        0  // General changes (not tested)
    371 
     371#define H_MV_ALIGN_HM_15                     1 
    372372
    373373// POC
     
    418418#define SAO_SGN_FUNC 1
    419419
     420#define TILE_SIZE_CHECK 1
     421
    420422#define FIX1172 1 ///< fix ticket #1172
    421423
     
    433435#define MAX_NESTING_NUM_LAYER       64
    434436
     437#if H_MV
    435438#define MAX_VPS_NUM_HRD_PARAMETERS                1024
     439#else
     440#define MAX_VPS_NUM_HRD_PARAMETERS                1
     441#endif
    436442#if H_MV
    437443#define MAX_NUM_SUB_LAYERS                        7
  • branches/HTM-12.1-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp

    r1079 r1081  
    292292  if( pcPPS->getTilesEnabledFlag() )
    293293  {
    294     READ_UVLC ( uiCode, "num_tile_columns_minus1" );                pcPPS->setNumColumnsMinus1( uiCode ); 
    295     READ_UVLC ( uiCode, "num_tile_rows_minus1" );                   pcPPS->setNumRowsMinus1( uiCode ); 
    296     READ_FLAG ( uiCode, "uniform_spacing_flag" );                   pcPPS->setUniformSpacingFlag( uiCode );
    297 
    298     if( !pcPPS->getUniformSpacingFlag())
    299     {
    300       UInt* columnWidth = (UInt*)malloc(pcPPS->getNumColumnsMinus1()*sizeof(UInt));
    301       for(UInt i=0; i<pcPPS->getNumColumnsMinus1(); i++)
     294    READ_UVLC ( uiCode, "num_tile_columns_minus1" );                pcPPS->setNumTileColumnsMinus1( uiCode ); 
     295    READ_UVLC ( uiCode, "num_tile_rows_minus1" );                   pcPPS->setNumTileRowsMinus1( uiCode ); 
     296    READ_FLAG ( uiCode, "uniform_spacing_flag" );                   pcPPS->setTileUniformSpacingFlag( uiCode == 1 );
     297
     298    if( !pcPPS->getTileUniformSpacingFlag())
     299    {
     300      std::vector<Int> columnWidth(pcPPS->getNumTileColumnsMinus1());
     301      for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++)
    302302      {
    303303        READ_UVLC( uiCode, "column_width_minus1" ); 
    304304        columnWidth[i] = uiCode+1;
    305305      }
    306       pcPPS->setColumnWidth(columnWidth);
    307       free(columnWidth);
    308 
    309       UInt* rowHeight = (UInt*)malloc(pcPPS->getNumRowsMinus1()*sizeof(UInt));
    310       for(UInt i=0; i<pcPPS->getNumRowsMinus1(); i++)
     306      pcPPS->setTileColumnWidth(columnWidth);
     307
     308      std::vector<Int> rowHeight (pcPPS->getTileNumRowsMinus1());
     309      for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++)
    311310      {
    312311        READ_UVLC( uiCode, "row_height_minus1" );
    313312        rowHeight[i] = uiCode + 1;
    314313      }
    315       pcPPS->setRowHeight(rowHeight);
    316       free(rowHeight); 
    317     }
    318 
    319     if(pcPPS->getNumColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)
     314      pcPPS->setTileRowHeight(rowHeight);
     315    }
     316
     317    if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0)
    320318    {
    321319      READ_FLAG ( uiCode, "loop_filter_across_tiles_enabled_flag" );   pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode ? true : false );
     
    11341132        READ_FLAG( uiCode, "cprms_present_flag[i]" );              pcVPS->setCprmsPresentFlag( uiCode == 1 ? true : false, i );
    11351133      }
     1134      else
     1135      {
     1136        pcVPS->setCprmsPresentFlag( true, i );
     1137      }
     1138
    11361139      parseHrdParameters(pcVPS->getHrdParameters(i), pcVPS->getCprmsPresentFlag( i ), pcVPS->getMaxTLayers() - 1);
    11371140    }
  • branches/HTM-12.1-dev0/source/Lib/TLibDecoder/TDecTop.cpp

    r1079 r1081  
    727727#endif
    728728  pps->setSPS(sps);
    729   pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumColumnsMinus1() + 1) : 1);
     729  pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1);
    730730  pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) );
    731731
     
    10241024  Bool bNextSlice     = pcSlice->isNextSlice();
    10251025
    1026   UInt uiCummulativeTileWidth;
    1027   UInt uiCummulativeTileHeight;
    1028   UInt i, j, p;
    1029 
    1030   //set NumColumnsMins1 and NumRowsMinus1
    1031   pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() );
    1032   pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() );
    1033 
    1034   //create the TComTileArray
    1035   pcPic->getPicSym()->xCreateTComTileArray();
    1036 
    1037   if( pcSlice->getPPS()->getUniformSpacingFlag() )
    1038   {
    1039     //set the width for each tile
    1040     for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++)
    1041     {
    1042       for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++)
    1043       {
    1044         pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->
    1045           setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1)
    1046           - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) );
    1047       }
    1048     }
    1049 
    1050     //set the height for each tile
    1051     for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++)
    1052     {
    1053       for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++)
    1054       {
    1055         pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->
    1056           setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1)
    1057           - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) );   
    1058       }
    1059     }
    1060   }
    1061   else
    1062   {
    1063     //set the width for each tile
    1064     for(j=0; j < pcSlice->getPPS()->getNumRowsMinus1()+1; j++)
    1065     {
    1066       uiCummulativeTileWidth = 0;
    1067       for(i=0; i < pcSlice->getPPS()->getNumColumnsMinus1(); i++)
    1068       {
    1069         pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcSlice->getPPS()->getColumnWidth(i) );
    1070         uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(i);
    1071       }
    1072       pcPic->getPicSym()->getTComTile(j * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + i)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth );
    1073     }
    1074 
    1075     //set the height for each tile
    1076     for(j=0; j < pcSlice->getPPS()->getNumColumnsMinus1()+1; j++)
    1077     {
    1078       uiCummulativeTileHeight = 0;
    1079       for(i=0; i < pcSlice->getPPS()->getNumRowsMinus1(); i++)
    1080       {
    1081         pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcSlice->getPPS()->getRowHeight(i) );
    1082         uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(i);
    1083       }
    1084       pcPic->getPicSym()->getTComTile(i * (pcSlice->getPPS()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight );
    1085     }
    1086   }
    1087 
    1088   pcPic->getPicSym()->xInitTiles();
     1026  UInt i;
     1027  pcPic->getPicSym()->initTiles(pcSlice->getPPS());
    10891028
    10901029  //generate the Coding Order Map and Inverse Coding Order Map
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r1079 r1081  
    210210  if( pcPPS->getTilesEnabledFlag() )
    211211  {
    212     WRITE_UVLC( pcPPS->getNumColumnsMinus1(),                                    "num_tile_columns_minus1" );
    213     WRITE_UVLC( pcPPS->getNumRowsMinus1(),                                       "num_tile_rows_minus1" );
    214     WRITE_FLAG( pcPPS->getUniformSpacingFlag(),                                  "uniform_spacing_flag" );
    215     if( pcPPS->getUniformSpacingFlag() == 0 )
    216     {
    217       for(UInt i=0; i<pcPPS->getNumColumnsMinus1(); i++)
    218       {
    219         WRITE_UVLC( pcPPS->getColumnWidth(i)-1,                                  "column_width_minus1" );
    220       }
    221       for(UInt i=0; i<pcPPS->getNumRowsMinus1(); i++)
    222       {
    223         WRITE_UVLC( pcPPS->getRowHeight(i)-1,                                    "row_height_minus1" );
    224       }
    225     }
    226     if(pcPPS->getNumColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)
     212    WRITE_UVLC( pcPPS->getNumTileColumnsMinus1(),                                    "num_tile_columns_minus1" );
     213    WRITE_UVLC( pcPPS->getTileNumRowsMinus1(),                                       "num_tile_rows_minus1" );
     214    WRITE_FLAG( pcPPS->getTileUniformSpacingFlag(),                                  "uniform_spacing_flag" );
     215    if( !pcPPS->getTileUniformSpacingFlag() )
     216    {
     217      for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++)
     218      {
     219        WRITE_UVLC( pcPPS->getTileColumnWidth(i)-1,                                  "column_width_minus1" );
     220      }
     221      for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++)
     222      {
     223        WRITE_UVLC( pcPPS->getTileRowHeight(i)-1,                                    "row_height_minus1" );
     224      }
     225    }
     226    if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0)
    227227    {
    228228      WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag()?1 : 0,          "loop_filter_across_tiles_enabled_flag");
     
    528528  if( defaultDisplayWindow.getWindowEnabledFlag() )
    529529  {
    530     WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset(),      "def_disp_win_left_offset");
    531     WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset(),    "def_disp_win_right_offset");
    532     WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset(),      "def_disp_win_top_offset");
    533     WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset(),    "def_disp_win_bottom_offset");
     530    WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset()  / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_left_offset");
     531    WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_right_offset");
     532    WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset()   / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_top_offset");
     533    WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset()/ TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_bottom_offset");
    534534  }
    535535  TimingInfo *timingInfo = pcVUI->getTimingInfo();
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r1074 r1081  
    124124  Int       m_iSourceWidth;
    125125  Int       m_iSourceHeight;
    126   Int       m_conformanceMode;
    127126  Window    m_conformanceWindow;
    128127  Int       m_framesToBeEncoded;
     
    229228  Bool      m_bPCMFilterDisableFlag;
    230229  Bool      m_loopFilterAcrossTilesEnabledFlag;
    231   Int       m_iUniformSpacingIdr;
     230  Bool      m_tileUniformSpacingFlag;
    232231  Int       m_iNumColumnsMinus1;
    233   UInt*     m_puiColumnWidth;
    234232  Int       m_iNumRowsMinus1;
    235   UInt*     m_puiRowHeight;
     233  std::vector<Int> m_tileColumnWidth;
     234  std::vector<Int> m_tileRowHeight;
    236235
    237236  Int       m_iWaveFrontSynchro;
     
    430429public:
    431430  TEncCfg()
    432   : m_puiColumnWidth()
    433   , m_puiRowHeight()
     431  : m_tileColumnWidth()
     432  , m_tileRowHeight()
    434433#if H_MV
    435434  , m_layerId(-1)
     
    445444
    446445  virtual ~TEncCfg()
    447   {
    448     delete[] m_puiColumnWidth;
    449     delete[] m_puiRowHeight;
    450   }
     446  {}
    451447 
    452448  Void setProfile(Profile::Name profile) { m_profile = profile; }
     
    671667  Void  setLFCrossTileBoundaryFlag               ( Bool   val  )       { m_loopFilterAcrossTilesEnabledFlag = val; }
    672668  Bool  getLFCrossTileBoundaryFlag               ()                    { return m_loopFilterAcrossTilesEnabledFlag;   }
    673   Void  setUniformSpacingIdr           ( Int i )           { m_iUniformSpacingIdr = i; }
    674   Int   getUniformSpacingIdr           ()                  { return m_iUniformSpacingIdr; }
     669  Void  setTileUniformSpacingFlag      ( Bool b )          { m_tileUniformSpacingFlag = b; }
     670  Bool  getTileUniformSpacingFlag      ()                  { return m_tileUniformSpacingFlag; }
    675671  Void  setNumColumnsMinus1            ( Int i )           { m_iNumColumnsMinus1 = i; }
    676672  Int   getNumColumnsMinus1            ()                  { return m_iNumColumnsMinus1; }
    677   Void  setColumnWidth ( UInt* columnWidth )
    678   {
    679     if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 )
    680     {
    681       Int  m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth;
    682       m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ];
    683 
    684       for(Int i=0; i<m_iNumColumnsMinus1; i++)
    685       {
    686         m_puiColumnWidth[i] = columnWidth[i];
    687         printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU
    688       }
    689     }
    690   }
    691   UInt  getColumnWidth                 ( UInt columnidx )  { return *( m_puiColumnWidth + columnidx ); }
     673  Void  setColumnWidth ( const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; }
     674  UInt  getColumnWidth                 ( UInt columnIdx )      { return m_tileColumnWidth[columnIdx]; }
    692675  Void  setNumRowsMinus1               ( Int i )           { m_iNumRowsMinus1 = i; }
    693676  Int   getNumRowsMinus1               ()                  { return m_iNumRowsMinus1; }
    694   Void  setRowHeight (UInt* rowHeight)
    695   {
    696     if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 )
    697     {
    698       Int  m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight;
    699       m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ];
    700 
    701       for(Int i=0; i<m_iNumRowsMinus1; i++)
    702       {
    703         m_puiRowHeight[i] = rowHeight[i];
    704         printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU
    705       }
    706     }
    707   }
    708   UInt  getRowHeight                   ( UInt rowIdx )     { return *( m_puiRowHeight + rowIdx ); }
     677  Void  setRowHeight ( const std::vector<Int>& rowHeight)      { m_tileRowHeight = rowHeight; }
     678  UInt  getRowHeight                   ( UInt rowIdx )         { return m_tileRowHeight[rowIdx]; }
    709679  Void  xCheckGSParameters();
    710680  Void  setWaveFrontSynchro(Int iWaveFrontSynchro)       { m_iWaveFrontSynchro = iWaveFrontSynchro; }
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncGOP.cpp

    r1074 r1081  
    395395Void TEncGOP::initGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP)
    396396{
     397#if H_MV_ALIGN_HM_15
     398  xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut, false );
     399#else
    397400  xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut );
     401#endif
    398402  m_iNumPicCoded = 0;
    399403}
     
    12281232    UInt uiRealEndAddress = uiExternalAddress*pcPic->getNumPartInCU()+uiInternalAddress;
    12291233
    1230     UInt uiCummulativeTileWidth;
    1231     UInt uiCummulativeTileHeight;
    12321234    Int  p, j;
    12331235    UInt uiEncCUAddr;
    12341236
    1235     //set NumColumnsMinus1 and NumRowsMinus1
    1236     pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() );
    1237     pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() );
    1238 
    1239     //create the TComTileArray
    1240     pcPic->getPicSym()->xCreateTComTileArray();
    1241 
    1242     if( pcSlice->getPPS()->getUniformSpacingFlag() == 1 )
    1243     {
    1244       //set the width for each tile
    1245       for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++)
    1246       {
    1247         for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++)
    1248         {
    1249           pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->
    1250             setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1)
    1251             - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) );
    1252         }
    1253       }
    1254 
    1255       //set the height for each tile
    1256       for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++)
    1257       {
    1258         for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++)
    1259         {
    1260           pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->
    1261             setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1)
    1262             - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) );   
    1263         }
    1264       }
    1265     }
    1266     else
    1267     {
    1268       //set the width for each tile
    1269       for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++)
    1270       {
    1271         uiCummulativeTileWidth = 0;
    1272         for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1(); p++)
    1273         {
    1274           pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->setTileWidth( pcSlice->getPPS()->getColumnWidth(p) );
    1275           uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(p);
    1276         }
    1277         pcPic->getPicSym()->getTComTile(j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth );
    1278       }
    1279 
    1280       //set the height for each tile
    1281       for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++)
    1282       {
    1283         uiCummulativeTileHeight = 0;
    1284         for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1(); p++)
    1285         {
    1286           pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->setTileHeight( pcSlice->getPPS()->getRowHeight(p) );
    1287           uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(p);
    1288         }
    1289         pcPic->getPicSym()->getTComTile(p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight );
    1290       }
    1291     }
    1292     //intialize each tile of the current picture
    1293     pcPic->getPicSym()->xInitTiles();
     1237    pcPic->getPicSym()->initTiles(pcSlice->getPPS());
    12941238
    12951239    // Allocate some coders, now we know how many tiles there are.
     
    18141758
    18151759#if SETTING_NO_OUT_PIC_PRIOR
     1760          pcSlice->setNoRaslOutputFlag(false);
    18161761          if (pcSlice->isIRAP())
    18171762          {
     
    18211766            }
    18221767            //the inference for NoOutputPriorPicsFlag
     1768            // KJS: This cannot happen at the encoder
    18231769            if (!m_bFirst && pcSlice->isIRAP() && pcSlice->getNoRaslOutputFlag())
    18241770            {
     
    24922438  assert (m_iGopSize > 0);
    24932439 
    2494   return;
    2495 }
    2496 
    2497 Void TEncGOP::xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut )
    2498 {
    2499   assert( iNumPicRcvd > 0 );
    2500   //  Exception for the first frame
    2501   if ( iPOCLast == 0 )
    2502   {
    2503     m_iGopSize    = 1;
    2504   }
    2505   else
    2506     m_iGopSize    = m_pcCfg->getGOPSize();
    2507  
    2508   assert (m_iGopSize > 0);
    2509 
    25102440  return;
    25112441}
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncGOP.h

    r1074 r1081  
    200200
    201201  Void xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, bool isField );
    202   Void  xInitGOP          ( Int iPOC, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut );
    203202  Void  xGetBuffer        ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, bool isField );
    204203 
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r1074 r1081  
    63296329    if( bCodeChroma )
    63306330    {
     6331      m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
     6332      m_pcEntropyCoder->resetBits();
    63316333        m_pcEntropyCoder->encodeQtCbf   ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode );
    63326334      m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U );
    6333       uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsY;
     6335      uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits();
    63346336     
     6337      m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
     6338      m_pcEntropyCoder->resetBits();
    63356339        m_pcEntropyCoder->encodeQtCbf   ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode );
    63366340      m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V );
    6337       uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - ( uiSingleBitsY + uiSingleBitsU );
     6341      uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits();
    63386342    }
    63396343   
     
    64166420        const Double singleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY );
    64176421#endif
     6422        m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
     6423
    64186424        m_pcEntropyCoder->resetBits();
    64196425        m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA,     uiTrMode );
     
    64496455    else if( checkTransformSkipY )
    64506456    {
     6457      m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
    64516458      m_pcEntropyCoder->resetBits();
    64526459      m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode );
     
    65056512        {
    65066513          const Double dSingleCostU = m_pcRdCost->calcRdCost( uiSingleBitsU, uiNonzeroDistU );
     6514          m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
    65076515          m_pcEntropyCoder->resetBits();
    65086516          m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U,     uiTrMode );
     
    65306538      else if( checkTransformSkipUV )
    65316539      {
     6540        m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
    65326541        m_pcEntropyCoder->resetBits();
    65336542        m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode );
     
    65746583        {
    65756584          const Double dSingleCostV = m_pcRdCost->calcRdCost( uiSingleBitsV, uiNonzeroDistV );
     6585          m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
    65766586          m_pcEntropyCoder->resetBits();
    65776587          m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V,     uiTrMode );
     
    65996609      else if( checkTransformSkipUV )
    66006610      {
     6611        m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
    66016612        m_pcEntropyCoder->resetBits();
    66026613        m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode );
     
    67956806      pcCU->setCbfSubParts( uiAbsSumTransformSkipV ? uiSetCbf : 0, TEXT_CHROMA_V, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC );
    67966807
    6797       m_pcEntropyCoder->resetBits();
    67986808      uiSingleBitsU = 0;
    67996809      uiSingleBitsV = 0;
     
    68016811      if( uiAbsSumTransformSkipU )
    68026812      {
     6813        m_pcEntropyCoder->resetBits();
    68036814        m_pcEntropyCoder->encodeQtCbf   ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode );
    68046815        m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U );
     
    68436854      if( uiAbsSumTransformSkipV )
    68446855      {
     6856        m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] );
     6857        m_pcEntropyCoder->resetBits();
    68456858        m_pcEntropyCoder->encodeQtCbf   ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode );
    68466859        m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V );
    6847         uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsU;
     6860        uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits();
    68486861
    68496862        curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr();
  • branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncTop.cpp

    r1076 r1081  
    854854  {
    855855    TComVUI* pcVUI = m_cSPS.getVuiParameters();
    856     pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioIdc() != -1);
     856    pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag());
    857857    pcVUI->setAspectRatioIdc(getAspectRatioIdc());
    858858    pcVUI->setSarWidth(getSarWidth());
     
    12881288Void  TEncTop::xInitPPSforTiles()
    12891289{
    1290   m_cPPS.setUniformSpacingFlag( m_iUniformSpacingIdr );
    1291   m_cPPS.setNumColumnsMinus1( m_iNumColumnsMinus1 );
    1292   m_cPPS.setNumRowsMinus1( m_iNumRowsMinus1 );
    1293   if( m_iUniformSpacingIdr == 0 )
    1294   {
    1295     m_cPPS.setColumnWidth( m_puiColumnWidth );
    1296     m_cPPS.setRowHeight( m_puiRowHeight );
     1290  m_cPPS.setTileUniformSpacingFlag( m_tileUniformSpacingFlag );
     1291  m_cPPS.setNumTileColumnsMinus1( m_iNumColumnsMinus1 );
     1292  m_cPPS.setNumTileRowsMinus1( m_iNumRowsMinus1 );
     1293  if( !m_tileUniformSpacingFlag )
     1294  {
     1295    m_cPPS.setTileColumnWidth( m_tileColumnWidth );
     1296    m_cPPS.setTileRowHeight( m_tileRowHeight );
    12971297  }
    12981298  m_cPPS.setLoopFilterAcrossTilesEnabledFlag( m_loopFilterAcrossTilesEnabledFlag );
    12991299
    13001300  // # substreams is "per tile" when tiles are independent.
    1301   if (m_iWaveFrontSynchro
    1302     )
     1301  if (m_iWaveFrontSynchro )
    13031302  {
    13041303    m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1));
     
    13261325  }
    13271326
    1328   if( m_iNumColumnsMinus1 && m_iUniformSpacingIdr==0 )
     1327  if( m_iNumColumnsMinus1 && !m_tileUniformSpacingFlag )
    13291328  {
    13301329    for(Int i=0; i<m_iNumColumnsMinus1; i++)
    13311330    {
    1332       uiCummulativeColumnWidth += m_puiColumnWidth[i];
     1331      uiCummulativeColumnWidth += m_tileColumnWidth[i];
    13331332    }
    13341333
     
    13531352  }
    13541353
    1355   if( m_iNumRowsMinus1 && m_iUniformSpacingIdr==0 )
     1354  if( m_iNumRowsMinus1 && !m_tileUniformSpacingFlag )
    13561355  {
    13571356    for(Int i=0; i<m_iNumRowsMinus1; i++)
    1358       uiCummulativeRowHeight += m_puiRowHeight[i];
     1357      uiCummulativeRowHeight += m_tileRowHeight[i];
    13591358
    13601359    if( uiCummulativeRowHeight >= iHeightInCU )
  • branches/HTM-12.1-dev0/source/Lib/TLibVideoIO/TVideoIOYuv.cpp

    r872 r1081  
    470470  Bool retval = true;
    471471
     472  if ((width==0)||(height==0))
     473  {
     474    printf ("\nWarning: writing %d x %d luma sample output picture!", width, height);
     475  }
     476
    472477  if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0)
    473478  {
     
    563568 
    564569  Bool retval = true;
     570 
     571  if ((width==0)||(height==0))
     572  {
     573    printf ("\nWarning: writing %d x %d luma sample output picture!", width, height);
     574  }
    565575 
    566576  if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0)
Note: See TracChangeset for help on using the changeset viewer.