Changeset 823 in SHVCSoftware for branches/SHM-dev/source/Lib/TLibEncoder
- Timestamp:
- 9 Jul 2014, 03:42:42 (11 years ago)
- Location:
- branches/SHM-dev/source/Lib/TLibEncoder
- Files:
-
- 6 edited
-
TEncCavlc.cpp (modified) (2 diffs)
-
TEncCfg.h (modified) (8 diffs)
-
TEncGOP.cpp (modified) (6 diffs)
-
TEncGOP.h (modified) (1 diff)
-
TEncSearch.cpp (modified) (10 diffs)
-
TEncTop.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
r815 r823 193 193 if( pcPPS->getTilesEnabledFlag() ) 194 194 { 195 WRITE_UVLC( pcPPS->getNum ColumnsMinus1(), "num_tile_columns_minus1" );196 WRITE_UVLC( pcPPS->get NumRowsMinus1(), "num_tile_rows_minus1" );197 WRITE_FLAG( pcPPS->get UniformSpacingFlag(), "uniform_spacing_flag" );198 if( pcPPS->getUniformSpacingFlag() == 0)199 { 200 for(UInt i=0; i<pcPPS->getNum ColumnsMinus1(); i++)201 { 202 WRITE_UVLC( pcPPS->get ColumnWidth(i)-1, "column_width_minus1" );203 } 204 for(UInt i=0; i<pcPPS->get NumRowsMinus1(); i++)205 { 206 WRITE_UVLC( pcPPS->get RowHeight(i)-1, "row_height_minus1" );207 } 208 } 209 if(pcPPS->getNum ColumnsMinus1() !=0 || pcPPS->getNumRowsMinus1() !=0)195 WRITE_UVLC( pcPPS->getNumTileColumnsMinus1(), "num_tile_columns_minus1" ); 196 WRITE_UVLC( pcPPS->getTileNumRowsMinus1(), "num_tile_rows_minus1" ); 197 WRITE_FLAG( pcPPS->getTileUniformSpacingFlag(), "uniform_spacing_flag" ); 198 if( !pcPPS->getTileUniformSpacingFlag() ) 199 { 200 for(UInt i=0; i<pcPPS->getNumTileColumnsMinus1(); i++) 201 { 202 WRITE_UVLC( pcPPS->getTileColumnWidth(i)-1, "column_width_minus1" ); 203 } 204 for(UInt i=0; i<pcPPS->getTileNumRowsMinus1(); i++) 205 { 206 WRITE_UVLC( pcPPS->getTileRowHeight(i)-1, "row_height_minus1" ); 207 } 208 } 209 if(pcPPS->getNumTileColumnsMinus1() !=0 || pcPPS->getTileNumRowsMinus1() !=0) 210 210 { 211 211 WRITE_FLAG( pcPPS->getLoopFilterAcrossTilesEnabledFlag()?1 : 0, "loop_filter_across_tiles_enabled_flag"); … … 340 340 if( defaultDisplayWindow.getWindowEnabledFlag() ) 341 341 { 342 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() ,"def_disp_win_left_offset");343 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() ,"def_disp_win_right_offset");344 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() ,"def_disp_win_top_offset");345 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset() ,"def_disp_win_bottom_offset");342 WRITE_UVLC(defaultDisplayWindow.getWindowLeftOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_left_offset"); 343 WRITE_UVLC(defaultDisplayWindow.getWindowRightOffset() / TComSPS::getWinUnitX(pcSPS->getChromaFormatIdc()), "def_disp_win_right_offset"); 344 WRITE_UVLC(defaultDisplayWindow.getWindowTopOffset() / TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_top_offset"); 345 WRITE_UVLC(defaultDisplayWindow.getWindowBottomOffset()/ TComSPS::getWinUnitY(pcSPS->getChromaFormatIdc()), "def_disp_win_bottom_offset"); 346 346 } 347 347 TimingInfo *timingInfo = pcVUI->getTimingInfo(); -
branches/SHM-dev/source/Lib/TLibEncoder/TEncCfg.h
r815 r823 107 107 Int m_iSourceWidth; 108 108 Int m_iSourceHeight; 109 Int m_conformanceMode;110 109 Window m_conformanceWindow; 111 110 Int m_framesToBeEncoded; … … 208 207 Bool m_bPCMFilterDisableFlag; 209 208 Bool m_loopFilterAcrossTilesEnabledFlag; 210 Int m_iUniformSpacingIdr;209 Bool m_tileUniformSpacingFlag; 211 210 Int m_iNumColumnsMinus1; 212 UInt* m_puiColumnWidth;213 211 Int m_iNumRowsMinus1; 214 UInt* m_puiRowHeight; 212 std::vector<Int> m_tileColumnWidth; 213 std::vector<Int> m_tileRowHeight; 215 214 216 215 Int m_iWaveFrontSynchro; … … 248 247 Int* m_codedPivotValue; 249 248 Int* m_targetPivotValue; 250 #if P0050_KNEE_FUNCTION_SEI251 Bool m_kneeSEIEnabled;252 Int m_kneeSEIId;253 Bool m_kneeSEICancelFlag;254 Bool m_kneeSEIPersistenceFlag;255 Bool m_kneeSEIMappingFlag;256 Int m_kneeSEIInputDrange;257 Int m_kneeSEIInputDispLuminance;258 Int m_kneeSEIOutputDrange;259 Int m_kneeSEIOutputDispLuminance;260 Int m_kneeSEINumKneePointsMinus1;261 Int* m_kneeSEIInputKneePoint;262 Int* m_kneeSEIOutputKneePoint;263 #endif264 #if Q0074_SEI_COLOR_MAPPING265 Char* m_seiColorMappingFile;266 #endif267 249 Int m_framePackingSEIEnabled; 268 250 Int m_framePackingSEIType; … … 276 258 Int m_SOPDescriptionSEIEnabled; 277 259 Int m_scalableNestingSEIEnabled; 278 #if Q0189_TMVP_CONSTRAINTS279 Int m_TMVPConstraintsSEIEnabled;280 #endif281 260 //====== Weighted Prediction ======== 282 261 Bool m_useWeightedPred; //< Use of Weighting Prediction (P_SLICE) … … 389 368 Int m_nCGSLUTBit; 390 369 #endif 370 #if P0050_KNEE_FUNCTION_SEI 371 Bool m_kneeSEIEnabled; 372 Int m_kneeSEIId; 373 Bool m_kneeSEICancelFlag; 374 Bool m_kneeSEIPersistenceFlag; 375 Bool m_kneeSEIMappingFlag; 376 Int m_kneeSEIInputDrange; 377 Int m_kneeSEIInputDispLuminance; 378 Int m_kneeSEIOutputDrange; 379 Int m_kneeSEIOutputDispLuminance; 380 Int m_kneeSEINumKneePointsMinus1; 381 Int* m_kneeSEIInputKneePoint; 382 Int* m_kneeSEIOutputKneePoint; 383 #endif 384 #if Q0074_SEI_COLOR_MAPPING 385 Char* m_seiColorMappingFile; 386 #endif 387 #if Q0189_TMVP_CONSTRAINTS 388 Int m_TMVPConstraintsSEIEnabled; 389 #endif 391 390 #endif //SVC_EXTENSION 392 391 393 392 public: 394 393 TEncCfg() 395 : m_ puiColumnWidth()396 , m_ puiRowHeight()394 : m_tileColumnWidth() 395 , m_tileRowHeight() 397 396 {} 398 397 399 398 virtual ~TEncCfg() 400 { 401 delete[] m_puiColumnWidth; 402 delete[] m_puiRowHeight; 403 } 399 {} 404 400 405 401 Void setProfile(Profile::Name profile) { m_profile = profile; } … … 437 433 Void setMaxRefPicNum ( Int iMaxRefPicNum ) { m_iMaxRefPicNum = iMaxRefPicNum; } 438 434 439 BoolgetMaxTempLayer () { return m_maxTempLayer; }435 Int getMaxTempLayer () { return m_maxTempLayer; } 440 436 Void setMaxTempLayer ( Int maxTempLayer ) { m_maxTempLayer = maxTempLayer; } 441 437 //======== Transform ============= … … 582 578 Void setLFCrossTileBoundaryFlag ( Bool val ) { m_loopFilterAcrossTilesEnabledFlag = val; } 583 579 Bool getLFCrossTileBoundaryFlag () { return m_loopFilterAcrossTilesEnabledFlag; } 584 Void set UniformSpacingIdr ( Int i ) { m_iUniformSpacingIdr = i; }585 Int getUniformSpacingIdr () { return m_iUniformSpacingIdr; }580 Void setTileUniformSpacingFlag ( Bool b ) { m_tileUniformSpacingFlag = b; } 581 Bool getTileUniformSpacingFlag () { return m_tileUniformSpacingFlag; } 586 582 Void setNumColumnsMinus1 ( Int i ) { m_iNumColumnsMinus1 = i; } 587 583 Int getNumColumnsMinus1 () { return m_iNumColumnsMinus1; } 588 Void setColumnWidth ( UInt* columnWidth ) 589 { 590 if( m_iUniformSpacingIdr == 0 && m_iNumColumnsMinus1 > 0 ) 591 { 592 Int m_iWidthInCU = ( m_iSourceWidth%g_uiMaxCUWidth ) ? m_iSourceWidth/g_uiMaxCUWidth + 1 : m_iSourceWidth/g_uiMaxCUWidth; 593 m_puiColumnWidth = new UInt[ m_iNumColumnsMinus1 ]; 594 595 for(Int i=0; i<m_iNumColumnsMinus1; i++) 596 { 597 m_puiColumnWidth[i] = columnWidth[i]; 598 printf("col: m_iWidthInCU= %4d i=%4d width= %4d\n",m_iWidthInCU,i,m_puiColumnWidth[i]); //AFU 599 } 600 } 601 } 602 UInt getColumnWidth ( UInt columnidx ) { return *( m_puiColumnWidth + columnidx ); } 584 Void setColumnWidth ( const std::vector<Int>& columnWidth ) { m_tileColumnWidth = columnWidth; } 585 UInt getColumnWidth ( UInt columnIdx ) { return m_tileColumnWidth[columnIdx]; } 603 586 Void setNumRowsMinus1 ( Int i ) { m_iNumRowsMinus1 = i; } 604 587 Int getNumRowsMinus1 () { return m_iNumRowsMinus1; } 605 Void setRowHeight (UInt* rowHeight) 606 { 607 if( m_iUniformSpacingIdr == 0 && m_iNumRowsMinus1 > 0 ) 608 { 609 Int m_iHeightInCU = ( m_iSourceHeight%g_uiMaxCUHeight ) ? m_iSourceHeight/g_uiMaxCUHeight + 1 : m_iSourceHeight/g_uiMaxCUHeight; 610 m_puiRowHeight = new UInt[ m_iNumRowsMinus1 ]; 611 612 for(Int i=0; i<m_iNumRowsMinus1; i++) 613 { 614 m_puiRowHeight[i] = rowHeight[i]; 615 printf("row: m_iHeightInCU=%4d i=%4d height=%4d\n",m_iHeightInCU,i,m_puiRowHeight[i]); //AFU 616 } 617 } 618 } 619 UInt getRowHeight ( UInt rowIdx ) { return *( m_puiRowHeight + rowIdx ); } 588 Void setRowHeight ( const std::vector<Int>& rowHeight) { m_tileRowHeight = rowHeight; } 589 UInt getRowHeight ( UInt rowIdx ) { return m_tileRowHeight[rowIdx]; } 620 590 Void xCheckGSParameters(); 621 591 Void setWaveFrontSynchro(Int iWaveFrontSynchro) { m_iWaveFrontSynchro = iWaveFrontSynchro; } … … 865 835 UInt getNumLayer () { return m_numLayer; } 866 836 Void setNumLayer (UInt uiNum) { m_numLayer = uiNum; } 867 Void setConformanceMode (Int mode) { m_conformanceMode = mode; }868 837 Void setConformanceWindow(Window& conformanceWindow ) { m_conformanceWindow = conformanceWindow; } 869 838 Void setElRapSliceTypeB(Int bEnabled) {m_elRapSliceBEnabled = bEnabled;} -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.cpp
r821 r823 1392 1392 if(pcSlice->isTemporalLayerSwitchingPoint(rcListPic) || pcSlice->getSPS()->getTemporalIdNestingFlag()) 1393 1393 { 1394 #if !Q0108_TSA_STSA1394 #if SVC_EXTENSION && !Q0108_TSA_STSA 1395 1395 if( pcSlice->getLayerId() > 0 ) 1396 1396 { … … 1491 1491 if(isSTSA==true) 1492 1492 { 1493 #if !Q0108_TSA_STSA1493 #if SVC_EXTENSION && !Q0108_TSA_STSA 1494 1494 if( pcSlice->getLayerId() > 0 ) 1495 1495 { … … 2054 2054 UInt uiRealEndAddress = uiExternalAddress*pcPic->getNumPartInCU()+uiInternalAddress; 2055 2055 2056 UInt uiCummulativeTileWidth;2057 UInt uiCummulativeTileHeight;2058 2056 Int p, j; 2059 2057 UInt uiEncCUAddr; 2060 2058 2061 //set NumColumnsMinus1 and NumRowsMinus1 2062 pcPic->getPicSym()->setNumColumnsMinus1( pcSlice->getPPS()->getNumColumnsMinus1() ); 2063 pcPic->getPicSym()->setNumRowsMinus1( pcSlice->getPPS()->getNumRowsMinus1() ); 2064 2065 //create the TComTileArray 2066 pcPic->getPicSym()->xCreateTComTileArray(); 2067 2068 if( pcSlice->getPPS()->getUniformSpacingFlag() == 1 ) 2069 { 2070 //set the width for each tile 2071 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 2072 { 2073 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1()+1; p++) 2074 { 2075 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )-> 2076 setTileWidth( (p+1)*pcPic->getPicSym()->getFrameWidthInCU()/(pcPic->getPicSym()->getNumColumnsMinus1()+1) 2077 - (p*pcPic->getPicSym()->getFrameWidthInCU())/(pcPic->getPicSym()->getNumColumnsMinus1()+1) ); 2078 } 2079 } 2080 2081 //set the height for each tile 2082 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 2083 { 2084 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1()+1; p++) 2085 { 2086 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )-> 2087 setTileHeight( (p+1)*pcPic->getPicSym()->getFrameHeightInCU()/(pcPic->getPicSym()->getNumRowsMinus1()+1) 2088 - (p*pcPic->getPicSym()->getFrameHeightInCU())/(pcPic->getPicSym()->getNumRowsMinus1()+1) ); 2089 } 2090 } 2091 } 2092 else 2093 { 2094 //set the width for each tile 2095 for(j=0; j < pcPic->getPicSym()->getNumRowsMinus1()+1; j++) 2096 { 2097 uiCummulativeTileWidth = 0; 2098 for(p=0; p < pcPic->getPicSym()->getNumColumnsMinus1(); p++) 2099 { 2100 pcPic->getPicSym()->getTComTile( j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p )->setTileWidth( pcSlice->getPPS()->getColumnWidth(p) ); 2101 uiCummulativeTileWidth += pcSlice->getPPS()->getColumnWidth(p); 2102 } 2103 pcPic->getPicSym()->getTComTile(j * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + p)->setTileWidth( pcPic->getPicSym()->getFrameWidthInCU()-uiCummulativeTileWidth ); 2104 } 2105 2106 //set the height for each tile 2107 for(j=0; j < pcPic->getPicSym()->getNumColumnsMinus1()+1; j++) 2108 { 2109 uiCummulativeTileHeight = 0; 2110 for(p=0; p < pcPic->getPicSym()->getNumRowsMinus1(); p++) 2111 { 2112 pcPic->getPicSym()->getTComTile( p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j )->setTileHeight( pcSlice->getPPS()->getRowHeight(p) ); 2113 uiCummulativeTileHeight += pcSlice->getPPS()->getRowHeight(p); 2114 } 2115 pcPic->getPicSym()->getTComTile(p * (pcPic->getPicSym()->getNumColumnsMinus1()+1) + j)->setTileHeight( pcPic->getPicSym()->getFrameHeightInCU()-uiCummulativeTileHeight ); 2116 } 2117 } 2118 //intialize each tile of the current picture 2119 pcPic->getPicSym()->xInitTiles(); 2059 pcPic->getPicSym()->initTiles(pcSlice->getPPS()); 2120 2060 2121 2061 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI … … 2783 2723 2784 2724 #if SETTING_NO_OUT_PIC_PRIOR 2725 pcSlice->setNoRaslOutputFlag(false); 2785 2726 if (pcSlice->isIRAP()) 2786 2727 { … … 2790 2731 } 2791 2732 //the inference for NoOutputPriorPicsFlag 2733 // KJS: This cannot happen at the encoder 2792 2734 if (!m_bFirst && pcSlice->isIRAP() && pcSlice->getNoRaslOutputFlag()) 2793 2735 { … … 3679 3621 assert (m_iGopSize > 0); 3680 3622 3681 return;3682 }3683 3684 Void TEncGOP::xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut )3685 {3686 assert( iNumPicRcvd > 0 );3687 // Exception for the first frame3688 if ( iPOCLast == 0 )3689 {3690 m_iGopSize = 1;3691 }3692 else3693 m_iGopSize = m_pcCfg->getGOPSize();3694 3695 assert (m_iGopSize > 0);3696 3697 3623 return; 3698 3624 } -
branches/SHM-dev/source/Lib/TLibEncoder/TEncGOP.h
r815 r823 207 207 protected: 208 208 209 Void xInitGOP( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Bool isField ); 210 Void xInitGOP ( Int iPOC, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut ); 211 Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, Bool isField ); 209 Void xInitGOP ( Int iPOCLast, Int iNumPicRcvd, TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, bool isField ); 210 Void xGetBuffer ( TComList<TComPic*>& rcListPic, TComList<TComPicYuv*>& rcListPicYuvRecOut, Int iNumPicRcvd, Int iTimeOffset, TComPic*& rpcPic, TComPicYuv*& rpcPicYuvRecOut, Int pocCurr, bool isField ); 212 211 213 212 Void xCalculateAddPSNR ( TComPic* pcPic, TComPicYuv* pcPicD, const AccessUnit&, Double dEncTime ); -
branches/SHM-dev/source/Lib/TLibEncoder/TEncSearch.cpp
r815 r823 4896 4896 if( bCodeChroma ) 4897 4897 { 4898 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4899 m_pcEntropyCoder->resetBits(); 4898 4900 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 4899 4901 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); 4900 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsY;4902 uiSingleBitsU = m_pcEntropyCoder->getNumberOfWrittenBits(); 4901 4903 4904 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4905 m_pcEntropyCoder->resetBits(); 4902 4906 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 4903 4907 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 4904 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - ( uiSingleBitsY + uiSingleBitsU );4908 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 4905 4909 } 4906 4910 … … 4939 4943 { 4940 4944 const Double singleCostY = m_pcRdCost->calcRdCost( uiSingleBitsY, uiNonzeroDistY ); 4945 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4941 4946 m_pcEntropyCoder->resetBits(); 4942 4947 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 4964 4969 else if( checkTransformSkipY ) 4965 4970 { 4971 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4966 4972 m_pcEntropyCoder->resetBits(); 4967 4973 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_LUMA, uiTrMode ); … … 5015 5021 { 5016 5022 const Double dSingleCostU = m_pcRdCost->calcRdCost( uiSingleBitsU, uiNonzeroDistU ); 5023 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5017 5024 m_pcEntropyCoder->resetBits(); 5018 5025 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 5040 5047 else if( checkTransformSkipUV ) 5041 5048 { 5049 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5042 5050 m_pcEntropyCoder->resetBits(); 5043 5051 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_U, uiTrMode ); … … 5084 5092 { 5085 5093 const Double dSingleCostV = m_pcRdCost->calcRdCost( uiSingleBitsV, uiNonzeroDistV ); 5094 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5086 5095 m_pcEntropyCoder->resetBits(); 5087 5096 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 5109 5118 else if( checkTransformSkipUV ) 5110 5119 { 5120 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5111 5121 m_pcEntropyCoder->resetBits(); 5112 5122 m_pcEntropyCoder->encodeQtCbfZero( pcCU, TEXT_CHROMA_V, uiTrMode ); … … 5287 5297 pcCU->setCbfSubParts( uiAbsSumTransformSkipV ? uiSetCbf : 0, TEXT_CHROMA_V, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC ); 5288 5298 5289 m_pcEntropyCoder->resetBits();5290 5299 uiSingleBitsU = 0; 5291 5300 uiSingleBitsV = 0; … … 5293 5302 if( uiAbsSumTransformSkipU ) 5294 5303 { 5304 m_pcEntropyCoder->resetBits(); 5295 5305 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_U, uiTrMode ); 5296 5306 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrU, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_U ); … … 5335 5345 if( uiAbsSumTransformSkipV ) 5336 5346 { 5347 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5348 m_pcEntropyCoder->resetBits(); 5337 5349 m_pcEntropyCoder->encodeQtCbf ( pcCU, uiAbsPartIdx, TEXT_CHROMA_V, uiTrMode ); 5338 5350 m_pcEntropyCoder->encodeCoeffNxN( pcCU, pcCoeffCurrV, uiAbsPartIdx, trWidthC, trHeightC, uiDepth, TEXT_CHROMA_V ); 5339 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits() - uiSingleBitsU;5351 uiSingleBitsV = m_pcEntropyCoder->getNumberOfWrittenBits(); 5340 5352 5341 5353 curChromaQpOffset = pcCU->getSlice()->getPPS()->getChromaCrQpOffset() + pcCU->getSlice()->getSliceQpDeltaCr(); -
branches/SHM-dev/source/Lib/TLibEncoder/TEncTop.cpp
r815 r823 1041 1041 { 1042 1042 TComVUI* pcVUI = m_cSPS.getVuiParameters(); 1043 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioI dc() != -1);1043 pcVUI->setAspectRatioInfoPresentFlag(getAspectRatioInfoPresentFlag()); 1044 1044 pcVUI->setAspectRatioIdc(getAspectRatioIdc()); 1045 1045 pcVUI->setSarWidth(getSarWidth()); … … 1477 1477 Void TEncTop::xInitPPSforTiles() 1478 1478 { 1479 m_cPPS.set UniformSpacingFlag( m_iUniformSpacingIdr);1480 m_cPPS.setNum ColumnsMinus1( m_iNumColumnsMinus1 );1481 m_cPPS.setNum RowsMinus1( m_iNumRowsMinus1 );1482 if( m_iUniformSpacingIdr == 0)1483 { 1484 m_cPPS.set ColumnWidth( m_puiColumnWidth );1485 m_cPPS.set RowHeight( m_puiRowHeight );1479 m_cPPS.setTileUniformSpacingFlag( m_tileUniformSpacingFlag ); 1480 m_cPPS.setNumTileColumnsMinus1( m_iNumColumnsMinus1 ); 1481 m_cPPS.setNumTileRowsMinus1( m_iNumRowsMinus1 ); 1482 if( !m_tileUniformSpacingFlag ) 1483 { 1484 m_cPPS.setTileColumnWidth( m_tileColumnWidth ); 1485 m_cPPS.setTileRowHeight( m_tileRowHeight ); 1486 1486 } 1487 1487 m_cPPS.setLoopFilterAcrossTilesEnabledFlag( m_loopFilterAcrossTilesEnabledFlag ); 1488 1488 1489 1489 // # substreams is "per tile" when tiles are independent. 1490 if (m_iWaveFrontSynchro 1491 ) 1490 if (m_iWaveFrontSynchro ) 1492 1491 { 1493 1492 m_cPPS.setNumSubstreams(m_iWaveFrontSubstreams * (m_iNumColumnsMinus1+1)); … … 1515 1514 } 1516 1515 1517 if( m_iNumColumnsMinus1 && m_iUniformSpacingIdr==0)1516 if( m_iNumColumnsMinus1 && !m_tileUniformSpacingFlag ) 1518 1517 { 1519 1518 for(Int i=0; i<m_iNumColumnsMinus1; i++) 1520 1519 { 1521 uiCummulativeColumnWidth += m_ puiColumnWidth[i];1520 uiCummulativeColumnWidth += m_tileColumnWidth[i]; 1522 1521 } 1523 1522 … … 1542 1541 } 1543 1542 1544 if( m_iNumRowsMinus1 && m_iUniformSpacingIdr==0)1543 if( m_iNumRowsMinus1 && !m_tileUniformSpacingFlag ) 1545 1544 { 1546 1545 for(Int i=0; i<m_iNumRowsMinus1; i++) 1547 { 1548 uiCummulativeRowHeight += m_puiRowHeight[i]; 1549 } 1546 uiCummulativeRowHeight += m_tileRowHeight[i]; 1550 1547 1551 1548 if( uiCummulativeRowHeight >= iHeightInCU )
Note: See TracChangeset for help on using the changeset viewer.