Changeset 539 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2/source
- Timestamp:
- 19 Jul 2013, 17:02:35 (11 years ago)
- Location:
- branches/HTM-DEV-0.3-dev2/source
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.cpp
r537 r539 703 703 704 704 #endif //HHI_VSO 705 #if H_3D_QTLPC 706 ("QTL", m_bUseQTL , true , "Use depth Quadtree Limitation" ) 707 ("PC", m_bUsePC , true , "Use Predictive Coding with QTL" ) 708 #endif 705 709 #if H_3D_IV_MERGE 706 710 ("IvMvPred", m_ivMvPredFlag, true , "inter view motion prediction " ) … … 2261 2265 printf("WVSO:%d ", m_bUseWVSO ); 2262 2266 #endif 2267 #if H_3D_QTLPC 2268 printf("QTL:%d ", m_bUseQTL); 2269 printf("PC:%d " , m_bUsePC ); 2270 #endif 2263 2271 #if H_3D_IV_MERGE 2264 2272 printf("IvMvPred:%d ", m_ivMvPredFlag ); -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncCfg.h
r537 r539 428 428 Bool m_useDLT; ///< flag for using DLT 429 429 #endif 430 #if H_3D_QTLPC 431 Bool m_bUseQTL; ///< flag for using depth QuadTree Limitation 432 Bool m_bUsePC; ///< flag for using Predictive Coding with QTL 433 #endif 430 434 #endif 431 435 // internal member functions -
branches/HTM-DEV-0.3-dev2/source/App/TAppEncoder/TAppEncTop.cpp
r537 r539 185 185 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 186 186 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); 187 #endif 188 #if H_3D_QTLPC 189 m_cTEncTop.setUseQTL ( isDepth ? m_bUseQTL : false ); 190 m_cTEncTop.setUsePC ( isDepth ? m_bUsePC : false ); 187 191 #endif 188 192 #endif // H_3D -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComPic.cpp
r504 r539 77 77 m_apcPicYuv[0] = NULL; 78 78 m_apcPicYuv[1] = NULL; 79 #if H_3D_QTLPC 80 m_bReduceBitsQTL = 0; 81 #endif 79 82 #if H_3D_NBDV 80 83 m_iNumDdvCandPics = 0; -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComPic.h
r504 r539 96 96 #endif 97 97 #endif 98 #if H_3D_QTLPC 99 Bool m_bReduceBitsQTL; 100 #endif 98 101 #if H_3D_NBDV 99 102 UInt m_uiRapRefIdx; … … 130 133 #endif 131 134 #endif 135 136 #if H_3D_QTLPC 137 Bool getReduceBitsFlag () { return m_bReduceBitsQTL; } 138 Void setReduceBitsFlag ( Bool bFlag ) { m_bReduceBitsQTL = bFlag; } 139 #endif 140 132 141 Bool getUsedByCurr() { return m_bUsedByCurr; } 133 142 Void setUsedByCurr( Bool bUsed ) { m_bUsedByCurr = bUsed; } -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.cpp
r537 r539 1880 1880 , m_bCamParInSliceHeader (false) 1881 1881 #endif 1882 #if H_3D_QTLPC 1883 , m_bUseQTL (false) 1884 , m_bUsePC (false) 1885 #endif 1882 1886 { 1883 1887 for ( Int i = 0; i < MAX_TLAYER; i++ ) -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TComSlice.h
r537 r539 972 972 UInt m_uiPCMLog2MinSize; 973 973 Bool m_useAMP; 974 975 #if H_3D_QTLPC 976 Bool m_bUseQTL; 977 Bool m_bUsePC; 978 #endif 974 979 975 980 // Parameter … … 1170 1175 Int getMinHorizontalCtuOffsetPlus1 ( Int i ) { return m_minHorizontalCtuOffsetPlus1 [ i ];} 1171 1176 #endif 1177 1178 #if H_3D_QTLPC 1179 Void setUseQTL( Bool b ) { m_bUseQTL = b; } 1180 Bool getUseQTL() { return m_bUseQTL; } 1181 Void setUsePC ( Bool b ) { m_bUsePC = b; } 1182 Bool getUsePC () { return m_bUsePC; } 1183 #endif 1184 1172 1185 #if H_3D 1173 1186 Void initCamParaSPS ( UInt uiViewIndex, UInt uiCamParPrecision = 0, Bool bCamParSlice = false, Int** aaiScale = 0, Int** aaiOffset = 0 ); -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibCommon/TypeDef.h
r537 r539 75 75 76 76 #if H_3D 77 #define H_3D_QTLPC 1 // OL_QTLIMIT_PREDCODING_B0068 //JCT3V-B0068 78 // HHI_QTLPC_RAU_OFF_C0160 // JCT3V-C0160 change 2: quadtree limitation and predictive coding switched off in random access units 79 77 80 #define H_3D_PDM_CAM_PARAS 0 ///< PDM related parts of camera parameters, should be removed if not used anymore. 78 81 #define H_3D_VSO 1 // VSO, View synthesis optimization, includes: -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecCAVLC.cpp
r537 r539 734 734 } 735 735 } 736 } 736 } 737 738 #if H_3D_QTLPC 739 if( depthFlag ) 740 { 741 READ_FLAG( uiCode, "use_qtl_flag" ); 742 pcSPS->setUseQTL( uiCode ); 743 READ_FLAG( uiCode, "use_pc_flag" ); 744 pcSPS->setUsePC( uiCode ); 745 } 746 #endif 737 747 738 748 //// sps_extension_vui_parameters( ) END -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibDecoder/TDecSbac.cpp
r537 r539 821 821 return; 822 822 } 823 823 824 824 UInt uiSymbol; 825 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) ); 825 826 #if H_3D_QTLPC 827 Bool bParseSplitFlag = true; 828 829 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 830 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 831 Bool bDepthMapDetect = (pcTexture != NULL); 832 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 833 834 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 835 836 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC()) 837 { 838 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 839 assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth); 840 bParseSplitFlag = (pcTextureCU->getDepth(uiAbsPartIdx) > uiDepth); 841 } 842 843 if(bParseSplitFlag) 844 { 845 #endif 846 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) ); 826 847 #if H_MV_ENC_DEC_TRAC 827 DTRACE_CU("split_cu_flag", uiSymbol);848 DTRACE_CU("split_cu_flag", uiSymbol); 828 849 #else 829 DTRACE_CABAC_VL( g_nSymbolCounter++ ) 830 DTRACE_CABAC_T( "\tSplitFlag\n" ) 850 DTRACE_CABAC_VL( g_nSymbolCounter++ ) 851 DTRACE_CABAC_T( "\tSplitFlag\n" ) 852 #endif 853 #if H_3D_QTLPC 854 } 855 else 856 { 857 uiSymbol = 0; 858 } 831 859 #endif 832 860 pcCU->setDepthSubParts( uiDepth + uiSymbol, uiAbsPartIdx ); … … 845 873 UInt uiSymbol, uiMode = 0; 846 874 PartSize eMode; 875 876 #if H_3D_QTLPC 877 Bool bParsePartSize = true; 878 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 879 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 880 Bool bDepthMapDetect = (pcTexture != NULL); 881 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 882 883 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 884 885 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL() && sps->getUsePC()) 886 { 887 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 888 assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth); 889 if (pcTextureCU->getDepth(uiAbsPartIdx) == uiDepth && pcTextureCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN) 890 { 891 bParsePartSize = false; 892 eMode = SIZE_2Nx2N; 893 } 894 } 895 #endif 896 847 897 848 898 if ( pcCU->isIntra( uiAbsPartIdx ) ) 849 899 { 850 uiSymbol = 1; 851 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 852 { 853 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 900 #if H_3D_QTLPC 901 if(bParsePartSize) 902 { 903 #endif 904 uiSymbol = 1; 905 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 906 { 907 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 854 908 #if H_MV_ENC_DEC_TRAC 855 DTRACE_CU("part_mode", uiSymbol)909 DTRACE_CU("part_mode", uiSymbol) 856 910 #endif 857 } 858 eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN; 911 } 912 eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN; 913 #if H_3D_QTLPC 914 } 915 #endif 859 916 UInt uiTrLevel = 0; 860 917 UInt uiWidthInBit = g_aucConvertToBit[pcCU->getWidth(uiAbsPartIdx)]+2; … … 872 929 else 873 930 { 874 UInt uiMaxNumBits = 2; 875 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) ) 876 { 877 uiMaxNumBits ++; 878 } 879 for ( UInt ui = 0; ui < uiMaxNumBits; ui++ ) 880 { 881 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) ); 882 if ( uiSymbol ) 883 { 884 break; 885 } 886 uiMode++; 887 } 888 eMode = (PartSize) uiMode; 889 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 890 { 891 if (eMode == SIZE_2NxN) 892 { 893 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 894 if (uiSymbol == 0) 931 #if H_3D_QTLPC 932 if(bParsePartSize) 933 { 934 #endif 935 UInt uiMaxNumBits = 2; 936 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) ) 937 { 938 uiMaxNumBits ++; 939 } 940 for ( UInt ui = 0; ui < uiMaxNumBits; ui++ ) 941 { 942 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) ); 943 if ( uiSymbol ) 895 944 { 896 m_pcTDecBinIf->decodeBinEP(uiSymbol); 897 eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD); 945 break; 898 946 } 899 } 900 else if (eMode == SIZE_Nx2N) 901 { 902 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 903 if (uiSymbol == 0) 947 uiMode++; 948 } 949 eMode = (PartSize) uiMode; 950 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 951 { 952 if (eMode == SIZE_2NxN) 904 953 { 905 m_pcTDecBinIf->decodeBinEP(uiSymbol); 906 eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N); 954 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 955 if (uiSymbol == 0) 956 { 957 m_pcTDecBinIf->decodeBinEP(uiSymbol); 958 eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD); 959 } 907 960 } 908 } 909 } 961 else if (eMode == SIZE_Nx2N) 962 { 963 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 964 if (uiSymbol == 0) 965 { 966 m_pcTDecBinIf->decodeBinEP(uiSymbol); 967 eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N); 968 } 969 } 970 } 910 971 #if H_MV_ENC_DEC_TRAC 911 DTRACE_CU("part_mode", eMode ) 912 #endif 972 DTRACE_CU("part_mode", eMode ) 973 #endif 974 #if H_3D_QTLPC 975 } 976 #endif 913 977 } 914 978 pcCU->setPartSizeSubParts( eMode, uiAbsPartIdx, uiDepth ); -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCavlc.cpp
r537 r539 550 550 } 551 551 } 552 } 552 } 553 554 #if H_3D_QTLPC 555 if( depthFlag ) 556 { 557 WRITE_FLAG( pcSPS->getUseQTL() ? 1 : 0, "use_qtl_flag"); 558 WRITE_FLAG( pcSPS->getUsePC() ? 1 : 0, "use_pc_flag"); 559 } 560 #endif 561 553 562 //// sps_extension_vui_parameters( ) END 554 563 WRITE_UVLC( 0, "sps_shvc_reserved_zero_idc" ); -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCfg.h
r537 r539 401 401 Bool m_useDLT; 402 402 #endif 403 404 #if H_3D_QTLPC 405 Bool m_bUseQTL; 406 Bool m_bUsePC; 407 #endif 408 403 409 #endif 404 410 public: … … 946 952 Void setUseDLT ( Bool b) { m_useDLT = b; } 947 953 #endif 954 955 #if H_3D_QTLPC 956 Void setUseQTL ( Bool b ) { m_bUseQTL = b; } 957 Bool getUseQTL () { return m_bUseQTL; } 958 Void setUsePC ( Bool b ) { m_bUsePC = b; } 959 Bool getUsePC () { return m_bUsePC; } 960 #endif 961 948 962 #endif // H_3D 949 963 }; -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncCu.cpp
r537 r539 388 388 TComPic* pcPic = rpcBestCU->getPic(); 389 389 390 #if H_3D_QTLPC 391 TComSPS *sps = pcPic->getSlice(0)->getSPS(); 392 TComPic *pcTexture = rpcBestCU->getSlice()->getTexturePic(); 393 394 Bool depthMapDetect = (pcTexture != NULL); 395 Bool bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType() == I_SLICE); 396 397 Bool rapPic = (rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || rpcBestCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 398 399 Bool bTry2NxN = true; 400 Bool bTryNx2N = true; 401 #endif 402 390 403 // get Original YUV data from picture 391 404 m_ppcOrigYuv[uiDepth]->copyFromPicYuv( pcPic->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() ); … … 481 494 482 495 rpcTempCU->initEstData( uiDepth, iQP ); 496 497 #if H_3D_QTLPC 498 //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU 499 500 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL()) 501 { 502 TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU 503 UInt uiCUIdx = rpcBestCU->getZorderIdxInCU(); 504 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); //Depth cannot be more partitionned than the texture. 505 if (pcTextureCU->getDepth(uiCUIdx) > uiDepth || pcTextureCU->getPartitionSize(uiCUIdx) == SIZE_NxN) //Texture was split. 506 { 507 bTrySplit = true; 508 bTryNx2N = true; 509 bTry2NxN = true; 510 } 511 else 512 { 513 bTrySplit = false; 514 bTryNx2N = false; 515 bTry2NxN = false; 516 } 517 } 518 #endif 519 483 520 #if H_3D_NBDV 484 521 DisInfo DvInfo; … … 575 612 } 576 613 577 if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() ) 578 { 579 if(iQP == iBaseQP) 614 #if H_3D_QTLPC 615 if(depthMapDetect && !bIntraSliceDetect && !rapPic && sps->getUseQTL()) 616 { 617 bTrySplitDQP = bTrySplit; 618 } 619 else 620 { 621 #endif 622 if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() ) 623 { 624 if(iQP == iBaseQP) 625 { 626 bTrySplitDQP = bTrySplit; 627 } 628 } 629 else 580 630 { 581 631 bTrySplitDQP = bTrySplit; 582 632 } 583 } 584 else 585 { 586 bTrySplitDQP = bTrySplit; 587 } 633 #if H_3D_QTLPC 634 } 635 #endif 588 636 if (isAddLowestQP && (iQP == lowestQP)) 589 637 { … … 625 673 if(!( (rpcBestCU->getWidth(0)==8) && (rpcBestCU->getHeight(0)==8) )) 626 674 { 627 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu) 675 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu 676 #if H_3D_QTLPC 677 && bTrySplit 678 #endif 679 ) 628 680 { 629 681 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN ); … … 634 686 635 687 // 2NxN, Nx2N 636 if(doNotBlockPu) 688 if(doNotBlockPu 689 #if H_3D_QTLPC 690 && bTryNx2N 691 #endif 692 ) 637 693 { 638 694 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N ); … … 643 699 } 644 700 } 645 if(doNotBlockPu) 701 if(doNotBlockPu 702 #if H_3D_QTLPC 703 && bTry2NxN 704 #endif 705 ) 646 706 { 647 707 xCheckRDCostInter ( rpcBestCU, rpcTempCU, SIZE_2NxN ); … … 671 731 if ( bTestAMP_Hor ) 672 732 { 673 if(doNotBlockPu) 733 if(doNotBlockPu 734 #if H_3D_QTLPC 735 && bTry2NxN 736 #endif 737 ) 674 738 { 675 739 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); … … 680 744 } 681 745 } 682 if(doNotBlockPu) 746 if(doNotBlockPu 747 #if H_3D_QTLPC 748 && bTry2NxN 749 #endif 750 ) 683 751 { 684 752 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); … … 693 761 else if ( bTestMergeAMP_Hor ) 694 762 { 695 if(doNotBlockPu) 763 if(doNotBlockPu 764 #if H_3D_QTLPC 765 && bTry2NxN 766 #endif 767 ) 696 768 { 697 769 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true ); … … 702 774 } 703 775 } 704 if(doNotBlockPu) 776 if(doNotBlockPu 777 #if H_3D_QTLPC 778 && bTry2NxN 779 #endif 780 ) 705 781 { 706 782 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true ); … … 717 793 if ( bTestAMP_Ver ) 718 794 { 719 if(doNotBlockPu) 795 if(doNotBlockPu 796 #if H_3D_QTLPC 797 && bTryNx2N 798 #endif 799 ) 720 800 { 721 801 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); … … 726 806 } 727 807 } 728 if(doNotBlockPu) 808 if(doNotBlockPu 809 #if H_3D_QTLPC 810 && bTryNx2N 811 #endif 812 ) 729 813 { 730 814 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); … … 735 819 else if ( bTestMergeAMP_Ver ) 736 820 { 737 if(doNotBlockPu) 821 if(doNotBlockPu 822 #if H_3D_QTLPC 823 && bTryNx2N 824 #endif 825 ) 738 826 { 739 827 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true ); … … 744 832 } 745 833 } 746 if(doNotBlockPu) 834 if(doNotBlockPu 835 #if H_3D_QTLPC 836 && bTryNx2N 837 #endif 838 ) 747 839 { 748 840 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true ); … … 753 845 754 846 #else 755 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); 756 rpcTempCU->initEstData( uiDepth, iQP ); 757 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); 758 rpcTempCU->initEstData( uiDepth, iQP ); 759 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); 760 rpcTempCU->initEstData( uiDepth, iQP ); 761 762 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); 763 rpcTempCU->initEstData( uiDepth, iQP ); 847 #if H_3D_QTLPC 848 if (bTry2NxN) 849 { 850 #endif 851 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); 852 rpcTempCU->initEstData( uiDepth, iQP ); 853 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); 854 rpcTempCU->initEstData( uiDepth, iQP ); 855 #if H_3D_QTLPC 856 } 857 if (bTryNx2N) 858 { 859 #endif 860 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); 861 rpcTempCU->initEstData( uiDepth, iQP ); 862 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); 863 rpcTempCU->initEstData( uiDepth, iQP ); 864 #if H_3D_QTLPC 865 } 866 #endif 764 867 765 868 #endif … … 789 892 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 790 893 { 791 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 894 #if H_3D_QTLPC //Try IntraNxN 895 if(bTrySplit) 792 896 { 793 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN ); 794 rpcTempCU->initEstData( uiDepth, iQP ); 897 #endif 898 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 899 { 900 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN ); 901 rpcTempCU->initEstData( uiDepth, iQP ); 902 } 903 #if H_3D_QTLPC 795 904 } 905 #endif 796 906 } 797 907 } -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSbac.cpp
r531 r539 730 730 { 731 731 PartSize eSize = pcCU->getPartitionSize( uiAbsPartIdx ); 732 733 #if H_3D_QTLPC 734 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 735 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 736 Bool bDepthMapDetect = (pcTexture != NULL); 737 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 738 739 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 740 741 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC() ) 742 { 743 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 744 UInt uiCUIdx = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU(); 745 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); 746 if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) != SIZE_NxN) 747 { 748 assert( eSize == SIZE_2Nx2N ); 749 return; 750 } 751 } 752 #endif 753 732 754 if ( pcCU->isIntra( uiAbsPartIdx ) ) 733 755 { … … 989 1011 990 1012 assert( uiCtx < 3 ); 1013 1014 #if H_3D_QTLPC 1015 Bool bCodeSplitFlag = true; 1016 1017 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 1018 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 1019 Bool bDepthMapDetect = (pcTexture != NULL); 1020 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 1021 1022 Bool rapPic = (pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_W_RADL || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_IDR_N_LP || pcCU->getSlice()->getNalUnitType() == NAL_UNIT_CODED_SLICE_CRA); 1023 1024 if(bDepthMapDetect && !bIntraSliceDetect && !rapPic && pcCU->getPic()->getReduceBitsFlag() && sps->getUseQTL() && sps->getUsePC()) 1025 { 1026 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 1027 UInt uiCUIdx = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU(); 1028 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); 1029 bCodeSplitFlag = (pcTextureCU->getDepth(uiCUIdx) > uiDepth); 1030 } 1031 1032 if(!bCodeSplitFlag) 1033 { 1034 assert(uiCurrSplitFlag == 0); 1035 return; 1036 } 1037 #endif 1038 991 1039 m_pcBinIf->encodeBin( uiCurrSplitFlag, m_cCUSplitFlagSCModel.get( 0, 0, uiCtx ) ); 992 1040 #if !H_MV_ENC_DEC_TRAC -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncSlice.cpp
r537 r539 1614 1614 } 1615 1615 1616 #if H_3D_QTLPC 1617 rpcPic->setReduceBitsFlag(true); 1618 #endif 1619 1616 1620 TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr ); 1617 1621 if ( pcSlice->getSPS()->getUseSAO() && (pcSlice->getSaoEnabledFlag()||pcSlice->getSaoEnabledFlagChroma()) ) … … 1723 1727 } 1724 1728 } 1729 #if H_3D_QTLPC 1730 rpcPic->setReduceBitsFlag(false); 1731 #endif 1725 1732 } 1726 1733 if( depSliceSegmentsEnabled ) -
branches/HTM-DEV-0.3-dev2/source/Lib/TLibEncoder/TEncTop.cpp
r537 r539 588 588 m_cSPS.setUseAMP ( m_useAMP ); 589 589 590 #if H_3D_QTLPC 591 m_cSPS.setUseQTL( m_bUseQTL ); 592 m_cSPS.setUsePC ( m_bUsePC ); 593 #endif 594 590 595 for (i = g_uiMaxCUDepth-g_uiAddCUDepth; i < g_uiMaxCUDepth; i++ ) 591 596 {
Note: See TracChangeset for help on using the changeset viewer.