Changeset 1210 in SHVCSoftware for branches/SHM-dev/source
- Timestamp:
- 8 Jul 2015, 22:47:39 (9 years ago)
- Location:
- branches/SHM-dev/source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.cpp
r1203 r1210 245 245 { 246 246 bNewPicture = m_acTDecTop[nalu.m_layerId].decode(nalu, m_iSkipFrame, m_aiPOCLastDisplay[nalu.m_layerId], curLayerId, bNewPOC); 247 #if POC_RESET_IDC_DECODER 248 if ( (bNewPicture && m_acTDecTop[nalu.m_layerId].getParseIdc() == 3) || (m_acTDecTop[nalu.m_layerId].getParseIdc() == 0) ) 247 248 #if SVC_POC 249 if( (bNewPicture && m_acTDecTop[nalu.m_layerId].getParseIdc() == 3) || (m_acTDecTop[nalu.m_layerId].getParseIdc() == 0) ) 249 250 #else 250 251 if (bNewPicture) … … 265 266 #endif 266 267 } 267 #if POC_RESET_IDC_DECODER268 #if SVC_POC 268 269 else if(m_acTDecTop[nalu.m_layerId].getParseIdc() == 1) 269 270 { … … 281 282 } 282 283 283 #if POC_RESET_IDC_DECODER284 if 284 #if SVC_POC 285 if( ( (bNewPicture && m_acTDecTop[nalu.m_layerId].getParseIdc() == 3) || m_acTDecTop[nalu.m_layerId].getParseIdc() == 0 || !bitstreamFile || nalu.m_nalUnitType == NAL_UNIT_EOS ) && 285 286 !m_acTDecTop[nalu.m_layerId].getFirstSliceInSequence() ) 286 287 #else … … 310 311 } 311 312 312 #if POC_RESET_IDC_DECODER313 #if SVC_POC 313 314 if( bNewPicture && m_acTDecTop[nalu.m_layerId].getParseIdc() == 0 ) 314 315 { … … 342 343 } 343 344 344 #if POC_RESET_IDC_DECODER345 #if SVC_POC 345 346 if( bNewPicture && m_acTDecTop[nalu.m_layerId].getParseIdc() != 0 ) 346 347 // New picture, slice header parsed but picture not decoded … … 1401 1402 1402 1403 // Find the status of the DPB 1403 #if POC_RESET_IDC_DECODER1404 #if SVC_POC 1404 1405 xFindDPBStatus(listOfPocs, listOfPocsInEachLayer, listOfPocsPositionInEachLayer, dpbStatus, false); 1405 1406 #else … … 1786 1787 , std::vector<Int> *listOfPocsPositionInEachLayer 1787 1788 , DpbStatus &dpbStatus 1788 #if POC_RESET_IDC_DECODER1789 1789 , Bool notOutputCurrAu 1790 #endif1791 1790 ) 1792 1791 { … … 1817 1816 vps = pic->getSlice(0)->getVPS(); 1818 1817 } 1819 #if POC_RESET_IDC_DECODER 1818 1820 1819 if( !(pic->isCurrAu() && notOutputCurrAu ) ) 1821 1820 { 1822 #endif1823 1821 std::vector<Int>::iterator it; 1824 1822 if( pic->getOutputMark() ) // && pic->getPOC() > m_aiPOCLastDisplay[i]) 1825 1823 { 1826 1824 it = find( listOfPocs.begin(), listOfPocs.end(), pic->getPOC() ); // Check if already included 1825 1827 1826 if( it == listOfPocs.end() ) // New POC value - i.e. new AU - add to the list 1828 1827 { … … 1832 1831 listOfPocsPositionInEachLayer [i].push_back( picPositionInList ); // For ease of access 1833 1832 } 1833 1834 1834 if( pic->getSlice(0)->isReferenced() || pic->getOutputMark() ) 1835 1835 { 1836 1836 dpbStatus.m_numPicsInSubDpb[i]++; // Count pictures that are "used for reference" or "needed for output" 1837 1837 } 1838 #if POC_RESET_IDC_DECODER 1839 } 1840 #endif 1841 } 1838 } 1839 } 1840 1842 1841 iterPic++; 1843 1842 picPositionInList++; … … 1874 1873 } 1875 1874 1876 #if POC_RESET_IDC_DECODER1877 1875 Void TAppDecTop::outputAllPictures(Int layerId, Bool notOutputCurrPic) 1878 1876 { … … 1900 1898 } 1901 1899 } 1902 #endif1903 1900 #endif 1904 1901 -
branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.h
r1100 r1210 111 111 112 112 Void xOutputAndMarkPic( TComPic *pic, const Char *reconFile, const Int layerId, Int &pocLastDisplay, DpbStatus &dpbStatus); 113 #if POC_RESET_IDC_DECODER114 113 Void outputAllPictures(Int layerId, Bool notOutputCurrAu); 115 #endif116 114 Void xFindDPBStatus( std::vector<Int> &listOfPocs 117 115 , std::vector<Int> *listOfPocsInEachLayer 118 116 , std::vector<Int> *listOfPocsPositionInEachLayer 119 117 , DpbStatus &dpbStatus 120 #if POC_RESET_IDC_DECODER121 118 , Bool notOutputCurrAu = true 122 #endif123 119 ); 124 120 -
branches/SHM-dev/source/Lib/TLibCommon/TComPic.h
r1208 r1210 95 95 Bool m_equalPictureSizeAndOffsetFlag[MAX_LAYERS]; 96 96 #endif 97 #endif98 97 #if Q0048_CGS_3D_ASYMLUT 99 98 Int m_nFrameBit; 100 99 #endif 101 #if POC_RESET_IDC_DECODER102 100 Bool m_currAuFlag; 103 101 #endif … … 220 218 Int getFrameBit() { return m_nFrameBit; } 221 219 #endif 222 #if POC_RESET_IDC_DECODER223 220 Bool isCurrAu() { return m_currAuFlag; } 224 221 Void setCurrAuFlag(Bool x) {m_currAuFlag = x; } 225 #endif226 222 #endif //SVC_EXTENSION 227 223 };// END CLASS DEFINITION TComPic -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp
r1209 r1210 301 301 pcPic = *(iterPic); 302 302 } 303 #if POC_RESET_IDC_DECODER303 #if SVC_EXTENSION 304 304 assert( pcPic->getSlice(0)->isReferenced() ); 305 305 #endif … … 2303 2303 , m_scalingListRefLayerId ( 0 ) 2304 2304 #endif 2305 #if POC_RESET_IDC2306 2305 , m_pocResetInfoPresentFlag (false) 2307 #endif2308 2306 , m_numRefLayerLocationOffsets ( 0 ) 2309 2307 #if Q0048_CGS_3D_ASYMLUT … … 3680 3678 return false; 3681 3679 } 3682 #if POC_RESET_IDC_DECODER 3680 3683 3681 TComPic* pic = xGetRefPic( rcListPic, getPOC() ); 3684 3682 … … 3693 3691 3694 3692 return true; 3695 #else3696 setBaseColPic(refLayerIdc, xGetRefPic(rcListPic, getPOC()));3697 return true;3698 #endif3699 3693 } 3700 3694 … … 3813 3807 } 3814 3808 3815 Bool TComSlice::getBlaPicFlag 3809 Bool TComSlice::getBlaPicFlag() 3816 3810 { 3817 3811 return getNalUnitType() == NAL_UNIT_CODED_SLICE_BLA_N_LP … … 3820 3814 } 3821 3815 3822 Bool TComSlice::getCraPicFlag 3816 Bool TComSlice::getCraPicFlag() 3823 3817 { 3824 3818 return getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA; 3825 3819 } 3826 3820 3827 #if POC_RESET_IDC_DECODER 3828 Bool TComSlice::getRaslPicFlag () 3821 Bool TComSlice::getRaslPicFlag() 3829 3822 { 3830 3823 return getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_R 3831 3824 || getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_N; 3832 3825 } 3833 Bool TComSlice::getRadlPicFlag () 3826 3827 Bool TComSlice::getRadlPicFlag() 3834 3828 { 3835 3829 return getNalUnitType() == NAL_UNIT_CODED_SLICE_RADL_R 3836 3830 || getNalUnitType() == NAL_UNIT_CODED_SLICE_RADL_N; 3837 3831 } 3838 #endif3839 3832 3840 3833 Void TComSlice::decrementRefPocValues(Int const decrementValue) -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h
r1209 r1210 1657 1657 UInt m_scalingListRefLayerId; 1658 1658 #endif 1659 #if POC_RESET_IDC1660 1659 Bool m_pocResetInfoPresentFlag; 1661 #endif1662 1660 UInt m_numRefLayerLocationOffsets; 1663 1661 UInt m_refLocationOffsetLayerId[MAX_LAYERS]; … … 1806 1804 Void setSliceHeaderExtensionPresentFlag (Bool val) { m_sliceHeaderExtensionPresentFlag = val; } 1807 1805 #if SVC_EXTENSION 1808 Int getExtensionFlag() { return m_extensionFlag; }1809 Void setExtensionFlag(Int n) { m_extensionFlag = n; }1806 Int getExtensionFlag() { return m_extensionFlag; } 1807 Void setExtensionFlag(Int n) { m_extensionFlag = n; } 1810 1808 #if SCALINGLIST_INFERRING 1811 UInt getLayerId() { return m_layerId; } 1812 Void setLayerId( UInt layerId ) { m_layerId = layerId; } 1813 Bool getInferScalingListFlag() { return m_inferScalingListFlag; } 1814 UInt getScalingListRefLayerId() { return m_scalingListRefLayerId; } 1815 Void setInferScalingListFlag( Bool flag ) { m_inferScalingListFlag = flag; } 1816 Void setScalingListRefLayerId( UInt layerId ) { m_scalingListRefLayerId = layerId; } 1817 #endif 1818 #if POC_RESET_IDC 1819 Bool getPocResetInfoPresentFlag () { return m_pocResetInfoPresentFlag; } 1820 Void setPocResetInfoPresentFlag (const Bool val) { m_pocResetInfoPresentFlag = val; } 1821 #endif 1822 UInt getNumRefLayerLocationOffsets() { return m_numRefLayerLocationOffsets; } 1823 Void setNumRefLayerLocationOffsets(Int x) { m_numRefLayerLocationOffsets = x; } 1824 1825 UInt getRefLocationOffsetLayerId(Int x) { return m_refLocationOffsetLayerId[x]; } 1826 Void setRefLocationOffsetLayerId(Int x, UInt id) { m_refLocationOffsetLayerId[x] = id; } 1809 UInt getLayerId() { return m_layerId; } 1810 Void setLayerId( UInt layerId ) { m_layerId = layerId; } 1811 Bool getInferScalingListFlag() { return m_inferScalingListFlag; } 1812 UInt getScalingListRefLayerId() { return m_scalingListRefLayerId; } 1813 Void setInferScalingListFlag( Bool flag ) { m_inferScalingListFlag = flag; } 1814 Void setScalingListRefLayerId( UInt layerId ) { m_scalingListRefLayerId = layerId; } 1815 #endif 1816 Bool getPocResetInfoPresentFlag() { return m_pocResetInfoPresentFlag; } 1817 Void setPocResetInfoPresentFlag(const Bool val) { m_pocResetInfoPresentFlag = val; } 1818 UInt getNumRefLayerLocationOffsets() { return m_numRefLayerLocationOffsets; } 1819 Void setNumRefLayerLocationOffsets(Int x) { m_numRefLayerLocationOffsets = x; } 1820 1821 UInt getRefLocationOffsetLayerId(Int x) { return m_refLocationOffsetLayerId[x]; } 1822 Void setRefLocationOffsetLayerId(Int x, UInt id) { m_refLocationOffsetLayerId[x] = id; } 1827 1823 Window& getScaledRefLayerWindowForLayer( Int layerId ); 1828 1824 … … 2128 2124 2129 2125 #if SVC_EXTENSION 2130 #if POC_RESET_IDC_DECODER2131 2126 Void setPrevTid0POC( Int x ) { m_prevTid0POC = x; } 2132 #endif2133 2127 Void setAssociatedIrapPocBeforeReset(Int x) { m_associatedIrapPocBeforeReset = x; } 2134 2128 Int getAssociatedIrapPocBeforeReset( ) { return m_associatedIrapPocBeforeReset; } … … 2360 2354 Bool getBlaPicFlag (); 2361 2355 Bool getCraPicFlag (); 2362 #if POC_RESET_IDC_DECODER2363 2356 Bool getRaslPicFlag (); 2364 2357 Bool getRadlPicFlag (); 2365 #endif2366 2358 Int getPicOrderCntLsb() { return m_picOrderCntLsb; } 2367 2359 Void setPicOrderCntLsb(Int x) { m_picOrderCntLsb = x; } -
branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h
r1209 r1210 67 67 #define R0179_ENC_OPT_3DLUT_SIZE 0 ///< JCTVC-R0179: RD decision based LUT size selection 68 68 #endif 69 #define POC_RESET_IDC 1 ///< JCTVC-P0041: Include poc_reset_idc and related derivation 70 #if POC_RESET_IDC 71 #define POC_RESET_IDC_DECODER 1 ///< JCTVC-P0041: Include support of enabling POC reset at the decoder 72 #endif 69 73 70 #define SCALINGLIST_INFERRING 1 ///< JCTVC-N0371: inter-layer scaling list 74 71 -
branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1207 r1210 1285 1285 READ_CODE(sps->getBitsForPOC(), uiCode, "pic_order_cnt_lsb"); 1286 1286 #if SVC_EXTENSION 1287 #if POC_RESET_IDC_DECODER1288 1287 pcSlice->setPicOrderCntLsb( uiCode ); 1289 #endif 1288 1290 1289 iPOClsb = uiCode; 1291 1290 #else … … 1320 1319 #if SVC_EXTENSION 1321 1320 } 1322 #if POC_RESET_IDC_DECODER1323 1321 else 1324 1322 { 1325 1323 pcSlice->setPicOrderCntLsb( 0 ); 1326 1324 } 1327 #endif 1325 1328 1326 if( !pcSlice->getIdrPicFlag() ) 1329 1327 { … … 1988 1986 } 1989 1987 1990 #if !POC_RESET_IDC_DECODER1991 Int maxPocLsb = 1 << pcSlice->getSPS()->getBitsForPOC();1992 #endif1993 1988 if( pcSlice->getPocMsbValPresentFlag() ) 1994 1989 { 1995 1990 READ_UVLC( uiCode, "poc_msb_cycle_val"); pcSlice->setPocMsbVal( uiCode ); 1996 1997 #if !POC_RESET_IDC_DECODER1998 // Update POC of the slice based on this MSB val1999 Int pocLsb = pcSlice->getPOC() % maxPocLsb;2000 pcSlice->setPOC((pcSlice->getPocMsbVal() * maxPocLsb) + pocLsb);2001 }2002 else2003 {2004 pcSlice->setPocMsbVal( pcSlice->getPOC() / maxPocLsb );2005 #endif2006 1991 } 2007 1992 -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
r1208 r1210 108 108 m_firstPicInLayerDecodedFlag = false; 109 109 #endif 110 #if POC_RESET_IDC_DECODER111 110 m_parseIdc = -1; 112 111 m_lastPocPeriodId = -1; 113 112 m_prevPicOrderCnt = 0; 114 #endif115 113 #if Q0048_CGS_3D_ASYMLUT 116 114 m_pColorMappedPic = NULL; … … 863 861 } 864 862 865 #if POC_RESET_IDC_DECODER863 #if SVC_POC 866 864 if( m_parseIdc != -1 ) // Second pass for a POC resetting picture 867 865 { … … 956 954 957 955 #if ALIGNED_BUMPING 958 #if POC_RESET_IDC_DECODER959 956 UInt affectedLayerList[MAX_LAYERS]; 960 957 Int numAffectedLayers; … … 1136 1133 } 1137 1134 } 1138 #else1139 if (bNewPOC || m_layerId!=m_uiPrevLayerId)1140 {1141 #endif1142 1135 m_apcSlicePilot->applyReferencePictureSet(m_cListPic, m_apcSlicePilot->getRPS()); 1143 1136 } 1144 #endif 1145 #if POC_RESET_IDC_DECODER 1146 if (!m_apcSlicePilot->getDependentSliceSegmentFlag() && (bNewPOC || m_layerId!=m_uiPrevLayerId || m_parseIdc == 1) && !m_bFirstSliceInSequence ) 1137 1138 if( !m_apcSlicePilot->getDependentSliceSegmentFlag() && (bNewPOC || m_layerId!=m_uiPrevLayerId || m_parseIdc == 1) && !m_bFirstSliceInSequence ) 1147 1139 #else 1148 1140 if (!m_apcSlicePilot->getDependentSliceSegmentFlag() && (bNewPOC || m_layerId!=m_uiPrevLayerId) && !m_bFirstSliceInSequence ) … … 1155 1147 } 1156 1148 1157 #if SVC_EXTENSION1158 #if POC_RESET_IDC_DECODER1159 1149 m_parseIdc = -1; 1160 #endif1161 1150 1162 1151 if( m_apcSlicePilot->getTLayer() == 0 && m_apcSlicePilot->getEnableTMVPFlag() == 0 ) … … 1181 1170 } 1182 1171 m_apcSlicePilot->setAvailableForTMVPRefFlag( true ); 1183 #endif1184 1172 1185 1173 // actual decoding starts here 1186 1174 xActivateParameterSets(); 1187 1175 1188 #if SVC_EXTENSION1189 1176 // Initialize ILRP if needed, only for the current layer 1190 1177 // ILRP intialization should go along with activation of parameters sets, 1191 1178 // although activation of parameter sets itself need not be done for each and every slice!!! 1192 1179 xInitILRP(m_apcSlicePilot); 1193 #endif1194 1180 1195 1181 if (!m_apcSlicePilot->getDependentSliceSegmentFlag()) … … 1414 1400 xGetNewPicBuffer (m_apcSlicePilot, m_pcPic); 1415 1401 1416 #if POC_RESET_IDC_DECODER1402 #if SVC_POC 1417 1403 m_pcPic->setCurrAuFlag( true ); 1418 1404 … … 2466 2452 } 2467 2453 2468 #if POC_RESET_IDC_DECODER2469 2454 Void TDecTop::markAllPicsAsNoCurrAu(TComVPS *vps) 2470 2455 { … … 2481 2466 } 2482 2467 } 2483 #endif 2468 2484 2469 #if Q0048_CGS_3D_ASYMLUT 2485 2470 Void TDecTop::initAsymLut(TComSlice *pcSlice) -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.h
r1205 r1210 150 150 Bool m_firstPicInLayerDecodedFlag; 151 151 #endif 152 #if POC_RESET_IDC_DECODER153 152 Int m_parseIdc; 154 153 Int m_lastPocPeriodId; 155 154 Int m_prevPicOrderCnt; 156 #endif157 155 #if CONFORMANCE_BITSTREAM_MODE 158 156 Bool m_confModeFlag; … … 212 210 213 211 #if SVC_EXTENSION 214 #if POC_RESET_IDC_DECODER215 212 Int getParseIdc () { return m_parseIdc; } 216 213 Void setParseIdc (Int x) { m_parseIdc = x; } … … 222 219 Int getPrevPicOrderCnt () { return m_prevPicOrderCnt; } 223 220 Void setPrevPicOrderCnt (Int const x) { m_prevPicOrderCnt = x; } 224 #endif 221 225 222 UInt getLayerId () { return m_layerId; } 226 223 Void setLayerId (UInt layer) { m_layerId = layer; }
Note: See TracChangeset for help on using the changeset viewer.