Showing the changes to test/decoder/DecUT_MotionCompensation.cpp (1 of 2 files). Show all
Unified · Split
| @@ -0,0 +1,334 @@ | |||
| 1 | #include<gtest/gtest.h> | ||
| 2 | #include "codec_def.h" | ||
| 3 | #include "mc.h" | ||
| 4 | #include "mem_align.h" | ||
| 5 | #include "cpu_core.h" | ||
| 6 | using namespace WelsDec; | ||
| 7 | #ifdef X86_ASM | ||
| 8 | #define TEST_CASE 0 | ||
| 9 | //TEST_CASE can be 0,WELS_CPU_SSE2 or WELS_CPU_MMXEXT | ||
| 10 | #else | ||
| 11 | #define TEST_CASE 0 | ||
| 12 | #endif | ||
| 13 | #define MC_BUFF_SRC_STRIDE 30 | ||
| 14 | #define MC_BUFF_DST_STRIDE 31 | ||
| 15 | #define MC_BUFF_HEIGHT 30 | ||
| 16 | |||
| 17 | /**********************MC Unit Test Anchor Code Begin******************************/ | ||
| 18 | bool bQpelNeeded[4][4] = { | ||
| 19 | { false, true, false, true }, | ||
| 20 | { true, true, true, true }, | ||
| 21 | { false, true, false, true }, | ||
| 22 | { true, true, true, true } | ||
| 23 | }; | ||
| 24 | int32_t iHpelRef0Array[4][4] = { | ||
| 25 | { 0, 1, 1, 1 }, | ||
| 26 | { 0, 1, 1, 1 }, | ||
| 27 | { 2, 3, 3, 3 }, | ||
| 28 | { 0, 1, 1, 1 } | ||
| 29 | }; | ||
| 30 | int32_t iHpelRef1Array[4][4] = { | ||
| 31 | { 0, 0, 0, 0 }, | ||
| 32 | { 2, 2, 3, 2 }, | ||
| 33 | { 2, 2, 3, 2 }, | ||
| 34 | { 2, 2, 3, 2 } | ||
| 35 | }; | ||
| 36 | #define FILTER6TAP(pPixBuff, x, iStride) ((pPixBuff)[x-2*iStride] + (pPixBuff)[x+3*iStride] - 5*((pPixBuff)[x-iStride] + (pPixBuff)[x+2*iStride]) + 20*((pPixBuff)[x] + (pPixBuff)[x+iStride])) | ||
| 37 | static inline uint8_t Clip255 (int32_t x) { | ||
| 38 | return ((x & ~255) ? (-x) >> 31 & 255 : x); | ||
| 39 | } | ||
| 40 | |||
| 41 | void MCCopyAnchor (uint8_t* pSrc, int32_t iSrcStride, uint8_t* pDst, int32_t iDstStride, int32_t iWidth, | ||
| 42 | int32_t iHeight) { | ||
| 43 | for (int32_t y = 0; y < iHeight; y++) { | ||
| 44 | memcpy (pDst, pSrc, iWidth * sizeof (uint8_t)); | ||
| 45 | pSrc += iSrcStride; | ||
| 46 | pDst += iDstStride; | ||
| 47 | } | ||
| 48 | } | ||
| 49 | |||
| 50 | void MCHalfPelFilterAnchor (uint8_t* pDstH, uint8_t* pDstV, uint8_t* pDstHV, uint8_t* pSrc, | ||
| 51 | int32_t iStride, int32_t iWidth, int32_t iHeight, int16_t* pBuf) { | ||
| 52 | for (int32_t y = 0; y < iHeight; y++) { | ||
| 53 | for (int32_t x = 0; x < iWidth; x++) | ||
| 54 | pDstH[x] = Clip255 ((FILTER6TAP (pSrc, x, 1) + 16) >> 5); | ||
| 55 | for (int32_t x = -2; x < iWidth + 3; x++) { | ||
| 56 | int32_t v = FILTER6TAP (pSrc, x, iStride); | ||
| 57 | pDstV[x] = Clip255 ((v + 16) >> 5); | ||
| 58 | pBuf[x + 2] = v; | ||
| 59 | } | ||
| 60 | for (int32_t x = 0; x < iWidth; x++) | ||
| 61 | pDstHV[x] = Clip255 ((FILTER6TAP (pBuf + 2, x, 1) + 512) >> 10); | ||
| 62 | pDstH += iStride; | ||
| 63 | pDstV += iStride; | ||
| 64 | pDstHV += iStride; | ||
| 65 | pSrc += iStride; | ||
| 66 | } | ||
| 67 | } | ||
| 68 | |||
| 69 | void PixelAvgAnchor (uint8_t* pDst, int32_t iDstStride, | ||
| 70 | uint8_t* pSrc1, int32_t iSrc1Stride, | ||
| 71 | uint8_t* pSrc2, int32_t iSrc2Stride, int32_t iWidth, int32_t iHeight) { | ||
| 72 | for (int32_t y = 0; y < iHeight; y++) { | ||
| 73 | for (int32_t x = 0; x < iWidth; x++) | ||
| 74 | pDst[x] = (pSrc1[x] + pSrc2[x] + 1) >> 1; | ||
| 75 | pDst += iDstStride; | ||
| 76 | pSrc1 += iSrc1Stride; | ||
| 77 | pSrc2 += iSrc2Stride; | ||
| 78 | } | ||
| 79 | } | ||
| 80 | |||
| 81 | void MCLumaAnchor (uint8_t* pDst, int32_t iDstStride, uint8_t* pSrc[4], int32_t iSrcStride, | ||
| 82 | int32_t iMvX, int32_t iMvY, int32_t iWidth, int32_t iHeight) { | ||
| 83 | int32_t iMvXIdx = iMvX & 3; | ||
| 84 | int32_t iMvYIdx = iMvY & 3; | ||
| 85 | int32_t iOffset = (iMvY >> 2) * iSrcStride + (iMvX >> 2); | ||
| 86 | uint8_t* pSrc1 = pSrc[iHpelRef0Array[iMvYIdx][iMvXIdx]] + iOffset + ((iMvYIdx) == 3) * iSrcStride; | ||
| 87 | |||
| 88 | if (bQpelNeeded[iMvYIdx][iMvXIdx]) { | ||
| 89 | uint8_t* pSrc2 = pSrc[iHpelRef1Array[iMvYIdx][iMvXIdx]] + iOffset + ((iMvXIdx) == 3); | ||
| 90 | PixelAvgAnchor (pDst, iDstStride, pSrc1, iSrcStride, pSrc2, iSrcStride, iWidth, iHeight); | ||
| 91 | } else { | ||
| 92 | MCCopyAnchor (pSrc1, iSrcStride, pDst, iDstStride, iWidth, iHeight); | ||
| 93 | } | ||
| 94 | } | ||
| 95 | |||
| 96 | void MCChromaAnchor (uint8_t* pDstU, uint8_t* pDstV, int32_t iDstStride, uint8_t* pSrc, int32_t iSrcStride, | ||
| 97 | int32_t iMvX, int32_t iMvY, int32_t iWidth, int32_t iHeight) { | ||
| 98 | uint8_t* pSrcTmp; | ||
| 99 | pSrc += (iMvY >> 3) * iSrcStride + (iMvX >> 3) * 2; | ||
| 100 | pSrcTmp = &pSrc[iSrcStride]; | ||
| 101 | |||
| 102 | int32_t iMvXIdx = iMvX & 0x07; | ||
| 103 | int32_t iMvYIdx = iMvY & 0x07; | ||
| 104 | int32_t iBiPara0 = (8 - iMvXIdx) * (8 - iMvYIdx); | ||
| 105 | int32_t iBiPara1 = iMvXIdx * (8 - iMvYIdx); | ||
| 106 | int32_t iBiPara2 = (8 - iMvXIdx) * iMvYIdx; | ||
| 107 | int32_t iBiPara3 = iMvXIdx * iMvYIdx; | ||
| 108 | for (int32_t y = 0; y < iHeight; y++) { | ||
| 109 | for (int32_t x = 0; x < iWidth; x++) { | ||
| 110 | pDstU[x] = (iBiPara0 * pSrc[2 * x] + iBiPara1 * pSrc[2 * x + 2] + | ||
| 111 | iBiPara2 * pSrcTmp[2 * x] + iBiPara3 * pSrcTmp[2 * x + 2] + 32) >> 6; | ||
| 112 | pDstV[x] = (iBiPara0 * pSrc[2 * x + 1] + iBiPara1 * pSrc[2 * x + 3] + | ||
| 113 | iBiPara2 * pSrcTmp[2 * x + 1] + iBiPara3 * pSrcTmp[2 * x + 3] + 32) >> 6; | ||
| 114 | } | ||
| 115 | pSrc = pSrcTmp; | ||
| 116 | pSrcTmp += iSrcStride; | ||
| 117 | pDstU += iDstStride; | ||
| 118 | pDstV += iDstStride; | ||
| 119 | } | ||
| 120 | } | ||
| 121 | |||
| 122 | /**********************MC Unit Test OPENH264 Code Begin******************************/ | ||
| 123 | #define DEF_MCCOPYTEST(iH,iW) \ | ||
| 124 | TEST(McCopy_c,iW##x##iH) \ | ||
| 125 | { \ | ||
| 126 | SMcFunc sMcFunc; \ | ||
| 127 | InitMcFunc(&sMcFunc, TEST_CASE); \ | ||
| 128 | uint8_t uSrcAnchor[MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE]; \ | ||
| 129 | uint8_t uSrcTest[MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE]; \ | ||
| 130 | uint8_t uDstAnchor[MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 131 | uint8_t uDstTest[MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 132 | srand((unsigned int)time(0)); \ | ||
| 133 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 134 | { \ | ||
| 135 | for(int32_t i=0;i<MC_BUFF_SRC_STRIDE;i++) \ | ||
| 136 | { \ | ||
| 137 | uSrcAnchor[j][i] = uSrcTest[j][i] = rand()%256; \ | ||
| 138 | } \ | ||
| 139 | } \ | ||
| 140 | memset(uDstAnchor,0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE);\ | ||
| 141 | memset(uDstTest,0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE); \ | ||
| 142 | MCCopyAnchor(uSrcAnchor[0],MC_BUFF_SRC_STRIDE,uDstAnchor[0],MC_BUFF_DST_STRIDE,iW,iH); \ | ||
| 143 | sMcFunc.pMcLumaFunc(uSrcTest[0],MC_BUFF_SRC_STRIDE,uDstTest[0],MC_BUFF_DST_STRIDE,0,0,iW,iH); \ | ||
| 144 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 145 | { \ | ||
| 146 | for(int32_t i=0;i<MC_BUFF_DST_STRIDE;i++) \ | ||
| 147 | { \ | ||
| 148 | ASSERT_EQ(uDstAnchor[j][i],uDstTest[j][i]); \ | ||
| 149 | } \ | ||
| 150 | } \ | ||
| 151 | } | ||
| 152 | |||
| 153 | DEF_MCCOPYTEST (2, 2) | ||
| 154 | DEF_MCCOPYTEST (2, 4) | ||
| 155 | DEF_MCCOPYTEST (4, 2) | ||
| 156 | DEF_MCCOPYTEST (4, 4) | ||
| 157 | DEF_MCCOPYTEST (4, 8) | ||
| 158 | DEF_MCCOPYTEST (8, 4) | ||
| 159 | DEF_MCCOPYTEST (8, 8) | ||
| 160 | DEF_MCCOPYTEST (16, 8) | ||
| 161 | DEF_MCCOPYTEST (8, 16) | ||
| 162 | DEF_MCCOPYTEST (16, 16) | ||
| 163 | |||
| 164 | #define DEF_LUMA_MCTEST_SUBCASE(a,b,iW,iH) \ | ||
| 165 | TEST(McHorVer##a##b##_c,iW##x##iH) \ | ||
| 166 | { \ | ||
| 167 | SMcFunc sMcFunc; \ | ||
| 168 | uint8_t uSrcAnchor[4][MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE]; \ | ||
| 169 | uint8_t uSrcTest[MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE]; \ | ||
| 170 | uint8_t uDstAnchor[MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 171 | uint8_t uDstTest[MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 172 | uint8_t* uSrcInputAnchor[4]; \ | ||
| 173 | int16_t pBuf[MC_BUFF_DST_STRIDE]; \ | ||
| 174 | uSrcInputAnchor[0] = &uSrcAnchor[0][4][4]; \ | ||
| 175 | uSrcInputAnchor[1] = &uSrcAnchor[1][4][4]; \ | ||
| 176 | uSrcInputAnchor[2] = &uSrcAnchor[2][4][4]; \ | ||
| 177 | uSrcInputAnchor[3] = &uSrcAnchor[3][4][4]; \ | ||
| 178 | srand((unsigned int)time(0)); \ | ||
| 179 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 180 | {\ | ||
| 181 | for(int32_t i=0;i<MC_BUFF_SRC_STRIDE;i++) \ | ||
| 182 | {\ | ||
| 183 | uSrcAnchor[0][j][i] = uSrcTest[j][i] = rand()%256; \ | ||
| 184 | }\ | ||
| 185 | }\ | ||
| 186 | InitMcFunc(&sMcFunc,TEST_CASE);\ | ||
| 187 | memset(uDstAnchor,0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE); \ | ||
| 188 | memset(uDstTest,0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE); \ | ||
| 189 | MCHalfPelFilterAnchor(uSrcInputAnchor[1],uSrcInputAnchor[2],uSrcInputAnchor[3],uSrcInputAnchor[0],MC_BUFF_SRC_STRIDE,iW+1,iH+1,pBuf+4); \ | ||
| 190 | MCLumaAnchor(uDstAnchor[0],MC_BUFF_DST_STRIDE,uSrcInputAnchor,MC_BUFF_SRC_STRIDE,a,b,iW,iH); \ | ||
| 191 | sMcFunc.pMcLumaFunc(&uSrcTest[4][4],MC_BUFF_SRC_STRIDE,uDstTest[0],MC_BUFF_DST_STRIDE,a,b,iW,iH);\ | ||
| 192 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 193 | { \ | ||
| 194 | for(int32_t i=0;i<MC_BUFF_DST_STRIDE;i++) \ | ||
| 195 | { \ | ||
| 196 | ASSERT_EQ(uDstAnchor[j][i],uDstTest[j][i]); \ | ||
| 197 | } \ | ||
| 198 | } \ | ||
| 199 | } | ||
| 200 | |||
| 201 | #define DEF_LUMA_MCTEST(a,b) \ | ||
| 202 | DEF_LUMA_MCTEST_SUBCASE(a,b,4,4) \ | ||
| 203 | DEF_LUMA_MCTEST_SUBCASE(a,b,4,8) \ | ||
| 204 | DEF_LUMA_MCTEST_SUBCASE(a,b,8,4) \ | ||
| 205 | DEF_LUMA_MCTEST_SUBCASE(a,b,8,8) \ | ||
| 206 | DEF_LUMA_MCTEST_SUBCASE(a,b,16,8) \ | ||
| 207 | DEF_LUMA_MCTEST_SUBCASE(a,b,8,16) \ | ||
| 208 | DEF_LUMA_MCTEST_SUBCASE(a,b,16,16) | ||
| 209 | |||
| 210 | DEF_LUMA_MCTEST (0, 1) | ||
| 211 | DEF_LUMA_MCTEST (0, 2) | ||
| 212 | DEF_LUMA_MCTEST (0, 3) | ||
| 213 | DEF_LUMA_MCTEST (1, 0) | ||
| 214 | DEF_LUMA_MCTEST (1, 1) | ||
| 215 | DEF_LUMA_MCTEST (1, 2) | ||
| 216 | DEF_LUMA_MCTEST (1, 3) | ||
| 217 | DEF_LUMA_MCTEST (2, 0) | ||
| 218 | DEF_LUMA_MCTEST (2, 1) | ||
| 219 | DEF_LUMA_MCTEST (2, 2) | ||
| 220 | DEF_LUMA_MCTEST (2, 3) | ||
| 221 | DEF_LUMA_MCTEST (3, 0) | ||
| 222 | DEF_LUMA_MCTEST (3, 1) | ||
| 223 | DEF_LUMA_MCTEST (3, 2) | ||
| 224 | DEF_LUMA_MCTEST (3, 3) | ||
| 225 | |||
| 226 | #define DEF_CHROMA_MCTEST_SUBCASE(a,b,iW,iH) \ | ||
| 227 | TEST(McChromaWithFragMv_##a##b##_c,iW##x##iH) \ | ||
| 228 | { \ | ||
| 229 | SMcFunc sMcFunc; \ | ||
| 230 | uint8_t uSrcAnchor[MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE*2]; \ | ||
| 231 | uint8_t uSrcTest[MC_BUFF_HEIGHT][MC_BUFF_SRC_STRIDE]; \ | ||
| 232 | uint8_t uDstAnchor[2][MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 233 | uint8_t uDstTest[MC_BUFF_HEIGHT][MC_BUFF_DST_STRIDE]; \ | ||
| 234 | srand((unsigned int)time(0)); \ | ||
| 235 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 236 | {\ | ||
| 237 | for(int32_t i=0;i<MC_BUFF_SRC_STRIDE;i++) \ | ||
| 238 | {\ | ||
| 239 | uSrcAnchor[j][i*2] = uSrcTest[j][i] = rand()%256; \ | ||
| 240 | }\ | ||
| 241 | }\ | ||
| 242 | InitMcFunc(&sMcFunc,TEST_CASE);\ | ||
| 243 | memset(uDstAnchor[0],0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE); \ | ||
| 244 | memset(uDstTest,0,sizeof(uint8_t)*MC_BUFF_HEIGHT*MC_BUFF_DST_STRIDE); \ | ||
| 245 | MCChromaAnchor(uDstAnchor[0][0],uDstAnchor[1][0],MC_BUFF_DST_STRIDE,uSrcAnchor[0],MC_BUFF_SRC_STRIDE*2,a,b,iW,iH); \ | ||
| 246 | sMcFunc.pMcChromaFunc(uSrcTest[0],MC_BUFF_SRC_STRIDE,uDstTest[0],MC_BUFF_DST_STRIDE,a,b,iW,iH);\ | ||
| 247 | for(int32_t j=0;j<MC_BUFF_HEIGHT;j++) \ | ||
| 248 | { \ | ||
| 249 | for(int32_t i=0;i<MC_BUFF_DST_STRIDE;i++) \ | ||
| 250 | { \ | ||
| 251 | ASSERT_EQ(uDstAnchor[0][j][i],uDstTest[j][i]); \ | ||
| 252 | } \ | ||
| 253 | } \ | ||
| 254 | } | ||
| 255 | |||
| 256 | #define DEF_CHROMA_MCTEST(a,b) \ | ||
| 257 | DEF_CHROMA_MCTEST_SUBCASE(a,b,2,2) \ | ||
| 258 | DEF_CHROMA_MCTEST_SUBCASE(a,b,2,4) \ | ||
| 259 | DEF_CHROMA_MCTEST_SUBCASE(a,b,4,2) \ | ||
| 260 | DEF_CHROMA_MCTEST_SUBCASE(a,b,4,4) \ | ||
| 261 | DEF_CHROMA_MCTEST_SUBCASE(a,b,4,8) \ | ||
| 262 | DEF_CHROMA_MCTEST_SUBCASE(a,b,8,4) \ | ||
| 263 | DEF_CHROMA_MCTEST_SUBCASE(a,b,8,8) | ||
| 264 | |||
| 265 | DEF_CHROMA_MCTEST (0, 1) | ||
| 266 | DEF_CHROMA_MCTEST (0, 2) | ||
| 267 | DEF_CHROMA_MCTEST (0, 3) | ||
| 268 | DEF_CHROMA_MCTEST (0, 4) | ||
| 269 | DEF_CHROMA_MCTEST (0, 5) | ||
| 270 | DEF_CHROMA_MCTEST (0, 6) | ||
| 271 | DEF_CHROMA_MCTEST (0, 7) | ||
| 272 | |||
| 273 | DEF_CHROMA_MCTEST (1, 0) | ||
| 274 | DEF_CHROMA_MCTEST (1, 1) | ||
| 275 | DEF_CHROMA_MCTEST (1, 2) | ||
| 276 | DEF_CHROMA_MCTEST (1, 3) | ||
| 277 | DEF_CHROMA_MCTEST (1, 4) | ||
| 278 | DEF_CHROMA_MCTEST (1, 5) | ||
| 279 | DEF_CHROMA_MCTEST (1, 6) | ||
| 280 | DEF_CHROMA_MCTEST (1, 7) | ||
| 281 | |||
| 282 | DEF_CHROMA_MCTEST (2, 0) | ||
| 283 | DEF_CHROMA_MCTEST (2, 1) | ||
| 284 | DEF_CHROMA_MCTEST (2, 2) | ||
| 285 | DEF_CHROMA_MCTEST (2, 3) | ||
| 286 | DEF_CHROMA_MCTEST (2, 4) | ||
| 287 | DEF_CHROMA_MCTEST (2, 5) | ||
| 288 | DEF_CHROMA_MCTEST (2, 6) | ||
| 289 | DEF_CHROMA_MCTEST (2, 7) | ||
| 290 | |||
| 291 | DEF_CHROMA_MCTEST (3, 0) | ||
| 292 | DEF_CHROMA_MCTEST (3, 1) | ||
| 293 | DEF_CHROMA_MCTEST (3, 2) | ||
| 294 | DEF_CHROMA_MCTEST (3, 3) | ||
| 295 | DEF_CHROMA_MCTEST (3, 4) | ||
| 296 | DEF_CHROMA_MCTEST (3, 5) | ||
| 297 | DEF_CHROMA_MCTEST (3, 6) | ||
| 298 | DEF_CHROMA_MCTEST (3, 7) | ||
| 299 | |||
| 300 | DEF_CHROMA_MCTEST (4, 0) | ||
| 301 | DEF_CHROMA_MCTEST (4, 1) | ||
| 302 | DEF_CHROMA_MCTEST (4, 2) | ||
| 303 | DEF_CHROMA_MCTEST (4, 3) | ||
| 304 | DEF_CHROMA_MCTEST (4, 4) | ||
| 305 | DEF_CHROMA_MCTEST (4, 5) | ||
| 306 | DEF_CHROMA_MCTEST (4, 6) | ||
| 307 | DEF_CHROMA_MCTEST (4, 7) | ||
| 308 | |||
| 309 | DEF_CHROMA_MCTEST (5, 0) | ||
| 310 | DEF_CHROMA_MCTEST (5, 1) | ||
| 311 | DEF_CHROMA_MCTEST (5, 2) | ||
| 312 | DEF_CHROMA_MCTEST (5, 3) | ||
| 313 | DEF_CHROMA_MCTEST (5, 4) | ||
| 314 | DEF_CHROMA_MCTEST (5, 5) | ||
| 315 | DEF_CHROMA_MCTEST (5, 6) | ||
| 316 | DEF_CHROMA_MCTEST (5, 7) | ||
| 317 | |||
| 318 | DEF_CHROMA_MCTEST (6, 0) | ||
| 319 | DEF_CHROMA_MCTEST (6, 1) | ||
| 320 | DEF_CHROMA_MCTEST (6, 2) | ||
| 321 | DEF_CHROMA_MCTEST (6, 3) | ||
| 322 | DEF_CHROMA_MCTEST (6, 4) | ||
| 323 | DEF_CHROMA_MCTEST (6, 5) | ||
| 324 | DEF_CHROMA_MCTEST (6, 6) | ||
| 325 | DEF_CHROMA_MCTEST (6, 7) | ||
| 326 | |||
| 327 | DEF_CHROMA_MCTEST (7, 0) | ||
| 328 | DEF_CHROMA_MCTEST (7, 1) | ||
| 329 | DEF_CHROMA_MCTEST (7, 2) | ||
| 330 | DEF_CHROMA_MCTEST (7, 3) | ||
| 331 | DEF_CHROMA_MCTEST (7, 4) | ||
| 332 | DEF_CHROMA_MCTEST (7, 5) | ||
| 333 | DEF_CHROMA_MCTEST (7, 6) | ||
| 334 | DEF_CHROMA_MCTEST (7, 7) | ||