Changeset 1107 in SHVCSoftware
- Timestamp:
- 6 Jul 2015, 21:01:55 (9 years ago)
- Location:
- branches/SHM-dev/source
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppDecoder/TAppDecCfg.cpp
r1106 r1107 259 259 } 260 260 fclose (targetDecLayerIdSetFile); 261 #if !R0235_SMALLEST_LAYER_ID // LayerId=0 is not required anymore in some cases262 if ( m_targetDecLayerIdSet.size() > 0 && !isLayerIdZeroIncluded )263 {264 fprintf(stderr, "TargetDecLayerIdSet must contain LayerId=0, aborting" );265 return false;266 }267 #endif268 261 } 269 262 else -
branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.cpp
r1106 r1107 1284 1284 return true; 1285 1285 } 1286 #if R0235_SMALLEST_LAYER_ID1286 #if SVC_EXTENSION 1287 1287 if (nalu->m_layerId == 0 && (nalu->m_nalUnitType == NAL_UNIT_VPS || nalu->m_nalUnitType == NAL_UNIT_SPS || nalu->m_nalUnitType == NAL_UNIT_PPS || nalu->m_nalUnitType == NAL_UNIT_EOS)) 1288 1288 { … … 1299 1299 return false; 1300 1300 } 1301 1301 1302 #if ALIGNED_BUMPING 1302 1303 // Function outputs a picture, and marks it as not needed for output. -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.cpp
r1090 r1107 2611 2611 #if MULTIPLE_PTL_SUPPORT 2612 2612 Int olsToLsIndex = (olsCtr >= (m_numLayerSets + m_numAddLayerSets)) ? m_outputLayerSetIdx[olsCtr - (m_numLayerSets + m_numAddLayerSets)] : olsCtr; 2613 #if R0235_SMALLEST_LAYER_ID 2613 2614 2614 // This is a fix to allow setting of PTL for additional layer sets 2615 2615 if (olsCtr >= m_numLayerSets && olsCtr < (m_numLayerSets + m_numAddLayerSets)) … … 2621 2621 scanStringToArray(cfg_listOfLayerPTLOfOlss[olsCtr], m_numLayerInIdList[olsToLsIndex], "List of PTL for each layers in OLS", m_listOfLayerPTLofOlss[olsCtr]); 2622 2622 } 2623 #else 2624 scanStringToArray( cfg_listOfLayerPTLOfOlss[olsCtr], m_numLayerInIdList[olsToLsIndex], "List of PTL for each layers in OLS", m_listOfLayerPTLofOlss[olsCtr] ); 2625 #endif 2623 2626 2624 //For conformance checking 2627 2625 //Conformance of a layer in an output operation point associated with an OLS in a bitstream to the Scalable Main profile is indicated as follows: … … 2630 2628 //If OpTid of the output operation point is equal to vps_max_sub_layer_minus1, the conformance is indicated by general_profile_idc being equal to 7 or general_profile_compatibility_flag[ 7 ] being equal to 1 2631 2629 //The following assert may be updated / upgraded to take care of general_profile_compatibility_flag. 2632 #if R0235_SMALLEST_LAYER_ID2633 2630 if (m_numAddLayerSets == 0) 2634 2631 { 2635 #endif 2636 for ( Int ii = 1; ii < m_numLayerInIdList[olsToLsIndex]; ii++) 2637 { 2638 if (m_layerSetLayerIdList[olsToLsIndex][ii - 1] != 0 && m_layerSetLayerIdList[olsToLsIndex][ii] != 0) //Profile / profile compatibility of enhancement layers must indicate the same profile. 2639 { 2640 assert( (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) || 2641 (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) || 2642 (m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) ); 2643 } 2644 } 2645 #if R0235_SMALLEST_LAYER_ID 2646 } 2647 #endif 2632 for ( Int ii = 1; ii < m_numLayerInIdList[olsToLsIndex]; ii++) 2633 { 2634 if (m_layerSetLayerIdList[olsToLsIndex][ii - 1] != 0 && m_layerSetLayerIdList[olsToLsIndex][ii] != 0) //Profile / profile compatibility of enhancement layers must indicate the same profile. 2635 { 2636 assert( (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) || 2637 (m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) || 2638 (m_profileCompatibility[m_listOfLayerPTLofOlss[olsCtr][ii]] == m_profileList[m_listOfLayerPTLofOlss[olsCtr][ii - 1]]) ); 2639 } 2640 } 2641 } 2648 2642 #endif 2649 2643 } … … 4854 4848 #endif 4855 4849 4856 #if R0235_SMALLEST_LAYER_ID4857 4850 #if OUTPUT_LAYER_SETS_CONFIG 4858 4851 Void TAppEncCfg::cfgStringToArrayNumEntries(Int **arr, string const cfgString, Int &numEntries, const char* logString) … … 4924 4917 } 4925 4918 #endif 4926 #endif // R02354927 4919 #endif //SVC_EXTENSION 4928 4920 //! \} -
branches/SHM-dev/source/App/TAppEncoder/TAppEncCfg.h
r1090 r1107 576 576 Bool scanStringToArray(string const cfgString, Int const numEntries, const char* logString, std::vector<Int> & returnVector); 577 577 Void cfgStringToArray(Int **arr, string const cfgString, Int const numEntries, const char* logString); 578 #if R0235_SMALLEST_LAYER_ID579 578 Bool scanStringToArrayNumEntries(string const cfgString, Int &numEntries, const char* logString, Int * const returnArray); 580 579 Bool scanStringToArrayNumEntries(string const cfgString, Int &numEntries, const char* logString, std::vector<Int> & returnVector); 581 580 Void cfgStringToArrayNumEntries(Int **arr, string const cfgString, Int &numEntries, const char* logString); 582 #endif583 581 #else 584 582 Void cfgStringToArray(Int **arr, string cfgString, Int numEntries, const char* logString); -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.cpp
r1105 r1107 869 869 */ 870 870 #if NO_CLRAS_OUTPUT_FLAG 871 #if R0235_SMALLEST_LAYER_ID872 871 Void TComSlice::decodingRefreshMarking( TComList<TComPic*>& rcListPic, Bool noClrasOutputFlag, UInt smallestLayerId ) 873 #else874 Void TComSlice::decodingRefreshMarking( TComList<TComPic*>& rcListPic, Bool noClrasOutputFlag )875 #endif876 872 { 877 873 if( !isIRAP() ) … … 885 881 // When the current picture is an IRAP picture with nuh_layer_id equal to 0 and NoClrasOutputFlag is equal to 1, 886 882 // all reference pictures with any value of nuh_layer_id currently in the DPB (if any) are marked as "unused for reference". 887 #if R0235_SMALLEST_LAYER_ID888 883 if (m_layerId == smallestLayerId && noClrasOutputFlag) 889 #else890 if( m_layerId == 0 && noClrasOutputFlag )891 #endif892 884 { 893 885 // mark all pictures for all layers as not used for reference -
branches/SHM-dev/source/Lib/TLibCommon/TComSlice.h
r1105 r1107 2405 2405 Void checkCRA(TComReferencePictureSet *pReferencePictureSet, Int& pocCRA, NalUnitType& associatedIRAPType, TComList<TComPic *>& rcListPic); 2406 2406 #if NO_CLRAS_OUTPUT_FLAG 2407 #if R0235_SMALLEST_LAYER_ID2408 2407 Void decodingRefreshMarking( TComList<TComPic*>& rcListPic, Bool noClrasOutputFlag, UInt smallestLayerId = 0 ); 2409 #else2410 Void decodingRefreshMarking( TComList<TComPic*>& rcListPic, Bool noClrasOutputFlag );2411 #endif2412 2408 Void decodingRefreshMarking(Int& pocCRA, Bool& bRefreshPending, TComList<TComPic*>& rcListPic, Bool noClrasOutputFlag); 2413 2409 #else -
branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h
r1106 r1107 77 77 #define R0227_BR_PR_ADD_LAYER_SET 1 ///< JCTVC-R0227, Signalling of bit-rate and picture rate for additional layer set 78 78 #define R0042_PROFILE_INDICATION 1 ///< JCTVC-R0042, Profile indication for additional layer sets 79 #define R0235_SMALLEST_LAYER_ID 1 ///< JCTVC-R0235, SmallestLayerId semantics80 79 81 80 #define Q0108_TSA_STSA 1 ///< JCTVC-Q0108, Remove cross-layer alignment constraints of TSA and STSA pictures, enable to have different prediction structures in different layers -
branches/SHM-dev/source/Lib/TLibDecoder/TDecCAVLC.cpp
r1105 r1107 1475 1475 for(Int kk = 0; kk < pcSlice->getVPS()->getNumLayersInIdList(layerSetIdxForOutputLayerSet); kk++) 1476 1476 { 1477 #if R0235_SMALLEST_LAYER_ID1478 1477 if( pcSlice->getVPS()->getNecessaryLayerFlag(ii, kk) && pcSlice->getLayerId() == pcSlice->getVPS()->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, kk) ) 1479 #else1480 if(pcSlice->getLayerId() == pcSlice->getVPS()->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, kk))1481 #endif1482 1478 { 1483 1479 chkAssert=1; … … 3102 3098 //If OpTid of the output operation point is equal to vps_max_sub_layer_minus1, the conformance is indicated by general_profile_idc being equal to 7 or general_profile_compatibility_flag[ 7 ] being equal to 1 3103 3099 //The following assert may be updated / upgraded to take care of general_profile_compatibility_flag. 3104 #if R0235_SMALLEST_LAYER_ID 3100 3105 3101 // The assertion below is not valid for independent non-base layers 3106 3102 if (vps->getNumAddLayerSets() == 0) 3107 3103 { 3108 #endif 3109 if( j > 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j) != 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j - 1) != 0 && vps->getNecessaryLayerFlag(i, j-1) ) 3110 { 3111 assert(vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileIdc() == vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileIdc() || 3112 vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileCompatibilityFlag(vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileIdc()) || 3113 vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileCompatibilityFlag(vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileIdc()) ); 3114 } 3115 #if R0235_SMALLEST_LAYER_ID 3116 } 3117 #endif 3104 if( j > 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j) != 0 && vps->getLayerSetLayerIdList(layerSetIdxForOutputLayerSet, j - 1) != 0 && vps->getNecessaryLayerFlag(i, j-1) ) 3105 { 3106 assert(vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileIdc() == vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileIdc() || 3107 vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileCompatibilityFlag(vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileIdc()) || 3108 vps->getPTL(vps->getProfileLevelTierIdx(i, j))->getGeneralPTL()->getProfileCompatibilityFlag(vps->getPTL(vps->getProfileLevelTierIdx(i, j - 1))->getGeneralPTL()->getProfileIdc()) ); 3109 } 3110 } 3118 3111 #endif 3119 3112 } -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
r1106 r1107 91 91 #if SVC_EXTENSION 92 92 m_layerId = 0; 93 #if R0235_SMALLEST_LAYER_ID94 93 m_smallestLayerId = 0; 95 #endif96 94 #if AVC_BASE 97 95 m_pBLReconFile = NULL; … … 736 734 #if OUTPUT_LAYER_SET_INDEX 737 735 // Following check should go wherever the VPS is activated 738 #if R0235_SMALLEST_LAYER_ID739 736 if (!m_apcSlicePilot->getVPS()->getBaseLayerAvailableFlag()) 740 737 { … … 747 744 } 748 745 } 749 #else750 checkValueOfTargetOutputLayerSetIdx( m_apcSlicePilot->getVPS());751 #endif752 746 #endif 753 747 m_apcSlicePilot->initSlice( nalu.m_layerId ); … … 876 870 #if NO_OUTPUT_OF_PRIOR_PICS 877 871 #if NO_CLRAS_OUTPUT_FLAG 878 #if R0235_SMALLEST_LAYER_ID879 872 if (m_layerId == m_smallestLayerId && m_apcSlicePilot->getRapPicFlag()) 880 #else881 if (m_layerId == 0 && m_apcSlicePilot->getRapPicFlag() )882 #endif883 873 { 884 874 if (m_bFirstSliceInSequence) … … 912 902 } 913 903 914 #if R0235_SMALLEST_LAYER_ID915 904 m_apcSlicePilot->decodingRefreshMarking( m_cListPic, m_noClrasOutputFlag, m_smallestLayerId ); 916 #else917 m_apcSlicePilot->decodingRefreshMarking( m_cListPic, m_noClrasOutputFlag );918 #endif919 905 #endif 920 906 … … 2067 2053 m_cEntropyDecoder.decodeVPS( vps ); 2068 2054 m_parameterSetManagerDecoder.storePrefetchedVPS(vps); 2069 #if R0235_SMALLEST_LAYER_ID2055 #if SVC_EXTENSION 2070 2056 checkValueOfTargetOutputLayerSetIdx(vps); 2071 2057 #endif … … 2243 2229 TComCodingStatistics::IncrementStatisticEP(STATS__BYTE_ALIGNMENT_BITS,nalu.m_Bitstream->readByteAlignment(),0); 2244 2230 #endif 2231 #if SVC_EXTENSION 2245 2232 #if Q0177_EOS_CHECKS 2246 2233 m_isLastNALWasEos = false; … … 2265 2252 } 2266 2253 #endif 2267 #if R0235_SMALLEST_LAYER_ID2268 2254 xDeriveSmallestLayerId(m_parameterSetManagerDecoder.getPrefetchedVPS(0)); 2269 2255 #endif … … 2696 2682 { 2697 2683 // Check if the target decoded layer is the highest layer in the list 2698 #if R0235_SMALLEST_LAYER_ID2699 2684 assert( params->getTargetOutputLayerSetIdx() < vps->getNumOutputLayerSets() ); 2700 #endif2701 2685 #if !CONFORMANCE_BITSTREAM_MODE 2702 2686 assert( params->getTargetOutputLayerSetIdx() < vps->getNumLayerSets() ); … … 2705 2689 #if !CONFORMANCE_BITSTREAM_MODE 2706 2690 assert( params->getTargetLayerId() == vps->getNumLayersInIdList( layerSetIdx ) - 1); 2707 #endif2708 2709 #if !R0235_SMALLEST_LAYER_ID2710 Bool layerSetMatchFlag = true;2711 for(Int j = 0; j < vps->getNumLayersInIdList( layerSetIdx ); j++)2712 {2713 if( vps->getLayerSetLayerIdList( layerSetIdx, j ) != j )2714 {2715 layerSetMatchFlag = false;2716 break;2717 }2718 }2719 2720 assert(layerSetMatchFlag); // Signaled output layer set index does not match targetOutputLayerId.2721 2691 #endif 2722 2692 … … 2803 2773 Void TDecTop::xCheckLayerReset() 2804 2774 { 2805 #if R0235_SMALLEST_LAYER_ID2806 2775 if (m_apcSlicePilot->isIRAP() && m_layerId > m_smallestLayerId) 2807 #else2808 if (m_apcSlicePilot->isIRAP() && m_layerId > 0)2809 #endif2810 2776 { 2811 2777 Bool layerResetFlag; … … 2891 2857 #endif 2892 2858 2893 #if R0235_SMALLEST_LAYER_ID2859 #if SVC_EXTENSION 2894 2860 Void TDecTop::xDeriveSmallestLayerId(TComVPS* vps) 2895 2861 { -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.h
r1103 r1107 133 133 UInt m_numLayer; 134 134 TDecTop** m_ppcTDecTop; 135 #if R0235_SMALLEST_LAYER_ID136 135 UInt m_smallestLayerId; 137 #endif138 136 #if P0297_VPS_POC_LSB_ALIGNED_FLAG 139 137 Bool m_pocResettingFlag; … … 245 243 Void setLayerDec (TDecTop **p) { m_ppcTDecTop = p; } 246 244 TDecTop* getLayerDec (UInt layerId) { return m_ppcTDecTop[layerId]; } 247 #if R0235_SMALLEST_LAYER_ID248 245 Void xDeriveSmallestLayerId(TComVPS* vps); 249 #endif250 246 #if VPS_EXTN_DIRECT_REF_LAYERS 251 247 TDecTop* getRefLayerDec (UInt refLayerIdx); … … 288 284 #if CONFORMANCE_BITSTREAM_MODE 289 285 std::vector<TComPic>* getConfListPic() {return &m_confListPic; } 290 // std::string const getDecodedYuvLayerFileName(Int layerId) { return m_decodedYuvLayerFileName[layerId]; }291 286 Bool const getConfModeFlag() { return m_confModeFlag; } 292 287 Void setConfModeFlag(Bool x) { m_confModeFlag = x; }
Note: See TracChangeset for help on using the changeset viewer.