Changeset 181 in 3DVCSoftware for branches/HTM-4.1-dev2-Orange/source
- Timestamp:
- 14 Nov 2012, 17:23:56 (12 years ago)
- Location:
- branches/HTM-4.1-dev2-Orange/source
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-4.1-dev2-Orange/source/App/TAppEncoder/TAppEncCfg.cpp
r177 r181 370 370 #endif 371 371 372 #if OL_ DEPTHLIMIT_A0044373 (" DPL", m_bDepthPartitionLimiting , false , "Use DepthPartitionLimiting" )372 #if OL_QTLIMIT_PREDCODING_B0068 373 ("QTLPC", m_bUseQTLPC , true , "Use depth Quadtree Limitation + Predictive Coding" ) 374 374 #endif 375 375 … … 1740 1740 printf("WVSO:%d ", m_bUseWVSO ); 1741 1741 #endif 1742 1743 #if OL_DEPTHLIMIT_A0044 1744 printf("DPL:%d ", m_bDepthPartitionLimiting); 1742 #if OL_QTLIMIT_PREDCODING_B0068 1743 printf("QTLPC:%d ", m_bUseQTLPC); 1745 1744 #endif 1746 1745 #if HHI_DMM_WEDGE_INTRA || HHI_DMM_PRED_TEX -
branches/HTM-4.1-dev2-Orange/source/App/TAppEncoder/TAppEncCfg.h
r177 r181 315 315 #endif 316 316 317 #if OL_ DEPTHLIMIT_A0044318 Bool m_b DepthPartitionLimiting;317 #if OL_QTLIMIT_PREDCODING_B0068 318 Bool m_bUseQTLPC; ///< flag for using depth QuadTree Limitation + Predictive Coding 319 319 #endif 320 320 -
branches/HTM-4.1-dev2-Orange/source/App/TAppEncoder/TAppEncTop.cpp
r177 r181 367 367 m_acTEncTopList[iViewIdx]->setUseDMM ( false ); 368 368 #endif 369 #if OL_ DEPTHLIMIT_A0044370 m_acTEncTopList[iViewIdx]->setUse DPL( false );369 #if OL_QTLIMIT_PREDCODING_B0068 370 m_acTEncTopList[iViewIdx]->setUseQTLPC ( false ); 371 371 #endif 372 372 #if HHI_MPI … … 653 653 m_acTEncDepthTopList[iViewIdx]->setUseDMM ( m_bUseDMM ); 654 654 #endif 655 #if OL_ DEPTHLIMIT_A0044656 m_acTEncDepthTopList[iViewIdx]->setUse DPL (m_bDepthPartitionLimiting);655 #if OL_QTLIMIT_PREDCODING_B0068 656 m_acTEncDepthTopList[iViewIdx]->setUseQTLPC (m_bUseQTLPC); 657 657 #endif 658 658 #if HHI_MPI -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComDataCU.cpp
r177 r181 163 163 m_apSegmentDCOffset[1] = NULL; 164 164 #endif 165 #if OL_DEPTHLIMIT_A0044166 //add a variable to store the partition information167 //a 2D array in part_symbol, uidepth format168 //initialize m_partInfo to OL_END_CU169 for (Int i=0; i < OL_PART_BUF_SIZE; i++)170 {171 for (Int j=0; j < 2; j++)172 {173 m_uiPartInfo[i][j] = OL_END_CU;174 }175 }176 #endif177 165 } 178 166 … … 507 495 Void TComDataCU::initCU( TComPic* pcPic, UInt iCUAddr ) 508 496 { 509 #if OL_DEPTHLIMIT_A0044510 TComDataCU* pcCU = pcPic->getCU(iCUAddr);511 #endif512 513 497 m_pcPic = pcPic; 514 498 m_pcSlice = pcPic->getSlice(pcPic->getCurrSliceIdx()); … … 740 724 m_apcCUColocated[1] = getSlice()->getRefPic( REF_PIC_LIST_1, 0)->getCU( m_uiCUAddr ); 741 725 } 742 #if OL_DEPTHLIMIT_A0044743 setPartDumpFlag (pcCU->getPartDumpFlag());744 #endif745 726 } 746 727 … … 1096 1077 memcpy(m_uiSliceStartCU,pcCU->m_uiSliceStartCU+uiPartOffset,sizeof(UInt)*m_uiNumPartition); 1097 1078 memcpy(m_uiEntropySliceStartCU,pcCU->m_uiEntropySliceStartCU+uiPartOffset,sizeof(UInt)*m_uiNumPartition); 1098 #if OL_DEPTHLIMIT_A00441099 setPartDumpFlag (pcCU->getPartDumpFlag());1100 #endif1101 1079 } 1102 1080 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComDataCU.h
r177 r181 244 244 UInt* m_uiSliceStartCU; ///< Start CU address of current slice 245 245 UInt* m_uiEntropySliceStartCU; ///< Start CU address of current slice 246 247 #if OL_DEPTHLIMIT_A0044248 //add a variable to store the partition information249 //a 2D array in uidepth, part_symbol format250 UInt m_uiPartInfo[OL_PART_BUF_SIZE][2];251 UInt m_uiPartNum;252 Bool m_dumpPartInfo;253 #endif254 246 255 247 // ------------------------------------------------------------------------------------------------------------------- … … 624 616 625 617 Void compressMV (); 626 627 #if OL_DEPTHLIMIT_A0044628 Void resetPartInfo () {m_uiPartNum = 0;};629 Void incrementPartInfo () {m_uiPartNum ++;};630 Void updatePartInfo(UInt uiSymbol, UInt uiDepth) { m_uiPartInfo[m_uiPartNum][0] = uiSymbol; m_uiPartInfo[m_uiPartNum][1] = uiDepth;};631 UInt* readPartInfo() { return (UInt*)m_uiPartInfo;};632 Void setPartDumpFlag(Bool flag) { m_dumpPartInfo = flag; };633 Bool getPartDumpFlag() { return m_dumpPartInfo; };634 #endif635 618 636 619 // ------------------------------------------------------------------------------------------------------------------- -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComPic.cpp
r100 r181 81 81 m_aaiCodedScale = 0; 82 82 m_aaiCodedOffset = 0; 83 #if OL_QTLIMIT_PREDCODING_B0068 84 m_bReduceBitsQTL = 0; 85 #endif 83 86 } 84 87 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComPic.h
r126 r181 113 113 Int** m_aaiCodedOffset; 114 114 115 #if OL_DEPTHLIMIT_A0044 116 UInt* m_texPartInfo; 117 UInt m_uiTexPartIndex; 115 #if OL_QTLIMIT_PREDCODING_B0068 116 Bool m_bReduceBitsQTL; 118 117 #endif 119 118 … … 179 178 Int getViewOrderIdx() { return m_iViewOrderIdx; } 180 179 #endif 180 181 #if OL_QTLIMIT_PREDCODING_B0068 182 Bool getReduceBitsFlag () { return m_bReduceBitsQTL; } 183 Void setReduceBitsFlag ( Bool bFlag ) { m_bReduceBitsQTL = bFlag; } 184 #endif 185 181 186 Void setScaleOffset( Int** pS, Int** pO ) { m_aaiCodedScale = pS; m_aaiCodedOffset = pO; } 182 187 Int** getCodedScale () { return m_aaiCodedScale; } … … 249 254 #endif 250 255 251 #if OL_DEPTHLIMIT_A0044252 UInt accessPartInfo ( UInt count ) { return m_texPartInfo[m_uiTexPartIndex + count]; };253 Void incrementTexPartIndex ( ) { m_uiTexPartIndex += 2; };254 UInt getTexPartIndex () { return m_uiTexPartIndex; };255 Void setTexPartIndex ( UInt idx ) { m_uiTexPartIndex = idx; };256 Void setPartInfo ( UInt* texPart) { m_texPartInfo = texPart; };257 #endif258 259 256 Bool getValidSlice (Int sliceID) {return m_pbValidSlice[sliceID];} 260 257 Int getSliceGranularityForNDBFilter () {return m_sliceGranularityForNDBFilter;} -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComSlice.cpp
r177 r181 1523 1523 , m_bUseDMM (false) 1524 1524 #endif 1525 #if OL_ DEPTHLIMIT_A00441526 , m_b DepthPartitionLimiting(false)1525 #if OL_QTLIMIT_PREDCODING_B0068 1526 , m_bUseQTLPC (false) 1527 1527 #endif 1528 1528 { -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TComSlice.h
r177 r181 363 363 #endif 364 364 365 #if OL_ DEPTHLIMIT_A0044366 Bool m_b DepthPartitionLimiting;365 #if OL_QTLIMIT_PREDCODING_B0068 366 Bool m_bUseQTLPC; 367 367 #endif 368 368 … … 643 643 #endif 644 644 645 #if OL_ DEPTHLIMIT_A0044646 Void setUse DPL(Bool b) {m_bDepthPartitionLimiting = b;}647 Bool getUse DPL() {return m_bDepthPartitionLimiting;}645 #if OL_QTLIMIT_PREDCODING_B0068 646 Void setUseQTLPC( Bool b ) { m_bUseQTLPC = b; } 647 Bool getUseQTLPC() { return m_bUseQTLPC; } 648 648 #endif 649 649 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibCommon/TypeDef.h
r177 r181 42 42 //! \{ 43 43 44 #define OL_QTLIMIT_PREDCODING_B0068 1 //JCT3V-B0068 45 44 46 #define MTK_UNCONSTRAINED_MVI 1 //JCT3V-B0083 45 47 … … 108 110 #define LGE_ILLUCOMP_B0045_ENCSIMP 1 109 111 #endif 110 #define LGE_CLEAN_UP 1111 112 #define OL_DEPTHLIMIT_A0044 1 //JCT2-A0044113 #if OL_DEPTHLIMIT_A0044114 #define OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1 //Turn this on to not perform depth limiting for I-SLICES.115 #define OL_END_CU MAX_INT //Default for initializing the partition information buffer116 #define OL_PART_BUF_SIZE 86 //maximum number of possible partition bits in a CU117 #endif118 112 119 113 #define HHI_INTERVIEW_SKIP 1 … … 134 128 #endif 135 129 136 #define RWTH_SDC_DLT_B0036 1// JCT3V-B0036: Simplified Depth Coding + Depth Lookup Table130 #define RWTH_SDC_DLT_B0036 0 // JCT3V-B0036: Simplified Depth Coding + Depth Lookup Table 137 131 #if RWTH_SDC_DLT_B0036 138 132 #define Log2( n ) ( log((double)n) / log(2.0) ) -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibDecoder/TDecCAVLC.cpp
r177 r181 1674 1674 } 1675 1675 #endif 1676 #if OL_QTLIMIT_PREDCODING_B0068 1677 if( bIsDepth ) 1678 { 1679 READ_FLAG( uiCode, "use_qtlpc_flag" ); 1680 pcSPS->setUseQTLPC( uiCode ); 1681 } 1682 #endif 1676 1683 1677 1684 #if RWTH_SDC_DLT_B0036 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibDecoder/TDecSbac.cpp
r177 r181 753 753 754 754 UInt uiSymbol; 755 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) ); 756 DTRACE_CABAC_VL( g_nSymbolCounter++ ) 757 DTRACE_CABAC_T( "\tSplitFlag\n" ) 755 756 #if OL_QTLIMIT_PREDCODING_B0068 757 Bool bParseSplitFlag = true; 758 759 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 760 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 761 Bool bDepthMapDetect = (pcTexture != NULL); 762 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 763 764 if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC()) 765 { 766 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 767 assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth); 768 bParseSplitFlag = (pcTextureCU->getDepth(uiAbsPartIdx) > uiDepth); 769 } 770 771 if(bParseSplitFlag) 772 { 773 #endif 774 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUSplitFlagSCModel.get( 0, 0, pcCU->getCtxSplitFlag( uiAbsPartIdx, uiDepth ) ) ); 775 DTRACE_CABAC_VL( g_nSymbolCounter++ ) 776 DTRACE_CABAC_T( "\tSplitFlag\n" ) 777 #if OL_QTLIMIT_PREDCODING_B0068 778 } 779 else 780 uiSymbol = 0; 781 #endif 782 758 783 pcCU->setDepthSubParts( uiDepth + uiSymbol, uiAbsPartIdx ); 759 784 … … 771 796 UInt uiSymbol, uiMode = 0; 772 797 PartSize eMode; 798 799 #if OL_QTLIMIT_PREDCODING_B0068 800 Bool bParsePartSize = true; 801 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 802 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 803 Bool bDepthMapDetect = (pcTexture != NULL); 804 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 805 806 if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC()) 807 { 808 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 809 assert(pcTextureCU->getDepth(uiAbsPartIdx) >= uiDepth); 810 if (pcTextureCU->getDepth(uiAbsPartIdx) == uiDepth && pcTextureCU->getPartitionSize( uiAbsPartIdx ) != SIZE_NxN) 811 { 812 bParsePartSize = false; 813 eMode = SIZE_2Nx2N; 814 } 815 } 816 #endif 773 817 774 818 if ( pcCU->isIntra( uiAbsPartIdx ) ) 775 819 { 776 uiSymbol = 1; 777 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 778 { 779 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 780 } 781 eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN; 820 #if OL_QTLIMIT_PREDCODING_B0068 821 if(bParsePartSize) 822 { 823 #endif 824 uiSymbol = 1; 825 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 826 { 827 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 828 } 829 eMode = uiSymbol ? SIZE_2Nx2N : SIZE_NxN; 830 #if OL_QTLIMIT_PREDCODING_B0068 831 } 832 #endif 782 833 UInt uiTrLevel = 0; 783 834 UInt uiWidthInBit = g_aucConvertToBit[pcCU->getWidth(uiAbsPartIdx)]+2; … … 795 846 else 796 847 { 797 UInt uiMaxNumBits = 2; 798 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getSlice()->getSPS()->getDisInter4x4() && (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) ) 799 { 800 uiMaxNumBits ++; 801 } 802 for ( UInt ui = 0; ui < uiMaxNumBits; ui++ ) 803 { 804 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) ); 805 if ( uiSymbol ) 806 { 807 break; 808 } 809 uiMode++; 810 } 811 eMode = (PartSize) uiMode; 812 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 813 { 814 if (eMode == SIZE_2NxN) 815 { 848 #if OL_QTLIMIT_PREDCODING_B0068 849 if(bParsePartSize) 850 { 851 #endif 852 UInt uiMaxNumBits = 2; 853 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && !( pcCU->getSlice()->getSPS()->getDisInter4x4() && (g_uiMaxCUWidth>>uiDepth) == 8 && (g_uiMaxCUHeight>>uiDepth) == 8 ) ) 854 { 855 uiMaxNumBits ++; 856 } 857 for ( UInt ui = 0; ui < uiMaxNumBits; ui++ ) 858 { 859 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUPartSizeSCModel.get( 0, 0, ui) ); 860 if ( uiSymbol ) 861 { 862 break; 863 } 864 uiMode++; 865 } 866 eMode = (PartSize) uiMode; 867 if ( pcCU->getSlice()->getSPS()->getAMPAcc( uiDepth ) ) 868 { 869 if (eMode == SIZE_2NxN) 870 { 871 #if AMP_CTX 872 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 873 #else 874 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 0 )); 875 #endif 876 if (uiSymbol == 0) 877 { 878 #if AMP_CTX 879 m_pcTDecBinIf->decodeBinEP(uiSymbol); 880 #else 881 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 1 )); 882 #endif 883 eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD); 884 } 885 } 886 else if (eMode == SIZE_Nx2N) 887 { 816 888 #if AMP_CTX 817 889 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 818 890 #else 819 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 0 ));820 #endif 821 if (uiSymbol == 0)822 {891 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 0 )); 892 #endif 893 if (uiSymbol == 0) 894 { 823 895 #if AMP_CTX 824 m_pcTDecBinIf->decodeBinEP(uiSymbol); 825 #else 826 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUYPosiSCModel.get( 0, 0, 1 )); 827 #endif 828 eMode = (uiSymbol == 0? SIZE_2NxnU : SIZE_2NxnD); 896 m_pcTDecBinIf->decodeBinEP(uiSymbol); 897 #else 898 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 1 )); 899 #endif 900 eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N); 901 } 829 902 } 830 903 } 831 else if (eMode == SIZE_Nx2N) 832 { 833 #if AMP_CTX 834 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUAMPSCModel.get( 0, 0, 0 )); 835 #else 836 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 0 )); 837 #endif 838 if (uiSymbol == 0) 839 { 840 #if AMP_CTX 841 m_pcTDecBinIf->decodeBinEP(uiSymbol); 842 #else 843 m_pcTDecBinIf->decodeBin(uiSymbol, m_cCUXPosiSCModel.get( 0, 0, 1 )); 844 #endif 845 eMode = (uiSymbol == 0? SIZE_nLx2N : SIZE_nRx2N); 846 } 847 } 848 } 904 #if OL_QTLIMIT_PREDCODING_B0068 905 } 906 #endif 849 907 } 850 908 pcCU->setPartSizeSubParts( eMode, uiAbsPartIdx, uiDepth ); -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncCavlc.cpp
r177 r181 644 644 } 645 645 #endif 646 647 #if OL_QTLIMIT_PREDCODING_B0068 648 if( bIsDepth ) 649 { 650 WRITE_FLAG( pcSPS->getUseQTLPC() ? 1 : 0, "use_qtlpc_flag"); 651 } 652 #endif 646 653 647 654 #if RWTH_SDC_DLT_B0036 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncCfg.h
r177 r181 328 328 #endif 329 329 330 #if OL_ DEPTHLIMIT_A0044331 Bool m_b DepthPartitionLimiting;330 #if OL_QTLIMIT_PREDCODING_B0068 331 Bool m_bUseQTLPC; 332 332 #endif 333 333 … … 838 838 Bool getUseDMM() { return m_bUseDMM; } 839 839 #endif 840 841 #if OL_QTLIMIT_PREDCODING_B0068 842 Void setUseQTLPC( Bool b ) { m_bUseQTLPC = b; } 843 Bool getUseQTLPC() { return m_bUseQTLPC; } 844 #endif 840 845 841 846 #if RWTH_SDC_DLT_B0036 842 847 Bool getUseDLT() { return m_bUseDLT; } 843 848 Bool getUseSDC() { return m_bUseSDC; } 844 #endif845 846 #if OL_DEPTHLIMIT_A0044847 Void setUseDPL(Bool b) {m_bDepthPartitionLimiting = b; }848 Bool getUseDPL() {return m_bDepthPartitionLimiting;}849 849 #endif 850 850 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncCu.cpp
r177 r181 451 451 TComPic* pcPic = rpcBestCU->getPic(); 452 452 453 #if OL_DEPTHLIMIT_A0044 454 TComSPS *sps = pcPic->getSlice(0)->getSPS(); 455 TComPic *pcTexture; 456 TComDataCU * pcTextureCU; 457 Bool depthMapDetect = false; 458 #if !LGE_CLEAN_UP 459 UInt uiPrevTexPartIndex = 0; 460 #endif 461 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 462 Bool bIntraSliceDetect = false; 463 #endif 464 Bool bTry2NxN = false; 465 Bool bTryNx2N = false; 466 pcTexture = rpcBestCU->getSlice()->getTexturePic(); 467 if(pcTexture != NULL) //depth map being encoded 468 { 469 depthMapDetect = true; 470 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 471 bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType()==I_SLICE); 472 #endif 473 if(uiDepth == 0) 474 { 475 pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); 476 pcTexture->setPartInfo(pcTextureCU->readPartInfo()); 477 pcTexture->setTexPartIndex(0); 478 } 479 } 480 else 481 { 482 depthMapDetect = false; 483 } 484 #endif 453 #if OL_QTLIMIT_PREDCODING_B0068 454 TComSPS *sps = pcPic->getSlice(0)->getSPS(); 455 TComPic *pcTexture = rpcBestCU->getSlice()->getTexturePic(); 456 457 Bool depthMapDetect = (pcTexture != NULL); 458 Bool bIntraSliceDetect = (rpcBestCU->getSlice()->getSliceType() == I_SLICE); 459 460 Bool bTry2NxN = true; 461 Bool bTryNx2N = true; 462 #endif 463 485 464 // get Original YUV data from picture 486 465 m_ppcOrigYuv[uiDepth]->copyFromPicYuv( pcPic->getPicYuvOrg(), rpcBestCU->getAddr(), rpcBestCU->getZorderIdxInCU() ); … … 626 605 // variables for fast encoder decision 627 606 bEarlySkip = false; 628 bTrySplit 607 bTrySplit = true; 629 608 fRD_Skip = MAX_DOUBLE; 630 609 631 610 rpcTempCU->initEstData( uiDepth, iQP ); 632 611 633 #if OL_ DEPTHLIMIT_A0044612 #if OL_QTLIMIT_PREDCODING_B0068 634 613 //logic for setting bTrySplit using the partition information that is stored of the texture colocated CU 635 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 636 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 637 #else 638 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 639 #endif 640 { 641 assert(uiDepth == pcTexture->accessPartInfo(1)); 642 if(pcTexture->accessPartInfo(0) == 1) //NxN modes 614 if(depthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC()) 615 { 616 TComDataCU* pcTextureCU = pcTexture->getCU( rpcBestCU->getAddr() ); //Corresponding texture LCU 617 UInt uiCUIdx = rpcBestCU->getZorderIdxInCU(); 618 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); //Depth cannot be more partitionned than the texture. 619 if (pcTextureCU->getDepth(uiCUIdx) > uiDepth || pcTextureCU->getPartitionSize(uiCUIdx) == SIZE_NxN) //Texture was split. 643 620 { 644 621 bTrySplit = true; 645 bTryNx2N = true; 646 bTry2NxN = true; 647 #if !LGE_CLEAN_UP 648 uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 649 #endif 650 pcTexture->incrementTexPartIndex(); 622 bTryNx2N = true; 623 bTry2NxN = true; 651 624 } 652 else if(pcTexture->accessPartInfo(0) == 0) //2Nx2N modes 653 { 654 UInt uiTexdepth; 655 UInt temp_uiTexPartIndex; 656 bTrySplit = false; 657 658 //scan ahead till next depth 659 uiTexdepth = pcTexture->accessPartInfo(1); 660 #if !LGE_CLEAN_UP 661 uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 662 #endif 663 pcTexture->incrementTexPartIndex(); 664 temp_uiTexPartIndex = pcTexture->getTexPartIndex(); //store in case to rewind 665 666 while(uiTexdepth != pcTexture->accessPartInfo(1) && uiTexdepth != 0) 667 { 668 if(pcTexture->accessPartInfo(1) < uiTexdepth) 669 { 670 break; 671 } 672 pcTexture->incrementTexPartIndex(); 673 674 if(pcTexture->accessPartInfo(1) == OL_END_CU) 675 { 676 pcTexture->setTexPartIndex(temp_uiTexPartIndex); 677 uiTexdepth++; 678 if(uiTexdepth >= g_uiMaxCUDepth) 679 { 680 break; 681 } 682 } 683 } 684 } 685 else if(pcTexture->accessPartInfo(0) == OL_END_CU) 625 else 686 626 { 687 627 bTrySplit = false; 688 bTryNx2N = false;689 bTry2NxN = false;628 bTryNx2N = false; 629 bTry2NxN = false; 690 630 } 691 else if(pcTexture->accessPartInfo(0) == 2) //2NxN case 692 { 693 bTrySplit = false; 694 bTryNx2N = false; 695 bTry2NxN = true; 696 #if !LGE_CLEAN_UP 697 uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 698 #endif 699 pcTexture->incrementTexPartIndex(); ; 700 } 701 else if(pcTexture->accessPartInfo(0) == 3) //Nx2N case 702 { 703 bTrySplit = false; 704 bTryNx2N = true; 705 bTry2NxN = false; 706 #if !LGE_CLEAN_UP 707 uiPrevTexPartIndex = pcTexture->getTexPartIndex(); 708 #endif 709 pcTexture->incrementTexPartIndex(); ; 710 } 711 } 712 #endif 713 631 } 632 #endif 714 633 715 634 // do inter modes, SKIP and 2Nx2N … … 799 718 #endif 800 719 801 #if OL_DEPTHLIMIT_A0044 802 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 803 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 804 #else 805 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 806 #endif 720 #if OL_QTLIMIT_PREDCODING_B0068 721 if(depthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC()) 807 722 { 808 723 bTrySplitDQP = bTrySplit; … … 810 725 else 811 726 { 727 #endif 812 728 if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() ) 813 729 { … … 821 737 bTrySplitDQP = bTrySplit; 822 738 } 823 } 824 #else 825 826 if( (g_uiMaxCUWidth>>uiDepth) >= rpcTempCU->getSlice()->getPPS()->getMinCuDQPSize() ) 827 { 828 if(iQP == iBaseQP) 829 { 830 bTrySplitDQP = bTrySplit; 831 } 832 } 833 else 834 { 835 bTrySplitDQP = bTrySplit; 836 } 837 #endif 739 #if OL_QTLIMIT_PREDCODING_B0068 740 } 741 #endif 742 838 743 #if LOSSLESS_CODING 839 744 if (isAddLowestQP && (iQP == lowestQP)) … … 891 796 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth && doNotBlockPu) 892 797 { 893 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 894 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 895 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 896 #else 897 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 898 #endif 798 #if OL_QTLIMIT_PREDCODING_B0068 //try InterNxN 799 if(bTrySplit) 899 800 { 900 if (bTrySplit) 901 { 902 #endif 903 #if HHI_INTER_VIEW_RESIDUAL_PRED 904 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 905 #endif 906 #if HHI_INTERVIEW_SKIP 907 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN, bFullyRenderedSec ); 908 #else 909 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN ); 910 #endif 911 rpcTempCU->initEstData( uiDepth, iQP ); 912 #if OL_DEPTHLIMIT_A0044 913 }//bTrySplit 914 }//depthMapDetect 915 else//do things normally 916 { 801 #endif 917 802 #if HHI_INTER_VIEW_RESIDUAL_PRED 918 803 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); … … 924 809 #endif 925 810 rpcTempCU->initEstData( uiDepth, iQP ); 811 #if OL_QTLIMIT_PREDCODING_B0068 926 812 } 927 813 #endif … … 931 817 932 818 { // 2NxN, Nx2N 933 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 934 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 935 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 936 #else 937 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 938 #endif 819 #if OL_QTLIMIT_PREDCODING_B0068 //try Nx2N 820 if(bTryNx2N) 939 821 { 940 if (bTryNx2N) 941 { 942 #endif 943 if(doNotBlockPu) 944 { 945 #if HHI_INTER_VIEW_RESIDUAL_PRED 946 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 947 #endif 948 #if HHI_INTERVIEW_SKIP 949 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N, bFullyRenderedSec ); 950 #else 951 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N ); 952 #endif 953 rpcTempCU->initEstData( uiDepth, iQP ); 954 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N ) 955 { 956 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 957 } 958 } 959 #if OL_DEPTHLIMIT_A0044 960 }//bTryNx2N 961 }//depthMapDetect 962 else//do things normally 963 { 822 #endif 964 823 if(doNotBlockPu) 965 824 { … … 978 837 } 979 838 } 839 #if OL_QTLIMIT_PREDCODING_B0068 980 840 } 981 841 #endif 982 842 983 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 984 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 985 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 986 #else 987 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 988 #endif 843 #if OL_QTLIMIT_PREDCODING_B0068 //try 2NxN 844 if(bTry2NxN) 989 845 { 990 if (bTry2NxN) 991 { 992 #endif 993 if(doNotBlockPu) 994 { 995 #if HHI_INTER_VIEW_RESIDUAL_PRED 996 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 997 #endif 998 #if HHI_INTERVIEW_SKIP 999 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxN, bFullyRenderedSec ); 1000 #else 1001 xCheckRDCostInter ( rpcBestCU, rpcTempCU, SIZE_2NxN ); 1002 #endif 1003 rpcTempCU->initEstData( uiDepth, iQP ); 1004 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN) 1005 { 1006 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1007 } 1008 } 1009 #if OL_DEPTHLIMIT_A0044 1010 }//bTryNx2N 1011 }//depthMapDetect 1012 else//do things normally 1013 { 846 #endif 1014 847 if(doNotBlockPu) 1015 848 { … … 1028 861 } 1029 862 } 863 #if OL_QTLIMIT_PREDCODING_B0068 1030 864 } 1031 865 #endif … … 1050 884 if ( bTestAMP_Hor ) 1051 885 { 1052 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 1053 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1054 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 1055 #else 1056 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 1057 #endif 886 #if OL_QTLIMIT_PREDCODING_B0068 //try 2NxnU & 2NxnD 887 if(bTry2NxN) 1058 888 { 1059 if (bTry2NxN) 1060 { 1061 #endif 1062 if(doNotBlockPu) 1063 { 1064 #if HHI_INTER_VIEW_RESIDUAL_PRED 1065 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1066 #endif 1067 #if HHI_INTERVIEW_SKIP 1068 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec ); 1069 #else 1070 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); 1071 #endif 1072 rpcTempCU->initEstData( uiDepth, iQP ); 1073 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU ) 1074 { 1075 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1076 } 1077 } 1078 if(doNotBlockPu) 1079 { 1080 #if HHI_INTER_VIEW_RESIDUAL_PRED 1081 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1082 #endif 1083 #if HHI_INTERVIEW_SKIP 1084 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec ); 1085 #else 1086 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); 1087 #endif 1088 rpcTempCU->initEstData( uiDepth, iQP ); 1089 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD ) 1090 { 1091 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1092 } 1093 } 1094 #if OL_DEPTHLIMIT_A0044 1095 }//bTry2NxN 1096 }//depthMapDetect 1097 else//do things normally 1098 { 889 #endif 1099 890 if(doNotBlockPu) 1100 891 { … … 1129 920 } 1130 921 } 922 #if OL_QTLIMIT_PREDCODING_B0068 1131 923 } 1132 924 #endif … … 1135 927 else if ( bTestMergeAMP_Hor ) 1136 928 { 1137 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 1138 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1139 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 1140 #else 1141 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 1142 #endif 929 #if OL_QTLIMIT_PREDCODING_B0068 //try 2NxnU & 2NxnD Merge 930 if(bTry2NxN) 1143 931 { 1144 if (bTry2NxN) 1145 { 1146 #endif 1147 if(doNotBlockPu) 1148 { 1149 #if HHI_INTER_VIEW_RESIDUAL_PRED 1150 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1151 #endif 1152 #if HHI_INTERVIEW_SKIP 1153 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, bFullyRenderedSec, true ); 1154 #else 1155 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true ); 1156 #endif 1157 rpcTempCU->initEstData( uiDepth, iQP ); 1158 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU ) 1159 { 1160 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1161 } 1162 } 1163 if(doNotBlockPu) 1164 { 1165 #if HHI_INTER_VIEW_RESIDUAL_PRED 1166 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1167 #endif 1168 #if HHI_INTERVIEW_SKIP 1169 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, bFullyRenderedSec, true ); 1170 #else 1171 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true ); 1172 #endif 1173 rpcTempCU->initEstData( uiDepth, iQP ); 1174 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD ) 1175 { 1176 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1177 } 1178 } 1179 #if OL_DEPTHLIMIT_A0044 1180 }//bTry2NxN 1181 }//depthMapDetect 1182 else//do things normally 1183 { 932 #endif 1184 933 if(doNotBlockPu) 1185 934 { … … 1214 963 } 1215 964 } 1216 965 #if OL_QTLIMIT_PREDCODING_B0068 1217 966 } 1218 967 #endif … … 1223 972 if ( bTestAMP_Ver ) 1224 973 { 1225 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 1226 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1227 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 1228 #else 1229 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 1230 #endif 974 #if OL_QTLIMIT_PREDCODING_B0068 //try nLx2N & nRx2N 975 if(bTryNx2N) 1231 976 { 1232 if (bTryNx2N) 1233 { 1234 #endif 1235 if(doNotBlockPu) 1236 { 1237 #if HHI_INTER_VIEW_RESIDUAL_PRED 1238 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1239 #endif 1240 #if HHI_INTERVIEW_SKIP 1241 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec ); 1242 #else 1243 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); 1244 #endif 1245 rpcTempCU->initEstData( uiDepth, iQP ); 1246 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N ) 1247 { 1248 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1249 } 1250 } 1251 if(doNotBlockPu) 1252 { 1253 #if HHI_INTER_VIEW_RESIDUAL_PRED 1254 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1255 #endif 1256 #if HHI_INTERVIEW_SKIP 1257 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec ); 1258 #else 1259 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); 1260 #endif 1261 rpcTempCU->initEstData( uiDepth, iQP ); 1262 } 1263 #if OL_DEPTHLIMIT_A0044 1264 }//bTryNx2N 1265 }//depthMapDetect 1266 else//do things normally 1267 { 977 #endif 1268 978 if(doNotBlockPu) 1269 979 { … … 1294 1004 rpcTempCU->initEstData( uiDepth, iQP ); 1295 1005 } 1006 #if OL_QTLIMIT_PREDCODING_B0068 1296 1007 } 1297 1008 #endif … … 1300 1011 else if ( bTestMergeAMP_Ver ) 1301 1012 { 1302 #if OL_DEPTHLIMIT_A0044 //add code here to select 2NxN or Nx2N or none 1303 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1304 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 1305 #else 1306 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 1307 #endif 1013 #if OL_QTLIMIT_PREDCODING_B0068 //try nLx2N & nRx2N (Merge) 1014 if(bTryNx2N) 1308 1015 { 1309 if (bTryNx2N) 1310 { 1311 #endif 1312 if(doNotBlockPu) 1313 { 1314 #if HHI_INTER_VIEW_RESIDUAL_PRED 1315 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1316 #endif 1317 #if HHI_INTERVIEW_SKIP 1318 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, bFullyRenderedSec, true ); 1319 #else 1320 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true ); 1321 #endif 1322 rpcTempCU->initEstData( uiDepth, iQP ); 1323 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N ) 1324 { 1325 doNotBlockPu = rpcBestCU->getQtRootCbf( 0 ) != 0; 1326 } 1327 } 1328 if(doNotBlockPu) 1329 { 1330 #if HHI_INTER_VIEW_RESIDUAL_PRED 1331 rpcTempCU->setResPredIndicator( bResPredAvailable, bResPredFlag ); 1332 #endif 1333 #if HHI_INTERVIEW_SKIP 1334 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, bFullyRenderedSec, true ); 1335 #else 1336 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true ); 1337 #endif 1338 rpcTempCU->initEstData( uiDepth, iQP ); 1339 } 1340 #if OL_DEPTHLIMIT_A0044 1341 }//bTryNx2N 1342 }//depthMapDetect 1343 else//do things normally 1344 { 1016 #endif 1345 1017 if(doNotBlockPu) 1346 1018 { … … 1371 1043 rpcTempCU->initEstData( uiDepth, iQP ); 1372 1044 } 1045 #if OL_QTLIMIT_PREDCODING_B0068 1373 1046 } 1374 1047 #endif … … 1452 1125 if( uiDepth == g_uiMaxCUDepth - g_uiAddCUDepth ) 1453 1126 { 1454 #if OL_DEPTHLIMIT_A0044 //add code here to select or deselect NxN mode for Intra 1455 #if OL_DO_NOT_LIMIT_INTRA_SLICES_PART 1456 if(depthMapDetect && !bIntraSliceDetect && sps->getUseDPL()) 1457 #else 1458 if(depthMapDetect && sps->getUseDPL()) //depth map being encoded 1459 #endif 1127 #if OL_QTLIMIT_PREDCODING_B0068 //Try IntraNxN 1128 if(bTrySplit) 1460 1129 { 1461 if (bTrySplit) 1462 { 1463 1464 #endif 1465 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 1466 { 1467 #if LGE_ILLUCOMP_B0045 1468 rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth); 1469 #endif 1470 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN ); 1471 rpcTempCU->initEstData( uiDepth, iQP ); 1472 } 1473 #if OL_DEPTHLIMIT_A0044 1474 }//bTrySplit 1475 }//depthMapDetect 1476 else 1477 { 1130 #endif 1478 1131 if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) ) 1479 1132 { 1133 #if LGE_ILLUCOMP_B0045 1134 rpcTempCU->setICFlagSubParts(false, 0, 0, uiDepth); 1135 #endif 1480 1136 xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN ); 1481 1137 rpcTempCU->initEstData( uiDepth, iQP ); 1482 1138 } 1139 #if OL_QTLIMIT_PREDCODING_B0068 1483 1140 } 1484 1141 #endif … … 2139 1796 if( pcCU->isSkipped( uiAbsPartIdx ) ) 2140 1797 { 2141 #if OL_DEPTHLIMIT_A00442142 if(pcCU->getPartDumpFlag())2143 {2144 pcCU->updatePartInfo(0,uiDepth);2145 pcCU->incrementPartInfo();2146 }2147 #endif2148 1798 m_pcEntropyCoder->encodeMergeIndex( pcCU, uiAbsPartIdx, 0 ); 2149 1799 #if LGE_ILLUCOMP_B0045 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncGOP.cpp
r120 r181 1137 1137 if (!bEntropySlice) 1138 1138 { 1139 #if OL_DEPTHLIMIT_A0044 //start dumping partition information1140 m_pcSliceEncoder->setPartDumpFlag(1);1141 #endif1142 1139 pcSlice->setTileLocationCount ( 0 ); 1143 1140 m_pcSliceEncoder->encodeSlice(pcPic, pcBitstreamRedirect, pcSubstreamsOut); // redirect is only used for CAVLC tile position info. 1144 #if OL_DEPTHLIMIT_A0044 //stop dumping partition information1145 m_pcSliceEncoder->setPartDumpFlag(0);1146 #endif1147 1141 } 1148 1142 else 1149 1143 { 1150 #if OL_DEPTHLIMIT_A0044 //start dumping partition information1151 m_pcSliceEncoder->setPartDumpFlag(1);1152 #endif1153 1144 m_pcSliceEncoder->encodeSlice(pcPic, &nalu.m_Bitstream, pcSubstreamsOut); // nalu.m_Bitstream is only used for CAVLC tile position info. 1154 #if OL_DEPTHLIMIT_A0044 //stop dumping partition information1155 m_pcSliceEncoder->setPartDumpFlag(0);1156 #endif1157 1145 } 1158 1146 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncSbac.cpp
r177 r181 618 618 { 619 619 PartSize eSize = pcCU->getPartitionSize( uiAbsPartIdx ); 620 #if OL_DEPTHLIMIT_A0044 621 UInt uiSymbol; 622 #endif 620 621 #if OL_QTLIMIT_PREDCODING_B0068 622 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 623 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 624 Bool bDepthMapDetect = (pcTexture != NULL); 625 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 626 627 if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC() && pcCU->getPic()->getReduceBitsFlag()) 628 { 629 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 630 UInt uiCUIdx = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU(); 631 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); 632 if (pcTextureCU->getDepth(uiCUIdx) == uiDepth && pcTextureCU->getPartitionSize( uiCUIdx ) != SIZE_NxN) 633 { 634 assert( eSize == SIZE_2Nx2N ); 635 return; 636 } 637 } 638 #endif 639 623 640 if ( pcCU->isIntra( uiAbsPartIdx ) ) 624 641 { … … 626 643 { 627 644 m_pcBinIf->encodeBin( eSize == SIZE_2Nx2N? 1 : 0, m_cCUPartSizeSCModel.get( 0, 0, 0 ) ); 628 #if OL_DEPTHLIMIT_A0044 629 if(pcCU->getPartDumpFlag()) 630 { 631 uiSymbol = (UInt)(eSize == SIZE_2Nx2N? 1 : 0); 632 pcCU->updatePartInfo(uiSymbol?0:1,uiDepth); //0 for 2Nx2N and 1 for NxN 633 pcCU->incrementPartInfo(); 634 } 635 #endif 636 } 637 #if OL_DEPTHLIMIT_A0044 638 if(pcCU->getPartDumpFlag() && uiDepth < g_uiMaxCUDepth - g_uiAddCUDepth && !pcCU->getSlice()->isIntra()) 639 { 640 pcCU->updatePartInfo(0,uiDepth); //0 for 2Nx2N and 1 for NxN 641 pcCU->incrementPartInfo(); 642 } 643 #endif 645 } 644 646 return; 645 647 } … … 650 652 { 651 653 m_pcBinIf->encodeBin( 1, m_cCUPartSizeSCModel.get( 0, 0, 0) ); 652 #if OL_DEPTHLIMIT_A0044653 if(pcCU->getPartDumpFlag())654 {655 pcCU->updatePartInfo(0,uiDepth); //0 for 2Nx2N656 pcCU->incrementPartInfo();657 }658 #endif659 654 break; 660 655 } … … 686 681 } 687 682 } 688 #if OL_DEPTHLIMIT_A0044689 if(pcCU->getPartDumpFlag())690 {691 pcCU->updatePartInfo(2,uiDepth); //2 for 2NxN692 pcCU->incrementPartInfo();693 }694 #endif695 683 break; 696 684 } … … 726 714 } 727 715 } 728 #if OL_DEPTHLIMIT_A0044729 if(pcCU->getPartDumpFlag())730 {731 pcCU->updatePartInfo(3,uiDepth); //3 for Nx2N732 pcCU->incrementPartInfo();733 }734 #endif735 716 break; 736 717 } … … 742 723 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 1) ); 743 724 m_pcBinIf->encodeBin( 0, m_cCUPartSizeSCModel.get( 0, 0, 2) ); 744 #if OL_DEPTHLIMIT_A0044745 if(pcCU->getPartDumpFlag())746 {747 pcCU->updatePartInfo(1,uiDepth); //2Nx2N here since we disable NxN in Inter748 pcCU->incrementPartInfo();749 }750 #endif751 }752 else753 {754 #if OL_DEPTHLIMIT_A0044755 if(pcCU->getPartDumpFlag())756 {757 pcCU->updatePartInfo(0,uiDepth); //2Nx2N here since we disable NxN in Inter758 pcCU->incrementPartInfo();759 }760 #endif761 725 } 762 726 break; … … 951 915 952 916 assert( uiCtx < 3 ); 917 918 #if OL_QTLIMIT_PREDCODING_B0068 919 Bool bCodeSplitFlag = true; 920 921 TComSPS *sps = pcCU->getPic()->getSlice(0)->getSPS(); 922 TComPic *pcTexture = pcCU->getSlice()->getTexturePic(); 923 Bool bDepthMapDetect = (pcTexture != NULL); 924 Bool bIntraSliceDetect = (pcCU->getSlice()->getSliceType() == I_SLICE); 925 926 if(bDepthMapDetect && !bIntraSliceDetect && sps->getUseQTLPC() && pcCU->getPic()->getReduceBitsFlag()) 927 { 928 TComDataCU *pcTextureCU = pcTexture->getCU(pcCU->getAddr()); 929 UInt uiCUIdx = (pcCU->getZorderIdxInCU() == 0) ? uiAbsPartIdx : pcCU->getZorderIdxInCU(); 930 assert(pcTextureCU->getDepth(uiCUIdx) >= uiDepth); 931 bCodeSplitFlag = (pcTextureCU->getDepth(uiCUIdx) > uiDepth); 932 } 933 934 if(!bCodeSplitFlag) 935 { 936 assert(uiCurrSplitFlag == 0); 937 return; 938 } 939 #endif 940 953 941 m_pcBinIf->encodeBin( uiCurrSplitFlag, m_cCUSplitFlagSCModel.get( 0, 0, uiCtx ) ); 954 #if OL_DEPTHLIMIT_A0044955 if(pcCU->getPartDumpFlag())956 {957 if(pcCU->getSlice()->isIntra() || (!pcCU->getSlice()->isIntra() && uiCurrSplitFlag!=0))958 {959 pcCU->updatePartInfo(uiCurrSplitFlag,uiDepth);960 pcCU->incrementPartInfo();961 }962 }963 #endif964 942 DTRACE_CABAC_VL( g_nSymbolCounter++ ) 965 943 DTRACE_CABAC_T( "\tSplitFlag\n" ) -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncSlice.cpp
r152 r181 854 854 #endif 855 855 856 #if OL_DEPTHLIMIT_A0044 //stop dumping partition information857 m_bDumpPartInfo = 0;858 pcCU->setPartDumpFlag(m_bDumpPartInfo);859 #endif860 861 856 // inherit from TR if necessary, select substream to use. 862 857 if( m_pcCfg->getUseSBACRD() ) … … 1316 1311 } 1317 1312 1313 #if OL_QTLIMIT_PREDCODING_B0068 1314 rpcPic->setReduceBitsFlag(true); 1315 #endif 1316 1318 1317 TComDataCU*& pcCU = rpcPic->getCU( uiCUAddr ); 1319 #if OL_DEPTHLIMIT_A00441320 pcCU->setPartDumpFlag(m_bDumpPartInfo);1321 pcCU->resetPartInfo();1322 #endif1323 1318 #if !REMOVE_TILE_DEPENDENCE 1324 1319 if( (rpcPic->getPicSym()->getTileBoundaryIndependenceIdr()==0) && (rpcPic->getPicSym()->getNumColumnsMinus1()!=0) ) … … 1408 1403 } 1409 1404 #endif 1405 1406 #if OL_QTLIMIT_PREDCODING_B0068 1407 rpcPic->setReduceBitsFlag(false); 1408 #endif 1409 1410 1410 } 1411 1411 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncSlice.h
r116 r181 101 101 102 102 UInt m_uiSliceIdx; 103 #if OL_DEPTHLIMIT_A0044 //flag to signal to start dumping104 Bool m_bDumpPartInfo;105 #endif106 103 public: 107 104 TEncSlice(); … … 131 128 UInt getSliceIdx() { return m_uiSliceIdx; } 132 129 Void setSliceIdx(UInt i) { m_uiSliceIdx = i; } 133 #if OL_DEPTHLIMIT_A0044 //flag to signal to start dumping134 Void setPartDumpFlag(Bool flag) { m_bDumpPartInfo = flag;};135 #endif136 130 }; 137 131 -
branches/HTM-4.1-dev2-Orange/source/Lib/TLibEncoder/TEncTop.cpp
r177 r181 772 772 m_cSPS.setUseDMM( m_bUseDMM ); 773 773 #endif 774 #if OL_ DEPTHLIMIT_A0044775 m_cSPS.setUse DPL( m_bDepthPartitionLimiting);774 #if OL_QTLIMIT_PREDCODING_B0068 775 m_cSPS.setUseQTLPC( m_bUseQTLPC ); 776 776 #endif 777 777 #if HHI_MPI
Note: See TracChangeset for help on using the changeset viewer.