Changeset 964 in 3DVCSoftware for trunk/source/Lib/TLibCommon
- Timestamp:
- 5 Jul 2014, 05:16:45 (11 years ago)
- Location:
- trunk/source/Lib/TLibCommon
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/CommonDef.h
r951 r964 60 60 61 61 #if H_MV 62 #define NV_VERSION "11. 0" ///< Current software version63 #define HM_VERSION "1 3.0" ///<62 #define NV_VERSION "11.1" ///< Current software version 63 #define HM_VERSION "14.0" ///< 64 64 #else 65 #define NV_VERSION "1 3.0" ///< Current software version65 #define NV_VERSION "14.0" ///< Current software version 66 66 #endif 67 67 … … 215 215 216 216 // Explicit temporal layer QP offset 217 #define MAX_TLAYER 8///< max number of temporal layer217 #define MAX_TLAYER 7 ///< max number of temporal layer 218 218 #define HB_LAMBDA_FOR_LDC 1 ///< use of B-style lambda for non-key pictures in low-delay mode 219 219 -
trunk/source/Lib/TLibCommon/SEI.h
r884 r964 128 128 SEIActiveParameterSets() 129 129 : activeVPSId (0) 130 , m_ fullRandomAccessFlag (false)131 , m_noParam SetUpdateFlag (false)130 , m_selfContainedCvsFlag (false) 131 , m_noParameterSetUpdateFlag (false) 132 132 , numSpsIdsMinus1 (0) 133 133 {} … … 135 135 136 136 Int activeVPSId; 137 Bool m_ fullRandomAccessFlag;138 Bool m_noParam SetUpdateFlag;137 Bool m_selfContainedCvsFlag; 138 Bool m_noParameterSetUpdateFlag; 139 139 Int numSpsIdsMinus1; 140 std::vector<Int> activeSeqParam SetId;140 std::vector<Int> activeSeqParameterSetId; 141 141 }; 142 142 … … 356 356 Int m_cameraIsoSpeedIdc; 357 357 Int m_cameraIsoSpeedValue; 358 Int m_exposureIndexIdc; 359 Int m_exposureIndexValue; 358 360 Int m_exposureCompensationValueSignFlag; 359 361 Int m_exposureCompensationValueNumerator; -
trunk/source/Lib/TLibCommon/TComDataCU.cpp
r950 r964 2883 2883 } 2884 2884 2885 UChar TComDataCU::getNumPart Inter()2885 UChar TComDataCU::getNumPartitions() 2886 2886 { 2887 2887 UChar iNumPart = 0; … … 6830 6830 #else 6831 6831 picDepth = getSlice()->getIvPic( true, iTargetViewIdx ); 6832 #if !BUG_FIX_TK65 6832 6833 assert(picDepth != NULL); 6834 #endif 6833 6835 #endif 6834 6836 if (picDepth && bDepthRefine) … … 6901 6903 #else 6902 6904 TComPic* picDepth = getSlice()->getIvPic( true, pDInfo->m_aVIdxCan ); 6905 #if !BUG_FIX_TK65 6903 6906 assert(picDepth!=NULL); 6907 #endif 6904 6908 #endif 6905 6909 … … 6960 6964 #else 6961 6965 picDepth = getSlice()->getIvPic( true, viewIndex ); 6966 #if !BUG_FIX_TK65 6962 6967 assert(picDepth!=NULL); 6968 #endif 6963 6969 #endif 6964 6970 if (picDepth && bDepthRefine) … … 7060 7066 #else 7061 7067 picDepth = getSlice()->getIvPic (true, refViewIdx ); 7068 #if !BUG_FIX_TK65 7062 7069 assert(picDepth != NULL); 7070 #endif 7063 7071 #endif 7064 7072 UInt uiPartIdx = 0; //Notes from MTK: Please confirm that using 0 as partition index and partition address is correct for CU-level DoNBDV -
trunk/source/Lib/TLibCommon/TComDataCU.h
r950 r964 559 559 Void getPartIndexAndSize ( UInt uiPartIdx, UInt& ruiPartAddr, Int& riWidth, Int& riHeight ); 560 560 #endif 561 UChar getNumPartInter();561 UChar getNumPartitions (); 562 562 Bool isFirstAbsZorderIdxInDepth (UInt uiAbsPartIdx, UInt uiDepth); 563 563 -
trunk/source/Lib/TLibCommon/TComPic.cpp
r872 r964 55 55 , m_bReconstructed (false) 56 56 , m_bNeededForOutput (false) 57 #if H_MV_HLS_7_VPS_P0300_27 58 , m_bPicOutputFlag (false) 59 #endif 57 60 , m_uiCurrSliceIdx (0) 58 61 , m_bCheckLTMSB (false) -
trunk/source/Lib/TLibCommon/TComPic.h
r872 r964 69 69 Bool m_bReconstructed; 70 70 Bool m_bNeededForOutput; 71 #if H_MV_HLS_7_VPS_P0300_27 72 Bool m_bPicOutputFlag; // Semantics variable 73 #endif 71 74 UInt m_uiCurrSliceIdx; // Index of current slice 72 75 Bool m_bCheckLTMSB; … … 175 178 Void setOutputMark (Bool b) { m_bNeededForOutput = b; } 176 179 Bool getOutputMark () { return m_bNeededForOutput; } 177 180 #if H_MV_HLS_7_VPS_P0300_27 181 Void setPicOutputFlag(Bool b) { m_bPicOutputFlag = b; } 182 Bool getPicOutputFlag() { return m_bPicOutputFlag ; } 183 #endif 184 178 185 Void setNumReorderPics(Int i, UInt tlayer) { m_numReorderPics[tlayer] = i; } 179 186 Int getNumReorderPics(UInt tlayer) { return m_numReorderPics[tlayer]; } -
trunk/source/Lib/TLibCommon/TComPrediction.cpp
r950 r964 1130 1130 } 1131 1131 1132 for ( iPartIdx = 0; iPartIdx < pcCU->getNumPart Inter(); iPartIdx++ )1132 for ( iPartIdx = 0; iPartIdx < pcCU->getNumPartitions(); iPartIdx++ ) 1133 1133 { 1134 1134 pcCU->getPartIndexAndSize( iPartIdx, uiPartAddr, iWidth, iHeight ); -
trunk/source/Lib/TLibCommon/TComRom.cpp
r950 r964 381 381 Bool g_decTraceDispDer = false; 382 382 Bool g_decTraceMvFromMerge = false; 383 Bool g_decTracePicOutput = false; 383 384 Bool g_stopAtPos = false; 384 385 Bool g_outputPos = false; -
trunk/source/Lib/TLibCommon/TComRom.h
r950 r964 225 225 extern UInt64 g_stopAtCounter; // Counter to set breakpoint. 226 226 extern Bool g_traceCopyBack; // Output samples on copy back 227 extern Bool g_decTraceDispDer; // Trace derived disparity vectors (decoder only)227 extern Bool g_decTraceDispDer; // Trace derived disparity vectors (decoder only) 228 228 extern Bool g_decTraceMvFromMerge; // Trace motion vectors obtained from merge (decoder only) 229 extern Bool g_decTracePicOutput; // Trace output of pictures 229 230 extern Bool g_stopAtPos; // Stop at position 230 231 extern Bool g_outputPos; // Output position … … 236 237 #define DTRACE_PU_S(x) writeToTraceFile( x, g_tracePU ); 237 238 #define DTRACE_TU_S(x) writeToTraceFile( x, g_traceTU ); 238 239 239 240 240 Void writeToTraceFile( const Char* symbolName, Int val, Bool doIt ); -
trunk/source/Lib/TLibCommon/TComSampleAdaptiveOffset.cpp
r872 r964 110 110 m_offsetClipTable[compIdx] = NULL; 111 111 } 112 #if !SAO_SGN_FUNC 112 113 m_signTable = NULL; 113 114 #endif 114 115 115 116 m_lineBufWidth = 0; … … 155 156 } 156 157 158 #if !SAO_SGN_FUNC 157 159 //look-up table for clipping 160 Int overallMaxSampleValue=0; 161 #endif 158 162 for(Int compIdx =0; compIdx < NUM_SAO_COMPONENTS; compIdx++) 159 163 { … … 161 165 Int maxSampleValue = (1<< bitDepthSample); //exclusive 162 166 Int maxOffsetValue = (g_saoMaxOffsetQVal[compIdx] << m_offsetStepLog2[compIdx]); 167 #if !SAO_SGN_FUNC 168 if (maxSampleValue>overallMaxSampleValue) overallMaxSampleValue=maxSampleValue; 169 #endif 163 170 164 171 m_offsetClipTable[compIdx] = new Int[(maxSampleValue + maxOffsetValue -1)+ (maxOffsetValue)+1 ]; //positive & negative range plus 0 … … 176 183 *(offsetClipPtr -k -1 ) = 0; 177 184 } 178 if(compIdx == SAO_Y) //g_bitDepthY is always larger than or equal to g_bitDepthC 179 { 180 m_signTable = new Short[ 2*(maxSampleValue-1) + 1 ]; 181 m_sign = &(m_signTable[maxSampleValue-1]); 185 } 186 187 #if !SAO_SGN_FUNC 188 m_signTable = new Short[ 2*(overallMaxSampleValue-1) + 1 ]; 189 m_sign = &(m_signTable[overallMaxSampleValue-1]); 182 190 183 191 m_sign[0] = 0; 184 for(Int k=1; k< maxSampleValue; k++)192 for(Int k=1; k< overallMaxSampleValue; k++) 185 193 { 186 194 m_sign[k] = 1; 187 195 m_sign[-k]= -1; 188 196 } 189 } 190 } 191 197 #endif 192 198 } 193 199 … … 208 214 } 209 215 } 216 #if !SAO_SGN_FUNC 210 217 if( m_signTable ) 211 218 { 212 219 delete[] m_signTable; m_signTable = NULL; 213 220 } 221 #endif 214 222 } 215 223 … … 388 396 for (y=0; y< height; y++) 389 397 { 398 #if SAO_SGN_FUNC 399 signLeft = (Char)sgn(srcLine[startX] - srcLine[startX-1]); 400 #else 390 401 signLeft = (Char)m_sign[srcLine[startX] - srcLine[startX-1]]; 402 #endif 391 403 for (x=startX; x< endX; x++) 392 404 { 405 #if SAO_SGN_FUNC 406 signRight = (Char)sgn(srcLine[x] - srcLine[x+1]); 407 #else 393 408 signRight = (Char)m_sign[srcLine[x] - srcLine[x+1]]; 409 #endif 394 410 edgeType = signRight + signLeft; 395 411 signLeft = -signRight; … … 419 435 for (x=0; x< width; x++) 420 436 { 437 #if SAO_SGN_FUNC 438 signUpLine[x] = (Char)sgn(srcLine[x] - srcLineAbove[x]); 439 #else 421 440 signUpLine[x] = (Char)m_sign[srcLine[x] - srcLineAbove[x]]; 441 #endif 422 442 } 423 443 … … 429 449 for (x=0; x< width; x++) 430 450 { 451 #if SAO_SGN_FUNC 452 signDown = (Char)sgn(srcLine[x] - srcLineBelow[x]); 453 #else 431 454 signDown = (Char)m_sign[srcLine[x] - srcLineBelow[x]]; 455 #endif 432 456 edgeType = signDown + signUpLine[x]; 433 457 signUpLine[x]= -signDown; … … 456 480 for (x=startX; x< endX+1; x++) 457 481 { 482 #if SAO_SGN_FUNC 483 signUpLine[x] = (Char)sgn(srcLineBelow[x] - srcLine[x- 1]); 484 #else 458 485 signUpLine[x] = (Char)m_sign[srcLineBelow[x] - srcLine[x- 1]]; 486 #endif 459 487 } 460 488 … … 465 493 for(x= firstLineStartX; x< firstLineEndX; x++) 466 494 { 495 #if SAO_SGN_FUNC 496 edgeType = sgn(srcLine[x] - srcLineAbove[x- 1]) - signUpLine[x+1]; 497 #else 467 498 edgeType = m_sign[srcLine[x] - srcLineAbove[x- 1]] - signUpLine[x+1]; 499 #endif 468 500 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; 469 501 } … … 479 511 for (x=startX; x<endX; x++) 480 512 { 513 #if SAO_SGN_FUNC 514 signDown = (Char)sgn(srcLine[x] - srcLineBelow[x+ 1]); 515 #else 481 516 signDown = (Char)m_sign[srcLine[x] - srcLineBelow[x+ 1]] ; 517 #endif 482 518 edgeType = signDown + signUpLine[x]; 483 519 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; … … 485 521 signDownLine[x+1] = -signDown; 486 522 } 523 #if SAO_SGN_FUNC 524 signDownLine[startX] = (Char)sgn(srcLineBelow[startX] - srcLine[startX-1]); 525 #else 487 526 signDownLine[startX] = (Char)m_sign[srcLineBelow[startX] - srcLine[startX-1]]; 527 #endif 488 528 489 529 signTmpLine = signUpLine; … … 501 541 for(x= lastLineStartX; x< lastLineEndX; x++) 502 542 { 543 #if SAO_SGN_FUNC 544 edgeType = sgn(srcLine[x] - srcLineBelow[x+ 1]) + signUpLine[x]; 545 #else 503 546 edgeType = m_sign[srcLine[x] - srcLineBelow[x+ 1]] + signUpLine[x]; 547 #endif 504 548 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; 505 549 … … 519 563 for (x=startX-1; x< endX; x++) 520 564 { 565 #if SAO_SGN_FUNC 566 signUpLine[x] = (Char)sgn(srcLineBelow[x] - srcLine[x+1]); 567 #else 521 568 signUpLine[x] = (Char)m_sign[srcLineBelow[x] - srcLine[x+1]]; 569 #endif 522 570 } 523 571 … … 529 577 for(x= firstLineStartX; x< firstLineEndX; x++) 530 578 { 579 #if SAO_SGN_FUNC 580 edgeType = sgn(srcLine[x] - srcLineAbove[x+1]) -signUpLine[x-1]; 581 #else 531 582 edgeType = m_sign[srcLine[x] - srcLineAbove[x+1]] -signUpLine[x-1]; 583 #endif 532 584 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; 533 585 } … … 542 594 for(x= startX; x< endX; x++) 543 595 { 596 #if SAO_SGN_FUNC 597 signDown = (Char)sgn(srcLine[x] - srcLineBelow[x-1]); 598 #else 544 599 signDown = (Char)m_sign[srcLine[x] - srcLineBelow[x-1]] ; 600 #endif 545 601 edgeType = signDown + signUpLine[x]; 546 602 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; 547 603 signUpLine[x-1] = -signDown; 548 604 } 605 #if SAO_SGN_FUNC 606 signUpLine[endX-1] = (Char)sgn(srcLineBelow[endX-1] - srcLine[endX]); 607 #else 549 608 signUpLine[endX-1] = (Char)m_sign[srcLineBelow[endX-1] - srcLine[endX]]; 609 #endif 550 610 srcLine += srcStride; 551 611 resLine += resStride; … … 558 618 for(x= lastLineStartX; x< lastLineEndX; x++) 559 619 { 620 #if SAO_SGN_FUNC 621 edgeType = sgn(srcLine[x] - srcLineBelow[x-1]) + signUpLine[x]; 622 #else 560 623 edgeType = m_sign[srcLine[x] - srcLineBelow[x-1]] + signUpLine[x]; 624 #endif 561 625 resLine[x] = offsetClip[srcLine[x] + offset[edgeType]]; 562 626 -
trunk/source/Lib/TLibCommon/TComSampleAdaptiveOffset.h
r872 r964 55 55 extern UInt g_saoMaxOffsetQVal[NUM_SAO_COMPONENTS]; 56 56 57 #if SAO_SGN_FUNC 58 template <typename T> int sgn(T val) 59 { 60 return (T(0) < val) - (val < T(0)); 61 } 62 #endif 63 57 64 class TComSampleAdaptiveOffset 58 65 { … … 79 86 UInt m_offsetStepLog2[NUM_SAO_COMPONENTS]; //offset step 80 87 Int* m_offsetClip[NUM_SAO_COMPONENTS]; //clip table for fast operation 88 #if !SAO_SGN_FUNC 81 89 Short* m_sign; //sign table for fast operation 90 #endif 82 91 TComPicYuv* m_tempPicYuv; //temporary buffer 83 92 Int m_picWidth; … … 96 105 Bool m_picSAOEnabled[NUM_SAO_COMPONENTS]; 97 106 Int* m_offsetClipTable[NUM_SAO_COMPONENTS]; 107 #if !SAO_SGN_FUNC 98 108 Short* m_signTable; 99 109 #endif 100 110 }; 101 111 -
trunk/source/Lib/TLibCommon/TComSlice.cpp
r950 r964 1 /* The copyright in this software is being made available under the BSD1 /* The copyright in this software is being made available under the BSD 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are … … 45 45 //! \{ 46 46 47 47 48 TComSlice::TComSlice() 48 49 : m_iPPSId ( -1 ) 50 #if H_MV_HLS_8_POC_Q0142_32 51 , m_slicePicOrderCntLsb ( 0 ) 52 #endif 49 53 , m_iPOC ( 0 ) 50 54 , m_iLastIDR ( 0 ) … … 70 74 , m_pcPic ( NULL ) 71 75 , m_colFromL0Flag ( 1 ) 76 #if SETTING_NO_OUT_PIC_PRIOR 77 , m_noOutputPriorPicsFlag ( false ) 78 , m_noRaslOutputFlag ( false ) 79 , m_handleCraAsBlaFlag ( false ) 80 #endif 72 81 , m_colRefIdx ( 0 ) 73 82 , m_uiTLayer ( 0 ) … … 459 468 { 460 469 // The variable NumPocTotalCurr is derived as specified in subclause 7.4.7.2. It is a requirement of bitstream conformance that the following applies to the value of NumPocTotalCurr: 461 // ?If the current picture is a BLA or CRA picture, the value of NumPocTotalCurr shall be equal to 0.462 // ?Otherwise, when the current picture contains a P or B slice, the value of NumPocTotalCurr shall not be equal to 0.470 // - If the current picture is a BLA or CRA picture, the value of NumPocTotalCurr shall be equal to 0. 471 // - Otherwise, when the current picture contains a P or B slice, the value of NumPocTotalCurr shall not be equal to 0. 463 472 if (getRapPicFlag()) 464 473 { … … 903 912 pocCRA = pocCurr; 904 913 } 914 #if EFFICIENT_FIELD_IRAP 915 bRefreshPending = true; 916 #endif 905 917 } 906 918 else // CRA or No DR 907 919 { 920 #if EFFICIENT_FIELD_IRAP 921 if(getAssociatedIRAPType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || getAssociatedIRAPType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL) 922 { 923 if (bRefreshPending==true && pocCurr > m_iLastIDR) // IDR reference marking pending 924 { 925 TComList<TComPic*>::iterator iterPic = rcListPic.begin(); 926 while (iterPic != rcListPic.end()) 927 { 928 rpcPic = *(iterPic); 929 if (rpcPic->getPOC() != pocCurr && rpcPic->getPOC() != m_iLastIDR) 930 { 931 rpcPic->getSlice(0)->setReferenced(false); 932 } 933 iterPic++; 934 } 935 bRefreshPending = false; 936 } 937 } 938 else 939 { 940 #endif 908 941 if (bRefreshPending==true && pocCurr > pocCRA) // CRA reference marking pending 909 942 { … … 920 953 bRefreshPending = false; 921 954 } 955 #if EFFICIENT_FIELD_IRAP 956 } 957 #endif 922 958 if ( getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA ) // CRA picture found 923 959 { … … 1194 1230 // in decoding order shall precede the IRAP picture in output order. 1195 1231 // (Note that any picture following in output order would be present in the DPB) 1232 #if !SETTING_NO_OUT_PIC_PRIOR 1196 1233 if(rpcPic->getSlice(0)->getPicOutputFlag() == 1) 1234 #else 1235 if(rpcPic->getSlice(0)->getPicOutputFlag() == 1 && !this->getNoOutputPriorPicsFlag()) 1236 #endif 1197 1237 { 1198 1238 if(nalUnitType == NAL_UNIT_CODED_SLICE_BLA_N_LP || … … 1370 1410 /** Function for applying picture marking based on the Reference Picture Set in pReferencePictureSet. 1371 1411 */ 1412 #if ALLOW_RECOVERY_POINT_AS_RAP 1413 Int TComSlice::checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess, Bool bUseRecoveryPoint) 1414 #else 1372 1415 Int TComSlice::checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess) 1373 { 1416 #endif 1417 { 1418 #if ALLOW_RECOVERY_POINT_AS_RAP 1419 Int atLeastOneUnabledByRecoveryPoint = 0; 1420 Int atLeastOneFlushedByPreviousIDR = 0; 1421 #endif 1374 1422 TComPic* rpcPic; 1375 1423 Int i, isAvailable; … … 1392 1440 if(rpcPic->getIsLongTerm() && (rpcPic->getPicSym()->getSlice(0)->getPOC()) == pReferencePictureSet->getPOC(i) && rpcPic->getSlice(0)->isReferenced()) 1393 1441 { 1442 #if ALLOW_RECOVERY_POINT_AS_RAP 1443 if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) 1444 { 1445 isAvailable = 0; 1446 } 1447 else 1448 { 1394 1449 isAvailable = 1; 1450 } 1451 #else 1452 isAvailable = 1; 1453 #endif 1395 1454 } 1396 1455 } … … 1402 1461 if(rpcPic->getIsLongTerm() && curPoc == refPoc && rpcPic->getSlice(0)->isReferenced()) 1403 1462 { 1463 #if ALLOW_RECOVERY_POINT_AS_RAP 1464 if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) 1465 { 1466 isAvailable = 0; 1467 } 1468 else 1469 { 1404 1470 isAvailable = 1; 1471 } 1472 #else 1473 isAvailable = 1; 1474 #endif 1405 1475 } 1406 1476 } … … 1425 1495 if (rpcPic->getSlice(0)->isReferenced() && curPoc == refPoc) 1426 1496 { 1497 #if ALLOW_RECOVERY_POINT_AS_RAP 1498 if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) 1499 { 1500 isAvailable = 0; 1501 } 1502 else 1503 { 1427 1504 isAvailable = 1; 1428 1505 rpcPic->setIsLongTerm(1); 1429 1506 break; 1507 } 1508 #else 1509 isAvailable = 1; 1510 rpcPic->setIsLongTerm(1); 1511 break; 1512 #endif 1430 1513 } 1431 1514 } … … 1455 1538 } 1456 1539 } 1540 #if ALLOW_RECOVERY_POINT_AS_RAP 1541 else if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess) 1542 { 1543 atLeastOneUnabledByRecoveryPoint = 1; 1544 } 1545 else if(bUseRecoveryPoint && (this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_N_LP || this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_W_RADL)) 1546 { 1547 atLeastOneFlushedByPreviousIDR = 1; 1548 } 1549 #endif 1457 1550 } 1458 1551 } … … 1470 1563 if(!rpcPic->getIsLongTerm() && rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getPOC() + pReferencePictureSet->getDeltaPOC(i) && rpcPic->getSlice(0)->isReferenced()) 1471 1564 { 1565 #if ALLOW_RECOVERY_POINT_AS_RAP 1566 if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) 1567 { 1568 isAvailable = 0; 1569 } 1570 else 1571 { 1472 1572 isAvailable = 1; 1573 } 1574 #else 1575 isAvailable = 1; 1576 #endif 1473 1577 } 1474 1578 } … … 1497 1601 } 1498 1602 } 1499 } 1603 #if ALLOW_RECOVERY_POINT_AS_RAP 1604 else if(bUseRecoveryPoint && this->getPOC() > pocRandomAccess) 1605 { 1606 atLeastOneUnabledByRecoveryPoint = 1; 1607 } 1608 else if(bUseRecoveryPoint && (this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_N_LP || this->getAssociatedIRAPType()==NAL_UNIT_CODED_SLICE_IDR_W_RADL)) 1609 { 1610 atLeastOneFlushedByPreviousIDR = 1; 1500 1611 } 1612 #endif 1613 } 1614 } 1615 #if ALLOW_RECOVERY_POINT_AS_RAP 1616 if(atLeastOneUnabledByRecoveryPoint || atLeastOneFlushedByPreviousIDR) 1617 { 1618 return -1; 1619 } 1620 #endif 1501 1621 if(atLeastOneLost) 1502 1622 { … … 1515 1635 /** Function for constructing an explicit Reference Picture Set out of the available pictures in a referenced Reference Picture Set 1516 1636 */ 1637 #if ALLOW_RECOVERY_POINT_AS_RAP 1638 Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP, Int pocRandomAccess, Bool bUseRecoveryPoint) 1639 #else 1517 1640 Void TComSlice::createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP) 1641 #endif 1518 1642 { 1519 1643 TComPic* rpcPic; … … 1541 1665 pcRPS->setDeltaPOC(k, pReferencePictureSet->getDeltaPOC(i)); 1542 1666 pcRPS->setUsed(k, pReferencePictureSet->getUsed(i) && (!isRAP)); 1667 #if ALLOW_RECOVERY_POINT_AS_RAP 1668 pcRPS->setUsed(k, pcRPS->getUsed(k) && !(bUseRecoveryPoint && this->getPOC() > pocRandomAccess && this->getPOC() + pReferencePictureSet->getDeltaPOC(i) < pocRandomAccess) ); 1669 #endif 1543 1670 if(pcRPS->getDeltaPOC(k) < 0) 1544 1671 { … … 1553 1680 } 1554 1681 } 1682 #if EFFICIENT_FIELD_IRAP 1683 Bool useNewRPS = false; 1684 // if current picture is complimentary field associated to IRAP, add the IRAP to its RPS. 1685 if(m_pcPic->isField()) 1686 { 1687 TComList<TComPic*>::iterator iterPic = rcListPic.begin(); 1688 while ( iterPic != rcListPic.end()) 1689 { 1690 rpcPic = *(iterPic++); 1691 if(rpcPic->getPicSym()->getSlice(0)->getPOC() == this->getAssociatedIRAPPOC() && this->getAssociatedIRAPPOC() == this->getPOC()+1) 1692 { 1693 pcRPS->setDeltaPOC(k, 1); 1694 pcRPS->setUsed(k, true); 1695 nrOfPositivePictures++; 1696 k ++; 1697 useNewRPS = true; 1698 } 1699 } 1700 } 1701 #endif 1555 1702 pcRPS->setNumberOfNegativePictures(nrOfNegativePictures); 1556 1703 pcRPS->setNumberOfPositivePictures(nrOfPositivePictures); … … 1559 1706 // inter RPS prediction with. Here we just use the reference used by pReferencePictureSet. 1560 1707 // If pReferencePictureSet is not inter_RPS_predicted, then inter_RPS_prediction is for the current RPS also disabled. 1561 if (!pReferencePictureSet->getInterRPSPrediction()) 1708 if (!pReferencePictureSet->getInterRPSPrediction() 1709 #if EFFICIENT_FIELD_IRAP 1710 || useNewRPS 1711 #endif 1712 ) 1562 1713 { 1563 1714 pcRPS->setInterRPSPrediction(false); … … 1712 1863 #endif 1713 1864 { 1865 #if H_MV_HLS_8_SYN_Q0041_03 1866 m_vpsBaseLayerInternalFlag = true; 1867 #endif 1868 1714 1869 for( Int i = 0; i < MAX_TLAYER; i++) 1715 1870 { … … 1728 1883 m_vpsNumProfileTierLevelMinus1 = -1; 1729 1884 1730 m_numAddOutputLayerSets = -1; 1731 m_defaultTargetOutputLayerIdc = 0; 1885 #if H_MV_HLS_8_SYN_39_19 1886 m_numAddLayerSets = 0; 1887 m_numAddOlss = 0; 1888 #else 1889 m_numAddLayerSets = -1; 1890 #endif 1891 m_defaultOutputLayerIdc = 0; 1732 1892 1733 1893 for ( Int i = 0; i < MAX_VPS_OUTPUTLAYER_SETS; i++) 1734 1894 { 1735 m_ outputLayerSetIdxMinus1[i] = -1;1895 m_layerSetIdxForOlsMinus1[i] = -1; 1736 1896 m_profileLevelTierIdx[i] = 0; 1737 1897 for ( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++) … … 1741 1901 m_altOutputLayerFlag[ i ] = false; 1742 1902 } 1903 1904 #if H_MV_HLS_8_PMS_Q0195_20 1905 m_repFormatIdxPresentFlag = false; 1906 #endif 1743 1907 m_maxOneActiveRefLayerFlag = false; 1744 1908 m_directDepTypeLenMinus2 = 0; 1745 1909 1746 1910 1911 #if H_MV_HLS_8_RPS_Q0100_36 1912 m_vpsExtensionFlag = true; 1913 #endif 1747 1914 m_avcBaseLayerFlag = false; 1748 1915 m_vpsNonVuiExtensionLength = 0; … … 1760 1927 { 1761 1928 m_vpsProfilePresentFlag [i] = false; 1762 m_ outputLayerSetIdxMinus1 [i] = 0;1929 m_layerSetIdxForOlsMinus1 [i] = 0; 1763 1930 for( Int j = 0; j < MAX_VPS_NUH_LAYER_ID_PLUS1; j++ ) 1764 1931 { … … 1864 2031 assert( getLayerIdInNuh( layer ) > getLayerIdInNuh( layer -1 ) ); 1865 2032 } 2033 2034 2035 #if H_MV_HLS_8_PMS_Q0195_20 2036 //The value of vps_num_rep_formats_minus1 shall be in the range of 0 to 255, inclusive. 2037 assert( getVpsNumRepFormatsMinus1() >= 0 ); 2038 assert( getVpsNumRepFormatsMinus1() <= 255 ); 2039 #endif 2040 1866 2041 return true; 1867 2042 } … … 1907 2082 } 1908 2083 } 2084 2085 #if H_MV_HLS_8 2086 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2087 { 2088 m_numRefLayers[i] = 0; 2089 } 2090 2091 for (Int currLayerId = 0; currLayerId <= 62; currLayerId++ ) 2092 { 2093 for (Int i = 0 ; i < MAX_NUM_LAYER_IDS; i++ ) 2094 { 2095 m_recursiveRefLayerFlag[currLayerId][i] = 0; 2096 } 2097 } 2098 2099 2100 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2101 { 2102 Int iNuhLId = getLayerIdInNuh( i ); 2103 xSetRefLayerFlags( iNuhLId ); 2104 for( Int j = 0; j < 63; j++ ) 2105 { 2106 m_numRefLayers[ iNuhLId ] += m_recursiveRefLayerFlag[ iNuhLId ][ j ]; 2107 } 2108 } 2109 2110 2111 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) // Bug in spec "<" instead of "<=" 2112 { 2113 Int iNuhLId = getLayerIdInNuh( i ); 2114 Int predIdx = 0; 2115 for( Int j = iNuhLId + 1; j < 63; j++ ) 2116 { 2117 if( m_recursiveRefLayerFlag[ j ][ iNuhLId ] ) 2118 { 2119 m_predictedLayerId[ iNuhLId ][ predIdx++ ] = j; 2120 } 2121 } 2122 m_numPredictedLayers[ iNuhLId ] = predIdx; 2123 } 2124 2125 Bool countedLayerIdxFlag[ MAX_NUM_LAYERS ]; 2126 for( Int i = 0; i <= getMaxLayersMinus1(); i++ ) 2127 { 2128 countedLayerIdxFlag[ i ] = 0; 2129 } 2130 2131 for( Int i = 0, k = 0; i <= getMaxLayersMinus1(); i++ ) 2132 { 2133 Int iNuhLId = getLayerIdInNuh( i ); 2134 if( m_numDirectRefLayers[ iNuhLId ] == 0 ) 2135 { 2136 m_treePartitionLayerIdList[ k ][ 0 ] = iNuhLId; 2137 m_numLayersInTreePartition[ k ] = 1; 2138 for( Int j = 0; j < m_numPredictedLayers[ iNuhLId ]; j++ ) 2139 { 2140 if( !countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] ) 2141 { 2142 m_treePartitionLayerIdList[ k ][ m_numLayersInTreePartition[ k ] ] = m_predictedLayerId[ iNuhLId ][ j ]; 2143 m_numLayersInTreePartition[ k ]++; 2144 countedLayerIdxFlag[ getLayerIdInVps( m_predictedLayerId[ iNuhLId ][ j ] ) ] = 1; 2145 } 2146 } 2147 k++; 2148 } 2149 m_numIndependentLayers = k; 2150 } 2151 #endif 1909 2152 } 1910 2153 … … 1936 2179 } 1937 2180 } 2181 #if !BUG_FIX_TK65 1938 2182 assert( foundLayerIdinNuh != -1 ); 1939 2183 #endif 1940 2184 return foundLayerIdinNuh; 1941 2185 } … … 2070 2314 Int TComVPS::getNumOutputLayerSets() 2071 2315 { 2072 return getNumAddOutputLayerSets() + getVpsNumLayerSetsMinus1() + 1; 2316 #if H_MV_HLS_8_SYN_39_19 2317 return getNumAddOlss() + getNumLayerSets(); 2318 #else 2319 return getNumAddLayerSets() + getVpsNumLayerSetsMinus1() + 1; 2320 #endif 2073 2321 } 2074 2322 … … 2126 2374 Void TComVPS::deriveTargetLayerIdList( Int i ) 2127 2375 { 2128 Int lsIdx = getLayerSetIdxForOutputLayerSet( i );2376 Int lsIdx = olsIdxToLsIdx( i ); 2129 2377 2130 2378 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) … … 2136 2384 } 2137 2385 } 2386 #if H_MV_HLS_8_PMS_Q0165_18 2387 assert( getNumOutputLayersInOutputLayerSet( i ) > 0 ); 2388 #endif 2138 2389 } 2139 2390 … … 2141 2392 { 2142 2393 Bool outputLayerFlag; 2143 switch ( getDefault TargetOutputLayerIdc( ) )2394 switch ( getDefaultOutputLayerIdc( ) ) 2144 2395 { 2145 2396 case 0: … … 2147 2398 break; 2148 2399 case 1: 2149 outputLayerFlag = ( j == m_layerSetLayerIdList[ getLayerSetIdxForOutputLayerSet( i ) ].size() - 1 );2400 outputLayerFlag = ( j == m_layerSetLayerIdList[ olsIdxToLsIdx( i ) ].size() - 1 ); 2150 2401 break; 2151 2402 case 2: … … 2169 2420 { 2170 2421 Int maxSLMinus1 = 0; 2171 Int optLsIdx = getLayerSetIdxForOutputLayerSet( i ); 2422 #if H_MV_HLS_8_MIS_Q0102_30 2423 for( Int k = 0; k < getNumLayersInIdList( i ); k++ ) 2424 { 2425 Int lId = m_layerSetLayerIdList[i][k]; 2426 #else 2427 Int optLsIdx = olsIdxToLsIdx( i ); 2428 2172 2429 for( Int k = 0; k < getNumLayersInIdList( optLsIdx ); k++ ) 2173 2430 { 2174 2431 Int lId = m_layerSetLayerIdList[optLsIdx][k]; 2432 #endif 2175 2433 maxSLMinus1 = std::max( maxSLMinus1, getSubLayersVpsMaxMinus1( getLayerIdInVps( lId ) )); 2176 2434 } 2177 2435 return maxSLMinus1; 2178 2436 } 2179 2437 #if H_MV_HLS_8_RPS_Q0100_36 2438 Void TComVPS::inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder ) 2439 { 2440 for( Int j = 0; j <= getMaxSubLayersInLayerSetMinus1( 0 ); j++ ) 2441 { 2442 Int maxDecPicBufferingMinus1 = sps->getMaxDecPicBuffering( j ) - 1; 2443 Int numReorderPics = sps->getNumReorderPics ( j ); 2444 Int maxLatencyIncreasePlus1 = sps->getMaxLatencyIncrease( j ); 2445 2446 if ( encoder ) 2447 { 2448 assert( getDpbSize()->getMaxVpsDecPicBufferingMinus1(0, 0, j ) == maxDecPicBufferingMinus1 ); 2449 assert( getDpbSize()->getMaxVpsNumReorderPics (0, j ) == numReorderPics ); 2450 assert( getDpbSize()->getMaxVpsLatencyIncreasePlus1 (0, j ) == maxLatencyIncreasePlus1 ); 2451 } 2452 else 2453 { 2454 getDpbSize()->setMaxVpsDecPicBufferingMinus1(0, 0, j, maxDecPicBufferingMinus1 ); 2455 getDpbSize()->setMaxVpsNumReorderPics (0, j, numReorderPics ); 2456 getDpbSize()->setMaxVpsLatencyIncreasePlus1 (0, j, maxLatencyIncreasePlus1 ); 2457 } 2458 } 2459 } 2460 #endif 2180 2461 #endif // H_MV 2181 2462 … … 2249 2530 ::memset(m_usedByCurrPicLtSPSFlag, 0, sizeof(m_usedByCurrPicLtSPSFlag)); 2250 2531 #if H_MV 2251 m_spsExtensionFlag = false; 2532 #if !H_MV_HLS_8_SPS_NODOC_48 2533 m_spsExtensionPresentFlag = false; 2252 2534 for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ ) 2253 2535 { 2254 2536 m_spsExtensionTypeFlag[ i ] = false; 2255 2537 } 2538 #else 2539 m_spsRangeExtensionsFlag = false; 2540 m_spsMultilayerExtensionFlag = false; 2541 #if H_3D 2542 m_spsExtension5bits = 0; 2543 m_sps3dExtensionFlag = false; 2544 #else 2545 m_spsExtension6bits = 0; 2546 #endif 2547 #endif 2548 2256 2549 m_numScaledRefLayerOffsets = 0; 2257 2550 … … 2433 2726 2434 2727 #if H_MV 2728 #if H_MV_HLS_8_SPS_NODOC_48 2729 m_ppsRangeExtensionsFlag = false; 2730 m_ppsMultilayerExtensionFlag = false; 2731 #if !H_3D 2732 m_ppsExtension6bits = 0; 2733 #else 2734 m_pps3dExtensionFlag = false; 2735 m_ppsExtension5bits = 0; 2736 #endif 2737 #else 2435 2738 for( Int i = 0; i < PS_EX_T_MAX_NUM; i++ ) 2436 2739 { 2437 2740 m_ppsExtensionTypeFlag[ i ] = false; 2438 2741 } 2742 #endif 2439 2743 #endif 2440 2744 } … … 2962 3266 Void TComSlice::markIvRefPicsAsShortTerm( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 ) 2963 3267 { 2964 // Mark as short term3268 // Mark as short-term 2965 3269 for ( Int i = 0; i < refPicSetInterLayer0.size(); i++ ) 2966 3270 { … … 2974 3278 2975 3279 } 3280 3281 #if !H_MV_HLS_8_DBP_NODOC_42 2976 3282 Void TComSlice::markIvRefPicsAsUnused( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc ) 2977 3283 { … … 3028 3334 } 3029 3335 } 3030 3336 #endif 3031 3337 Void TComSlice::printRefPicList() 3032 3338 { … … 3045 3351 Void TComSlice::markCurrPic( TComPic* currPic ) 3046 3352 { 3353 3354 #if !H_MV_HLS_8_DBP_NODOC_42 3047 3355 if ( !currPic->getSlice(0)->getDiscardableFlag() ) 3048 3356 { 3357 #endif 3049 3358 currPic->getSlice(0)->setReferenced( true ) ; 3050 3359 currPic->setIsLongTerm( false ); 3360 #if !H_MV_HLS_8_DBP_NODOC_42 3051 3361 } 3052 3362 else … … 3054 3364 currPic->getSlice(0)->setReferenced( false ) ; 3055 3365 } 3366 #endif 3367 3368 #if H_MV_HLS_7_VPS_P0300_27 3369 currPic->setReconMark( true ); 3370 currPic->setPicOutputFlag( currPic->getSlice(0)->getPicOutputFlag() ); 3371 #endif 3056 3372 } 3057 3373 … … 3087 3403 Int refLayerIdx = vps->getLayerIdInVps( vps->getRefLayerId( getLayerId(), i ) ); 3088 3404 3405 #if H_MV_HLS_8_RPS_Q0060_17 3406 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && ( getTLayer() == 0 ) && 3407 ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() ); 3408 #else 3089 3409 Bool refLayerPicFlag = ( vps->getSubLayersVpsMaxMinus1( refLayerIdx ) >= getTLayer() ) && 3090 3410 ( vps->getMaxTidIlRefPicsPlus1( refLayerIdx, vps->getLayerIdInVps( getLayerId() )) > getTLayer() ); 3411 #endif 3091 3412 3092 3413 return refLayerPicFlag; … … 3969 4290 } 3970 4291 } 4292 4293 // --------------- 4294 // To be added: 4295 // When vps_base_layer_internal_flag is equal to 0 and layer_in_bsp_flag[ h ][ i ][ 0 ] is equal to 1 for any value of h in the 4296 // range of 1 to vps_num_layer_sets_minus1, inclusive, and any value of i in the range of 0 to num_bitstream_partitions[ h ] - 1, 4297 // inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] for at least one value of j in the range of 1 to 4298 // NumLayersInIdList[ h ] - 1, inclusive, shall be equal to 1. 4299 // --------------- 4300 4301 4302 // When num_bitstream_partitions[ h ] is equal to 1 for any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, 4303 // the value of layer_in_bsp_flag[ h ][ 0 ][ j ] should be equal to 0 for at least one value of j in the range 0 to 4304 // NumLayersInIdList[ h ] − 1, inclusive. 4305 4306 4307 if ( getNumBitstreamPartitions( h ) == 1 ) 4308 { 4309 Bool atLeastOneZero = false; 4310 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 4311 { 4312 atLeastOneZero = atLeastOneZero || !getLayerInBspFlag( h, 0, j ); 4313 } 4314 assert( atLeastOneZero ); 4315 } 4316 4317 4318 // For any value of h in the range 1 to vps_num_layer_set_minus1, inclusive, the value of layer_in_bsp_flag[ h ][ i ][ j ] 4319 // shall be equal to 1 for at most one value of i in the range of 0 to num_bitstream_partitions[ h ] − 1, inclusive. 4320 4321 for ( Int j = 0; j <= vps->getNumLayersInIdList( h ) - 1; j++ ) 4322 { 4323 Int numLayerInBsp = 0; 4324 for ( Int i = 0; i <= getNumBitstreamPartitions( h ) - 1; i++ ) 4325 { 4326 numLayerInBsp += ( getLayerInBspFlag( h, i, j ) ? 1 : 0 ); 4327 } 4328 assert( numLayerInBsp <= 1 ); 4329 } 4330 3971 4331 } 3972 4332 -
trunk/source/Lib/TLibCommon/TComSlice.h
r950 r964 54 54 class TComPicLists; 55 55 class TComVPS; 56 #if H_MV_HLS_8_RPS_Q0100_36 57 class TComSPS; 58 #endif 56 59 #endif 57 60 // ==================================================================================================================== … … 126 129 Void sortDeltaPOC(); 127 130 Void printDeltaPOC(); 131 132 #if H_MV_HLS_8_RPS_Q0100_36 133 Void checkMaxNumPics( Bool vpsExtensionFlag, Int maxNumPics, Int nuhLayerId, Int spsMaxDecPicBufferingMinus1 ) 134 { 135 assert( getNumberOfPictures() >= 0 ); 136 if ( nuhLayerId == 0 ) 137 { 138 assert( getNumberOfPictures() <= spsMaxDecPicBufferingMinus1 ); 139 } 140 141 if ( vpsExtensionFlag ) 142 { 143 assert( getNumberOfPictures() <= maxNumPics ); 144 } 145 } 146 #endif 128 147 }; 129 148 … … 231 250 { 232 251 ProfileTierLevel m_generalPTL; 233 ProfileTierLevel m_subLayerPTL [6]; // max. value of max_sub_layers_minus1 is 6234 Bool m_subLayerProfilePresentFlag [6];235 Bool m_subLayerLevelPresentFlag [6];252 ProfileTierLevel m_subLayerPTL [MAX_TLAYER-1]; // max. value of max_sub_layers_minus1 is MAX_TLAYER-1 (= 6) 253 Bool m_subLayerProfilePresentFlag [MAX_TLAYER-1]; 254 Bool m_subLayerLevelPresentFlag [MAX_TLAYER-1]; 236 255 237 256 public: … … 436 455 Int m_numBitstreamPartitions[MAX_VPS_OP_SETS_PLUS1]; 437 456 Bool m_layerInBspFlag[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_LAYERS]; 438 Int m_numBspSchedCombinations [MAX_VPS_OP_SETS_PLUS1];457 Int m_numBspSchedCombinationsMinus1[MAX_VPS_OP_SETS_PLUS1]; 439 458 Int m_bspCombHrdIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION]; 440 459 Int m_bspCombSchedIdx[MAX_VPS_OP_SETS_PLUS1][MAX_NUM_BSP_HRD_PARAMETERS][MAX_NUM_BSP_SCHED_COMBINATION]; … … 455 474 Void checkLayerInBspFlag ( TComVPS* vps, Int h ); 456 475 457 Void setNumBspSchedCombinations ( Int h, Int val ) { m_numBspSchedCombinations[h] = val; }458 Int getNumBspSchedCombinations ( Int h ) { return m_numBspSchedCombinations[h]; }476 Void setNumBspSchedCombinationsMinus1( Int h, Int val ) { m_numBspSchedCombinationsMinus1[h] = val; } 477 Int getNumBspSchedCombinationsMinus1( Int h ) { return m_numBspSchedCombinationsMinus1[h]; } 459 478 460 479 Void setBspCombHrdIdx( Int h, Int i, Int j, Int val ) { m_bspCombHrdIdx[h][i][j] = val; } 461 480 Int getBspCombHrdIdx( Int h, Int i, Int j ) { return m_bspCombHrdIdx[h][i][j]; } 481 #if H_MV_HLS_8_HRD_Q0101_04 482 Int getBspCombHrdIdxLen() { return gCeilLog2( getVpsNumBspHrdParametersMinus1() + 1); }; 483 Void checkBspCombHrdAndShedIdx( TComVPS* vps, Int h, Int i, Int j ) 484 { 485 // bsp_comb_hrd_idx 486 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 487 assert( getBspCombSchedIdx(h, i, j ) <= getVpsNumBspHrdParametersMinus1() ); 488 489 // bsp_comb_sched_idx 490 assert( getBspCombSchedIdx(h, i, j ) >= 0 ); 491 492 //* This check needs to activated, when HighestTid is available here 493 // assert( getBspCombSchedIdx(h, i, j ) <= vps->getHrdParameters( getBspCombHrdIdx( h, i, j ) )->getCpbCntMinus1( highestTid ) ); 494 } 495 #endif 462 496 463 497 Void setBspCombSchedIdx( Int h, Int i, Int j, Int val ) { m_bspCombSchedIdx[h][i][j] = val; } … … 636 670 Int m_maxVpsDecPicBufferingMinus1[MAX_VPS_OUTPUTLAYER_SETS][MAX_NUM_LAYER_IDS][MAX_TLAYER];; 637 671 Int m_maxVpsNumReorderPics [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER]; 638 #if H_MV_HLS7_GEN639 Int m_maxVpsLayerDecPicBuffMinus1[TO_BE_SPECIFIED][TO_BE_SPECIFIED][TO_BE_SPECIFIED];640 #endif641 672 Int m_maxVpsLatencyIncreasePlus1 [MAX_VPS_OUTPUTLAYER_SETS][MAX_TLAYER]; 642 673 … … 655 686 Void setMaxVpsNumReorderPics( Int i, Int j, Int val ) { m_maxVpsNumReorderPics[i][j] = val; } 656 687 Int getMaxVpsNumReorderPics( Int i, Int j ) { return m_maxVpsNumReorderPics[i][j]; } 657 #if H_MV_HLS7_GEN 658 Void setMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j, Int val ) { m_maxVpsLayerDecPicBuffMinus1[i][k][j] = val; } 659 Int getMaxVpsLayerDecPicBuffMinus1( Int i, Int k, Int j ) { return m_maxVpsLayerDecPicBuffMinus1[i][k][j]; } 660 #endif 688 661 689 Void setMaxVpsLatencyIncreasePlus1( Int i, Int j, Int val ) { m_maxVpsLatencyIncreasePlus1[i][j] = val; } 662 690 Int getMaxVpsLatencyIncreasePlus1( Int i, Int j ) { return m_maxVpsLatencyIncreasePlus1[i][j]; } … … 667 695 private: 668 696 Int m_VPSId; 697 #if H_MV_HLS_8_SYN_Q0041_03 698 Bool m_vpsBaseLayerInternalFlag; 699 #endif 700 669 701 UInt m_uiMaxTLayers; 670 702 … … 704 736 TimingInfo m_timingInfo; 705 737 #if H_MV 738 #if H_MV_HLS_8_RPS_Q0100_36 739 Bool m_vpsExtensionFlag; 740 #endif 706 741 /// VPS EXTENSION SYNTAX ELEMENTS 707 742 Bool m_avcBaseLayerFlag; … … 725 760 Bool m_vpsProfilePresentFlag [MAX_VPS_OP_SETS_PLUS1]; 726 761 727 Int m_numAddOutputLayerSets; 728 Int m_defaultTargetOutputLayerIdc; 729 730 Int m_outputLayerSetIdxMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 762 Int m_numAddLayerSets; 763 #if H_MV_HLS_8_SYN_39_19 764 Int m_highestLayerIdxPlus1 [MAX_VPS_ADD_OUTPUT_LAYER_SETS][MAX_NUM_LAYERS]; 765 Int m_numAddOlss; 766 #endif 767 Int m_defaultOutputLayerIdc; 768 769 Int m_layerSetIdxForOlsMinus1 [MAX_VPS_OUTPUTLAYER_SETS]; 731 770 Bool m_outputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS][MAX_VPS_NUH_LAYER_ID_PLUS1]; 732 771 Int m_profileLevelTierIdx [MAX_VPS_OUTPUTLAYER_SETS ]; 733 772 Bool m_altOutputLayerFlag [MAX_VPS_OUTPUTLAYER_SETS]; 734 773 Bool m_repFormatIdxPresentFlag; 774 735 775 Int m_vpsNumRepFormatsMinus1; 736 776 Int m_vpsRepFormatIdx [MAX_NUM_LAYERS]; … … 762 802 Int m_refLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 763 803 804 #if H_MV_HLS_8 805 Int m_numRefLayers [MAX_NUM_LAYER_IDS]; 806 Int m_numPredictedLayers [MAX_NUM_LAYERS]; 807 Int m_predictedLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 808 Int m_numIndependentLayers; 809 Int m_numLayersInTreePartition [MAX_NUM_LAYER_IDS]; 810 Int m_treePartitionLayerIdList [MAX_NUM_LAYERS][MAX_NUM_LAYER_IDS]; 811 Bool m_recursiveRefLayerFlag [MAX_NUM_LAYER_IDS][MAX_NUM_LAYER_IDS]; 812 #else 813 764 814 Int m_numSamplePredRefLayers [MAX_NUM_LAYERS]; 765 815 Bool m_samplePredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; … … 769 819 Bool m_motionPredEnabledFlag [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 770 820 Int m_motionPredRefLayerId [MAX_NUM_LAYERS][MAX_NUM_LAYERS]; 821 #endif 771 822 Int m_viewIndex [MAX_NUM_LAYERS ]; 772 823 … … 777 828 778 829 Int xGetDimBitOffset( Int j ); 779 830 831 #if H_MV_HLS_8 832 Void xSetRefLayerFlags( Int currLayerId ) 833 { 834 for( Int j = 0; j < getNumDirectRefLayers( currLayerId ); j++ ) 835 { 836 Int refLayerId = m_refLayerId[ currLayerId ][ j ]; 837 m_recursiveRefLayerFlag[ currLayerId ][ refLayerId ] = 1; 838 for( Int k = 0; k < MAX_NUM_LAYER_IDS; k++ ) 839 { 840 m_recursiveRefLayerFlag[ currLayerId ][ k ] = m_recursiveRefLayerFlag[ currLayerId ][ k ] || m_recursiveRefLayerFlag[ refLayerId ][ k ]; 841 } 842 } 843 } 844 #endif 780 845 // VPS EXTENSION 2 SYNTAX ELEMENTS 781 846 #if H_3D_ARP … … 837 902 Void setVPSId (Int i) { m_VPSId = i; } 838 903 904 #if H_MV_HLS_8_SYN_Q0041_03 905 Void setVpsBaseLayerInternalFlag( Bool flag ) { m_vpsBaseLayerInternalFlag = flag; } 906 Bool getVpsBaseLayerInternalFlag( ) { return m_vpsBaseLayerInternalFlag; } 907 #endif 908 839 909 UInt getMaxTLayers () { return m_uiMaxTLayers; } 840 910 Void setMaxTLayers (UInt t) { m_uiMaxTLayers = t; } … … 887 957 TimingInfo* getTimingInfo() { return &m_timingInfo; } 888 958 #if H_MV 959 960 #if H_MV_HLS_8_RPS_Q0100_36 961 Void setVpsExtensionFlag( Bool flag ) { m_vpsExtensionFlag = flag; } 962 Bool getVpsExtensionFlag( ) { return m_vpsExtensionFlag; } 963 #endif 964 #if !H_MV_HLS_8_SYN_Q0041_03 889 965 Void setAvcBaseLayerFlag( Bool val ) { m_avcBaseLayerFlag = val; } 890 966 Bool getAvcBaseLayerFlag() { return m_avcBaseLayerFlag; } 891 967 #endif 892 968 Void setVpsNonVuiExtensionLength( Int val ) { m_vpsNonVuiExtensionLength = val; } 893 969 Int getVpsNonVuiExtensionLength( ) { return m_vpsNonVuiExtensionLength; } … … 947 1023 Bool getVpsProfilePresentFlag( Int idx ) { return m_vpsProfilePresentFlag[idx]; } 948 1024 949 Void setNumAddOutputLayerSets( Int val ) { m_numAddOutputLayerSets = val; } 950 Int getNumAddOutputLayerSets( ) { return m_numAddOutputLayerSets; } 951 952 Void setDefaultTargetOutputLayerIdc( Int val ) { m_defaultTargetOutputLayerIdc = val; } 953 Int getDefaultTargetOutputLayerIdc( ) { return m_defaultTargetOutputLayerIdc; } 954 955 Void setOutputLayerSetIdxMinus1( Int outLayerSetIdx, Int val ) { m_outputLayerSetIdxMinus1[ outLayerSetIdx ] = val; } 956 Int getOutputLayerSetIdxMinus1( Int outLayerSetIdx ) { return m_outputLayerSetIdxMinus1[ outLayerSetIdx ]; } 1025 Void setNumAddLayerSets( Int val ) { m_numAddLayerSets = val; } 1026 Int getNumAddLayerSets( ) { return m_numAddLayerSets; } 1027 1028 #if H_MV_HLS_8_SYN_39_19 1029 Void setHighestLayerIdxPlus1( Int i, Int j, Int val ) { m_highestLayerIdxPlus1[i][j] = val; } 1030 Int getHighestLayerIdxPlus1( Int i, Int j ) { return m_highestLayerIdxPlus1[i][j]; } 1031 1032 Void setNumAddOlss( Int val ) { m_numAddOlss = val; } 1033 Int getNumAddOlss( ) { return m_numAddOlss; } 1034 #endif 1035 1036 Void setDefaultOutputLayerIdc( Int val ) { m_defaultOutputLayerIdc = val; } 1037 Int getDefaultOutputLayerIdc( ) { return m_defaultOutputLayerIdc; } 1038 1039 Void setLayerSetIdxForOlsMinus1( Int outLayerSetIdx, Int val ) { m_layerSetIdxForOlsMinus1[ outLayerSetIdx ] = val; } 1040 Int getLayerSetIdxForOlsMinus1( Int outLayerSetIdx ) { return m_layerSetIdxForOlsMinus1[ outLayerSetIdx ]; } 957 1041 958 1042 Void setOutputLayerFlag( Int outLayerSetIdx, Int i, Bool flag ) { m_outputLayerFlag[ outLayerSetIdx ][ i ] = flag; } … … 975 1059 Void setVpsRepFormatIdx( Int i, Int val ) { m_vpsRepFormatIdx[i] = val; } 976 1060 Int getVpsRepFormatIdx( Int i ) { return m_vpsRepFormatIdx[i]; } 1061 1062 #if H_MV_HLS_8_PMS_Q0195_20 1063 Int inferVpsRepFormatIdx( Int i ) { return std::min( i, getVpsNumRepFormatsMinus1() ); } 1064 #endif 977 1065 978 1066 Void setRepFormat( Int i, TComRepFormat* val ) { m_repFormat[i] = val; } … … 989 1077 Void setDpbSize( TComDpbSize* val ) { assert( m_dpbSize != 0 ); m_dpbSize = val; } 990 1078 TComDpbSize* getDpbSize( ) { return m_dpbSize;} 1079 #if H_MV_HLS_8_RPS_Q0100_36 1080 Void inferDbpSizeLayerSetZero( TComSPS* sps, Bool encoder ); 1081 #endif 1082 991 1083 992 1084 Void setPocLsbNotPresentFlag( Int i, Bool flag ) { m_pocLsbNotPresentFlag[i] = flag; } … … 1023 1115 Int getNumDirectRefLayers( Int layerIdInNuh ) { return m_numDirectRefLayers[ layerIdInNuh ]; }; 1024 1116 Int getRefLayerId ( Int layerIdInNuh, Int idx );; 1117 1118 #if H_MV_HLS_8 1119 Int getNumRefLayers ( Int i ) { return m_numRefLayers[i]; } 1120 Int getNumPredictedLayers ( Int i ) { return m_numPredictedLayers[i]; } 1121 Int getPredictedLayerId ( Int i, Int j ) { return m_predictedLayerId[i][j]; } 1122 Int getNumIndependentLayers ( ) { return m_numIndependentLayers; } 1123 Int getNumLayersInTreePartition( Int i ) { return m_numLayersInTreePartition[i]; } 1124 Int getTreePartitionLayerIdList( Int i, Int j ) { return m_treePartitionLayerIdList[i][j]; } 1125 Bool getRecursiveRefLayerFlag ( Int i, Int j ) { return m_recursiveRefLayerFlag[i][j]; } 1126 1127 #endif 1128 1129 #if H_MV_HLS_8_SYN_39_19 1130 Int getNumLayerSets( ) { return getVpsNumLayerSetsMinus1() + 1 + getNumAddLayerSets(); }; 1131 #endif 1025 1132 Bool checkVPSExtensionSyntax(); 1026 1133 Int scalTypeToScalIdx ( ScalabilityType scalType ); … … 1030 1137 1031 1138 Int getNumLayersInIdList ( Int lsIdx ); 1139 #if H_MV_HLS_8_RPS_Q0100_36 1140 Int getLayerSetLayerIdList(Int lsIdx, Int j ) { return m_layerSetLayerIdList[ lsIdx ][ j ]; }; 1141 #endif 1032 1142 1033 1143 Int getNumOutputLayerSets() ; 1144 #if !H_MV_HLS_8_DBP_NODOC_42 1034 1145 Int getNumSubDpbs( Int i ) { return getNumLayersInIdList( i ); }; 1146 #endif 1035 1147 Bool isOutputLayer( Int outLayerSetIdx, Int layerIdInNuh ); 1036 1148 Void deriveLayerSetLayerIdList(); 1037 1149 1038 Int getLayerSetIdxForOutputLayerSet( Int i ) { return ( i <= getVpsNumLayerSetsMinus1() ) ? i : getOutputLayerSetIdxMinus1( i ) + 1 ; };1150 Int olsIdxToLsIdx( Int i ) { return ( i <= getVpsNumLayerSetsMinus1() ) ? i : getLayerSetIdxForOlsMinus1( i ) + 1 ; }; 1039 1151 1040 1152 Void initTargetLayerIdLists ( ); … … 1048 1160 1049 1161 Int getMaxSubLayersInLayerSetMinus1( Int i ); 1162 1163 #if H_MV_HLS_8_SYN_39_19 1164 Int getHighestLayerIdxPlus1Len( Int j ) { return gCeilLog2( getNumLayersInTreePartition( j ) + 1 ); }; 1165 #endif 1166 1167 1168 #if H_MV_HLS_7_VPS_P0300_27 1169 Bool getAltOutputLayerFlagVar( Int i ) 1170 { // Semantics variable not syntax element ! 1171 1172 Bool altOptLayerFlag = false; 1173 if ( i > 0 && getNumOutputLayersInOutputLayerSet( i ) == 1 && 1174 getNumDirectRefLayers( getOlsHighestOutputLayerId( i ) ) > 0 ) 1175 { 1176 altOptLayerFlag = getAltOutputLayerFlag( i ); 1177 } 1178 return altOptLayerFlag; 1179 }; 1180 #endif 1050 1181 1051 1182 // inference … … 1055 1186 // helpers 1056 1187 Bool getInDirectDependencyFlag( Int depLayeridInVps, Int refLayeridInVps, Int depth = 0 ); 1188 #if H_MV_HLS_8_RPS_Q0100_36 1189 Int getMaxNumPics( Int layerId ) 1190 { 1191 Int maxNumPics = MAX_INT; 1192 for( Int olsIdx = 0; olsIdx < getNumOutputLayerSets(); olsIdx++) 1193 { 1194 Int lsIdx = olsIdxToLsIdx( olsIdx ); 1195 for( Int j = 0; j < getNumLayersInIdList( lsIdx ); j++ ) 1196 { 1197 if( getLayerSetLayerIdList(lsIdx, j ) == layerId ) 1198 { 1199 Int maxSL = getMaxSubLayersInLayerSetMinus1( lsIdx ); 1200 maxNumPics = std::min( maxNumPics, getDpbSize()->getMaxVpsDecPicBufferingMinus1( olsIdx , j, maxSL ) ); 1201 } 1202 } 1203 } 1204 assert( maxNumPics != MAX_INT ); 1205 return maxNumPics; 1206 } 1207 #endif 1208 1057 1209 /// VPS EXTENSION 2 SYNTAX ELEMENTS 1058 1210 #if H_3D … … 1447 1599 1448 1600 UInt m_uiBitsForPOC; 1601 1449 1602 UInt m_numLongTermRefPicSPS; 1450 1603 UInt m_ltRefPicPocLsbSps[33]; … … 1476 1629 TComVPS* m_pcVPS; 1477 1630 // SPS 1478 Bool m_spsExtensionFlag; 1479 Bool m_spsExtensionTypeFlag[PS_EX_T_MAX_NUM]; 1631 Bool m_spsExtensionPresentFlag; 1632 #if H_MV_HLS_8_SPS_NODOC_48 1633 Bool m_spsRangeExtensionsFlag; 1634 Bool m_spsMultilayerExtensionFlag; 1635 #if H_3D 1636 Bool m_sps3dExtensionFlag; 1637 Int m_spsExtension5bits; 1638 #else 1639 Int m_spsExtension6bits; 1640 #endif 1641 #else 1642 Bool m_spsExtensionTypeFlag [PS_EX_T_MAX_NUM]; 1643 #endif 1480 1644 Bool m_spsInferScalingListFlag; 1481 1645 Int m_spsScalingListRefLayerId; … … 1591 1755 UInt getMaxTLayers() { return m_uiMaxTLayers; } 1592 1756 Void setMaxTLayers( UInt uiMaxTLayers ) { assert( uiMaxTLayers <= MAX_TLAYER ); m_uiMaxTLayers = uiMaxTLayers; } 1757 #if H_MV_HLS_8 1758 UInt getSpsMaxSubLayersMinus1() { return ( m_uiMaxTLayers - 1); } 1759 #endif 1593 1760 1594 1761 Bool getTemporalIdNestingFlag() { return m_bTemporalIdNestingFlag; } … … 1622 1789 TComPTL* getPTL() { return &m_pcPTL; } 1623 1790 #if H_MV 1624 Void setSpsExtensionFlag( Bool flag ) { m_spsExtensionFlag = flag; } 1625 Bool getSpsExtensionFlag( ) { return m_spsExtensionFlag; } 1626 1627 Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; } 1628 Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; } 1791 1792 #if H_MV_HLS_8_HRD_Q0102_08 1793 Void inferSpsMaxDecPicBufferingMinus1( TComVPS* vps, Int targetOptLayerSetIdx, Int currLayerId, Bool encoder ) 1794 { 1795 const std::vector<Int>& targetDecLayerIdList = vps->getTargetDecLayerIdList( vps->olsIdxToLsIdx( targetOptLayerSetIdx )); 1796 1797 if (getLayerId() > 0 ) 1798 { 1799 Int layerIdx = 0; 1800 while (layerIdx < (Int) targetDecLayerIdList.size() ) 1801 { 1802 if ( targetDecLayerIdList[layerIdx] == currLayerId ) 1803 { 1804 break; 1805 } 1806 layerIdx++; 1807 } 1808 1809 assert( layerIdx < (Int) targetDecLayerIdList.size() ); 1810 1811 for (Int i = 0; i <= getSpsMaxSubLayersMinus1(); i++ ) 1812 { 1813 Int maxDecPicBufferingMinus1 = vps->getDpbSize()->getMaxVpsDecPicBufferingMinus1( targetOptLayerSetIdx, layerIdx, i ) ; 1814 1815 if ( encoder ) 1816 { 1817 assert( getMaxDecPicBuffering( i ) - 1 == maxDecPicBufferingMinus1 ); 1818 } 1819 else 1820 { 1821 setMaxDecPicBuffering(i, maxDecPicBufferingMinus1 + 1 ); 1822 } 1823 } 1824 } 1825 } 1826 #endif 1827 1828 Void setSpsExtensionPresentFlag( Bool flag ) { m_spsExtensionPresentFlag = flag; } 1829 Bool getSpsExtensionPresentFlag( ) { return m_spsExtensionPresentFlag; } 1830 1831 #if H_MV_HLS_8_SPS_NODOC_48 1832 Void setSpsRangeExtensionsFlag( Bool flag ) { m_spsRangeExtensionsFlag = flag; } 1833 Bool getSpsRangeExtensionsFlag( ) { return m_spsRangeExtensionsFlag; } 1834 1835 Void setSpsMultilayerExtensionFlag( Bool flag ) { m_spsMultilayerExtensionFlag = flag; } 1836 Bool getSpsMultilayerExtensionFlag( ) { return m_spsMultilayerExtensionFlag; } 1837 #if H_3D 1838 Void setSps3dExtensionFlag( Bool flag ) { m_sps3dExtensionFlag = flag; } 1839 Bool getSps3dExtensionFlag( ) { return m_sps3dExtensionFlag; } 1840 1841 Void setSpsExtension5bits( Int val ) { m_spsExtension5bits = val; } 1842 Int getSpsExtension5bits( ) { return m_spsExtension5bits; } 1843 #else 1844 Void setSpsExtension6bits( Int val ) { m_spsExtension6bits = val; } 1845 Int getSpsExtension6bits( ) { return m_spsExtension6bits; } 1846 #endif 1847 #else 1848 Void setSpsExtensionTypeFlag( Int i, Bool flag ) { m_spsExtensionTypeFlag[i] = flag; } 1849 Bool getSpsExtensionTypeFlag( Int i ) { return m_spsExtensionTypeFlag[i]; } 1850 #endif 1851 1629 1852 Void setVPS ( TComVPS* pcVPS ) { m_pcVPS = pcVPS; } 1630 1853 TComVPS* getVPS () { return m_pcVPS; } … … 1665 1888 1666 1889 Void inferScalingList( TComSPS* spsSrc ); 1890 1891 #if H_MV_HLS_8_RPS_Q0100_36 1892 // others 1893 Void checkRpsMaxNumPics( TComVPS* vps, Int currLayerId ) 1894 { 1895 // In spec, when rps is in SPS, nuh_layer_id of SPS is used instead 1896 // of nuh_layer_id of slice (currLayerId), this seems to be a bug. 1897 1898 for (Int i = 0; i < getRPSList()->getNumberOfReferencePictureSets(); i++ ) 1899 { 1900 TComReferencePictureSet* rps = getRPSList()->getReferencePictureSet( i ); 1901 if ( !rps->getInterRPSPrediction() ) 1902 { 1903 rps->checkMaxNumPics( vps->getVpsExtensionFlag(), vps->getMaxNumPics( currLayerId ), 1904 getLayerId(), getMaxDecPicBuffering( getSpsMaxSubLayersMinus1() ) - 1 ); 1905 } 1906 } 1907 } 1908 #endif 1909 1667 1910 #endif 1668 1911 #if H_3D_QTLPC … … 1776 2019 Int m_ppsScalingListRefLayerId; 1777 2020 2021 #if H_MV_HLS_8_SPS_NODOC_48 2022 Bool m_ppsRangeExtensionsFlag; 2023 Bool m_ppsMultilayerExtensionFlag; 2024 #if !H_3D 2025 Int m_ppsExtension6bits; 2026 #else 2027 Bool m_pps3dExtensionFlag; 2028 Int m_ppsExtension5bits; 2029 #endif 2030 2031 #else 1778 2032 Bool m_ppsExtensionTypeFlag[PS_EX_T_MAX_NUM]; 2033 #endif 1779 2034 Bool m_pocResetInfoPresentFlag; 1780 2035 #endif … … 1920 2175 Int getPpsScalingListRefLayerId( ) { return m_ppsScalingListRefLayerId; } 1921 2176 2177 #if H_MV_HLS_8_SPS_NODOC_48 2178 Void setPpsRangeExtensionsFlag( Bool flag ) { m_ppsRangeExtensionsFlag = flag; } 2179 Bool getPpsRangeExtensionsFlag( ) { return m_ppsRangeExtensionsFlag; } 2180 2181 Void setPpsMultilayerExtensionFlag( Bool flag ) { m_ppsMultilayerExtensionFlag = flag; } 2182 Bool getPpsMultilayerExtensionFlag( ) { return m_ppsMultilayerExtensionFlag; } 2183 2184 #if !H_3D 2185 Void setPpsExtension6bits( Int val ) { m_ppsExtension6bits = val; } 2186 Int getPpsExtension6bits( ) { return m_ppsExtension6bits; } 2187 #else 2188 Void setPps3dExtensionFlag( Bool flag ) { m_pps3dExtensionFlag = flag; } 2189 Bool getPps3dExtensionFlag( ) { return m_pps3dExtensionFlag; } 2190 2191 Void setPpsExtension5bits( Int val ) { m_ppsExtension5bits = val; } 2192 Int getPpsExtension5bits( ) { return m_ppsExtension5bits; } 2193 #endif 2194 #else 1922 2195 Void setPpsExtensionTypeFlag( Int i, Bool flag ) { m_ppsExtensionTypeFlag[i] = flag; } 1923 2196 Bool getPpsExtensionTypeFlag( Int i ) { return m_ppsExtensionTypeFlag[i]; } 2197 #endif 1924 2198 1925 2199 Void setPocResetInfoPresentFlag( Bool flag ) { m_pocResetInfoPresentFlag = flag; } … … 1957 2231 Int m_iPPSId; ///< picture parameter set ID 1958 2232 Bool m_PicOutputFlag; ///< pic_output_flag 2233 #if H_MV_HLS_8_POC_Q0142_32 2234 Int m_slicePicOrderCntLsb; 2235 #endif 1959 2236 Int m_iPOC; 1960 2237 #if H_MV … … 2010 2287 UInt m_colFromL0Flag; // collocated picture from List0 flag 2011 2288 2289 #if SETTING_NO_OUT_PIC_PRIOR 2290 Bool m_noOutputPriorPicsFlag; 2291 Bool m_noRaslOutputFlag; 2292 Bool m_handleCraAsBlaFlag; 2293 #endif 2294 2012 2295 UInt m_colRefIdx; 2013 2296 UInt m_maxNumMergeCand; … … 2131 2414 Void setPicOutputFlag( Bool b ) { m_PicOutputFlag = b; } 2132 2415 Bool getPicOutputFlag() { return m_PicOutputFlag; } 2416 #if H_MV_HLS_8_POC_Q0142_32 2417 Void setSlicePicOrderCntLsb( Int i ) { m_slicePicOrderCntLsb = i; }; 2418 Int getSlicePicOrderCntLsb( ) { return m_slicePicOrderCntLsb; }; 2419 #endif 2133 2420 Void setSaoEnabledFlag(Bool s) {m_saoEnabledFlag =s; } 2134 2421 Bool getSaoEnabledFlag() { return m_saoEnabledFlag; } … … 2281 2568 Void createInterLayerReferencePictureSet( TComPicLists* ivPicLists, std::vector<TComPic*>& refPicSetInterLayer0, std::vector<TComPic*>& refPicSetInterLayer1 ); 2282 2569 static Void markIvRefPicsAsShortTerm ( std::vector<TComPic*> refPicSetInterLayer0, std::vector<TComPic*> refPicSetInterLayer1 ); 2283 static Void markCurrPic ( TComPic* currPic );; 2570 static Void markCurrPic ( TComPic* currPic ); 2571 #if !H_MV_HLS_8_DBP_NODOC_42 2284 2572 static Void markIvRefPicsAsUnused ( TComPicLists* ivPicLists, std::vector<Int> targetDecLayerIdSet, TComVPS* vps, Int curLayerId, Int curPoc ); 2573 #endif 2285 2574 Void printRefPicList(); 2286 2575 #endif 2287 2576 Bool isTemporalLayerSwitchingPoint( TComList<TComPic*>& rcListPic ); 2288 2577 Bool isStepwiseTemporalLayerSwitchingPointCandidate( TComList<TComPic*>& rcListPic ); 2578 #if ALLOW_RECOVERY_POINT_AS_RAP 2579 Int checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false); 2580 Void createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP, Int pocRandomAccess = 0, Bool bUseRecoveryPoint = false); 2581 #else 2289 2582 Int checkThatAllRefPicsAreAvailable( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool printErrors, Int pocRandomAccess = 0); 2290 2583 Void createExplicitReferencePictureSetFromReference( TComList<TComPic*>& rcListPic, TComReferencePictureSet *pReferencePictureSet, Bool isRAP); 2584 #endif 2291 2585 2292 2586 Void setMaxNumMergeCand (UInt val ) { m_maxNumMergeCand = val; } 2293 2587 UInt getMaxNumMergeCand () { return m_maxNumMergeCand; } 2588 2589 #if SETTING_NO_OUT_PIC_PRIOR 2590 Void setNoOutputPriorPicsFlag ( Bool val ) { m_noOutputPriorPicsFlag = val; } 2591 Bool getNoOutputPriorPicsFlag () { return m_noOutputPriorPicsFlag; } 2592 2593 Void setNoRaslOutputFlag ( Bool val ) { m_noRaslOutputFlag = val; } 2594 Bool getNoRaslOutputFlag () { return m_noRaslOutputFlag; } 2595 2596 Void setHandleCraAsBlaFlag ( Bool val ) { m_handleCraAsBlaFlag = val; } 2597 Bool getHandleCraAsBlaFlag () { return m_handleCraAsBlaFlag; } 2598 #endif 2294 2599 2295 2600 Void setSliceMode ( UInt uiMode ) { m_sliceMode = uiMode; } … … 2433 2738 Void setPocResetIdc( Int val ) { m_pocResetIdc = val; } 2434 2739 Int getPocResetIdc( ) { return m_pocResetIdc; } 2435 2740 #if H_MV_HLS_8_POC_Q0142_32 2741 Void checkPocResetIdc( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) ) || !(getSlicePicOrderCntLsb() > 0 ) || !( getPocResetIdc() == 2) ); } 2742 #endif 2436 2743 Void setPocResetPeriodId( Int val ) { m_pocResetPeriodId = val; } 2437 2744 Int getPocResetPeriodId( ) { return m_pocResetPeriodId; } … … 2442 2749 Void setPocLsbVal( Int val ) { m_pocLsbVal = val; } 2443 2750 Int getPocLsbVal( ) { return m_pocLsbVal; } 2751 #if H_MV_HLS_8_POC_Q0142_32 2752 Void checkPocLsbVal( ) { assert( !(getVPS()->getPocLsbNotPresentFlag( getLayerIdInVps() ) ) || !getFullPocResetFlag() || ( getPocLsbVal() == 0 ) ); } 2753 #endif 2444 2754 2445 2755 Void setPocMsbValPresentFlag( Bool flag ) { m_pocMsbValPresentFlag = flag; } … … 2466 2776 2467 2777 // Additional variables derived in slice header semantics 2778 2468 2779 Int getNumInterLayerRefPicsMinus1Len( ) { return gCeilLog2( getVPS()->getNumDirectRefLayers( getLayerId() )); } 2469 2780 Int getInterLayerPredLayerIdcLen ( ) { return gCeilLog2( getVPS()->getNumDirectRefLayers( getLayerId() )); } … … 2483 2794 TComPic* getPicFromRefPicSetInterLayer( Int setIdc, Int layerId ); 2484 2795 2796 2797 #if H_MV_HLS_8_POC_Q0146_15 2798 // Inference 2799 Bool inferPocMsbValPresentFlag() 2800 { 2801 Bool pocMsbValPresentFlag; 2802 if( getSliceSegmentHeaderExtensionLength() == 0 ) 2803 { 2804 pocMsbValPresentFlag = false; 2805 } 2806 else if ( getPocMsbValRequiredFlag() ) 2807 { 2808 pocMsbValPresentFlag = true; 2809 } 2810 else 2811 { 2812 pocMsbValPresentFlag = false; 2813 } 2814 2815 return pocMsbValPresentFlag; 2816 } 2817 #endif 2485 2818 #endif 2486 2819 #if H_3D_DDD -
trunk/source/Lib/TLibCommon/TypeDef.h
r950 r964 66 66 67 67 #define NTT_BUG_FIX_TK54 1 68 68 #define BUG_FIX_TK65 1 69 69 70 70 ///////////////////////////////////////////////////////////////////////////////////////// … … 359 359 #define MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133 1 360 360 #endif 361 362 #if H_MV 363 #define H0044_POC_LSB_NOT_PRESENT 1 ///< JCT3V-H0044: Add constraint checking on the value of poc_reset_idc and poc_lsb_val 364 #define H0056_EOS_CHECKS 1 ///< JCT3V-H0056: Put checks on handling EOS 365 #endif 361 366 ///////////////////////////////////////////////////////////////////////////////////////// 362 367 /////////////////////////////////// TBD ////////////////////////////// 363 368 ///////////////////////////////////////////////////////////////////////////////////////// 364 369 370 371 #define H_MV_HLS_8 1 // General changes 372 #define H_MV_HLS_7_VPS_P0300_27 1 // Output part only. (VPS/P0300/alt output layer flag) #27 Change alt output layer flag to be signalled within the loop of output layer sets, from JCTVC-P0300-v2. Decision: Adopt. 373 #define MV_FIX_DEP_TYPES 1 374 375 376 #define H_MV_HLS7_GEN 0 // General changes (not tested) 377 378 // POC 365 379 // #define H_MV_HLS_7_POC_P0041_3 0 // (POC/P0041/POC reset) #3 It was remarked that we should require each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture. This was agreed. Decision: Adopt (with constraint for discardable_flag as described above) 366 380 // #define H_MV_HLS_7_POC_P0041_FIXES 0 // (POC/P0041/Fixes) For each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture. 367 381 // #define H_MV_HLS_7_POC_P0056_4 0 // (POC/P0056/layer tree poc) #4 Proposal 1: If the POC reset approach is adopted as the basis for multi-layer POC derivation, it is proposed to derive the POC anchor picture from the previous TID0 picture (that is not a RASL picture, a RADL picture or a sub-layer non-reference picture and not with discardable_flag equal to 1) of the current layer or any of its reference layer. This is asserted to improve loss resilience and reduce bit rate overhead. Decision: Adopt Proposal 1 (with the suggested modifications Ewith text provided as P0297). 368 382 369 // #define H_MV_HLS_7_SEI_P0133_28 0 // (SEI/P0133/Recovery point SEI) #28 Decision: Adopt change to recover point semantics only (-v3) 370 // #define H_MV_HLS_7_SEI_P0123_25 0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture. 371 383 384 // OTHERS 372 385 // #define H_MV_HLS_7_HRD_P0138_6 0 // (HRD/P0138/HRD parameters for bitstreams excluding) #6 Decision: Adopt (as revised in updated contribution, with the specification of a flag in the BP SEI (HRD/P0192/sub-DPB) #12 Establish sub-DPBs based on the representation format indicated at the VPS level. It was suggested that the expressed shared capacity limit would need to be less than or equal to the sum of the individual capacity limits. Decision: Adopt as modified. Further study is encouraged on profile/level constraint selections. 373 // #define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 374 // #define H_MV_HLS_7_VPS_P0300_27 0 // Output part only. (VPS/P0300/alt output layer flag) #27 Change alt output layer flag to be signalled within the loop of output layer sets, from JCTVC-P0300-v2. Decision: Adopt. 375 376 #define H_MV_HLS7_GEN 0 // General changes (not tested) 386 387 // SEI related 388 //#define H_MV_HLS_8_SEI_NODOC_53 0 // #53 (SEI /NODOC/Added Multiview view position SEI message) Plain copy from AVC. 389 //#define H_MV_HLS_8_SEI_NODOC_52 0 // #52 (SEI /NODOC/Added Multiview acquisition information SEI) Plain copy from AVC. 390 //#define H_MV_HLS_8_SEI_NODOC_51 0 // #51 (SEI /NODOC/Added Multiview scene information SEI message) 391 //#define H_MV_HLS_8_SEI_Q0189_35 0 // #35 (SEI /Q0189/SEI message for indicating constraints on TMVP) Proposal 2.3, SEI message for indicating constraints on TMVP 392 //#define H_MV_HLS_8_EDF_Q0116_29 0 // #29 (ED.FIX /Q0116/Recovery point SEI) , consider adding a note regarding how random accessibility is affected by the recovery point SEI message 393 //#define H_MV_HLS_8_GEN_Q0183_23 0 // #23 (GEN /Q0183/SEI clean-ups) numerous small clean-ups on SEI messages. 394 //#define H_MV_HLS_8_MIS_Q0247_49 0 // #49 (MISC /Q0247/frame-field information SEI message) 395 //#define H_MV_HLS_8_MIS_Q0189_34 0 // #34 (MISC /Q0189/slice temporal mvp enabled flag) Proposal 2.2, clarification of semantics of slice temporal mvp enabled flag 396 //#define H_MV_HLS_8_EDF_Q0081_01 0 // #1 (ED.FIX /Q0081/alpha channel persist) On reuse of alpha planes in auxiliary pictures. It was asked why there would not be a presumption that the alpha channel content would simply persist, without needing the flag to indicate it. Decision (Ed.): Delegated to editors to clarify, as necessary, that the alpha channel content persists until cancelled or updated in output order. 397 //#define H_MV_HLS_8_SEI_Q0253_37 0 // #37 (SEI /Q0253/layer not present), modified semantics of layers not present SEI message to correct bug introduced during editing 398 //#define H_MV_HLS_8_SEI_Q0045_11 0 // #11 (SEI /Q0045/Overlay) Proposal for an SEI message on selectable overlays. Decision: Adopt (modified for variable-length strings). 399 //#define H_MV_HLS_7_SEI_P0133_28 0 // (SEI/P0133/Recovery point SEI) #28 Decision: Adopt change to recover point semantics only (-v3) 400 //#define H_MV_HLS_7_SEI_P0123_25 0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture. 401 402 403 // Auxiliary picture related 404 //#define H_MV_HLS_8_AUX_NODOC_40 0 // #40 (AUX /NODOC/primary pic) Clarify that an auxiliary picture can be associated with more than one primary picture. Consider if the language associating an alpha auxiliary picture with a primary picture in the semantics of dimension_id[ ][ ] near the AuxId derivation could be moved to the alpha SEI message. 405 //#define H_MV_HLS_8_AUX_Q0081_2 0 // #2 (AUX /Q0081/primary) Decision: Remove the constraint that an alpha picture must be accompanied by a primary picture. 406 //#define H_MV_HLS_8_AUX_Q0078_44 0 // #44 (AUX /Q0078/concepts Auxiliary picture concepts: 407 //#define H_MV_HLS_8_AUX_Q0078_39 0 // #39 (AUX /Q0078/conformance): mechanism for signaling a profile/tier/level conformance point for auxiliary pictures 408 409 // Profiles 410 //#define H_MV_HLS_8_PRO_NODOC_50 0 // #50 (PROF /NODOC/Monochrome) Add Monochrome 8-bit profile 411 //#define H_MV_HLS_8_PRO_NODOC_31 0 // #31 (PROF /NODOC/Profile constraint) Add a profile constraint to the Scalable Main, Scalable Main 10, and Stereo Main profiles against allowing layers with duplicate values of DependencyId (or ViewOrderIdx) when AuxId equal to 0. 412 //#define H_MV_HLS_8_PRO_H0126_45 0 // #45 (PROF /H0126/Stereo main) Phrasing used in specifying the Stereo Main profile. 413 //#define H_MV_HLS_8_PRO_Q0160_33 0 // #33 (PROF /Q0160/alt_output_flag) v2: Add constraint to stereo main profile that it must contain exactly two texture views, and add a note to state that the constraint implies a restriction that alt_output_flag equal to 0. 414 415 // DPB 416 //#define H_MV_HLS_8_HRD_Q0102_09 0 // #9 (HRD /Q0102/NoOutputOfPriorPicsFlag) It was suggested that also the separate_colour_plane_flag should affect inference of NoOutputOfPriorPicsFlag. Decision (Ed.): Agreed (affects RExt text). 417 //#define H_MV_HLS_8_DBP_Q0154_38 0 // #38 (DBP /Q0154/VPS DPB) Proposal in C.5.2.1: Add in the decoding process that when a new VPS is activated, all pictures in the DPB are marked as unused for reference 418 //#define H_MV_HLS_8_HRD_Q0154_10 0 // #10 (HRD /Q0154/DPB Flushing and parameters) On picture flushing and DPB parameters Decision: Adopted (some details to be discussed further in BoG). 419 //#define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 420 421 // Others 422 //#define H_MV_HLS_8_HSB_Q0041_03 0 // #3 (HS /Q0041/hybrid scalability) The proposed text was endorsed, with non-editorial open issues considered as follows 423 :// #define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 424 //#define H_MV_HLS_8_MIS_Q0078_24 0 // #24 (MISC /Q0078/scan and pic type) , Items 3 b,c and 4, clarifying which pictures in an output layer sets are applied the values of general_progressive_source_flag, general_interlaced_source_flag, general_non_packed_constraint_flag and general_frame_only_constraint_flag. 425 426 427 #define H_MV_HLS_8_SYN_Q0041_03 1 // #3 Syntax only (HS /Q0041/hybrid scalability) The proposed text was endorsed, with non-editorial open issues considered as follows 428 :// #define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 429 #define H_MV_HLS_8_SYN_39_19 1 // #39 Syntax only + (PS/Q0165,Q0078/presence of num_add_output_layer_sets) proposal 2. change condition for presence of num_add_output_layer_sets to avoid sending it when there is only one layer set. 430 #define H_MV_HLS_8_HRD_Q0101_04 1 // #4 (HRD /Q0101/Bitstream part buffer) On Bitstream Partition Buffer. Decision (BF/Cleanup): Adopt (sub-proposals 111, refined as described). 431 #define H_MV_HLS_8_PPS_NODOC_NN 1 // #NN (PPS /NODOC/reserved flag): Add a flag in PPS for SHVC color gamut scalability 432 #define H_MV_HLS_8_MIS_Q0177_47 1 // #47 (MISC /Q0177/EOS NAL) proposal 2: clarification of description of end of sequence NAL unit 433 #define H_MV_HLS_8_HRD_Q0182_05 1 // #5 (HRD /Q0182/Bitstream part buffer) Decision (BF/Cleanup/Ed): Adopted (such that we use the main proposal for sub-proposal 1, and alternative 1 for sub-proposal 2). + #define H_MV_HLS_8_HRD_Q0182_06 0 // #6 (HRD /Q0182/hrd_parameters) Sub-proposal 2 Alternative 1: Clarify that the VPS hrd_parameters( ) syntax structure that applies to the layer set which is associated with the bitstream partition initial arrival time SEI message is used to determine the lengths of the nal_initial_arrival_delay[ i ] and vcl_initial_arrival_delay[ i ] syntax elements. Decision (BF/Cleanup/Ed): Adopted alternative 1 for sub-proposal 2 434 #define H_MV_HLS_8_SPS_NODOC_48 1 // #48 (SPS /NODOC/PPS extension cleanups) Alignment with RExt 435 #define H_MV_HLS_8_DBP_NODOC_42 1 // #42 (DBP /NODOC/sharing) Remove sub-DPB sharing and processes that mark inter-layer reference pictures as "unused for reference" 436 #define H_MV_HLS_8_RPS_Q0100_36 1 // #36 (RPS /Q0100/constraint to semantics) v3, add constraint to RPS semantics 437 #define H_MV_HLS_8_POC_Q0142_32 1 // #32 (POC /Q0142/poc_lsb_not_present_flag) v2: Add semantic constraints to poc_lsb_not_present_flag. 438 #define H_MV_HLS_8_HRD_Q0102_08 1 // #8 (HRD /Q0102/sps_max_dec_pic_buffering_minus1) Sub-proposal 2: A semantics bug fix is proposed for sps_max_dec_pic_buffering_minus1 as a bug-fix. In discussion, the first option was preferred. Decision (BF/Cleanup/Ed.): Adopt. 439 #define H_MV_HLS_8_MIS_Q0102_30 1 // #30 (MISC /Q0102/loop index) proposal 3, change the max loop index for signaling bit rate and pic rate info to MaxSubLayersInLayerSetMinus1 440 #define H_MV_HLS_8_GEN_Q0108_13 1 // #13 (GEN /Q0108/STSA TemporalId) Agreed to remove restriction from proposal 2, to allow STSA pics of non-base layers to have TemporalId equal to 0. 441 #define H_MV_HLS_8_PMS_Q0195_21 1 // #21 (PS /Q0195/constraint update_ref_format_flag) proposal 2: add a semantic constraint on the value of update_ref_format_flag 442 #define H_MV_HLS_8_PMS_Q0195_20 1 // #20 (PS /Q0195/syntax table rep format) proposal 1: restructure syntax table for sending of rep_format_idx_present_flag and vps_num_ref_formats_minus1 443 #define H_MV_HLS_8_MIS_Q0177_22 1 // #22 (MISC /Q0177/inference sps_temporal_id_nesting_flag) proposal 1: modify inference rule for sps_temporal_id_nesting_flag when it is not present 444 #define H_MV_HLS_8_PMS_Q0165_18 1 // #18 (PS /Q0165/disallow an empty layer set) proposal 1.a), add a constraint to disallow an empty layer set 445 #define H_MV_HLS_8_RPS_Q0060_17 1 // #17 (RPS /Q0060/condition refLayerPicIdc) Proposal 2: Add a condition to the derivation of refLayerPicIdc of (TemporalId == 0) 446 #define H_MV_HLS_8_POC_Q0146_15 1 // #15 (POC /Q0146/inference of poc_msb_val_present_flag) Proposal 1.1: Change inference rule in semantics of poc_msb_val_present_flag 447 377 448 378 449 … … 380 451 /////////////////////////////////// HM RELATED DEFINES //////////////////////////////// 381 452 ///////////////////////////////////////////////////////////////////////////////////////// 382 #define BUGFIX_INTRAPERIOD 1 453 #define HARMONIZE_GOP_FIRST_FIELD_COUPLE 1 454 #define FIX_FIELD_DEPTH 1 455 #if H_MV 456 #define EFFICIENT_FIELD_IRAP 0 457 #else 458 #define EFFICIENT_FIELD_IRAP 1 459 #endif 460 #define ALLOW_RECOVERY_POINT_AS_RAP 1 461 #define BUGFIX_INTRAPERIOD 1 383 462 #define SAO_ENCODE_ALLOW_USE_PREDEBLOCK 1 384 463 464 #define SAO_SGN_FUNC 1 465 385 466 #define FIX1172 1 ///< fix ticket #1172 467 468 #define SETTING_PIC_OUTPUT_MARK 1 469 #define SETTING_NO_OUT_PIC_PRIOR 1 470 #define FIX_EMPTY_PAYLOAD_NAL 1 471 #define FIX_WRITING_OUTPUT 1 472 #define FIX_OUTPUT_EOS 1 473 474 #define FIX_POC_CRA_NORASL_OUTPUT 1 386 475 387 476 #define MAX_NUM_PICS_IN_SOP 1024 … … 923 1012 #if H_MV 924 1013 1014 #if !H_MV_HLS_8_SPS_NODOC_48 925 1015 enum PpsExtensionTypes 926 1016 { … … 944 1034 PS_EX_T_MAX_NUM = 8 945 1035 }; 946 1036 #endif 947 1037 /// scalability types 948 1038 enum ScalabilityType
Note: See TracChangeset for help on using the changeset viewer.