Changeset 936 in 3DVCSoftware for branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
- Timestamp:
- 22 Apr 2014, 16:03:08 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.2-dev0/source/Lib/TLibCommon/TComPrediction.cpp
r935 r936 643 643 644 644 // start mapping process 645 #if !MTK_DBBP_AMP_REM_H0072 645 646 Bool bAMPAvail = uiSize > 8; 646 647 Int matchedPartSum[6][2] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}}; // counter for each part size and boolean option 647 648 PartSize virtualPartSizes[6] = { SIZE_Nx2N, SIZE_2NxN, SIZE_2NxnU, SIZE_2NxnD, SIZE_nLx2N, SIZE_nRx2N }; 649 #else 650 Int matchedPartSum[2][2] = {{0,0},{0,0}}; // counter for each part size and boolean option 651 PartSize virtualPartSizes[2] = { SIZE_Nx2N, SIZE_2NxN}; 652 #endif 648 653 649 654 UInt uiHalfSize = uiSize>>1; 655 #if !MTK_DBBP_AMP_REM_H0072 650 656 UInt uiQuarterSize = uiSize>>2; 657 #endif 651 658 652 659 for (Int y=0; y<uiSize; y+=iSubSample) … … 681 688 } 682 689 690 #if !MTK_DBBP_AMP_REM_H0072 683 691 if( bAMPAvail ) 684 692 { … … 723 731 } 724 732 } 733 #endif 725 734 } 726 735 … … 732 741 733 742 Int iMaxMatchSum = 0; 734 for(Int p=0; p<6; p++) // loop over partition sizes 743 #if !MTK_DBBP_AMP_REM_H0072 744 for(Int p=0; p<6; p++) // loop over partition 745 #else 746 for(Int p=0; p<2; p++) // loop over partition 747 #endif 735 748 { 736 749 for( Int b=0; b<=1; b++ ) // loop over boolean options … … 842 855 843 856 UInt uiMaskStride= MAX_CU_SIZE; 857 #if SEC_DBBP_FILTERING_H0104 858 Pel filSrc = 0; 859 Pel* tmpTar = 0; 860 tmpTar = (Pel *)xMalloc(Pel, uiWidth*uiHeight); 861 #endif 844 862 845 863 // backup pointer … … 855 873 856 874 // filtering 875 #if SEC_DBBP_FILTERING_H0104 876 tmpTar[y*uiWidth+x] = piSrc[ucSegment][x]; 877 #else 857 878 Bool t = (y==0)?pMaskStart[(y+1)*uiMaskStride+x]:pMaskStart[(y-1)*uiMaskStride+x]; 858 879 Bool l = (x==0)?pMaskStart[y*uiMaskStride+x+1]:pMaskStart[y*uiMaskStride+x-1]; … … 862 883 Bool bBlend = !((t&&l&&b&&r) || (!t&&!l&&!b&&!r)); 863 884 piDst[x] = bBlend?((piSrc[0][x]+piSrc[1][x]+1)>>1):piSrc[ucSegment][x]; 885 #endif 864 886 } 865 887 866 888 piSrc[0] += uiSrcStride; 867 889 piSrc[1] += uiSrcStride; 890 #if !SEC_DBBP_FILTERING_H0104 868 891 piDst += uiDstStride; 892 #endif 869 893 pMask += uiMaskStride; 870 894 } 895 896 #if SEC_DBBP_FILTERING_H0104 897 for (Int y=0; y<uiHeight; y++) 898 { 899 for (Int x=0; x<uiWidth; x++) 900 { 901 Bool t = (y==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y-1)*uiMaskStride+x]; 902 Bool l = (x==0)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x-1]; 903 Bool b = (y==uiHeight-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[(y+1)*uiMaskStride+x]; 904 Bool r = (x==uiWidth-1)?pMaskStart[y*uiMaskStride+x]:pMaskStart[y*uiMaskStride+x+1]; 905 Bool c =pMaskStart[y*uiMaskStride+x]; 906 907 Pel left, right, top, bottom; 908 left = (x==0) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x-1]; 909 right = (x==uiWidth-1) ? tmpTar[y*uiWidth+x] : tmpTar[y*uiWidth+x+1]; 910 top = (y==0) ? tmpTar[y*uiWidth+x] : tmpTar[(y-1)*uiWidth+x]; 911 bottom = (y==uiHeight-1) ? tmpTar[y*uiWidth+x] : tmpTar[(y+1)*uiWidth+x]; 912 913 if(!((l&&r&&c) || (!l&&!r&&!c))) 914 { 915 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( left + (tmpTar[y*uiWidth+x] << 1) + right ) >> 2 )); 916 } 917 else 918 { 919 filSrc = tmpTar[y*uiWidth+x]; 920 } 921 922 if(!((t&&b&&c) || (!t&&!b&&!c))) 923 { 924 filSrc = Clip3( Pel( 0 ), Pel( 255 ), Pel(( top + (filSrc << 1) + bottom ) >> 2 )); 925 } 926 piDst[x] = filSrc; 927 } 928 piDst += uiDstStride; 929 } 930 if ( tmpTar ) { xFree(tmpTar); tmpTar = NULL; } 931 #endif 871 932 872 933 // now combine chroma … … 879 940 UInt uiWidthC = uiWidth >> 1; 880 941 UInt uiHeightC = uiHeight >> 1; 942 #if SEC_DBBP_FILTERING_H0104 943 Pel filSrcU = 0, filSrcV = 0; 944 Pel* tmpTarU = 0, *tmpTarV = 0; 945 tmpTarU = (Pel *)xMalloc(Pel, uiWidthC*uiHeightC); 946 tmpTarV = (Pel *)xMalloc(Pel, uiWidthC*uiHeightC); 947 #endif 881 948 pMask = pMaskStart; 882 949 … … 889 956 890 957 // filtering 958 #if SEC_DBBP_FILTERING_H0104 959 tmpTarU[y*uiWidthC+x] = piSrcU[ucSegment][x]; 960 tmpTarV[y*uiWidthC+x] = piSrcV[ucSegment][x]; 961 #else 891 962 Bool t = (y==0)?pMaskStart[(y+1)*2*uiMaskStride+x*2]:pMaskStart[(y-1)*2*uiMaskStride+x*2]; 892 963 Bool l = (x==0)?pMaskStart[y*2*uiMaskStride+(x+1)*2]:pMaskStart[y*2*uiMaskStride+(x-1)*2]; … … 898 969 piDstU[x] = bBlend?((piSrcU[0][x]+piSrcU[1][x]+1)>>1):piSrcU[ucSegment][x]; 899 970 piDstV[x] = bBlend?((piSrcV[0][x]+piSrcV[1][x]+1)>>1):piSrcV[ucSegment][x]; 971 #endif 900 972 } 901 973 … … 904 976 piSrcV[0] += uiSrcStrideC; 905 977 piSrcV[1] += uiSrcStrideC; 978 #if !SEC_DBBP_FILTERING_H0104 906 979 piDstU += uiDstStrideC; 907 980 piDstV += uiDstStrideC; 981 #endif 908 982 pMask += 2*uiMaskStride; 909 983 } 984 985 #if SEC_DBBP_FILTERING_H0104 986 for (Int y=0; y<uiHeightC; y++) 987 { 988 for (Int x=0; x<uiWidthC; x++) 989 { 990 Bool t = (y==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y-1)*2*uiMaskStride+x*2]; 991 Bool l = (x==0)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x-1)*2]; 992 Bool b = (y==uiHeightC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[(y+1)*2*uiMaskStride+x*2]; 993 Bool r = (x==uiWidthC-1)?pMaskStart[y*2*uiMaskStride+x*2]:pMaskStart[y*2*uiMaskStride+(x+1)*2]; 994 Bool c =pMaskStart[y*2*uiMaskStride+x*2]; 995 996 Pel leftU, rightU, topU, bottomU; 997 leftU = (x==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x-1]; 998 rightU = (x==uiWidthC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[y*uiWidthC+x+1]; 999 topU = (y==0) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y-1)*uiWidthC+x]; 1000 bottomU = (y==uiHeightC-1) ? tmpTarU[y*uiWidthC+x] : tmpTarU[(y+1)*uiWidthC+x]; 1001 1002 Pel leftV, rightV, topV, bottomV; 1003 leftV = (x==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x-1]; 1004 rightV = (x==uiWidthC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[y*uiWidthC+x+1]; 1005 topV = (y==0) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y-1)*uiWidthC+x]; 1006 bottomV = (y==uiHeightC-1) ? tmpTarV[y*uiWidthC+x] : tmpTarV[(y+1)*uiWidthC+x]; 1007 1008 if(!((l&&r&&c) || (!l&&!r&&!c))) 1009 { 1010 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftU + (tmpTarU[y*uiWidthC+x] << 1) + rightU ) >> 2 )); 1011 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( leftV + (tmpTarV[y*uiWidthC+x] << 1) + rightV ) >> 2 )); 1012 } 1013 else 1014 { 1015 filSrcU = tmpTarU[y*uiWidthC+x]; 1016 filSrcV = tmpTarV[y*uiWidthC+x]; 1017 } 1018 1019 if(!((t&&b&&c) || (!t&&!b&&!c))) 1020 { 1021 filSrcU = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topU + (filSrcU << 1) + bottomU ) >> 2 )); 1022 filSrcV = Clip3( Pel( 0 ), Pel( 255 ), Pel(( topV + (filSrcV << 1) + bottomV ) >> 2 )); 1023 } 1024 1025 piDstU[x] = filSrcU; 1026 piDstV[x] = filSrcV; 1027 } 1028 piDstU += uiDstStrideC; 1029 piDstV += uiDstStrideC; 1030 } 1031 if ( tmpTarU ) { xFree(tmpTarU); tmpTarU = NULL; } 1032 if ( tmpTarV ) { xFree(tmpTarV); tmpTarV = NULL; } 1033 #endif 910 1034 } 911 1035 #endif
Note: See TracChangeset for help on using the changeset viewer.