Changeset 655 in 3DVCSoftware for trunk/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 23 Oct 2013, 23:01:30 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r622 r655 88 88 vps.setTemporalNestingFlag(true); 89 89 } 90 #if H_MV591 90 vps.setMaxLayersMinus1( m_numberOfLayers - 1); 92 #else93 vps.setMaxLayers( m_numberOfLayers );94 #endif95 91 for(Int i = 0; i < MAX_TLAYER; i++) 96 92 { … … 124 120 xSetDependencies( vps ); 125 121 xSetProfileTierLevel ( vps ); 126 #if H_MV5127 122 xSetRepFormat ( vps ); 128 #endif129 123 xSetLayerSets ( vps ); 130 #if H_MV5131 124 xSetVPSVUI ( vps ); 132 #endif133 125 #if H_3D 134 #if !H_MV5135 vps.initViewIndex();136 #endif137 126 xSetVPSExtension2 ( vps ); 138 127 m_ivPicLists.setVPS ( &vps ); … … 140 129 141 130 142 #if H_MV5143 131 for(Int layerIdInVps = 0; layerIdInVps < m_numberOfLayers; layerIdInVps++) 144 #else145 for(Int layer = 0; layer < m_numberOfLayers; layer++)146 #endif147 132 { 148 133 m_frameRcvd .push_back(0); … … 151 136 m_acTVideoIOYuvReconFileList.push_back(new TVideoIOYuv); 152 137 m_picYuvRec .push_back(new TComList<TComPicYuv*>) ; 153 #if H_MV5154 138 m_ivPicLists.push_back( m_acTEncTopList[ layerIdInVps ]->getListPic() ); 155 139 TEncTop& m_cTEncTop = *m_acTEncTopList[ layerIdInVps ]; // It is not a member, but this name helps avoiding code duplication !!! … … 160 144 m_cTEncTop.setViewId ( vps.getViewId ( layerId ) ); 161 145 m_cTEncTop.setViewIndex ( vps.getViewIndex ( layerId ) ); 162 #else163 m_ivPicLists.push_back( m_acTEncTopList[ layer ]->getListPic() );164 TEncTop& m_cTEncTop = *m_acTEncTopList[ layer ]; // It is not a member, but this name helps avoiding code duplication !!!165 166 m_cTEncTop.setLayerIdInVps ( layer );167 m_cTEncTop.setLayerId ( vps.getLayerIdInNuh( layer ) );168 m_cTEncTop.setViewId ( vps.getViewId ( layer ) );169 170 #endif171 146 #if H_3D 172 #if H_MV5173 147 Bool isDepth = ( vps.getDepthId ( layerId ) != 0 ) ; 174 #else175 Bool isDepth = ( vps.getDepthId ( layer ) != 0 ) ;176 m_cTEncTop.setViewIndex ( vps.getViewIndex ( layer ) );177 #endif178 148 m_cTEncTop.setIsDepth ( isDepth ); 179 149 //====== Camera Parameters ========= … … 201 171 m_cTEncTop.setDWeight ( isDepth ? m_iDWeight : 0 ); 202 172 #endif // H_3D_VSO 203 #if H_MV5204 173 #if H_3D_ARP 205 174 //====== Advanced Inter-view Residual Prediction ========= … … 209 178 #if H_3D_IC 210 179 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] ); 211 #endif212 #else213 #if H_3D_ARP214 //====== Advanced Inter-view Residual Prediction =========215 m_cTEncTop.setUseAdvRP ( ( isDepth || 0==layer ) ? 0 : m_uiUseAdvResPred );216 m_cTEncTop.setARPStepNum ( ( isDepth || 0==layer ) ? 1 : H_3D_ARP_WFNR );217 #endif218 #if H_3D_IC219 m_cTEncTop.setUseIC ( vps.getViewIndex( layer ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );220 #endif221 180 #endif 222 181 //========== Depth intra modes ========== … … 232 191 #endif 233 192 //====== Depth Inter SDC ========= 234 #if LGE_INTER_SDC_E0156193 #if H_3D_INTER_SDC 235 194 m_cTEncTop.setInterSDCEnable ( isDepth ? m_bDepthInterSDCFlag : false ); 236 195 #endif … … 260 219 m_cTEncTop.setGOPSize ( m_iGOPSize ); 261 220 #if H_MV 262 #if H_MV5263 221 m_cTEncTop.setGopList ( m_GOPListMvc[layerIdInVps] ); 264 222 m_cTEncTop.setExtraRPSs ( m_extraRPSsMvc[layerIdInVps] ); … … 269 227 } 270 228 #else 271 m_cTEncTop.setGopList ( m_GOPListMvc[layer] );272 m_cTEncTop.setExtraRPSs ( m_extraRPSsMvc[layer] );273 for(Int i = 0; i < MAX_TLAYER; i++)274 {275 m_cTEncTop.setNumReorderPics ( m_numReorderPicsMvc[layer][i], i );276 m_cTEncTop.setMaxDecPicBuffering ( m_maxDecPicBufferingMvc[layer][i], i );277 }278 #endif279 #else280 229 m_cTEncTop.setGopList ( m_GOPList ); 281 230 m_cTEncTop.setExtraRPSs ( m_extraRPSs ); … … 291 240 } 292 241 #if H_MV 293 #if H_MV5294 242 m_cTEncTop.setQP ( m_iQP[layerIdInVps] ); 295 243 #else 296 m_cTEncTop.setQP ( m_iQP[layer] );297 #endif298 #else299 244 m_cTEncTop.setQP ( m_iQP ); 300 245 #endif … … 303 248 304 249 #if H_MV 305 #if H_MV5306 250 m_cTEncTop.setMaxTempLayer ( m_maxTempLayerMvc[layerIdInVps] ); 307 251 #else 308 m_cTEncTop.setMaxTempLayer ( m_maxTempLayerMvc[layer] );309 #endif310 #else311 252 m_cTEncTop.setMaxTempLayer ( m_maxTempLayer ); 312 253 #endif … … 317 258 //====== Loop/Deblock Filter ======== 318 259 #if H_MV 319 #if H_MV5320 260 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable[layerIdInVps]); 321 #else322 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable[layer]);323 #endif324 261 #else 325 262 m_cTEncTop.setLoopFilterDisable ( m_bLoopFilterDisable ); … … 351 288 352 289 #if H_MV 353 #if H_MV5354 290 if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layerIdInVps] == lowestQP) && (m_useLossless == true)) 355 #else356 if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layer] == lowestQP) && (m_useLossless == true))357 #endif358 291 #else 359 292 if ((m_iMaxDeltaQP == 0 ) && (m_iQP == lowestQP) && (m_useLossless == true)) … … 372 305 m_cTEncTop.setUseLossless ( m_useLossless ); 373 306 #if H_MV 374 #if H_MV5375 307 m_cTEncTop.setdQPs ( m_aidQP[layerIdInVps] ); 376 #else377 m_cTEncTop.setdQPs ( m_aidQP[layer] );378 #endif379 308 #else 380 309 m_cTEncTop.setdQPs ( m_aidQP ); … … 435 364 m_cTEncTop.setLFCrossSliceBoundaryFlag( m_bLFCrossSliceBoundaryFlag ); 436 365 #if H_MV 437 #if H_MV5438 366 m_cTEncTop.setUseSAO ( m_bUseSAO[layerIdInVps] ); 439 #else440 m_cTEncTop.setUseSAO ( m_bUseSAO[layer] );441 #endif442 367 #else 443 368 m_cTEncTop.setUseSAO ( m_bUseSAO ); … … 512 437 m_cTEncTop.setSignHideFlag(m_signHideFlag); 513 438 #if RATE_CONTROL_LAMBDA_DOMAIN 514 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 439 #if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227 440 if(!m_cTEncTop.getIsDepth()) //only for texture 441 { 442 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 443 } 444 else 445 { 446 m_cTEncTop.setUseRateCtrl ( 0 ); 447 } 448 #else 449 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 450 #endif 451 #if !KWU_RC_VIEWRC_E0227 515 452 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 453 #endif 516 454 m_cTEncTop.setKeepHierBit ( m_RCKeepHierarchicalBit ); 517 455 m_cTEncTop.setLCULevelRC ( m_RCLCULevelRC ); … … 519 457 m_cTEncTop.setInitialQP ( m_RCInitialQP ); 520 458 m_cTEncTop.setForceIntraQP ( m_RCForceIntraQP ); 521 #else 522 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl); 523 m_cTEncTop.setTargetBitrate ( m_targetBitrate); 524 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 459 460 #if KWU_RC_MADPRED_E0227 461 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 462 { 463 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred : 0); 464 465 if(m_cTEncTop.getUseDepthMADPred()) 466 { 467 m_cTEncTop.setCamParam(&m_cCameraData); 468 } 469 } 470 #endif 471 #if KWU_RC_VIEWRC_E0227 472 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 473 { 474 m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl); 475 476 if(m_iNumberOfViews == 1) 477 { 478 if(m_viewWiseRateCtrl) 479 { 480 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 481 } 482 else 483 { 484 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 485 } 486 } 487 else 488 { 489 if(m_viewWiseRateCtrl) 490 { 491 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 492 } 493 else 494 { 495 if(m_iNumberOfViews == 2) 496 { 497 if(m_cTEncTop.getViewId() == 0) 498 { 499 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*80)/100 ); 500 } 501 else if(m_cTEncTop.getViewId() == 1) 502 { 503 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*20)/100 ); 504 } 505 } 506 else if(m_iNumberOfViews == 3) 507 { 508 if(m_cTEncTop.getViewId() == 0) 509 { 510 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*66)/100 ); 511 } 512 else if(m_cTEncTop.getViewId() == 1) 513 { 514 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 515 } 516 else if(m_cTEncTop.getViewId() == 2) 517 { 518 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 519 } 520 } 521 else 522 { 523 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 524 } 525 } 526 } 527 } 528 #endif 529 #else 530 #if KWU_RC_VIEWRC_E0227 || KWU_RC_MADPRED_E0227 531 if(!m_cTEncTop.getIsDepth()) //only for texture 532 { 533 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl ); 534 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 535 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 536 } 537 else 538 { 539 m_cTEncTop.setUseRateCtrl ( 0 ); 540 } 541 #else 542 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl ); 543 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 544 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 545 #endif 546 547 548 #if KWU_RC_MADPRED_E0227 549 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 550 { 551 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_depthMADPred : 0); 552 553 if(m_cTEncTop.getUseDepthMADPred()) 554 { 555 m_cTEncTop.setCamParam(&m_cCameraData); 556 } 557 } 558 #endif 559 560 #if KWU_RC_VIEWRC_E0227 561 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 562 { 563 m_cTEncTop.setUseViewWiseRateCtrl(m_viewWiseRateCtrl); 564 if(m_iNumberOfViews == 1) 565 { 566 if(m_viewWiseRateCtrl) 567 { 568 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 569 } 570 else 571 { 572 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 573 } 574 } 575 else 576 { 577 if(m_viewWiseRateCtrl) 578 { 579 m_cTEncTop.setTargetBitrate(m_viewTargetBits[layerIdInVps>>1]); 580 } 581 else 582 { 583 if(m_iNumberOfViews == 2) 584 { 585 if(m_cTEncTop.getViewId() == 0) 586 { 587 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*80)/100 ); 588 } 589 else if(m_cTEncTop.getViewId() == 1) 590 { 591 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*20)/100 ); 592 } 593 } 594 else if(m_iNumberOfViews == 3) 595 { 596 if(m_cTEncTop.getViewId() == 0) 597 { 598 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*66)/100 ); 599 } 600 else if(m_cTEncTop.getViewId() == 1) 601 { 602 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 603 } 604 else if(m_cTEncTop.getViewId() == 2) 605 { 606 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 607 } 608 } 609 else 610 { 611 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 612 } 613 } 614 } 615 } 616 #endif 525 617 #endif 526 618 m_cTEncTop.setTransquantBypassEnableFlag(m_TransquantBypassEnableFlag); … … 664 756 } 665 757 666 Void TAppEncTop::xInitLib( )758 Void TAppEncTop::xInitLib(Bool isFieldCoding) 667 759 { 668 760 #if H_MV 669 761 for(Int layer=0; layer<m_numberOfLayers; layer++) 670 762 { 671 m_acTEncTopList[layer]->init( ); 672 } 673 #else 674 m_cTEncTop.init(); 763 #if KWU_RC_MADPRED_E0227 764 m_acTEncTopList[layer]->init( isFieldCoding, this ); 765 #else 766 m_acTEncTopList[layer]->init( isFieldCoding ); 767 #endif 768 } 769 #else 770 m_cTEncTop.init( isFieldCoding ); 675 771 #endif 676 772 } … … 703 799 xInitLibCfg(); 704 800 xCreateLib(); 705 xInitLib( );801 xInitLib(m_isField); 706 802 707 803 // main encoder loop … … 728 824 729 825 // allocate original YUV buffer 826 if( m_isField ) 827 { 828 pcPicYuvOrg->create( m_iSourceWidth, m_iSourceHeightOrg, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 829 } 830 else 831 { 730 832 pcPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 833 } 731 834 732 835 #if H_MV … … 789 892 } 790 893 } 894 895 #if !RATE_CONTROL_LAMBDA_DOMAIN && KWU_FIX_URQ 896 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 897 { 898 if(m_acTEncTopList[layer]->getUseRateCtrl() && !m_acTEncTopList[layer]->getIsDepth()) 899 { 900 m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus(); 901 } 902 } 903 #endif 904 791 905 gopSize = maxGopSize; 792 906 } 793 907 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 794 908 { 795 m_acTEncTopList[layer]->printSummary( m_acTEncTopList[layer]->getNumAllPicCoded() );909 m_acTEncTopList[layer]->printSummary( m_acTEncTopList[layer]->getNumAllPicCoded(), m_isField ); 796 910 } 797 911 #else … … 807 921 m_iFrameRcvd++; 808 922 809 bEos = (m_i FrameRcvd == m_framesToBeEncoded);923 bEos = (m_isField && (m_iFrameRcvd == (m_framesToBeEncoded >> 1) )) || ( !m_isField && (m_iFrameRcvd == m_framesToBeEncoded) ); 810 924 811 925 Bool flush = 0; … … 820 934 821 935 // call encoding function for one frame 936 if ( m_isField ) 937 { 938 m_cTEncTop.encode( bEos, flush ? 0 : pcPicYuvOrg, m_cListPicYuvRec, outputAccessUnits, iNumEncoded, m_isTopFieldFirst); 939 } 940 else 941 { 822 942 m_cTEncTop.encode( bEos, flush ? 0 : pcPicYuvOrg, m_cListPicYuvRec, outputAccessUnits, iNumEncoded ); 943 } 823 944 824 945 // write bistream to file if necessary … … 830 951 } 831 952 832 m_cTEncTop.printSummary( );953 m_cTEncTop.printSummary(m_isField); 833 954 #endif 834 955 … … 941 1062 #endif 942 1063 { 943 Int i; 944 945 #if H_MV 946 if( iNumEncoded > 0 ) 947 { 948 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 949 #else 950 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 951 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 952 #endif 953 954 for ( i = 0; i < iNumEncoded; i++ ) 955 { 956 --iterPicYuvRec; 957 } 958 959 for ( i = 0; i < iNumEncoded; i++ ) 960 { 961 TComPicYuv* pcPicYuvRec = *(iterPicYuvRec++); 1064 if (m_isField) 1065 { 1066 //Reinterlace fields 1067 Int i; 1068 #if H_MV 1069 if( iNumEncoded > 0 ) 1070 { 1071 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 1072 #else 1073 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 1074 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 1075 #endif 1076 1077 for ( i = 0; i < iNumEncoded; i++ ) 1078 { 1079 --iterPicYuvRec; 1080 } 1081 1082 for ( i = 0; i < iNumEncoded/2; i++ ) 1083 { 1084 TComPicYuv* pcPicYuvRecTop = *(iterPicYuvRec++); 1085 TComPicYuv* pcPicYuvRecBottom = *(iterPicYuvRec++); 1086 962 1087 #if H_MV 963 1088 if (m_pchReconFileList[layerId]) 964 1089 { 965 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 966 } 967 } 968 } 1090 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confLeft, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst ); 1091 } 1092 } 1093 } 1094 969 1095 if( ! accessUnits.empty() ) 970 1096 { … … 972 1098 for( aUIter = accessUnits.begin(); aUIter != accessUnits.end(); aUIter++ ) 973 1099 { 1100 const vector<UInt>& stats = writeAnnexB(bitstreamFile, *aUIter); 1101 rateStatsAccum(*aUIter, stats); 1102 } 1103 } 1104 #else 1105 if (m_pchReconFile) 1106 { 1107 m_cTVideoIOYuvReconFile.write( pcPicYuvRecTop, pcPicYuvRecBottom, m_confLeft, m_confRight, m_confTop, m_confBottom, m_isTopFieldFirst ); 1108 } 1109 1110 const AccessUnit& auTop = *(iterBitstream++); 1111 const vector<UInt>& statsTop = writeAnnexB(bitstreamFile, auTop); 1112 rateStatsAccum(auTop, statsTop); 1113 1114 const AccessUnit& auBottom = *(iterBitstream++); 1115 const vector<UInt>& statsBottom = writeAnnexB(bitstreamFile, auBottom); 1116 rateStatsAccum(auBottom, statsBottom); 1117 } 1118 #endif 1119 } 1120 else 1121 { 1122 Int i; 1123 #if H_MV 1124 if( iNumEncoded > 0 ) 1125 { 1126 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_picYuvRec[layerId]->end(); 1127 #else 1128 TComList<TComPicYuv*>::iterator iterPicYuvRec = m_cListPicYuvRec.end(); 1129 list<AccessUnit>::const_iterator iterBitstream = accessUnits.begin(); 1130 #endif 1131 1132 for ( i = 0; i < iNumEncoded; i++ ) 1133 { 1134 --iterPicYuvRec; 1135 } 1136 1137 for ( i = 0; i < iNumEncoded; i++ ) 1138 { 1139 TComPicYuv* pcPicYuvRec = *(iterPicYuvRec++); 1140 #if H_MV 1141 if (m_pchReconFileList[layerId]) 1142 { 1143 m_acTVideoIOYuvReconFileList[layerId]->write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 1144 } 1145 } 1146 } 1147 if( ! accessUnits.empty() ) 1148 { 1149 list<AccessUnit>::iterator aUIter; 1150 for( aUIter = accessUnits.begin(); aUIter != accessUnits.end(); aUIter++ ) 1151 { 974 1152 const vector<unsigned>& stats = writeAnnexB(bitstreamFile, *aUIter); 975 1153 rateStatsAccum(*aUIter, stats); … … 977 1155 } 978 1156 #else 979 if (m_pchReconFile) 980 { 981 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 982 } 983 984 const AccessUnit& au = *(iterBitstream++); 985 const vector<UInt>& stats = writeAnnexB(bitstreamFile, au); 986 rateStatsAccum(au, stats); 987 } 988 #endif 989 } 990 1157 if (m_pchReconFile) 1158 { 1159 m_cTVideoIOYuvReconFile.write( pcPicYuvRec, m_confLeft, m_confRight, m_confTop, m_confBottom ); 1160 } 1161 1162 const AccessUnit& au = *(iterBitstream++); 1163 const vector<UInt>& stats = writeAnnexB(bitstreamFile, au); 1164 rateStatsAccum(au, stats); 1165 } 1166 #endif 1167 } 1168 } 1169 991 1170 /** 992 1171 * … … 1121 1300 Void TAppEncTop::xSetDimensionIdAndLength( TComVPS& vps ) 1122 1301 { 1123 #if H_MV51124 1302 vps.setScalabilityMaskFlag( m_scalabilityMask ); 1125 #else1126 vps.setScalabilityMask( m_scalabilityMask );1127 #endif1128 1303 for( Int dim = 0; dim < m_dimIds.size(); dim++ ) 1129 1304 { 1130 1305 vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] ); 1131 #if H_MV51132 1306 for( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1133 #else1134 for( Int layer = 0; layer < vps.getMaxLayers(); layer++ )1135 #endif1136 1307 1137 1308 { … … 1140 1311 } 1141 1312 1142 #if H_MV51143 1313 Int maxViewId = xGetMax( m_viewId ); 1144 1314 … … 1153 1323 1154 1324 assert( m_iNumberOfViews == vps.getNumViews() ); 1155 #endif1156 1325 } 1157 1326 … … 1180 1349 1181 1350 // Max temporal id for inter layer reference pictures + presence flag 1182 #if H_MV51183 1351 Bool maxTidRefPresentFlag = false; 1184 #endif1185 1352 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1186 1353 { … … 1203 1370 } 1204 1371 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 ); 1205 #if H_MV51206 1372 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 ); 1207 #endif 1208 } 1209 1210 #if H_MV5 1373 } 1374 1211 1375 vps.setMaxTidRefPresentFlag( maxTidRefPresentFlag ); 1212 #endif1213 1376 // Max one active ref layer flag 1214 1377 Bool maxOneActiveRefLayerFlag = true; 1215 #if H_MV51216 1378 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; layerIdInVps++) 1217 #else1218 for ( Int currLayerIdInVps = 1; currLayerIdInVps < m_numberOfLayers && maxOneActiveRefLayerFlag; currLayerIdInVps++)1219 #endif1220 1379 { 1221 1380 for( Int i = 0; i < ( getGOPSize() + 1) && maxOneActiveRefLayerFlag; i++ ) 1222 1381 { 1223 #if H_MV51224 1382 GOPEntry ge = m_GOPListMvc[layerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1225 #else1226 GOPEntry ge = m_GOPListMvc[currLayerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ];1227 #endif1228 1383 maxOneActiveRefLayerFlag = maxOneActiveRefLayerFlag && (ge.m_numActiveRefLayerPics <= 1); 1229 1384 } … … 1233 1388 1234 1389 1235 #if H_MV51236 1390 // All Ref layers active flag 1237 1391 Bool allRefLayersActiveFlag = true; … … 1249 1403 // Currently cross layer irap aligned is always true. 1250 1404 vps.setCrossLayerIrapAlignedFlag( true ); 1251 #endif1252 1405 vps.setRefLayers(); 1253 1406 }; 1254 1407 1255 #if H_MV51256 1408 GOPEntry* TAppEncTop::xGetGopEntry( Int layerIdInVps, Int poc ) 1257 1409 { … … 1268 1420 return geFound; 1269 1421 } 1270 #endif1271 1422 1272 1423 Void TAppEncTop::xSetLayerIds( TComVPS& vps ) … … 1308 1459 } 1309 1460 1310 #if H_MV51311 1461 1312 1462 Void TAppEncTop::xSetRepFormat( TComVPS& vps ) … … 1333 1483 } 1334 1484 } 1335 #endif1336 1485 1337 1486 Void TAppEncTop::xSetLayerSets( TComVPS& vps ) … … 1386 1535 } 1387 1536 } 1388 #if H_MV51389 1537 1390 1538 Void TAppEncTop::xSetVPSVUI( TComVPS& vps ) … … 1478 1626 } 1479 1627 #endif 1480 #endif1481 1628 #if H_3D 1482 1629 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps ) 1483 1630 { 1484 #if H_MV51485 1631 1486 1632 for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1487 #else1488 for ( Int layer = 0; layer < vps.getMaxLayers(); layer++ )1489 #endif1490 1633 { 1491 1634 Bool isDepth = ( vps.getDepthId( layer ) == 1 ) ; … … 1517 1660 vps.setViewSynthesisPredFlag( layer, !isLayerZero && !isDepth && m_viewSynthesisPredFlag ); 1518 1661 #endif 1519 #if LGE_INTER_SDC_E01561662 #if H_3D_INTER_SDC 1520 1663 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag ); 1521 1664 #endif
Note: See TracChangeset for help on using the changeset viewer.