Changeset 635 in 3DVCSoftware for branches/HTM-8.2-dev0-KWU/source/App
- Timestamp:
- 14 Oct 2013, 20:13:58 (11 years ago)
- Location:
- branches/HTM-8.2-dev0-KWU/source/App/TAppEncoder
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-8.2-dev0-KWU/source/App/TAppEncoder/TAppEncCfg.cpp
r630 r635 82 82 m_codedPivotValue = NULL; 83 83 m_targetPivotValue = NULL; 84 85 #if KWU_RC_MADPRED_E0227 86 m_uiDepthMADPred = 0; 87 #endif 84 88 } 85 89 … … 594 598 ( "InitialQP", m_RCInitialQP, 0, "Rate control: initial QP" ) 595 599 ( "RCForceIntraQP", m_RCForceIntraQP, false, "Rate control: force intra QP to be equal to initial QP" ) 596 #else 597 ("RateCtrl,-rc", m_enableRateCtrl, false, "Rate control on/off") 600 601 #if KWU_RC_VIEWRC_E0227 602 ("ViewWiseTargetBits, -vtbr" , m_pchViewTargetBits, std::vector<Int>(1, 32), "View-wise target bit-rate setting") 603 ("TargetBitAssign, -ta", m_bViewWiseRateCtrl, false, "View-wise rate control on/off") 604 #endif 605 #if KWU_RC_MADPRED_E0227 606 ("DepthMADPred, -dm", m_uiDepthMADPred, (UInt)0, "Depth based MAD prediction on/off") 607 #endif 608 #else 609 ("RateControl,-rc", m_enableRateCtrl, false, "Rate control on/off") 598 610 ("TargetBitrate,-tbr", m_targetBitrate, 0, "Input target bitrate") 599 611 ("NumLCUInUnit,-nu", m_numLCUInUnit, 0, "Number of LCUs in an Unit") 612 613 #if KWU_RC_VIEWRC_E0227 614 ("ViewWiseTargetBits, -vtbr" , m_pchViewTargetBits, std::vector<Int>(1, 32), "View-wise target bit-rate setting") 615 ("TargetBitAssign, -ta", m_bViewWiseRateCtrl, false, "View-wise rate control on/off") 616 #endif 617 #if KWU_RC_MADPRED_E0227 618 ("DepthMADPred, -dm", m_uiDepthMADPred, (UInt)0, "Depth based MAD prediction on/off") 619 #endif 600 620 #endif 601 621 … … 2159 2179 xConfirmPara( (numLCUInPic % m_numLCUInUnit) != 0, "total number of LCUs in a frame should be completely divided by NumLCUInUnit" ); 2160 2180 2161 m_iMaxDeltaQP = MAX_DELTA_QP;2181 //m_iMaxDeltaQP = MAX_DELTA_QP; 2162 2182 m_iMaxCuDQPDepth = MAX_CUDQP_DEPTH; 2163 2183 } … … 2301 2321 printf("InitialQP : %d\n", m_RCInitialQP ); 2302 2322 printf("ForceIntraQP : %d\n", m_RCForceIntraQP ); 2323 2324 #if KWU_RC_MADPRED_E0227 2325 printf("Depth based MAD prediction : %d\n", m_uiDepthMADPred); 2326 #endif 2327 #if KWU_RC_VIEWRC_E0227 2328 printf("View-wise Rate control : %d\n", m_bViewWiseRateCtrl); 2329 if(m_bViewWiseRateCtrl) 2330 { 2331 2332 printf("ViewWiseTargetBits : "); 2333 for (int i = 0 ; i < m_iNumberOfViews ; i++) 2334 printf("%d ", m_pchViewTargetBits[i]); 2335 printf("\n"); 2336 } 2337 else 2338 { 2339 printf("TargetBitrate : %d\n", m_RCTargetBitrate ); 2340 } 2341 #endif 2303 2342 } 2304 2343 #else … … 2308 2347 printf("TargetBitrate : %d\n", m_targetBitrate); 2309 2348 printf("NumLCUInUnit : %d\n", m_numLCUInUnit); 2349 2350 #if KWU_RC_MADPRED_E0227 2351 printf("Depth based MAD prediction : %d\n", m_uiDepthMADPred); 2352 #endif 2353 #if KWU_RC_VIEWRC_E0227 2354 printf("View-wise Rate control : %d\n", m_bViewWiseRateCtrl); 2355 if(m_bViewWiseRateCtrl) 2356 { 2357 2358 printf("ViewWiseTargetBits : "); 2359 for (int i = 0 ; i < m_iNumberOfViews ; i++) 2360 printf("%d ", m_pchViewTargetBits[i]); 2361 printf("\n"); 2362 } 2363 else 2364 { 2365 printf("TargetBitrate : %d\n", m_targetBitrate ); 2366 } 2367 #endif 2310 2368 } 2311 2369 #endif -
branches/HTM-8.2-dev0-KWU/source/App/TAppEncoder/TAppEncCfg.h
r622 r635 367 367 Int m_RCInitialQP; ///< inital QP for rate control 368 368 Bool m_RCForceIntraQP; ///< force all intra picture to use initial QP or not 369 370 #if KWU_RC_VIEWRC_E0227 371 vector<Int> m_pchViewTargetBits; 372 bool m_bViewWiseRateCtrl; ///< Flag for using view-wise rate control 373 #endif 374 #if KWU_RC_MADPRED_E0227 375 UInt m_uiDepthMADPred; 376 #endif 369 377 #else 370 378 Bool m_enableRateCtrl; ///< Flag for using rate control algorithm 371 379 Int m_targetBitrate; ///< target bitrate 372 380 Int m_numLCUInUnit; ///< Total number of LCUs in a frame should be completely divided by the NumLCUInUnit 381 382 #if KWU_RC_VIEWRC_E0227 383 vector<Int> m_pchViewTargetBits; 384 bool m_bViewWiseRateCtrl; ///< Flag for using view-wise rate control 385 #endif 386 #if KWU_RC_MADPRED_E0227 387 UInt m_uiDepthMADPred; 388 #endif 373 389 #endif 374 390 Int m_useScalingListId; ///< using quantization matrix -
branches/HTM-8.2-dev0-KWU/source/App/TAppEncoder/TAppEncTop.cpp
r622 r635 512 512 m_cTEncTop.setSignHideFlag(m_signHideFlag); 513 513 #if RATE_CONTROL_LAMBDA_DOMAIN 514 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 514 if(!m_cTEncTop.getIsDepth()) //only for texture 515 m_cTEncTop.setUseRateCtrl ( m_RCEnableRateControl ); 516 else 517 m_cTEncTop.setUseRateCtrl ( 0 ); 518 #if !KWU_RC_VIEWRC_E0227 515 519 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 520 #endif 516 521 m_cTEncTop.setKeepHierBit ( m_RCKeepHierarchicalBit ); 517 522 m_cTEncTop.setLCULevelRC ( m_RCLCULevelRC ); … … 519 524 m_cTEncTop.setInitialQP ( m_RCInitialQP ); 520 525 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); 526 527 #if KWU_RC_MADPRED_E0227 528 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 529 { 530 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_uiDepthMADPred : 0); 531 532 if(m_cTEncTop.getUseDepthMADPred()) 533 m_cTEncTop.setCamParam(&m_cCameraData); 534 } 535 #endif 536 #if KWU_RC_VIEWRC_E0227 537 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 538 { 539 m_cTEncTop.setUseViewWiseRateCtrl(m_bViewWiseRateCtrl); 540 541 if(m_iNumberOfViews == 1) 542 { 543 if(m_bViewWiseRateCtrl) 544 { 545 m_cTEncTop.setTargetBitrate(m_pchViewTargetBits[layerIdInVps>>1]); 546 } 547 else 548 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 549 } 550 else 551 { 552 if(m_bViewWiseRateCtrl) 553 { 554 m_cTEncTop.setTargetBitrate(m_pchViewTargetBits[layerIdInVps>>1]); 555 } 556 else 557 { 558 if(m_iNumberOfViews == 2) 559 { 560 if(m_cTEncTop.getViewId() == 0) 561 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*80)/100 ); 562 else if(m_cTEncTop.getViewId() == 1) 563 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*20)/100 ); 564 } 565 else if(m_iNumberOfViews == 3) 566 { 567 if(m_cTEncTop.getViewId() == 0) 568 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*66)/100 ); 569 else if(m_cTEncTop.getViewId() == 1) 570 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 571 else if(m_cTEncTop.getViewId() == 2) 572 m_cTEncTop.setTargetBitrate ( (m_RCTargetBitrate*17)/100 ); 573 } 574 else 575 m_cTEncTop.setTargetBitrate ( m_RCTargetBitrate ); 576 } 577 } 578 } 579 #endif 580 #else 581 if(!m_cTEncTop.getIsDepth()) //only for texture 582 { 583 m_cTEncTop.setUseRateCtrl ( m_enableRateCtrl ); 584 #if !KWU_RC_VIEWRC_E0227 585 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 586 #endif 587 m_cTEncTop.setNumLCUInUnit ( m_numLCUInUnit); 588 } 589 else 590 m_cTEncTop.setUseRateCtrl ( 0 ); 591 592 #if KWU_RC_MADPRED_E0227 593 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 594 { 595 m_cTEncTop.setUseDepthMADPred(layerIdInVps ? m_uiDepthMADPred : 0); 596 597 if(m_cTEncTop.getUseDepthMADPred()) 598 m_cTEncTop.setCamParam(&m_cCameraData); 599 } 600 #endif 601 602 #if KWU_RC_VIEWRC_E0227 603 if(m_cTEncTop.getUseRateCtrl() && !m_cTEncTop.getIsDepth()) 604 { 605 m_cTEncTop.setUseViewWiseRateCtrl(m_bViewWiseRateCtrl); 606 if(m_iNumberOfViews == 1) 607 { 608 if(m_bViewWiseRateCtrl) 609 { 610 m_cTEncTop.setTargetBitrate(m_pchViewTargetBits[layerIdInVps>>1]); 611 } 612 else 613 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 614 } 615 else 616 { 617 if(m_bViewWiseRateCtrl) 618 { 619 m_cTEncTop.setTargetBitrate(m_pchViewTargetBits[layerIdInVps>>1]); 620 } 621 else 622 { 623 if(m_iNumberOfViews == 2) 624 { 625 if(m_cTEncTop.getViewId() == 0) 626 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*80)/100 ); 627 else if(m_cTEncTop.getViewId() == 1) 628 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*20)/100 ); 629 } 630 else if(m_iNumberOfViews == 3) 631 { 632 if(m_cTEncTop.getViewId() == 0) 633 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*66)/100 ); 634 else if(m_cTEncTop.getViewId() == 1) 635 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 636 else if(m_cTEncTop.getViewId() == 2) 637 m_cTEncTop.setTargetBitrate ( (m_targetBitrate*17)/100 ); 638 } 639 else 640 m_cTEncTop.setTargetBitrate ( m_targetBitrate ); 641 } 642 } 643 } 644 #endif 525 645 #endif 526 646 m_cTEncTop.setTransquantBypassEnableFlag(m_TransquantBypassEnableFlag); … … 669 789 for(Int layer=0; layer<m_numberOfLayers; layer++) 670 790 { 791 #if KWU_RC_MADPRED_E0227 792 m_acTEncTopList[layer]->init( this ); 793 #else 671 794 m_acTEncTopList[layer]->init( ); 795 #endif 672 796 } 673 797 #else … … 789 913 } 790 914 } 915 916 #if !RATE_CONTROL_LAMBDA_DOMAIN 917 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 918 { 919 if(m_acTEncTopList[layer]->getUseRateCtrl() && !m_acTEncTopList[layer]->getIsDepth()) 920 { 921 m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus(); 922 } 923 } 924 #endif 925 791 926 gopSize = maxGopSize; 792 927 } -
branches/HTM-8.2-dev0-KWU/source/App/TAppEncoder/TAppEncTop.h
r622 r635 50 50 #endif 51 51 52 #if KWU_RC_MADPRED_E0227 53 class TEncTop; 54 #endif 52 55 //! \ingroup TAppEncoder 53 56 //! \{
Note: See TracChangeset for help on using the changeset viewer.