Changeset 596 in 3DVCSoftware
- Timestamp:
- 28 Aug 2013, 04:55:26 (11 years ago)
- Location:
- branches/HTM-DEV-2.0-dev1-Fix/source/Lib
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibCommon/TComDataCU.cpp
r593 r596 943 943 #if H_3D_VSP 944 944 m_piVSPFlag[ui]=pcCU->m_piVSPFlag[uiPartOffset+ui]; 945 #if MTK_VSP_FIX_ALIGN_WD_E0172 946 m_pDvInfo[ ui ] = pcCU->m_pDvInfo[uiPartOffset+ui]; 947 #endif 945 948 #if MTK_VSP_FIX_E0172 946 949 m_piVSPDir[ui]=pcCU->m_piVSPDir[uiPartOffset+ui]; … … 1238 1241 #if H_3D_VSP 1239 1242 m_piVSPFlag = pcCU->getVSPFlag() + uiAbsPartIdx; 1243 #if MTK_VSP_FIX_ALIGN_WD_E0172 1244 m_pDvInfo = pcCU->getDvInfo() + uiAbsPartIdx; 1245 #endif 1240 1246 #if MTK_VSP_FIX_E0172 1241 1247 m_piVSPDir = pcCU->getVSPDir () + uiAbsPartIdx; … … 1288 1294 #if H_3D_VSP 1289 1295 memcpy( m_piVSPFlag + uiOffset, pcCU->getVSPFlag(), sizeof( Char ) * uiNumPartition ); 1296 #if MTK_VSP_FIX_ALIGN_WD_E0172 1297 memcpy( m_pDvInfo + uiOffset, pcCU->getDvInfo(), sizeof( *m_pDvInfo ) * uiNumPartition ); 1298 #endif 1290 1299 #if MTK_VSP_FIX_E0172 1291 1300 memcpy( m_piVSPDir + uiOffset, pcCU->getVSPDir (), sizeInChar ); … … 1411 1420 #if H_3D_VSP 1412 1421 memcpy( rpcCU->getVSPFlag() + m_uiAbsIdxInLCU, m_piVSPFlag, sizeof( Char ) * m_uiNumPartition ); 1422 #if MTK_VSP_FIX_ALIGN_WD_E0172 1423 memcpy( rpcCU->getDvInfo() + m_uiAbsIdxInLCU, m_pDvInfo, sizeof( *m_pDvInfo ) * m_uiNumPartition ); 1424 #endif 1413 1425 #if MTK_VSP_FIX_E0172 1414 1426 memcpy( rpcCU->getVSPDir () + m_uiAbsIdxInLCU, m_piVSPDir , sizeInChar ); … … 2528 2540 setSubPart<Char>( iVSPFlag, m_piVSPFlag, uiAbsPartIdx, uiDepth, uiPartIdx ); 2529 2541 } 2542 #if MTK_VSP_FIX_ALIGN_WD_E0172 2543 template<typename T> 2544 Void TComDataCU::setSubPartT( T uiParameter, T* puhBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ) 2545 { 2546 UInt uiCurrPartNumQ = (m_pcPic->getNumPartInCU() >> (2 * uiCUDepth)) >> 2; 2547 switch ( m_pePartSize[ uiCUAddr ] ) 2548 { 2549 case SIZE_2Nx2N: 2550 for (UInt ui = 0; ui < 4 * uiCurrPartNumQ; ui++) 2551 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2552 2553 break; 2554 case SIZE_2NxN: 2555 for (UInt ui = 0; ui < 2 * uiCurrPartNumQ; ui++) 2556 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2557 break; 2558 case SIZE_Nx2N: 2559 for (UInt ui = 0; ui < uiCurrPartNumQ; ui++) 2560 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2561 for (UInt ui = 0; ui < uiCurrPartNumQ; ui++) 2562 puhBaseLCU[uiCUAddr + 2 * uiCurrPartNumQ + ui] = uiParameter; 2563 break; 2564 case SIZE_NxN: 2565 for (UInt ui = 0; ui < uiCurrPartNumQ; ui++) 2566 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2567 break; 2568 case SIZE_2NxnU: 2569 if ( uiPUIdx == 0 ) 2570 { 2571 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2572 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2573 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2574 puhBaseLCU[uiCUAddr + uiCurrPartNumQ + ui] = uiParameter; 2575 2576 } 2577 else if ( uiPUIdx == 1 ) 2578 { 2579 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2580 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2581 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1) + (uiCurrPartNumQ << 1); ui++) 2582 puhBaseLCU[uiCUAddr + uiCurrPartNumQ + ui] = uiParameter; 2583 2584 } 2585 else 2586 { 2587 assert(0); 2588 } 2589 break; 2590 case SIZE_2NxnD: 2591 if ( uiPUIdx == 0 ) 2592 { 2593 for (UInt ui = 0; ui < ((uiCurrPartNumQ << 1) + (uiCurrPartNumQ >> 1)); ui++) 2594 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2595 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2596 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + uiCurrPartNumQ + ui] = uiParameter; 2597 2598 } 2599 else if ( uiPUIdx == 1 ) 2600 { 2601 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2602 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2603 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 1); ui++) 2604 puhBaseLCU[uiCUAddr + uiCurrPartNumQ + ui] = uiParameter; 2605 2606 } 2607 else 2608 { 2609 assert(0); 2610 } 2611 break; 2612 case SIZE_nLx2N: 2613 if ( uiPUIdx == 0 ) 2614 { 2615 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2616 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2617 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2618 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2619 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2620 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + ui] = uiParameter; 2621 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2622 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2623 2624 } 2625 else if ( uiPUIdx == 1 ) 2626 { 2627 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2628 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2629 for (UInt ui = 0; ui < (uiCurrPartNumQ + (uiCurrPartNumQ >> 2)); ui++) 2630 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2631 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2632 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + ui] = uiParameter; 2633 for (UInt ui = 0; ui < (uiCurrPartNumQ + (uiCurrPartNumQ >> 2)); ui++) 2634 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2635 2636 } 2637 else 2638 { 2639 assert(0); 2640 } 2641 break; 2642 case SIZE_nRx2N: 2643 if ( uiPUIdx == 0 ) 2644 { 2645 for (UInt ui = 0; ui < (uiCurrPartNumQ + (uiCurrPartNumQ >> 2)); ui++) 2646 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2647 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2648 puhBaseLCU[uiCUAddr + uiCurrPartNumQ + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2649 for (UInt ui = 0; ui < (uiCurrPartNumQ + (uiCurrPartNumQ >> 2)); ui++) 2650 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + ui] = uiParameter; 2651 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2652 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + uiCurrPartNumQ + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2653 2654 } 2655 else if ( uiPUIdx == 1 ) 2656 { 2657 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2658 puhBaseLCU[uiCUAddr + ui] = uiParameter; 2659 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2660 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2661 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2662 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + ui] = uiParameter; 2663 for (UInt ui = 0; ui < (uiCurrPartNumQ >> 2); ui++) 2664 puhBaseLCU[uiCUAddr + (uiCurrPartNumQ << 1) + (uiCurrPartNumQ >> 1) + ui] = uiParameter; 2665 2666 } 2667 else 2668 { 2669 assert(0); 2670 } 2671 break; 2672 default: 2673 assert( 0 ); 2674 } 2675 2676 } 2677 #endif 2530 2678 #if MTK_VSP_FIX_E0172 2531 2679 Void TComDataCU::setVSPDirSubParts ( Char iVSPDir, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth ) … … 3007 3155 Int iRefListIdY = 0; 3008 3156 Int i; 3157 #if MTK_VSP_FIX_ALIGN_WD_E0172 3158 Int currViewId = m_pcSlice->getViewId(); 3159 Int derivedViewId = -1; 3160 Int otherViewId = -1; 3161 #endif 3009 3162 #if MTK_VSP_FIX_E0172 3010 3163 Int currViewId = m_pcSlice->getViewId(); … … 3022 3175 refViewAvailFlag = true; 3023 3176 predFlag[iRefListIdX] = 1; 3177 #if MTK_VSP_FIX_ALIGN_WD_E0172 3178 derivedViewId = m_pcSlice->getRefPic(eRefPicList, i)->getViewId(); 3179 #endif 3024 3180 #if MTK_VSP_FIX_E0172 3025 3181 vspDir[iCount] = iRefListIdX; … … 3050 3206 refViewAvailFlag = true; 3051 3207 predFlag[iRefListIdY] = 1; 3052 #if MTK_VSP_FIX_E0172 3208 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3053 3209 #if H_3D_BVSP_FIX 3054 3210 TComMv cMv = pDInfo->m_acNBDV; … … 3205 3361 #if H_3D_VSP 3206 3362 , Int* vspFlag 3363 #if MTK_VSP_FIX_ALIGN_WD_E0172 3364 , InheritedVSPDisInfo* inheritedVSPDisInfo 3365 #endif 3207 3366 #if MTK_VSP_FIX_E0172 3208 3367 , Int* vspDir … … 3265 3424 cDisInfo.m_acNBDV = getDvInfo(uiAbsPartIdx).m_acNBDV; 3266 3425 cDisInfo.m_aVIdxCan = getDvInfo(uiAbsPartIdx).m_aVIdxCan; 3267 3426 #if MTK_VSP_FIX_ALIGN_WD_E0172 3427 for(Int i = 0; i < MRG_MAX_NUM_CANDS_MEM; i++) 3428 { 3429 inheritedVSPDisInfo[i].m_acDvInfo = cDisInfo; 3430 } 3431 #endif 3268 3432 if( m_pcSlice->getIsDepth()) 3269 3433 { … … 3449 3613 #if H_3D_VSP 3450 3614 if (pcCULeft->getVSPFlag(uiLeftPartIdx) == 1) 3451 #if MTK_VSP_FIX_E0172 3615 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3452 3616 { 3453 3617 #endif 3454 3618 vspFlag[iCount] = 1; 3619 #if MTK_VSP_FIX_ALIGN_WD_E0172 3620 xInheritVSPDisInfo(pcCULeft,uiLeftPartIdx,iCount,inheritedVSPDisInfo); 3621 } 3622 #endif 3455 3623 #if MTK_VSP_FIX_E0172 3456 3624 vspDir[iCount] = pcCULeft->getVSPDir( uiLeftPartIdx ); … … 3524 3692 #if H_3D_VSP 3525 3693 if (pcCUAbove->getVSPFlag(uiAbovePartIdx) == 1) 3526 #if MTK_VSP_FIX_E0172 3694 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3527 3695 { 3528 3696 #endif 3529 3697 vspFlag[iCount] = 1; 3698 #if MTK_VSP_FIX_ALIGN_WD_E0172 3699 xInheritVSPDisInfo(pcCUAbove,uiAbovePartIdx,iCount,inheritedVSPDisInfo); 3700 } 3701 #endif 3530 3702 #if MTK_VSP_FIX_E0172 3531 3703 vspDir[iCount] = pcCUAbove->getVSPDir( uiAbovePartIdx ); … … 3577 3749 #if H_3D_VSP 3578 3750 if (pcCUAboveRight->getVSPFlag(uiAboveRightPartIdx) == 1) 3579 #if MTK_VSP_FIX_E0172 3751 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3580 3752 { 3581 3753 #endif 3582 3754 vspFlag[iCount] = 1; 3755 #if MTK_VSP_FIX_ALIGN_WD_E0172 3756 xInheritVSPDisInfo(pcCUAboveRight,uiAboveRightPartIdx,iCount,inheritedVSPDisInfo); 3757 } 3758 #endif 3583 3759 #if MTK_VSP_FIX_E0172 3584 3760 vspDir[iCount] = pcCUAboveRight->getVSPDir( uiAboveRightPartIdx); … … 3688 3864 #if H_3D_VSP 3689 3865 if (pcCULeftBottom->getVSPFlag(uiLeftBottomPartIdx) == 1) 3690 #if MTK_VSP_FIX_E0172 3866 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3691 3867 { 3692 3868 #endif 3693 3869 vspFlag[iCount] = 1; 3870 #if MTK_VSP_FIX_ALIGN_WD_E0172 3871 xInheritVSPDisInfo(pcCULeftBottom,uiLeftBottomPartIdx,iCount,inheritedVSPDisInfo); 3872 } 3873 #endif 3694 3874 #if MTK_VSP_FIX_E0172 3695 3875 vspDir[iCount] = pcCULeftBottom->getVSPDir( uiLeftBottomPartIdx); … … 3735 3915 #if H_3D_VSP 3736 3916 if (pcCUAboveLeft->getVSPFlag(uiAboveLeftPartIdx) == 1) 3737 #if MTK_VSP_FIX_E0172 3917 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3738 3918 { 3739 3919 #endif 3740 3920 vspFlag[iCount] = 1; 3921 #if MTK_VSP_FIX_ALIGN_WD_E0172 3922 xInheritVSPDisInfo(pcCUAboveLeft,uiAboveLeftPartIdx,iCount,inheritedVSPDisInfo); 3923 } 3924 #endif 3741 3925 #if MTK_VSP_FIX_E0172 3742 3926 vspDir[iCount] = pcCUAboveLeft->getVSPDir( uiAboveLeftPartIdx); … … 3951 4135 numValidMergeCand = uiArrayAddr; 3952 4136 } 3953 4137 #if MTK_VSP_FIX_ALIGN_WD_E0172 4138 inline Void TComDataCU::xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo) 4139 { 4140 inheritedVSPDisInfo[iCount].m_acDvInfo.m_acNBDV = pcCURef->getDvInfo(uiAbsPartIdx).m_acNBDV; 4141 inheritedVSPDisInfo[iCount].m_acDvInfo.m_aVIdxCan = pcCURef->getDvInfo(uiAbsPartIdx).m_aVIdxCan; 4142 } 4143 #endif 3954 4144 /** Check whether the current PU and a spatial neighboring PU are in a same ME region. 3955 4145 * \param xN, xN location of the upper-left corner pixel of a neighboring PU … … 5575 5765 } 5576 5766 } 5767 #if MTK_VSP_FIX_ALIGN_WD_E0172 5768 Void TComDataCU::setDvInfoSubParts( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiPUIdx, UInt uiDepth ) 5769 { 5770 setSubPartT<DisInfo>( cDvInfo, m_pDvInfo, uiAbsPartIdx, uiDepth, uiPUIdx ); 5771 } 5772 #endif 5577 5773 #if MTK_NBDV_TN_FIX_E0172 5578 5774 Bool TComDataCU::xGetColDisMV( Int currCandPic, RefPicList eRefPicList, Int refidx, Int uiCUAddr, Int uiPartUnitIdx, TComMv& rcMv , Int & iTargetViewIdx, Int & iStartViewIdx ) -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibCommon/TComDataCU.h
r587 r596 435 435 template <typename T> 436 436 Void setSubPart ( T bParameter, T* pbBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ); 437 437 #if MTK_VSP_FIX_ALIGN_WD_E0172 438 template<typename T> 439 Void setSubPartT ( T uiParameter, T* puhBaseLCU, UInt uiCUAddr, UInt uiCUDepth, UInt uiPUIdx ); 440 #endif 438 441 #if AMP_MRG 439 442 Void setMergeAMP( Bool b ) { m_bIsMergeAMP = b; } … … 461 464 #if H_3D_NBDV 462 465 Void setDvInfoSubParts ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiDepth ); 466 #if MTK_VSP_FIX_ALIGN_WD_E0172 467 Void setDvInfoSubParts ( DisInfo cDvInfo, UInt uiAbsPartIdx, UInt uiPartIdx, UInt uiDepth); 468 #endif 463 469 DisInfo* getDvInfo () { return m_pDvInfo; } 464 470 DisInfo getDvInfo (UInt uiIdx) { return m_pDvInfo[uiIdx]; } … … 649 655 #if H_3D_VSP 650 656 , Int* vspFlag 657 #if MTK_VSP_FIX_ALIGN_WD_E0172 658 , InheritedVSPDisInfo* inheritedVSPDisInfo 659 #endif 651 660 #if MTK_VSP_FIX_E0172 652 661 , Int* vspDir … … 654 663 #endif 655 664 , Int& numValidMergeCand, Int mrgCandIdx = -1 ); 665 #if MTK_VSP_FIX_ALIGN_WD_E0172 666 inline Void xInheritVSPDisInfo(TComDataCU* pcCURef, UInt uiAbsPartIdx, Int iCount, InheritedVSPDisInfo* inheritedVSPDisInfo); 667 #endif 656 668 #if H_3D_VSP 657 669 Char* getVSPFlag () { return m_piVSPFlag; } -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibCommon/TComMotionInfo.h
r478 r596 76 76 Bool m_bFound; 77 77 } IDVInfo; 78 #endif 79 #if MTK_VSP_FIX_ALIGN_WD_E0172 80 typedef struct _InheritedVSPDisCand 81 { 82 DisInfo m_acDvInfo; 83 } InheritedVSPDisInfo; 78 84 #endif 79 85 // ==================================================================================================================== -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibCommon/TComPrediction.cpp
r578 r596 729 729 730 730 // Do compensation 731 #if MTK_VSP_FIX_E0172 731 #if MTK_VSP_FIX_ALIGN_WD_E0172 732 TComMv cDv = pcCU->getDvInfo(uiPartAddr).m_acNBDV; 733 #else 734 #if MTK_VSP_FIX_E0172 732 735 TComMv cDv = pcCU->getCUMvField( privateRefPicList )->getMv( uiPartAddr ); 733 736 #else 734 737 TComMv cDv = pcCU->getCUMvField( eRefPicList )->getMv( uiPartAddr ); // cDv is the disparity vector derived from the neighbors 735 738 #endif 739 #endif // end of MTK_VSP_FIX_ALIGN_WD_E0172 736 740 pcCU->clipMv(cDv); 737 741 -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibCommon/TypeDef.h
r593 r596 106 106 #if MTK_RVS_BUGFIX_E0172 107 107 #define MTK_DVMCP_FIX_E0172 1 // fix the mismatch between software and WD for DV derivation from DVMCP blocks, issue 2 in JCT3V-E0172 108 #define MTK_VSP_FIX_ALIGN_WD_E0172 1 // fix the issues related to VSP merge candidate, issue 3, 4 in JCT3V-E0172, using an implementation aligned with WD 109 #if !MTK_VSP_FIX_ALIGN_WD_E0172 108 110 #define MTK_VSP_FIX_E0172 1 // fix the issues related to VSP merge candidate, issue 3, 4 in JCT3V-E0172 111 #endif 109 112 #define MTK_DIVMC_FIX_E0172 1 // fix the issue of derivation of disparity inter-view merge candidate, issue 5 in JCT3V-E0172 110 113 #define MTK_NBDV_TN_FIX_E0172 1 // fix the issue of DV derivation from the temporal neighboring blocks, issue 7 in JCT3V-E0172 -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibDecoder/TDecCu.cpp
r566 r596 366 366 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 367 367 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 368 #if MTK_VSP_FIX_ALIGN_WD_E0172 369 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 370 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand, uiMergeIndex ); 371 #else 368 372 #if MTK_VSP_FIX_E0172 369 373 Int vspDir[MRG_MAX_NUM_CANDS_MEM]; … … 374 378 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, numValidMergeCand, uiMergeIndex ); 375 379 #endif 380 #endif// end of MTK_VSP_FIX_ALIGN_WD_E0172 376 381 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 377 382 #else 378 383 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 379 384 #endif 380 385 #if MTK_VSP_FIX_ALIGN_WD_E0172 386 if(vspFlag[uiMergeIndex]) 387 { 388 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiAbsPartIdx, 0, uiDepth); 389 } 390 #endif 381 391 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 382 392 -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibDecoder/TDecEntropy.cpp
r566 r596 243 243 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 244 244 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 245 #if MTK_VSP_FIX_ALIGN_WD_E0172 246 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 247 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand ); 248 #else 245 249 #if MTK_VSP_FIX_E0172 246 250 Int vspDir[MRG_MAX_NUM_CANDS_MEM]; … … 251 255 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, numValidMergeCand ); 252 256 #endif 257 #endif//end of MTK_VSP_FIX_ALIGN_WD_E0172 253 258 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 259 #if MTK_VSP_FIX_ALIGN_WD_E0172 260 if(vspFlag[uiMergeIndex]) 261 { 262 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth); 263 } 264 #endif 254 265 #else 255 266 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); … … 265 276 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 266 277 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 278 #if MTK_VSP_FIX_ALIGN_WD_E0172 279 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 280 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo,numValidMergeCand, uiMergeIndex ); 281 #else 267 282 #if MTK_VSP_FIX_E0172 268 283 Int vspDir[MRG_MAX_NUM_CANDS_MEM]; … … 273 288 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, numValidMergeCand, uiMergeIndex ); 274 289 #endif 290 #endif//end of MTK_VSP_FIX_ALIGN_WD_E0172 275 291 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 292 #if MTK_VSP_FIX_ALIGN_WD_E0172 293 if(vspFlag[uiMergeIndex]) 294 { 295 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeIndex].m_acDvInfo, uiSubPartIdx, uiPartIdx, uiDepth); 296 } 297 #endif 276 298 #else 277 299 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); … … 305 327 } 306 328 } 307 #if MTK_VSP_FIX_E0172 329 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 308 330 if ( (pcCU->getInterDir(uiSubPartIdx) == 3) && pcSubCU->isBipredRestriction(uiPartIdx) && (pcCU->getVSPFlag(uiSubPartIdx) == false)) 309 331 #else -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibEncoder/TEncCu.cpp
r566 r596 416 416 417 417 Bool bTrySplitDQP = true; 418 418 #if MTK_VSP_FIX_ALIGN_WD_E0172 419 DisInfo DvInfo; 420 DvInfo.bDV = false; 421 DvInfo.m_acNBDV.setZero(); 422 DvInfo.m_aVIdxCan = 0; 423 #if H_3D_NBDV_REF 424 DvInfo.m_acDoNBDV.setZero(); 425 #endif 426 #endif 419 427 static Double afCost[ MAX_CU_DEPTH ]; 420 428 static Int aiNum [ MAX_CU_DEPTH ]; … … 517 525 518 526 #if H_3D_NBDV 527 #if !MTK_VSP_FIX_ALIGN_WD_E0172 519 528 DisInfo DvInfo; 520 529 DvInfo.bDV = false; … … 524 533 DvInfo.m_acDoNBDV.setZero(); 525 534 #endif 526 535 #endif 527 536 if( rpcTempCU->getSlice()->getSliceType() != I_SLICE ) 528 537 { … … 571 580 #endif 572 581 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N ); rpcTempCU->initEstData( uiDepth, iQP );//by Competition for inter_2Nx2N 582 #if MTK_VSP_FIX_ALIGN_WD_E0172 583 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 584 #endif 573 585 } 574 586 // SKIP … … 578 590 xCheckRDCostMerge2Nx2N( rpcBestCU, rpcTempCU, &earlyDetectionSkipMode );//by Merge for inter_2Nx2N 579 591 rpcTempCU->initEstData( uiDepth, iQP ); 580 592 #if MTK_VSP_FIX_ALIGN_WD_E0172 593 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 594 #endif 581 595 // fast encoder decision for early skip 582 596 if ( m_pcEncCfg->getUseFastEnc() ) … … 599 613 #endif 600 614 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2Nx2N ); rpcTempCU->initEstData( uiDepth, iQP ); 615 #if MTK_VSP_FIX_ALIGN_WD_E0172 616 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 617 #endif 601 618 if(m_pcEncCfg->getUseCbfFastMode()) 602 619 { … … 679 696 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_NxN ); 680 697 rpcTempCU->initEstData( uiDepth, iQP ); 698 #if MTK_VSP_FIX_ALIGN_WD_E0172 699 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 700 #endif 681 701 } 682 702 } … … 692 712 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_Nx2N ); 693 713 rpcTempCU->initEstData( uiDepth, iQP ); 714 #if MTK_VSP_FIX_ALIGN_WD_E0172 715 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 716 #endif 694 717 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_Nx2N ) 695 718 { … … 705 728 xCheckRDCostInter ( rpcBestCU, rpcTempCU, SIZE_2NxN ); 706 729 rpcTempCU->initEstData( uiDepth, iQP ); 730 #if MTK_VSP_FIX_ALIGN_WD_E0172 731 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 732 #endif 707 733 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxN) 708 734 { … … 737 763 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); 738 764 rpcTempCU->initEstData( uiDepth, iQP ); 765 #if MTK_VSP_FIX_ALIGN_WD_E0172 766 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 767 #endif 739 768 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU ) 740 769 { … … 750 779 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); 751 780 rpcTempCU->initEstData( uiDepth, iQP ); 781 #if MTK_VSP_FIX_ALIGN_WD_E0172 782 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 783 #endif 752 784 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD ) 753 785 { … … 767 799 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU, true ); 768 800 rpcTempCU->initEstData( uiDepth, iQP ); 801 #if MTK_VSP_FIX_ALIGN_WD_E0172 802 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 803 #endif 769 804 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnU ) 770 805 { … … 780 815 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD, true ); 781 816 rpcTempCU->initEstData( uiDepth, iQP ); 817 #if MTK_VSP_FIX_ALIGN_WD_E0172 818 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 819 #endif 782 820 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_2NxnD ) 783 821 { … … 799 837 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); 800 838 rpcTempCU->initEstData( uiDepth, iQP ); 839 #if MTK_VSP_FIX_ALIGN_WD_E0172 840 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 841 #endif 801 842 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N ) 802 843 { … … 812 853 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); 813 854 rpcTempCU->initEstData( uiDepth, iQP ); 855 #if MTK_VSP_FIX_ALIGN_WD_E0172 856 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 857 #endif 814 858 } 815 859 } … … 825 869 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N, true ); 826 870 rpcTempCU->initEstData( uiDepth, iQP ); 871 #if MTK_VSP_FIX_ALIGN_WD_E0172 872 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 873 #endif 827 874 if(m_pcEncCfg->getUseCbfFastMode() && rpcBestCU->getPartitionSize(0) == SIZE_nLx2N ) 828 875 { … … 838 885 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N, true ); 839 886 rpcTempCU->initEstData( uiDepth, iQP ); 887 #if MTK_VSP_FIX_ALIGN_WD_E0172 888 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 889 #endif 840 890 } 841 891 } … … 849 899 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnU ); 850 900 rpcTempCU->initEstData( uiDepth, iQP ); 901 #if MTK_VSP_FIX_ALIGN_WD_E0172 902 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 903 #endif 851 904 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_2NxnD ); 852 905 rpcTempCU->initEstData( uiDepth, iQP ); 906 #if MTK_VSP_FIX_ALIGN_WD_E0172 907 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 908 #endif 853 909 #if H_3D_QTLPC 854 910 } … … 858 914 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nLx2N ); 859 915 rpcTempCU->initEstData( uiDepth, iQP ); 916 #if MTK_VSP_FIX_ALIGN_WD_E0172 917 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 918 #endif 860 919 xCheckRDCostInter( rpcBestCU, rpcTempCU, SIZE_nRx2N ); 861 920 rpcTempCU->initEstData( uiDepth, iQP ); 921 #if MTK_VSP_FIX_ALIGN_WD_E0172 922 rpcTempCU->setDvInfoSubParts(DvInfo, 0, uiDepth); 923 #endif 862 924 #if H_3D_QTLPC 863 925 } … … 1615 1677 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 1616 1678 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 1679 #if MTK_VSP_FIX_ALIGN_WD_E0172 1680 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 1681 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag,inheritedVSPDisInfo, numValidMergeCand ); 1682 #else 1617 1683 #if MTK_VSP_FIX_E0172 1618 1684 Int vspDir[MRG_MAX_NUM_CANDS_MEM]; … … 1622 1688 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, vspFlag, numValidMergeCand ); 1623 1689 #endif 1690 #endif//end of MTK_VSP_FIX_ALIGN_WD_E0172 1624 1691 #else 1625 1692 rpcTempCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand ); … … 1689 1756 #if H_3D_VSP 1690 1757 rpcTempCU->setVSPFlagSubParts( vspFlag[uiMergeCand], 0, 0, uhDepth ); 1758 #if MTK_VSP_FIX_ALIGN_WD_E0172 1759 rpcTempCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, 0, 0, uhDepth ); 1760 #endif 1691 1761 #if MTK_VSP_FIX_E0172 1692 1762 rpcTempCU->setVSPDirSubParts( vspDir[uiMergeCand], 0, 0, uhDepth ); -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibEncoder/TEncSearch.cpp
r566 r596 3550 3550 #if H_3D_VSP 3551 3551 , Int* vspFlag 3552 #if MTK_VSP_FIX_ALIGN_WD_E0172 3553 , InheritedVSPDisInfo* inheritedVSPDisInfo 3554 #endif 3552 3555 #if MTK_VSP_FIX_E0172 3553 3556 , Int* vspDir … … 3572 3575 #if H_3D_VSP 3573 3576 , vspFlag 3577 #if MTK_VSP_FIX_ALIGN_WD_E0172 3578 , inheritedVSPDisInfo 3579 #endif 3574 3580 #if MTK_VSP_FIX_E0172 3575 3581 , vspDir … … 3586 3592 #if H_3D_VSP 3587 3593 , vspFlag 3594 #if MTK_VSP_FIX_ALIGN_WD_E0172 3595 , inheritedVSPDisInfo 3596 #endif 3588 3597 #if MTK_VSP_FIX_E0172 3589 3598 , vspDir … … 3593 3602 ); 3594 3603 } 3595 #if MTK_VSP_FIX_E0172 3604 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3596 3605 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours,vspFlag, numValidMergeCand ); 3597 3606 #else … … 3613 3622 #if H_3D_VSP 3614 3623 pcCU->setVSPFlagSubParts( vspFlag[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3624 #if MTK_VSP_FIX_ALIGN_WD_E0172 3625 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMergeCand].m_acDvInfo, uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); 3626 #endif 3615 3627 #if MTK_VSP_FIX_E0172 3616 3628 pcCU->setVSPDirSubParts( vspDir[uiMergeCand], uiAbsPartIdx, iPUIdx, pcCU->getDepth( uiAbsPartIdx ) ); … … 3645 3657 * \returns Void 3646 3658 */ 3647 #if MTK_VSP_FIX_E0172 3659 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3648 3660 Void TEncSearch::xRestrictBipredMergeCand( TComDataCU* pcCU, UInt puIdx, TComMvField* mvFieldNeighbours, UChar* interDirNeighbours, Int* vspFlag, Int numValidMergeCand ) 3649 3661 #else … … 3655 3667 for( UInt mergeCand = 0; mergeCand < numValidMergeCand; ++mergeCand ) 3656 3668 { 3657 #if MTK_VSP_FIX_E0172 3669 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 3658 3670 if ( (interDirNeighbours[mergeCand] == 3) && (vspFlag[mergeCand] == false) ) 3659 3671 #else … … 4277 4289 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 4278 4290 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 4291 #if MTK_VSP_FIX_ALIGN_WD_E0172 4292 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 4293 UInt uiAbsPartIdx = 0; 4294 Int iWidth = 0; 4295 Int iHeight = 0; 4296 pcCU->getPartIndexAndSize( iPartIdx, uiAbsPartIdx, iWidth, iHeight ); 4297 DisInfo OriginalDvInfo = pcCU->getDvInfo(uiAbsPartIdx); 4298 #endif 4279 4299 #if MTK_VSP_FIX_E0172 4280 4300 Int vspDir[MRG_MAX_NUM_CANDS_MEM]; … … 4286 4306 #if H_3D_VSP 4287 4307 , vspFlag 4308 #if MTK_VSP_FIX_ALIGN_WD_E0172 4309 , inheritedVSPDisInfo 4310 #endif 4288 4311 #if MTK_VSP_FIX_E0172 4289 4312 , vspDir … … 4299 4322 #if H_3D_VSP 4300 4323 pcCU->setVSPFlagSubParts( vspFlag[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4324 #if MTK_VSP_FIX_ALIGN_WD_E0172 4325 pcCU->setDvInfoSubParts(inheritedVSPDisInfo[uiMRGIndex].m_acDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4326 #endif 4301 4327 #if MTK_VSP_FIX_E0172 4302 4328 pcCU->setVSPDirSubParts( vspDir[uiMRGIndex], uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); … … 4324 4350 #if H_3D_VSP 4325 4351 pcCU->setVSPFlagSubParts ( 0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4352 #if MTK_VSP_FIX_ALIGN_WD_E0172 4353 pcCU->setDvInfoSubParts(OriginalDvInfo, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); 4354 #endif 4326 4355 #if MTK_VSP_FIX_E0172 4327 4356 pcCU->setVSPDirSubParts ( 0, uiPartAddr, iPartIdx, pcCU->getDepth( uiPartAddr ) ); -
branches/HTM-DEV-2.0-dev1-Fix/source/Lib/TLibEncoder/TEncSearch.h
r566 r596 415 415 #if H_3D_VSP 416 416 , Int* vspFlag 417 #if MTK_VSP_FIX_ALIGN_WD_E0172 418 , InheritedVSPDisInfo* inheritedVSPDisInfo 419 #endif 417 420 #if MTK_VSP_FIX_E0172 418 421 , Int* vspDir … … 426 429 TComMvField* mvFieldNeighbours, 427 430 UChar* interDirNeighbours, 428 #if MTK_VSP_FIX_E0172 431 #if MTK_VSP_FIX_E0172 || MTK_VSP_FIX_ALIGN_WD_E0172 429 432 Int* vspFlag, 430 433 #endif
Note: See TracChangeset for help on using the changeset viewer.