Changeset 622 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecTop.cpp
- Timestamp:
- 11 Sep 2013, 14:40:25 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r608 r622 436 436 Window defaultDisplayWindow = pcSlice->getSPS()->getVuiParametersPresentFlag() ? pcSlice->getSPS()->getVuiParameters()->getDefaultDisplayWindow() : Window(); 437 437 438 #if H_MV5 439 #if H_MV 440 assert( conformanceWindow .getScaledFlag() ); 441 assert( defaultDisplayWindow.getScaledFlag() ); 442 #endif 443 #endif 438 444 for( Int temporalLayer=0; temporalLayer < MAX_TLAYER; temporalLayer++) 439 445 { … … 512 518 m_cCuDecoder.destroy(); 513 519 #if H_MV 520 #if H_MV5 521 TComSlice::markIvRefPicsAsShortTerm( m_refPicSetInterLayer0, m_refPicSetInterLayer1 ); 522 #else 514 523 TComSlice::markIvRefPicsAsShortTerm( m_refPicSetInterLayer ); 524 #endif 515 525 TComSlice::markCurrPic( pcPic ); 516 526 TComSlice::markIvRefPicsAsUnused ( m_ivPicLists, targetDecLayerIdSet, m_parameterSetManagerDecoder.getActiveVPS(), m_layerId, poc ); … … 581 591 assert (sps != 0); 582 592 593 #if H_MV5 594 #if H_MV 595 TComVPS* vps = m_parameterSetManagerDecoder.getVPS(sps->getVPSId()); 596 assert (vps != 0); 597 if (false == m_parameterSetManagerDecoder.activatePPS(m_apcSlicePilot->getPPSId(),m_apcSlicePilot->isIRAP(), m_layerId ) ) 598 #else 583 599 if (false == m_parameterSetManagerDecoder.activatePPS(m_apcSlicePilot->getPPSId(),m_apcSlicePilot->isIRAP())) 600 #endif 601 #else 602 if (false == m_parameterSetManagerDecoder.activatePPS(m_apcSlicePilot->getPPSId(),m_apcSlicePilot->isIRAP())) 603 #endif 584 604 { 585 605 printf ("Parameter set activation failed!"); … … 607 627 m_apcSlicePilot->setSPS(sps); 608 628 #if H_MV 629 #if H_MV5 630 m_apcSlicePilot->setVPS(vps); 631 sps->inferRepFormat ( vps , m_layerId ); 632 sps->inferScalingList( m_parameterSetManagerDecoder.getActiveSPS( sps->getSpsScalingListRefLayerId() ) ); 633 #else 609 634 m_apcSlicePilot->setVPS( m_parameterSetManagerDecoder.getActiveVPS() ); 635 #endif 610 636 #endif 611 637 pps->setSPS(sps); … … 669 695 670 696 #if H_MV 697 #if H_MV5 698 m_apcSlicePilot->setRefPicSetInterLayer( & m_refPicSetInterLayer0, &m_refPicSetInterLayer1 ); 699 #else 671 700 m_apcSlicePilot->setRefPicSetInterLayer( & m_refPicSetInterLayer ); 701 #endif 672 702 m_apcSlicePilot->setLayerId( nalu.m_layerId ); 673 703 #endif … … 676 706 #if H_MV 677 707 TComVPS* vps = m_apcSlicePilot->getVPS(); 708 #if H_MV5 709 Int layerId = nalu.m_layerId; 710 setViewId ( vps->getViewId ( layerId ) ); 711 #if H_3D 712 setViewIndex( vps->getViewIndex( layerId ) ); 713 setIsDepth ( vps->getDepthId ( layerId ) == 1 ); 714 m_ivPicLists->setVPS( vps ); 715 #endif 716 #else 678 717 Int layerIdInVps = vps->getLayerIdInVps( nalu.m_layerId ); 679 718 setViewId ( vps->getViewId ( layerIdInVps ) ); … … 684 723 #endif 685 724 #endif 725 #endif 686 726 // Skip pictures due to random access 687 727 if (isRandomAccessSkipPicture(iSkipFrame, iPOCLastDisplay)) … … 723 763 #endif 724 764 // actual decoding starts here 765 #if H_MV5 766 #if H_MV 767 // This part needs further testing ! 768 if ( m_apcSlicePilot->getPocResetFlag() ) 769 { 770 xResetPocInPicBuffer(); 771 } 772 #endif 773 #endif 725 774 xActivateParameterSets(); 726 775 … … 742 791 m_apcSlicePilot->applyReferencePictureSet(m_cListPic, m_apcSlicePilot->getRPS()); 743 792 #if H_MV 793 #if H_MV5 794 m_apcSlicePilot->createInterLayerReferencePictureSet( m_ivPicLists, m_refPicSetInterLayer0, m_refPicSetInterLayer1 ); 795 #else 744 796 m_apcSlicePilot->createAndApplyIvReferencePictureSet( m_ivPicLists, m_refPicSetInterLayer ); 797 #endif 745 798 #endif 746 799 // Get a new picture buffer … … 888 941 // Set reference list 889 942 #if H_MV 943 #if H_MV5 944 std::vector< TComPic* > tempRefPicLists[2]; 945 std::vector< Bool > usedAsLongTerm [2]; 946 Int numPocTotalCurr; 947 948 pcSlice->getTempRefPicLists( m_cListPic, m_refPicSetInterLayer0, m_refPicSetInterLayer1, tempRefPicLists, usedAsLongTerm, numPocTotalCurr); 949 pcSlice->setRefPicList ( tempRefPicLists, usedAsLongTerm, numPocTotalCurr, true ); 950 #else 890 951 pcSlice->setRefPicList( m_cListPic, m_refPicSetInterLayer, true ); 952 #endif 891 953 #if H_3D_ARP 892 954 pcSlice->setARPStepNum(); 893 955 if( pcSlice->getARPStepNum() > 1 ) 894 956 { 957 // GT: This seems to be broken, not all nuh_layer_ids are necessarily present 895 958 for(Int iLayerId = 0; iLayerId < nalu.m_layerId; iLayerId ++ ) 896 959 { … … 1021 1084 TComVPS* vps = m_parameterSetManagerDecoder.getPrefetchedVPS( 0 ); 1022 1085 assert( vps != 0 ); 1086 #if H_MV5 1087 m_cEntropyDecoder.decodeSPS( sps, vps->getViewIndex( m_layerId ), ( vps->getDepthId( m_layerId ) == 1 ) ); 1088 #else 1023 1089 Int layerIdInVPS = vps->getLayerIdInVps( m_layerId ); 1024 1090 m_cEntropyDecoder.decodeSPS( sps, vps->getViewIndex( layerIdInVPS ), ( vps->getDepthId( layerIdInVPS ) == 1 ) ); 1091 #endif 1025 1092 #else 1026 1093 m_cEntropyDecoder.decodeSPS( sps ); … … 1032 1099 { 1033 1100 TComPPS* pps = new TComPPS(); 1101 #if H_MV5 1102 #if H_MV 1103 pps->setLayerId( getLayerId() ); 1104 #endif 1105 #endif 1034 1106 m_cEntropyDecoder.decodePPS( pps ); 1035 1107 m_parameterSetManagerDecoder.storePrefetchedPPS( pps ); … … 1040 1112 if(nalUnitType == NAL_UNIT_SUFFIX_SEI) 1041 1113 { 1114 #if H_MV5 1115 #if H_MV 1116 m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder.getActiveSPS( m_layerId ) ); 1117 #else 1042 1118 m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder.getActiveSPS() ); 1119 #endif 1120 #else 1121 m_seiReader.parseSEImessage( bs, m_pcPic->getSEIs(), nalUnitType, m_parameterSetManagerDecoder.getActiveSPS() ); 1122 #endif 1043 1123 } 1044 1124 else 1045 1125 { 1126 #if H_MV5 1127 #if H_MV 1128 m_seiReader.parseSEImessage( bs, m_SEIs, nalUnitType, m_parameterSetManagerDecoder.getActiveSPS( m_layerId ) ); 1129 #else 1046 1130 m_seiReader.parseSEImessage( bs, m_SEIs, nalUnitType, m_parameterSetManagerDecoder.getActiveSPS() ); 1131 #endif 1132 #else 1133 m_seiReader.parseSEImessage( bs, m_SEIs, nalUnitType, m_parameterSetManagerDecoder.getActiveSPS() ); 1134 #endif 1047 1135 SEIMessages activeParamSets = getSeisByType(m_SEIs, SEI::ACTIVE_PARAMETER_SETS); 1048 1136 if (activeParamSets.size()>0) … … 1051 1139 m_parameterSetManagerDecoder.applyPrefetchedPS(); 1052 1140 assert(seiAps->activeSeqParamSetId.size()>0); 1141 #if H_MV5 1142 #if H_MV 1143 if (! m_parameterSetManagerDecoder.activateSPSWithSEI(seiAps->activeSeqParamSetId[0], m_layerId )) 1144 #else 1053 1145 if (! m_parameterSetManagerDecoder.activateSPSWithSEI(seiAps->activeSeqParamSetId[0] )) 1146 #endif 1147 #else 1148 if (! m_parameterSetManagerDecoder.activateSPSWithSEI(seiAps->activeSeqParamSetId[0] )) 1149 #endif 1054 1150 { 1055 1151 printf ("Warning SPS activation with Active parameter set SEI failed"); … … 1210 1306 } 1211 1307 1308 #if H_MV5 1309 Void TDecTop::xResetPocInPicBuffer() 1310 { 1311 TComList<TComPic*>::iterator iterPic = m_cListPic.begin(); 1312 while (iterPic != m_cListPic.end()) 1313 { 1314 TComPic* pic = *(iterPic++); 1315 if ( pic->getReconMark() ) 1316 { 1317 for( Int i = 0; i < pic->getNumAllocatedSlice(); i++) 1318 { 1319 TComSlice* slice = pic->getSlice( i ); 1320 slice->setPOC ( slice->getPOC() - m_apcSlicePilot->getPocBeforeReset() ); 1321 } 1322 } 1323 } 1324 } 1325 #endif 1212 1326 #endif 1213 1327 //! \}
Note: See TracChangeset for help on using the changeset viewer.