Changeset 1128 in SHVCSoftware
- Timestamp:
- 7 Jul 2015, 02:58:30 (9 years ago)
- Location:
- branches/SHM-dev/source
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r1126 r1128 1169 1169 ("CrossLayerPictureTypeAlignFlag", m_crossLayerPictureTypeAlignFlag, true, "align picture type across layers" ) 1170 1170 ("CrossLayerIrapAlignFlag", m_crossLayerIrapAlignFlag, true, "align IRAP across layers" ) 1171 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG1172 1171 ("CrossLayerAlignedIdrOnlyFlag", m_crossLayerAlignedIdrOnlyFlag, true, "only idr for IRAP across layers" ) 1173 #endif1174 1172 #if O0194_WEIGHTED_PREDICTION_CGS 1175 1173 ("InterLayerWeightedPred", m_useInterLayerWeightedPred, false, "enable IL WP parameters estimation at encoder" ) … … 1694 1692 ("LayerSwitchOffEnd%d", cfg_layerSwitchOffEnd, 0, MAX_LAYERS, "Switch layer %d on at given poc") 1695 1693 #endif 1696 #if HIGHER_LAYER_IRAP_SKIP_FLAG1697 1694 ("SkipPictureAtArcSwitch", m_skipPictureAtArcSwitch, false, "Code the higher layer picture in ARC up-switching as a skip picture. (0: disable)") 1698 #endif1699 1695 #if N0383_IL_CONSTRAINED_TILE_SETS_SEI 1700 1696 ("SEIInterLayerConstrainedTileSets", m_interLayerConstrainedTileSetsSEIEnabled, false, "Control generation of inter layer constrained tile sets SEI message") … … 4360 4356 } 4361 4357 #endif 4362 #if HIGHER_LAYER_IRAP_SKIP_FLAG 4358 4363 4359 if (m_adaptiveResolutionChange > 0) 4364 4360 { … … 4369 4365 xConfirmPara(m_adaptiveResolutionChange <= 0, "Skip picture at ARC switching only works when Adaptive Resolution Change is active (AdaptiveResolutionChange > 0)"); 4370 4366 } 4371 #endif 4367 4372 4368 if( layerIdx < MAX_LAYERS-1 ) 4373 4369 { … … 4504 4500 printf("Adaptive Resolution Change : %d\n", m_adaptiveResolutionChange ); 4505 4501 #endif 4506 #if HIGHER_LAYER_IRAP_SKIP_FLAG4507 4502 printf("Skip picture at ARC switch : %d\n", m_skipPictureAtArcSwitch ); 4508 #endif4509 4503 printf("Align picture type : %d\n", m_crossLayerPictureTypeAlignFlag ); 4510 4504 printf("Cross layer IRAP alignment : %d\n", m_crossLayerIrapAlignFlag ); 4511 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG4512 4505 printf("IDR only for IRAP : %d\n", m_crossLayerAlignedIdrOnlyFlag ); 4513 #endif4514 4506 #if O0194_WEIGHTED_PREDICTION_CGS 4515 4507 printf("InterLayerWeightedPred : %d\n", m_useInterLayerWeightedPred ); -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h
r1126 r1128 476 476 Int m_adaptiveResolutionChange; ///< Indicate adaptive resolution change frame 477 477 #endif 478 #if HIGHER_LAYER_IRAP_SKIP_FLAG479 478 Bool m_skipPictureAtArcSwitch; ///< Indicates that when ARC up-switching is performed the higher layer picture is a skip picture 480 #endif481 479 #if REPN_FORMAT_IN_VPS 482 480 RepFormatCfg m_repFormatCfg[16]; ///< Rep_format structures … … 515 513 Bool m_overlayInfoPersistenceFlag; 516 514 #endif 517 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG518 515 Bool m_crossLayerAlignedIdrOnlyFlag; 519 #endif520 516 #if O0149_CROSS_LAYER_BLA_FLAG 521 517 Bool m_crossLayerBLAFlag; -
branches/SHM-dev/source/App/TAppEncoder/TAppEncTop.cpp
r1126 r1128 188 188 m_acLayerCfg[mapIdxToLayer[idx]].m_confWinBottom ); 189 189 190 #if HIGHER_LAYER_IRAP_SKIP_FLAG191 190 m_acTEncTop[mapIdxToLayer[idx]].setSkipPictureAtArcSwitch ( m_skipPictureAtArcSwitch ); 192 #endif193 191 } 194 192 delete [] mapIdxToLayer; … … 1755 1753 #endif 1756 1754 vps->setCrossLayerPictureTypeAlignFlag( m_crossLayerPictureTypeAlignFlag ); 1757 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG1758 1755 vps->setCrossLayerAlignedIdrOnlyFlag( m_crossLayerAlignedIdrOnlyFlag ); 1759 #endif1760 1756 vps->setCrossLayerIrapAlignFlag( m_crossLayerIrapAlignFlag ); 1761 1757 for(UInt layerCtr = 1;layerCtr <= vps->getMaxLayers() - 1; layerCtr++) … … 1776 1772 vps->setSingleLayerForNonIrapFlag(m_adaptiveResolutionChange > 0 ? true : false); 1777 1773 #endif 1778 #if HIGHER_LAYER_IRAP_SKIP_FLAG1779 1774 vps->setHigherLayerIrapSkipFlag(m_skipPictureAtArcSwitch); 1780 #endif1781 1775 1782 1776 for (Int k = 0; k < MAX_VPS_LAYER_SETS_PLUS1; k++) -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp
r1126 r1128 2052 2052 m_crossLayerPictureTypeAlignFlag = true; 2053 2053 m_crossLayerIrapAlignFlag = true; 2054 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG2055 2054 m_crossLayerAlignedIdrOnlyFlag = false; 2056 #endif2057 2055 m_maxTidRefPresentFlag = true; 2058 2056 for( Int i = 0; i < MAX_VPS_LAYER_IDX_PLUS1 - 1; i++) -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h
r1126 r1128 699 699 Bool m_crossLayerPictureTypeAlignFlag; 700 700 Bool m_crossLayerIrapAlignFlag; 701 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG702 701 Bool m_crossLayerAlignedIdrOnlyFlag; 703 #endif704 702 UInt m_maxTidIlRefPicsPlus1[MAX_VPS_LAYER_IDX_PLUS1 - 1][MAX_VPS_LAYER_IDX_PLUS1]; 705 703 Bool m_maxTidRefPresentFlag; … … 711 709 Bool m_singleLayerForNonIrapFlag; 712 710 #endif 713 #if HIGHER_LAYER_IRAP_SKIP_FLAG714 711 Bool m_higherLayerIrapSkipFlag; 715 #endif716 712 #if VPS_VUI_TILES_NOT_IN_USE__FLAG 717 713 Bool m_tilesNotInUseFlag; … … 1106 1102 Void setProfileLevelTierIdx(Int i, Int x) { m_profileLevelTierIdx[i] = x ; } 1107 1103 #endif 1108 Bool getMaxOneActiveRefLayerFlag() { return m_maxOneActiveRefLayerFlag; 1109 Void setMaxOneActiveRefLayerFlag(Bool x) { m_maxOneActiveRefLayerFlag = x; 1104 Bool getMaxOneActiveRefLayerFlag() { return m_maxOneActiveRefLayerFlag; } 1105 Void setMaxOneActiveRefLayerFlag(Bool x) { m_maxOneActiveRefLayerFlag = x; } 1110 1106 #if O0062_POC_LSB_NOT_PRESENT_FLAG 1111 UInt getPocLsbNotPresentFlag(Int i) { return m_pocLsbNotPresentFlag[i]; }1112 Void setPocLsbNotPresentFlag(Int i, Bool x) { m_pocLsbNotPresentFlag[i] = x; }1107 UInt getPocLsbNotPresentFlag(Int i) { return m_pocLsbNotPresentFlag[i]; } 1108 Void setPocLsbNotPresentFlag(Int i, Bool x) { m_pocLsbNotPresentFlag[i] = x; } 1113 1109 #endif 1114 1110 #if P0297_VPS_POC_LSB_ALIGNED_FLAG 1115 Bool getVpsPocLsbAlignedFlag() { return m_vpsPocLsbAlignedFlag; } 1116 Void setVpsPocLsbAlignedFlag(Bool x) { m_vpsPocLsbAlignedFlag = x; } 1117 #endif 1118 Bool getCrossLayerPictureTypeAlignFlag() { return m_crossLayerPictureTypeAlignFlag; } 1119 Void setCrossLayerPictureTypeAlignFlag(Bool x) { m_crossLayerPictureTypeAlignFlag = x; } 1120 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG 1121 Bool getCrossLayerAlignedIdrOnlyFlag() { return m_crossLayerAlignedIdrOnlyFlag; } 1122 Void setCrossLayerAlignedIdrOnlyFlag(Bool x) { m_crossLayerAlignedIdrOnlyFlag = x; } 1123 #endif 1124 Bool getCrossLayerIrapAlignFlag() { return m_crossLayerIrapAlignFlag; } 1125 Void setCrossLayerIrapAlignFlag(Bool x) { m_crossLayerIrapAlignFlag = x; } 1111 Bool getVpsPocLsbAlignedFlag() { return m_vpsPocLsbAlignedFlag; } 1112 Void setVpsPocLsbAlignedFlag(Bool x) { m_vpsPocLsbAlignedFlag = x; } 1113 #endif 1114 Bool getCrossLayerPictureTypeAlignFlag() { return m_crossLayerPictureTypeAlignFlag; } 1115 Void setCrossLayerPictureTypeAlignFlag(Bool x) { m_crossLayerPictureTypeAlignFlag = x; } 1116 Bool getCrossLayerAlignedIdrOnlyFlag() { return m_crossLayerAlignedIdrOnlyFlag; } 1117 Void setCrossLayerAlignedIdrOnlyFlag(Bool x) { m_crossLayerAlignedIdrOnlyFlag = x; } 1118 Bool getCrossLayerIrapAlignFlag() { return m_crossLayerIrapAlignFlag; } 1119 Void setCrossLayerIrapAlignFlag(Bool x) { m_crossLayerIrapAlignFlag = x; } 1126 1120 UInt getMaxTidIlRefPicsPlus1(Int refLayerIdx, Int layerIdx) { return m_maxTidIlRefPicsPlus1[refLayerIdx][layerIdx]; } 1127 1121 Void setMaxTidIlRefPicsPlus1(Int refLayerIdx, Int layerIdx, UInt maxSublayer) { m_maxTidIlRefPicsPlus1[refLayerIdx][layerIdx] = maxSublayer; } … … 1138 1132 Void setSingleLayerForNonIrapFlag(Bool x) { m_singleLayerForNonIrapFlag = x; } 1139 1133 #endif 1140 #if HIGHER_LAYER_IRAP_SKIP_FLAG1141 1134 Bool getHigherLayerIrapSkipFlag() { return m_higherLayerIrapSkipFlag; } 1142 1135 Void setHigherLayerIrapSkipFlag(Bool x) { m_higherLayerIrapSkipFlag = x; } 1143 #endif1144 1136 #if VPS_VUI_TILES_NOT_IN_USE__FLAG 1145 1137 Bool getTilesNotInUseFlag() { return m_tilesNotInUseFlag; } -
branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h
r1126 r1128 144 144 #define VPS_VUI_WPP_NOT_IN_USE__FLAG 1 ///< JCTVC-O0226: VPS VUI flag to indicate tile not in use 145 145 #define N0160_VUI_EXT_ILP_REF 1 ///< VUI extension inter-layer dependency offset signalling 146 #if M0040_ADAPTIVE_RESOLUTION_CHANGE 147 #define HIGHER_LAYER_IRAP_SKIP_FLAG 1 ///< JCTVC-O0199: Indication that higher layer IRAP picture uses skip blocks only 148 #endif 146 149 147 #define VPS_VUI_VIDEO_SIGNAL 1 ///< JCTVC-O0118 video signal information 150 148 #if VPS_VUI_VIDEO_SIGNAL … … 168 166 #define P0079_DERIVE_NUMACTIVE_REF_PICS 1 ///< JCTVC-P0079 Modification of derivation of variable NumActiveRefLayerPics 169 167 #define Q0060_MAX_TID_REF_EQUAL_TO_ZERO 1 ///< JCTVC-Q0060 handling the case max_tid_il_ref_pics_plus1 is equal to 0. 170 171 #define P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG 1 ///< a flag to indicatate whether picture types for IRAP are IDR across layers.172 168 173 169 #define VIEW_ID_RELATED_SIGNALING 1 ///< Introduce syntax elements view_id and view_id_val … … 248 244 #define JCTVC_M0259_LAMBDAREFINEMENT 1 ///< JCTVC-M0259: lambda refinement (encoder only optimization) 249 245 #define ENCODER_FAST_MODE 1 ///< JCTVC-L0174: enable encoder fast mode. TestMethod 1 is enabled by setting to 1 and TestMethod 2 is enable by setting to 2. By default it is set to 1. 246 #if M0040_ADAPTIVE_RESOLUTION_CHANGE 247 #define HIGHER_LAYER_IRAP_SKIP_FLAG 1 ///< JCTVC-O0199: Indication that higher layer IRAP picture uses skip blocks only 248 #endif 250 249 #define LAYER_CTB 0 ///< enable layer-specific CTB structure 251 250 -
branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1126 r1128 3468 3468 #endif 3469 3469 3470 #if HIGHER_LAYER_IRAP_SKIP_FLAG3471 3470 // When higher_layer_irap_skip_flag is not present it is inferred to be equal to 0 3472 3471 vps->setHigherLayerIrapSkipFlag( false ); 3473 #endif3474 3472 } 3475 3473 … … 3662 3660 READ_FLAG(uiCode, "cross_layer_pic_type_aligned_flag" ); 3663 3661 vps->setCrossLayerPictureTypeAlignFlag(uiCode); 3664 if (!uiCode) 3662 3663 if( !uiCode ) 3665 3664 { 3666 3665 READ_FLAG(uiCode, "cross_layer_irap_aligned_flag" ); … … 3672 3671 } 3673 3672 3674 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG 3675 if( uiCode ) 3673 if( vps->getCrossLayerIrapAlignFlag() ) 3676 3674 { 3677 3675 READ_FLAG( uiCode, "all_layers_idr_aligned_flag" ); 3678 3676 vps->setCrossLayerAlignedIdrOnlyFlag(uiCode); 3679 3677 } 3680 #endif3681 3678 3682 3679 READ_FLAG( uiCode, "bit_rate_present_vps_flag" ); vps->setBitRatePresentVpsFlag( uiCode ? true : false ); … … 3840 3837 READ_FLAG(uiCode, "single_layer_for_non_irap_flag" ); vps->setSingleLayerForNonIrapFlag(uiCode == 1 ? true : false); 3841 3838 #endif 3842 #if HIGHER_LAYER_IRAP_SKIP_FLAG3843 3839 READ_FLAG(uiCode, "higher_layer_irap_skip_flag" ); vps->setHigherLayerIrapSkipFlag(uiCode == 1 ? true : false); 3844 3840 … … 3848 3844 assert( !vps->getHigherLayerIrapSkipFlag() ); 3849 3845 } 3850 #endif3851 3846 #if N0160_VUI_EXT_ILP_REF 3852 3847 READ_FLAG( uiCode, "ilp_restricted_ref_layers_flag" ); vps->setIlpRestrictedRefLayersFlag( uiCode == 1 ); -
branches/SHM-dev/source/Lib/TLibDecoder/TDecCu.cpp
r1029 r1128 302 302 } 303 303 304 #if HIGHER_LAYER_IRAP_SKIP_FLAG 305 if (pcCU->getSlice()->getVPS()->getHigherLayerIrapSkipFlag() && pcCU->getSlice()->getVPS()->getSingleLayerForNonIrapFlag() && pcCU->getLayerId() > 0) 304 #if SVC_EXTENSION 305 // Check CU skip for higher layer IRAP skip flag 306 if( pcCU->getSlice()->getVPS()->getHigherLayerIrapSkipFlag() && pcCU->getSlice()->getVPS()->getSingleLayerForNonIrapFlag() && pcCU->getLayerId() > 0 ) 306 307 { 307 308 Bool lowerLayerExist = false; … … 313 314 } 314 315 } 315 if(lowerLayerExist) 316 { 317 assert(pcCU->isSkipped(uiAbsPartIdx)); 316 317 if( lowerLayerExist && !pcCU->isSkipped(uiAbsPartIdx) ) 318 { 319 printf( "Warning: CU is not skipped with enabled higher layer IRAP skip flag\n" ); 318 320 } 319 321 } -
branches/SHM-dev/source/Lib/TLibEncoder/TEncCavlc.cpp
r1126 r1128 2518 2518 else 2519 2519 { 2520 vps->setCrossLayerIrapAlignFlag(vps->getVpsVuiPresentFlag()); // When not present, the value of cross_layer_irap_aligned_flag is inferred to be equal to vps_vui_present_flag 2521 } 2522 2523 #if P0068_CROSS_LAYER_ALIGNED_IDR_ONLY_FOR_IRAP_FLAG 2524 if(vps->getCrossLayerIrapAlignFlag()) 2520 // When not present, the value of cross_layer_irap_aligned_flag is inferred to be equal to vps_vui_present_flag, 2521 // i.e. it is true in this function 2522 vps->setCrossLayerIrapAlignFlag( true ); 2523 } 2524 2525 if( vps->getCrossLayerIrapAlignFlag() ) 2525 2526 { 2526 2527 WRITE_FLAG(vps->getCrossLayerAlignedIdrOnlyFlag(), "all_layers_idr_aligned_flag"); 2527 2528 } 2528 #endif2529 2529 2530 2530 WRITE_FLAG( vps->getBitRatePresentVpsFlag(), "bit_rate_present_vps_flag" ); … … 2645 2645 WRITE_FLAG(vps->getSingleLayerForNonIrapFlag(), "single_layer_for_non_irap_flag" ); 2646 2646 #endif 2647 #if HIGHER_LAYER_IRAP_SKIP_FLAG 2647 2648 2648 // When single_layer_for_non_irap_flag is equal to 0, higher_layer_irap_skip_flag shall be equal to 0 2649 2649 if( !vps->getSingleLayerForNonIrapFlag() ) … … 2653 2653 2654 2654 WRITE_FLAG(vps->getHigherLayerIrapSkipFlag(), "higher_layer_irap_skip_flag" ); 2655 #endif 2655 2656 2656 #if N0160_VUI_EXT_ILP_REF 2657 2657 WRITE_FLAG( vps->getIlpRestrictedRefLayersFlag() ? 1 : 0 , "ilp_restricted_ref_layers_flag" ); -
branches/SHM-dev/source/Lib/TLibEncoder/TEncCfg.h
r1124 r1128 378 378 #endif 379 379 Bool m_altOutputLayerFlag; 380 #if HIGHER_LAYER_IRAP_SKIP_FLAG381 380 Int m_skipPictureAtArcSwitch; 382 #endif383 381 #if O0149_CROSS_LAYER_BLA_FLAG 384 382 Bool m_crossLayerBLAFlag; … … 1026 1024 Int getLayerSwitchOffEnd() { return m_layerSwitchOffEnd; } 1027 1025 #endif 1028 #if HIGHER_LAYER_IRAP_SKIP_FLAG1029 1026 Void setSkipPictureAtArcSwitch(Int x) { m_skipPictureAtArcSwitch = x; } 1030 1027 Int getSkipPictureAtArcSwitch() { return m_skipPictureAtArcSwitch; } 1031 #endif1032 1028 #if AUXILIARY_PICTURES 1033 1029 Void setChromaFormatIDC(ChromaFormat x) { m_chromaFormatIDC = x; } -
branches/SHM-dev/source/Lib/TLibEncoder/TEncSlice.cpp
r1065 r1128 550 550 rpcSlice->setSliceSegmentArgument ( m_pcCfg->getSliceSegmentArgument() ); 551 551 rpcSlice->setMaxNumMergeCand ( m_pcCfg->getMaxNumMergeCand() ); 552 552 553 #if HIGHER_LAYER_IRAP_SKIP_FLAG 553 if (m_pcCfg->getSkipPictureAtArcSwitch() && m_pcCfg->getAdaptiveResolutionChange() > 0 && rpcSlice->getLayerId() == 1 && rpcSlice->getPOC() == m_pcCfg->getAdaptiveResolutionChange())554 if( m_pcCfg->getSkipPictureAtArcSwitch() && m_pcCfg->getAdaptiveResolutionChange() > 0 && rpcSlice->getLayerId() == 1 && rpcSlice->getPOC() == m_pcCfg->getAdaptiveResolutionChange() ) 554 555 { 555 556 rpcSlice->setMaxNumMergeCand ( 1 ); 556 557 } 557 558 #endif 559 558 560 xStoreWPparam( pPPS->getUseWP(), pPPS->getWPBiPred() ); 559 561
Note: See TracChangeset for help on using the changeset viewer.