Changeset 716 in 3DVCSoftware for branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder
- Timestamp:
- 28 Nov 2013, 10:04:37 (11 years ago)
- Location:
- branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncCavlc.cpp
r712 r716 1006 1006 #if H_3D_IV_MERGE 1007 1007 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]"); 1008 #if MTK_SPIVMP_F0110 1009 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-2, "log2_sub_PU_size_minus2[i]"); 1010 #endif 1008 1011 #endif 1009 1012 #if H_3D_ARP … … 1023 1026 { 1024 1027 WRITE_FLAG( pcVPS->getIvMvPredFlag ( i ) ? 1 : 0 , "iv_mv_pred_flag[i]"); 1028 } 1029 #endif 1030 #if MTK_SPIVMP_F0110 1031 if (i!=1) 1032 { 1033 WRITE_UVLC( pcVPS->getSubPULog2Size(i)-2, "log2_sub_PU_size_minus2[i]"); 1025 1034 } 1026 1035 #endif -
branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncCfg.h
r712 r716 403 403 UInt m_uiARPStepNum; 404 404 #endif 405 #if MTK_SPIVMP_F0110 406 Int m_iSubPULog2Size; 407 #endif 405 408 #if H_3D_IC 406 409 Bool m_bUseIC; … … 505 508 UInt getARPStepNum () { return m_uiARPStepNum; } 506 509 Void setARPStepNum ( UInt u ) { m_uiARPStepNum = u; } 510 #endif 511 #if MTK_SPIVMP_F0110 512 Int getSubPULog2Size () { return m_iSubPULog2Size;} 513 Void setSubPULog2Size (Int u) { m_iSubPULog2Size = u; } 507 514 #endif 508 515 -
branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncCu.cpp
r712 r716 1868 1868 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 1869 1869 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 1870 #if MTK_SPIVMP_F0110 1871 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 1872 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 1873 TComMvField* pcMvFieldSP; 1874 UChar* puhInterDirSP; 1875 pcMvFieldSP = new TComMvField[rpcTempCU->getPic()->getPicSym()->getNumPartition()*2]; 1876 puhInterDirSP = new UChar[rpcTempCU->getPic()->getPicSym()->getNumPartition()]; 1877 #endif 1870 1878 #if ETRIKHU_MERGE_REUSE_F0093 1871 1879 rpcTempCU->initAvailableFlags(); 1872 1880 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1873 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag,inheritedVSPDisInfo, numValidMergeCand ); 1881 rpcTempCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag,inheritedVSPDisInfo 1882 #if MTK_SPIVMP_F0110 1883 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 1884 #endif 1885 , numValidMergeCand 1886 ); 1874 1887 #else 1875 1888 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand ); … … 1910 1923 rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth ); 1911 1924 #endif 1912 rpcTempCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeCand], 0, 0, uhDepth ); // interprets depth relative to LCU level 1913 rpcTempCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], SIZE_2Nx2N, 0, 0 ); // interprets depth relative to rpcTempCU level 1914 rpcTempCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], SIZE_2Nx2N, 0, 0 ); // interprets depth relative to rpcTempCU level 1925 #if MTK_SPIVMP_F0110 1926 rpcTempCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMergeCand], 0, 0, uhDepth); 1927 if (bSPIVMPFlag[uiMergeCand]) 1928 { 1929 UInt uiSPAddr; 1930 Int iWidth = rpcTempCU->getWidth(0); 1931 Int iHeight = rpcTempCU->getHeight(0); 1932 1933 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 1934 1935 rpcTempCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 1936 1937 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 1938 { 1939 rpcTempCU->getSPAbsPartIdx(0, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 1940 rpcTempCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight); 1941 rpcTempCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(rpcTempCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 1942 rpcTempCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(rpcTempCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 1943 } 1944 } 1945 else 1946 { 1947 #endif 1948 rpcTempCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeCand], 0, 0, uhDepth ); // interprets depth relative to LCU level 1949 rpcTempCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], SIZE_2Nx2N, 0, 0 ); // interprets depth relative to rpcTempCU level 1950 rpcTempCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], SIZE_2Nx2N, 0, 0 ); // interprets depth relative to rpcTempCU level 1951 #if MTK_SPIVMP_F0110 1952 } 1953 #endif 1915 1954 #if H_3D_ARP && !QC_MTK_INTERVIEW_ARP_F0123_F0108 1916 1955 if( nARPW ) … … 2054 2093 } 2055 2094 } 2095 #if MTK_SPIVMP_F0110 2096 delete pcMvFieldSP; 2097 delete puhInterDirSP; 2098 #endif 2056 2099 #if H_3D_ARP 2057 2100 } -
branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncSearch.cpp
r712 r716 3616 3616 , InheritedVSPDisInfo* inheritedVSPDisInfo 3617 3617 #endif 3618 #if MTK_SPIVMP_F0110 3619 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 3620 #endif 3618 3621 , Int& numValidMergeCand 3619 3622 ) … … 3639 3642 , inheritedVSPDisInfo 3640 3643 #endif 3644 #if MTK_SPIVMP_F0110 3645 , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP 3646 #endif 3641 3647 , numValidMergeCand 3642 3648 ); … … 3663 3669 , inheritedVSPDisInfo 3664 3670 #endif 3671 #if MTK_SPIVMP_F0110 3672 , pbSPIVMPFlag, pcMvFieldSP, puhInterDirSP 3673 #endif 3665 3674 , numValidMergeCand 3666 3675 ); … … 3691 3700 PartSize ePartSize = pcCU->getPartitionSize( 0 ); 3692 3701 3693 pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx ); 3694 pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx ); 3702 #if MTK_SPIVMP_F0110 3703 pcCU->setSPIVMPFlagSubParts( pbSPIVMPFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx )); 3704 if (pbSPIVMPFlag[uiMergeCand]) 3705 { 3706 UInt uiSPAddr; 3707 3708 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 3709 3710 pcCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 3711 3712 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 3713 { 3714 pcCU->getSPAbsPartIdx(uiAbsPartIdx, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 3715 pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 3716 pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 3717 } 3718 } 3719 else 3720 { 3721 #endif 3722 pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvField( cMvFieldNeighbours[0 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx ); 3723 pcCU->getCUMvField(REF_PIC_LIST_1)->setAllMvField( cMvFieldNeighbours[1 + 2*uiMergeCand], ePartSize, uiAbsPartIdx, 0, iPUIdx ); 3724 #if MTK_SPIVMP_F0110 3725 } 3726 #endif 3695 3727 3696 3728 #if H_3D_VSP … … 4369 4401 DisInfo OriginalDvInfo = pcCU->getDvInfo(uiAbsPartIdx); 4370 4402 #endif 4371 4403 #if MTK_SPIVMP_F0110 4404 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 4405 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 4406 TComMvField* pcMvFieldSP; 4407 UChar* puhInterDirSP; 4408 pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartition()*2]; 4409 puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartition()]; 4410 #endif 4372 4411 xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours 4373 4412 #if H_3D_VSP … … 4375 4414 , inheritedVSPDisInfo 4376 4415 #endif 4416 #if MTK_SPIVMP_F0110 4417 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 4418 #endif 4377 4419 , numValidMergeCand 4378 4420 ); … … 4386 4428 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4387 4429 #endif 4388 pcCU->setInterDirSubParts ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4389 { 4390 pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx ); 4391 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx ); 4392 } 4430 #if MTK_SPIVMP_F0110 4431 pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4432 if (bSPIVMPFlag[uiMRGIndex]!=0) 4433 { 4434 UInt uiSPAddr; 4435 4436 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 4437 4438 pcCU->getSPPara(iRoiWidth, iRoiHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 4439 4440 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 4441 { 4442 pcCU->getSPAbsPartIdx(uiPartAddr, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 4443 pcCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight); 4444 pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 4445 pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 4446 } 4447 4448 if ( pcCU->getInterDir(uiPartAddr) == 3 && pcCU->isBipredRestriction(iPartIdx) ) 4449 { 4450 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMv( TComMv(0,0), ePartSize, uiPartAddr, 0, iPartIdx); 4451 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllRefIdx( -1, ePartSize, uiPartAddr, 0, iPartIdx); 4452 pcCU->setInterDirSubParts( 1, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr )); 4453 } 4454 4455 } 4456 else 4457 { 4458 #endif 4459 pcCU->setInterDirSubParts ( uiMRGInterDir, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4460 { 4461 pcCU->getCUMvField( REF_PIC_LIST_0 )->setAllMvField( cMRGMvField[0], ePartSize, uiPartAddr, 0, iPartIdx ); 4462 pcCU->getCUMvField( REF_PIC_LIST_1 )->setAllMvField( cMRGMvField[1], ePartSize, uiPartAddr, 0, iPartIdx ); 4463 } 4464 #if MTK_SPIVMP_F0110 4465 } 4466 #endif 4393 4467 4394 4468 pcCU->getCUMvField(REF_PIC_LIST_0)->setAllMvd ( cMvZero, ePartSize, uiPartAddr, 0, iPartIdx ); … … 4402 4476 else 4403 4477 { 4478 #if MTK_SPIVMP_F0110 4479 pcCU->setSPIVMPFlagSubParts(0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4480 #endif 4404 4481 // set ME result 4405 4482 pcCU->setMergeFlagSubParts( false, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); … … 4414 4491 } 4415 4492 } 4493 #if MTK_SPIVMP_F0110 4494 delete pcMvFieldSP; 4495 delete puhInterDirSP; 4496 #endif 4416 4497 } 4417 4498 … … 5326 5407 dZeroCost = dCost + 1; 5327 5408 } 5409 #if MTK_SPIVMP_F0110 5410 if ( dZeroCost < dCost || pcCU->getQtRootCbf(0)==0) 5411 #else 5328 5412 if ( dZeroCost < dCost ) 5413 #endif 5329 5414 { 5330 5415 dCost = dZeroCost; -
branches/HTM-8.2-dev0-MediaTek/source/Lib/TLibEncoder/TEncSearch.h
r712 r716 427 427 , InheritedVSPDisInfo* inheritedVSPDisInfo 428 428 #endif 429 #if MTK_SPIVMP_F0110 430 , Bool* pbSPIVMPFlag, TComMvField* pcMvFieldSP, UChar* puhInterDirSP 431 #endif 429 432 , Int& numValidMergeCand 430 433 );
Note: See TracChangeset for help on using the changeset viewer.