Changeset 738 in 3DVCSoftware for trunk/source/App/TAppDecoder
- Timestamp:
- 10 Dec 2013, 13:50:12 (11 years ago)
- Location:
- trunk/source/App/TAppDecoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppDecoder/TAppDecCfg.cpp
r608 r738 85 85 ("OutputBitDepthC,d", m_outputBitDepthC, 0, "bit depth of YUV output chroma component (default: use 0 for native depth)") 86 86 #if H_MV 87 #if H_MV_6_HRD_O0217_13 88 ("TargetOptLayerSetIdx,x", m_targetOptLayerSetIdx, -1, "Target output layer set index. (default: -1, determine automatically to be equal to highest layer set index") // Should actually equal to 0 as default. However, this would cause only the base layer to be decoded. 89 #else 87 90 ("MaxLayerId,-ls", m_maxLayerId, MAX_NUM_LAYER_IDS-1, "Maximum LayerId to be decoded.") 91 #endif 88 92 #endif 89 93 ("MaxTemporalLayer,t", m_iMaxTemporalLayer, -1, "Maximum Temporal Layer to be decoded. -1 to decode all layers") … … 124 128 if ( !cfg_TargetDecLayerIdSetFile.empty() ) 125 129 { 130 #if H_MV_6_HRD_O0217_13 131 m_targetDecLayerIdSetFileEmpty = false; 132 #endif 126 133 FILE* targetDecLayerIdSetFile = fopen ( cfg_TargetDecLayerIdSetFile.c_str(), "r" ); 127 134 if ( targetDecLayerIdSetFile ) … … 167 174 } 168 175 #if H_MV 176 #if H_MV_6_HRD_O0217_13 177 m_targetDecLayerIdSet.push_back( 0 ); // Only base layer at startup 178 #else 169 179 else 170 180 { … … 174 184 } 175 185 } 186 #endif 176 187 #endif 177 188 -
trunk/source/App/TAppDecoder/TAppDecCfg.h
r608 r738 59 59 Char* m_pchBitstreamFile; ///< input bitstream file name 60 60 #if H_MV 61 #if H_MV_6_HRD_O0217_13 62 Int m_targetOptLayerSetIdx; ///< target output layer set index 63 #endif 61 64 Int m_maxLayerId; ///< maximum nuh_layer_id decoded 62 65 std::vector<Char*> m_pchReconFiles; ///< array of output reconstruction file name create from output reconstruction file name … … 74 77 75 78 std::vector<Int> m_targetDecLayerIdSet; ///< set of LayerIds to be included in the sub-bitstream extraction process. 79 #if H_MV_6_HRD_O0217_13 80 Bool m_targetDecLayerIdSetFileEmpty; ///< indication if target layers are given by file 81 #endif 76 82 Int m_respectDefDispWindow; ///< Only output content inside the default display window 77 83 … … 83 89 : m_pchBitstreamFile(NULL) 84 90 #if H_MV 91 #if !H_MV_6_HRD_O0217_13 85 92 , m_maxLayerId(0) 93 #endif 86 94 #endif 87 95 , m_pchReconFile(NULL) … … 91 99 , m_iMaxTemporalLayer(-1) 92 100 , m_decodedPictureHashSEIEnabled(0) 101 #if H_MV_6_HRD_O0217_13 102 , m_targetDecLayerIdSetFileEmpty(true) 103 #endif 93 104 , m_respectDefDispWindow(0) 94 105 {} -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r655 r738 61 61 { 62 62 #if H_MV 63 #if H_MV_LAYER_WISE_STARTUP 64 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) 65 { 66 m_layerIdToDecIdx[i] = -1; 67 m_layerInitilizedFlags[i] = false; 68 } 69 #else 63 70 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) m_layerIdToDecIdx[i] = -1; 71 #endif 64 72 #endif 65 73 #if H_3D … … 184 192 Bool newSliceDiffPoc = false; 185 193 Bool newSliceDiffLayer = false; 194 #if H_MV_FIX_SKIP_PICTURES 195 Bool sliceSkippedFlag = false; 196 #endif 186 197 #if H_3D 187 198 Bool allLayersDecoded = false; … … 201 212 read(nalu, nalUnit); 202 213 #if H_MV 214 #if !H_MV_6_HRD_O0217_13 203 215 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true ); 204 216 #endif 217 #if H_MV_6_LAYER_ID_32 218 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) || nalu.m_layerId > MAX_NUM_LAYER_IDS-1 ) 219 #else 205 220 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) ) 221 #endif 206 222 { 207 223 bNewPicture = false; 224 #if H_MV_6_LAYER_ID_32 225 if ( !bitstreamFile ) 226 { 227 decIdxLastPic = decIdxCurrPic; 228 } 229 #endif 208 230 } 209 231 else 210 232 { 233 #if H_MV_6_HRD_O0217_13 234 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true ); 235 #endif 211 236 newSliceDiffLayer = nalu.isSlice() && ( nalu.m_layerId != layerIdCurrPic ) && !firstSlice; 237 #if H_MV_FIX_SKIP_PICTURES 238 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer, sliceSkippedFlag ); 239 #else 212 240 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer ); 241 #endif 213 242 // decode function only returns true when all of the following conditions are true 214 243 // - poc in particular layer changes … … 216 245 // - nalu.isSlice() == true 217 246 247 #if H_MV_6_HRD_O0217_13 248 // Update TargetDecLayerIdList only when not specified by layer id file, specification by file might actually out of conformance. 249 if (nalu.m_nalUnitType == NAL_UNIT_VPS && m_targetDecLayerIdSetFileEmpty ) 250 { 251 TComVPS* vps = m_tDecTop[decIdx]->getPrefetchedVPS(); 252 if ( m_targetOptLayerSetIdx == -1 ) 253 { 254 // Not normative! Corresponds to specification by "External Means". (Should be set equal to 0, when no external means available. ) 255 m_targetOptLayerSetIdx = vps->getVpsNumLayerSetsMinus1(); 256 } 257 258 m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx ); 259 } 260 #endif 261 #if H_MV_FIX_SKIP_PICTURES 262 bNewPicture = ( newSliceDiffLayer || newSliceDiffPoc ) && !sliceSkippedFlag; 263 if ( nalu.isSlice() && firstSlice && !sliceSkippedFlag ) 264 #else 218 265 bNewPicture = newSliceDiffLayer || newSliceDiffPoc; 219 266 220 267 if ( nalu.isSlice() && firstSlice ) 268 #endif 221 269 { 222 270 layerIdCurrPic = nalu.m_layerId; … … 832 880 { 833 881 Int decIdx = -1; 882 883 #if H_MV_6_LAYER_ID_32 884 if ( layerId > MAX_NUM_LAYER_IDS-1 ) 885 { 886 return decIdx; 887 } 888 #endif 889 834 890 if ( m_layerIdToDecIdx[ layerId ] != -1 ) 835 891 { … … 850 906 m_tDecTop[ decIdx ]->setDecodedPictureHashSEIEnabled(m_decodedPictureHashSEIEnabled); 851 907 m_tDecTop[ decIdx ]->setIvPicLists( &m_ivPicLists ); 908 #if H_MV_LAYER_WISE_STARTUP 909 m_tDecTop[ decIdx ]->setLayerInitilizedFlags( m_layerInitilizedFlags ); 910 #endif 911 852 912 #if H_3D 853 913 m_tDecTop[ decIdx ]->setCamParsCollector( &m_cCamParsCollector ); -
trunk/source/App/TAppDecoder/TAppDecTop.h
r655 r738 67 67 Int m_numDecoders; ///< number of decoder instances 68 68 TComPicLists m_ivPicLists; ///< picture buffers of decoder instances 69 #if H_MV_LAYER_WISE_STARTUP 70 Bool m_layerInitilizedFlags[ MAX_NUM_LAYER_IDS ]; ///< for layerwise startup 71 #endif 72 69 73 #else 70 74 TDecTop m_cTDecTop; ///< decoder class
Note: See TracChangeset for help on using the changeset viewer.