Changeset 964 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComSlice.h
- Timestamp:
- 5 Jul 2014, 05:16:45 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
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
Note: See TracChangeset for help on using the changeset viewer.