Changeset 1081 in 3DVCSoftware for branches/HTM-12.1-dev0/source/Lib
- Timestamp:
- 22 Oct 2014, 01:32:55 (10 years ago)
- 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 61 61 #if H_MV 62 62 #define NV_VERSION "12.1" ///< Current software version 63 #define HM_VERSION "1 4.0" ///<63 #define HM_VERSION "15.0" ///< 64 64 #else 65 65 #define NV_VERSION "14.0" ///< Current software version -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/SEI.h
r964 r1081 161 161 UInt m_bpSeqParameterSetId; 162 162 Bool m_rapCpbParamsPresentFlag; 163 Boolm_cpbDelayOffset;164 Boolm_dpbDelayOffset;163 UInt m_cpbDelayOffset; 164 UInt m_dpbDelayOffset; 165 165 UInt m_initialCpbRemovalDelay [MAX_CPB_CNT][2]; 166 166 UInt m_initialCpbRemovalDelayOffset [MAX_CPB_CNT][2]; -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComPicSym.cpp
r872 r1081 38 38 #include "TComPicSym.h" 39 39 #include "TComSampleAdaptiveOffset.h" 40 #include "TComSlice.h" 40 41 41 42 //! \ingroup TLibCommon … … 63 64 ,m_iNumColumnsMinus1 (0) 64 65 ,m_iNumRowsMinus1(0) 65 ,m_apcTComTile(NULL)66 66 ,m_puiCUOrderMap(0) 67 67 ,m_puiTileIdxMap(NULL) … … 101 101 delete [] m_apcTComSlice; 102 102 } 103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame *m_uiNumPartitions];103 m_apcTComSlice = new TComSlice*[m_uiNumCUsInFrame]; 104 104 m_apcTComSlice[0] = new TComSlice; 105 105 m_uiNumAllocatedSlice = 1; … … 148 148 m_apcTComDataCU = NULL; 149 149 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 158 150 delete [] m_puiCUOrderMap; 159 151 m_puiCUOrderMap = NULL; … … 173 165 Void TComPicSym::allocateNewSlice() 174 166 { 167 assert ((m_uiNumAllocatedSlice + 1) <= m_uiNumCUsInFrame); 175 168 m_apcTComSlice[m_uiNumAllocatedSlice ++] = new TComSlice; 176 169 if (m_uiNumAllocatedSlice>=2) … … 201 194 } 202 195 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; 196 Void 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 220 271 221 272 //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; 227 278 228 279 //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); 235 286 236 287 //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); 243 294 244 295 //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; 249 303 250 304 //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; 270 324 } 271 325 … … 417 471 418 472 TComTile::TComTile() 473 : m_uiTileWidth (0) 474 , m_uiTileHeight (0) 475 , m_uiRightEdgePosInCU (0) 476 , m_uiBottomEdgePosInCU (0) 477 , m_uiFirstCUAddr (0) 478 419 479 { 420 480 } -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComPicSym.h
r872 r1081 45 45 #include "TComDataCU.h" 46 46 class TComSampleAdaptiveOffset; 47 class TComPPS; 47 48 48 49 //! \ingroup TLibCommon … … 102 103 Int m_iNumColumnsMinus1; 103 104 Int m_iNumRowsMinus1; 104 TComTile** m_apcTComTile;105 std::vector<TComTile> m_tileParameters; 105 106 UInt* m_puiCUOrderMap; //the map of LCU raster scan address relative to LCU encoding order 106 107 UInt* m_puiTileIdxMap; //the map of the tile index relative to LCU raster scan address … … 133 134 Int getNumRowsMinus1() { return m_iNumRowsMinus1; } 134 135 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]); } 136 137 Void setCUOrderMap( Int encCUOrder, Int cuAddr ) { *(m_puiCUOrderMap + encCUOrder) = cuAddr; } 137 138 UInt getCUOrderMap( Int encCUOrder ) { return *(m_puiCUOrderMap + (encCUOrder>=m_uiNumCUsInFrame ? m_uiNumCUsInFrame : encCUOrder)); } … … 141 142 UInt getPicSCUEncOrder( UInt SCUAddr ); 142 143 UInt getPicSCUAddr( UInt SCUEncOrder ); 143 Void xCreateTComTileArray(); 144 Void xInitTiles(); 144 Void initTiles(TComPPS *pps); 145 145 UInt xCalculateNxtCUAddr( UInt uiCurrCUAddr ); 146 146 SAOBlkParam* getSAOBlkParam() { return m_saoBlkParams;} -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComSlice.cpp
r1078 r1081 2873 2873 , m_entropyCodingSyncEnabledFlag (false) 2874 2874 , 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) 2881 2879 , m_signHideFlag(0) 2882 2880 , m_cabacInitPresentFlag (false) … … 2911 2909 TComPPS::~TComPPS() 2912 2910 { 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 }2923 2911 delete m_scalingList; 2924 2912 } -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/TComSlice.h
r1076 r1081 1970 1970 1971 1971 Bool m_loopFilterAcrossTilesEnabledFlag; 1972 Intm_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; 1979 1979 1980 1980 Int m_signHideFlag; … … 2073 2073 Bool getDependentSliceSegmentsEnabledFlag() const { return m_dependentSliceSegmentsEnabledFlag; } 2074 2074 Void setDependentSliceSegmentsEnabledFlag(Bool val) { m_dependentSliceSegmentsEnabledFlag = val; } 2075 Bool getTilesEnabledFlag() const { return m_tilesEnabledFlag; }2076 Void setTilesEnabledFlag(Bool val) { m_tilesEnabledFlag = val; }2077 2075 Bool getEntropyCodingSyncEnabledFlag() const { return m_entropyCodingSyncEnabledFlag; } 2078 2076 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; } 2113 2093 2114 2094 Void setSignHideFlag( Int signHideFlag ) { m_signHideFlag = signHideFlag; } -
branches/HTM-12.1-dev0/source/Lib/TLibCommon/TypeDef.h
r1078 r1081 369 369 #define H_MV_HLS_PTL_LIMITS 0 370 370 #define H_MV_HLS7_GEN 0 // General changes (not tested) 371 371 #define H_MV_ALIGN_HM_15 1 372 372 373 373 // POC … … 418 418 #define SAO_SGN_FUNC 1 419 419 420 #define TILE_SIZE_CHECK 1 421 420 422 #define FIX1172 1 ///< fix ticket #1172 421 423 … … 433 435 #define MAX_NESTING_NUM_LAYER 64 434 436 437 #if H_MV 435 438 #define MAX_VPS_NUM_HRD_PARAMETERS 1024 439 #else 440 #define MAX_VPS_NUM_HRD_PARAMETERS 1 441 #endif 436 442 #if H_MV 437 443 #define MAX_NUM_SUB_LAYERS 7 -
branches/HTM-12.1-dev0/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1079 r1081 292 292 if( pcPPS->getTilesEnabledFlag() ) 293 293 { 294 READ_UVLC ( uiCode, "num_tile_columns_minus1" ); pcPPS->setNum ColumnsMinus1( uiCode );295 READ_UVLC ( uiCode, "num_tile_rows_minus1" ); pcPPS->setNum RowsMinus1( uiCode );296 READ_FLAG ( uiCode, "uniform_spacing_flag" ); pcPPS->set UniformSpacingFlag( uiCode);297 298 if( !pcPPS->get UniformSpacingFlag())299 { 300 UInt* columnWidth = (UInt*)malloc(pcPPS->getNumColumnsMinus1()*sizeof(UInt));301 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); 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++) 302 302 { 303 303 READ_UVLC( uiCode, "column_width_minus1" ); 304 304 columnWidth[i] = uiCode+1; 305 305 } 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++) 311 310 { 312 311 READ_UVLC( uiCode, "row_height_minus1" ); 313 312 rowHeight[i] = uiCode + 1; 314 313 } 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) 320 318 { 321 319 READ_FLAG ( uiCode, "loop_filter_across_tiles_enabled_flag" ); pcPPS->setLoopFilterAcrossTilesEnabledFlag( uiCode ? true : false ); … … 1134 1132 READ_FLAG( uiCode, "cprms_present_flag[i]" ); pcVPS->setCprmsPresentFlag( uiCode == 1 ? true : false, i ); 1135 1133 } 1134 else 1135 { 1136 pcVPS->setCprmsPresentFlag( true, i ); 1137 } 1138 1136 1139 parseHrdParameters(pcVPS->getHrdParameters(i), pcVPS->getCprmsPresentFlag( i ), pcVPS->getMaxTLayers() - 1); 1137 1140 } -
branches/HTM-12.1-dev0/source/Lib/TLibDecoder/TDecTop.cpp
r1079 r1081 727 727 #endif 728 728 pps->setSPS(sps); 729 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNum ColumnsMinus1() + 1) : 1);729 pps->setNumSubstreams(pps->getEntropyCodingSyncEnabledFlag() ? ((sps->getPicHeightInLumaSamples() + sps->getMaxCUHeight() - 1) / sps->getMaxCUHeight()) * (pps->getNumTileColumnsMinus1() + 1) : 1); 730 730 pps->setMinCuDQPSize( sps->getMaxCUWidth() >> ( pps->getMaxCuDQPDepth()) ); 731 731 … … 1024 1024 Bool bNextSlice = pcSlice->isNextSlice(); 1025 1025 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()); 1089 1028 1090 1029 //generate the Coding Order Map and Inverse Coding Order Map -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp
r1079 r1081 210 210 if( pcPPS->getTilesEnabledFlag() ) 211 211 { 212 WRITE_UVLC( pcPPS->getNum ColumnsMinus1(), "num_tile_columns_minus1" );213 WRITE_UVLC( pcPPS->get NumRowsMinus1(), "num_tile_rows_minus1" );214 WRITE_FLAG( pcPPS->get UniformSpacingFlag(), "uniform_spacing_flag" );215 if( pcPPS->getUniformSpacingFlag() == 0)216 { 217 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)218 { 219 WRITE_UVLC( pcPPS->get ColumnWidth(i)-1, "column_width_minus1" );220 } 221 for(UInt i=0; i<pcPPS->get NumRowsMinus1(); i++)222 { 223 WRITE_UVLC( pcPPS->get RowHeight(i)-1, "row_height_minus1" );224 } 225 } 226 if(pcPPS->getNum ColumnsMinus1() !=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) 227 227 { 228 228 WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag()?1 : 0, "loop_filter_across_tiles_enabled_flag"); … … 528 528 if( defaultDisplayWindow.getWindowEnabledFlag() ) 529 529 { 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"); 534 534 } 535 535 TimingInfo *timingInfo = pcVUI->getTimingInfo(); -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncCfg.h
r1074 r1081 124 124 Int m_iSourceWidth; 125 125 Int m_iSourceHeight; 126 Int m_conformanceMode;127 126 Window m_conformanceWindow; 128 127 Int m_framesToBeEncoded; … … 229 228 Bool m_bPCMFilterDisableFlag; 230 229 Bool m_loopFilterAcrossTilesEnabledFlag; 231 Int m_iUniformSpacingIdr;230 Bool m_tileUniformSpacingFlag; 232 231 Int m_iNumColumnsMinus1; 233 UInt* m_puiColumnWidth;234 232 Int m_iNumRowsMinus1; 235 UInt* m_puiRowHeight; 233 std::vector<Int> m_tileColumnWidth; 234 std::vector<Int> m_tileRowHeight; 236 235 237 236 Int m_iWaveFrontSynchro; … … 430 429 public: 431 430 TEncCfg() 432 : m_ puiColumnWidth()433 , m_ puiRowHeight()431 : m_tileColumnWidth() 432 , m_tileRowHeight() 434 433 #if H_MV 435 434 , m_layerId(-1) … … 445 444 446 445 virtual ~TEncCfg() 447 { 448 delete[] m_puiColumnWidth; 449 delete[] m_puiRowHeight; 450 } 446 {} 451 447 452 448 Void setProfile(Profile::Name profile) { m_profile = profile; } … … 671 667 Void setLFCrossTileBoundaryFlag ( Bool val ) { m_loopFilterAcrossTilesEnabledFlag = val; } 672 668 Bool getLFCrossTileBoundaryFlag () { return m_loopFilterAcrossTilesEnabledFlag; } 673 Void set UniformSpacingIdr ( 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; } 675 671 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 676 672 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]; } 692 675 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } 693 676 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]; } 709 679 Void xCheckGSParameters(); 710 680 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncGOP.cpp
r1074 r1081 395 395 Void TEncGOP::initGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, std::list<AccessUnit>& accessUnitsInGOP) 396 396 { 397 #if H_MV_ALIGN_HM_15 398 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut, false ); 399 #else 397 400 xInitGOP( iPOCLast, iNumPicRcvd, rcListPic, rcListPicYuvRecOut ); 401 #endif 398 402 m_iNumPicCoded = 0; 399 403 } … … 1228 1232 UInt uiRealEndAddress = uiExternalAddress*pcPic->getNumPartInCU()+uiInternalAddress; 1229 1233 1230 UInt uiCummulativeTileWidth;1231 UInt uiCummulativeTileHeight;1232 1234 Int p, j; 1233 1235 UInt uiEncCUAddr; 1234 1236 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()); 1294 1238 1295 1239 // Allocate some coders, now we know how many tiles there are. … … 1814 1758 1815 1759 #if SETTING_NO_OUT_PIC_PRIOR 1760 pcSlice->setNoRaslOutputFlag(false); 1816 1761 if (pcSlice->isIRAP()) 1817 1762 { … … 1821 1766 } 1822 1767 //the inference for NoOutputPriorPicsFlag 1768 // KJS: This cannot happen at the encoder 1823 1769 if (!m_bFirst && pcSlice->isIRAP() && pcSlice->getNoRaslOutputFlag()) 1824 1770 { … … 2492 2438 assert (m_iGopSize > 0); 2493 2439 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 frame2501 if ( iPOCLast == 0 )2502 {2503 m_iGopSize = 1;2504 }2505 else2506 m_iGopSize = m_pcCfg->getGOPSize();2507 2508 assert (m_iGopSize > 0);2509 2510 2440 return; 2511 2441 } -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncGOP.h
r1074 r1081 200 200 201 201 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 );203 202 Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, bool isField ); 204 203 -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r1074 r1081 6329 6329 if( bCodeChroma ) 6330 6330 { 6331 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6332 m_pcEntropyCoder->resetBits(); 6331 6333 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6332 6334 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); 6333 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsY;6335 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits(); 6334 6336 6337 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6338 m_pcEntropyCoder->resetBits(); 6335 6339 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6336 6340 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6337 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - ( uiSingleBitsY + uiSingleBitsU );6341 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6338 6342 } 6339 6343 … … 6416 6420 const Double singleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY ); 6417 6421 #endif 6422 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6423 6418 6424 m_pcEntropyCoder->resetBits(); 6419 6425 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6449 6455 else if( checkTransformSkipY ) 6450 6456 { 6457 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6451 6458 m_pcEntropyCoder->resetBits(); 6452 6459 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 6505 6512 { 6506 6513 const Double dSingleCostU = m_pcRdCost->calcRdCost( uiSingleBitsU, uiNonzeroDistU ); 6514 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6507 6515 m_pcEntropyCoder->resetBits(); 6508 6516 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6530 6538 else if( checkTransformSkipUV ) 6531 6539 { 6540 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6532 6541 m_pcEntropyCoder->resetBits(); 6533 6542 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 6574 6583 { 6575 6584 const Double dSingleCostV = m_pcRdCost->calcRdCost( uiSingleBitsV, uiNonzeroDistV ); 6585 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6576 6586 m_pcEntropyCoder->resetBits(); 6577 6587 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6599 6609 else if( checkTransformSkipUV ) 6600 6610 { 6611 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6601 6612 m_pcEntropyCoder->resetBits(); 6602 6613 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 6795 6806 pcCU->setCbfSubParts( uiAbsSumTransformSkipV ? uiSetCbf : 0, TEXT_CHROMA_V, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC ); 6796 6807 6797 m_pcEntropyCoder->resetBits();6798 6808 uiSingleBitsU = 0; 6799 6809 uiSingleBitsV = 0; … … 6801 6811 if( uiAbsSumTransformSkipU ) 6802 6812 { 6813 m_pcEntropyCoder->resetBits(); 6803 6814 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 6804 6815 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); … … 6843 6854 if( uiAbsSumTransformSkipV ) 6844 6855 { 6856 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 6857 m_pcEntropyCoder->resetBits(); 6845 6858 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 6846 6859 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 6847 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsU;6860 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 6848 6861 6849 6862 curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr(); -
branches/HTM-12.1-dev0/source/Lib/TLibEncoder/TEncTop.cpp
r1076 r1081 854 854 { 855 855 TComVUI* pcVUI = m_cSPS.getVuiParameters(); 856 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioI dc() != -1);856 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag()); 857 857 pcVUI->setAspectRatioIdc(getAspectRatioIdc()); 858 858 pcVUI->setSarWidth(getSarWidth()); … … 1288 1288 Void TEncTop::xInitPPSforTiles() 1289 1289 { 1290 m_cPPS.set UniformSpacingFlag( m_iUniformSpacingIdr);1291 m_cPPS.setNum ColumnsMinus1( m_iNumColumnsMinus1 );1292 m_cPPS.setNum RowsMinus1( m_iNumRowsMinus1 );1293 if( m_iUniformSpacingIdr == 0)1294 { 1295 m_cPPS.set ColumnWidth( m_puiColumnWidth );1296 m_cPPS.set RowHeight( 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 ); 1297 1297 } 1298 1298 m_cPPS.setLoopFilterAcrossTilesEnabledFlag( m_loopFilterAcrossTilesEnabledFlag ); 1299 1299 1300 1300 // # substreams is "per tile" when tiles are independent. 1301 if (m_iWaveFrontSynchro 1302 ) 1301 if (m_iWaveFrontSynchro ) 1303 1302 { 1304 1303 m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1)); … … 1326 1325 } 1327 1326 1328 if( m_iNumColumnsMinus1 && m_iUniformSpacingIdr==0)1327 if( m_iNumColumnsMinus1 && !m_tileUniformSpacingFlag ) 1329 1328 { 1330 1329 for(Int i=0; i<m_iNumColumnsMinus1; i++) 1331 1330 { 1332 uiCummulativeColumnWidth += m_ puiColumnWidth[i];1331 uiCummulativeColumnWidth += m_tileColumnWidth[i]; 1333 1332 } 1334 1333 … … 1353 1352 } 1354 1353 1355 if( m_iNumRowsMinus1 && m_iUniformSpacingIdr==0)1354 if( m_iNumRowsMinus1 && !m_tileUniformSpacingFlag ) 1356 1355 { 1357 1356 for(Int i=0; i<m_iNumRowsMinus1; i++) 1358 uiCummulativeRowHeight += m_ puiRowHeight[i];1357 uiCummulativeRowHeight += m_tileRowHeight[i]; 1359 1358 1360 1359 if( uiCummulativeRowHeight >= iHeightInCU ) -
branches/HTM-12.1-dev0/source/Lib/TLibVideoIO/TVideoIOYuv.cpp
r872 r1081 470 470 Bool retval = true; 471 471 472 if ((width==0)||(height==0)) 473 { 474 printf ("\nWarning: writing %d x %d luma sample output picture!", width, height); 475 } 476 472 477 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0) 473 478 { … … 563 568 564 569 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 } 565 575 566 576 if (m_bitDepthShiftY != 0 || m_bitDepthShiftC != 0)
Note: See TracChangeset for help on using the changeset viewer.