Changeset 1103 in SHVCSoftware
- Timestamp:
- 6 Jul 2015, 20:28:53 (9 years ago)
- Location:
- branches/SHM-dev/source
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-dev/source/App/TAppDecoder/TAppDecTop.cpp
r1100 r1103 299 299 } 300 300 loopFiltered[curLayerId] = (nalu.m_nalUnitType == NAL_UNIT_EOS); 301 #if EARLY_REF_PIC_MARKING 302 m_acTDecTop[curLayerId].earlyPicMarking(m_iMaxTemporalLayer, m_targetDecLayerIdSet); 303 #endif 301 304 302 if (nalu.m_nalUnitType == NAL_UNIT_EOS) 305 303 { -
branches/SHM-dev/source/Lib/TLibCommon/TypeDef.h
r1102 r1103 183 183 #define MAX_ONE_RESAMPLING_DIRECT_LAYERS 1 ///< Allow maximum of one resampling process for direct reference layers 184 184 #define MOTION_RESAMPLING_CONSTRAINT 1 ///< JCTVC-N0108: Allow maximum of one motion resampling process for direct reference layers, and use motion inter-layer prediction from the same layer as texture inter-layer prediction. 185 #define EARLY_REF_PIC_MARKING 0 ///< Valencia meeting - remove early marking of inter-layer reference pictures186 ///< Decoded picture marking of sub-layer non-reference pictures187 185 #define O0225_TID_BASED_IL_RPS_DERIV 1 188 186 #define VPS_TSLAYERS 1 ///< JCTVC-O0120 signal max temporal sub-layers for each layer -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.cpp
r1100 r1103 2628 2628 #endif 2629 2629 2630 #if EARLY_REF_PIC_MARKING2631 Void TDecTop::earlyPicMarking(Int maxTemporalLayer, std::vector<Int>& targetDecLayerIdSet)2632 {2633 UInt currTid = m_pcPic->getTLayer();2634 UInt highestTid = (maxTemporalLayer >= 0) ? maxTemporalLayer : (m_pcPic->getSlice(0)->getSPS()->getMaxTLayers() - 1);2635 UInt latestDecLayerId = m_layerId;2636 UInt numTargetDecLayers = 0;2637 Int targetDecLayerIdList[MAX_LAYERS];2638 UInt latestDecIdx = 0;2639 TComSlice* pcSlice = m_pcPic->getSlice(0);2640 2641 if ( currTid != highestTid ) // Marking process is only applicaple for highest decoded TLayer2642 {2643 return;2644 }2645 2646 // currPic must be marked as "used for reference" and must be a sub-layer non-reference picture2647 if ( !((pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_TRAIL_N ||2648 pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_TSA_N ||2649 pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_STSA_N ||2650 pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_RADL_N ||2651 pcSlice->getNalUnitType() == NAL_UNIT_CODED_SLICE_RASL_N ||2652 pcSlice->getNalUnitType() == NAL_UNIT_RESERVED_VCL_N10 ||2653 pcSlice->getNalUnitType() == NAL_UNIT_RESERVED_VCL_N12 ||2654 pcSlice->getNalUnitType() == NAL_UNIT_RESERVED_VCL_N14) && pcSlice->isReferenced()))2655 {2656 return;2657 }2658 2659 if ( targetDecLayerIdSet.size() == 0 ) // Cannot mark if we don't know the number of scalable layers2660 {2661 return;2662 }2663 2664 for (std::vector<Int>::iterator it = targetDecLayerIdSet.begin(); it != targetDecLayerIdSet.end(); it++)2665 {2666 if ( latestDecLayerId == (*it) )2667 {2668 latestDecIdx = numTargetDecLayers;2669 }2670 targetDecLayerIdList[numTargetDecLayers++] = (*it);2671 }2672 2673 Int remainingInterLayerReferencesFlag = 0;2674 for ( Int j = latestDecIdx + 1; j < numTargetDecLayers; j++ )2675 {2676 Int jLidx = pcSlice->getVPS()->getLayerIdxInVps(targetDecLayerIdList[j]);2677 if ( currTid <= pcSlice->getVPS()->getMaxTidIlRefPicsPlus1(pcSlice->getVPS()->getLayerIdxInVps(latestDecLayerId),jLidx) - 1 )2678 {2679 for ( Int k = 0; k < m_ppcTDecTop[targetDecLayerIdList[j]]->getNumDirectRefLayers(); k++ )2680 {2681 if ( latestDecIdx == m_ppcTDecTop[targetDecLayerIdList[j]]->getRefLayerId(k) )2682 {2683 remainingInterLayerReferencesFlag = 1;2684 }2685 }2686 }2687 }2688 2689 if ( remainingInterLayerReferencesFlag == 0 )2690 {2691 pcSlice->setReferenced(false);2692 }2693 }2694 #endif2695 2696 2630 #if OUTPUT_LAYER_SET_INDEX 2697 2631 Void TDecTop::checkValueOfTargetOutputLayerSetIdx(TComVPS *vps) -
branches/SHM-dev/source/Lib/TLibDecoder/TDecTop.h
r1100 r1103 227 227 228 228 #if SVC_EXTENSION 229 #if EARLY_REF_PIC_MARKING230 Void earlyPicMarking(Int maxTemporalLayer, std::vector<Int>& targetDecLayerIdList);231 #endif232 229 #if POC_RESET_IDC_DECODER 233 230 Int getParseIdc () { return m_parseIdc; }
Note: See TracChangeset for help on using the changeset viewer.