History

merge common part of wels_common_basis

huili2 committed 11 years ago

Commit 403cc571 parent b66703112 files · +97 −155Browse files

Showing the changes to test/decoder/DecUT_PredMv.cpp (1 of 12 files). Show all

Unified · Split

test/decoder/DecUT_PredMv.cpp+30−20
@@ -419,7 +419,7 @@ int32_t AllocLayerData (PDqLayer pDqLayer) { · 418 unmodified lines
419 if (pDqLayer->pSliceIdc == NULL)419 if (pDqLayer->pSliceIdc == NULL)
420 return 1;420 return 1;
421 421
422 pDqLayer->pMbType = (int8_t*) WelsMallocz (pDqLayer->iMbWidth * pDqLayer->iMbHeight * sizeof (int8_t),422 pDqLayer->pMbType = (int16_t*) WelsMallocz (pDqLayer->iMbWidth * pDqLayer->iMbHeight * sizeof (int16_t),
423 "pDqLayer->pMbType");423 "pDqLayer->pMbType");
424 if (pDqLayer->pMbType == NULL)424 if (pDqLayer->pMbType == NULL)
425 return 1;425 return 1;
@@ -476,7 +476,7 @@ void InitRandomLayerSliceIdc (PDqLayer pDqLayer) { · 50 unmodified lines
476 476
477void InitRandomLayerMbType (PDqLayer pDqLayer) {477void InitRandomLayerMbType (PDqLayer pDqLayer) {
478 for (int32_t i = 0; i < pDqLayer->iMbWidth * pDqLayer->iMbHeight; ++i) {478 for (int32_t i = 0; i < pDqLayer->iMbWidth * pDqLayer->iMbHeight; ++i) {
479 pDqLayer->pMbType[i] = (rand() & 0x0f) + 1; //1 ~ 16479 pDqLayer->pMbType[i] = 1 << (rand() % 11); //2^(1 ~ 10)
480 }480 }
481}481}
482 482
@@ -515,6 +515,7 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 32 unmodified lines
515 bool bOK = true;515 bool bOK = true;
516 SDqLayer sDqLayer;516 SDqLayer sDqLayer;
517 int16_t iAncMvp[2], iWelsMvp[2];517 int16_t iAncMvp[2], iWelsMvp[2];
518 int i;
518 519
519 memset (&sDqLayer, 0, sizeof (SDqLayer));520 memset (&sDqLayer, 0, sizeof (SDqLayer));
520 //Assume the input data as 352x288 size521 //Assume the input data as 352x288 size
@@ -537,6 +538,7 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 16 unmodified lines
537#define RIGHT_TOP_MB_IDX (sDqLayer.iMbXyIndex - sDqLayer.iMbWidth + 1)538#define RIGHT_TOP_MB_IDX (sDqLayer.iMbXyIndex - sDqLayer.iMbWidth + 1)
538#define RIGHT_TOP_MB_BLK 12539#define RIGHT_TOP_MB_BLK 12
539 540
541 int32_t iTotalMbNum = sDqLayer.iMbHeight * sDqLayer.iMbWidth;
540 //CASE 1: test MB [0,0], expect mvp = (0,0)542 //CASE 1: test MB [0,0], expect mvp = (0,0)
541 sDqLayer.iMbX = 0;543 sDqLayer.iMbX = 0;
542 sDqLayer.iMbY = 0;544 sDqLayer.iMbY = 0;
@@ -560,18 +562,20 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 17 unmodified lines
560 sDqLayer.iMbY = rand() % (sDqLayer.iMbHeight - 1) + 1; //not equal to 0562 sDqLayer.iMbY = rand() % (sDqLayer.iMbHeight - 1) + 1; //not equal to 0
561 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;563 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;
562 //CASE 4.1.1: same slice_idc, assume = 0564 //CASE 4.1.1: same slice_idc, assume = 0
563 memset (sDqLayer.pSliceIdc, 0, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int32_t));565 memset (sDqLayer.pSliceIdc, 0, iTotalMbNum * sizeof (int32_t));
564 //CASE 4.1.1.1: ALL P modes566 //CASE 4.1.1.1: ALL P modes
565 memset (sDqLayer.pMbType, MB_TYPE_16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t));567 for (i = 0; i < iTotalMbNum; ++i) {
568 sDqLayer.pMbType[i] = MB_TYPE_16x16;
569 }
566 //CASE 4.1.1.1.1: ref_idx = 0, left MV = 0, top MV != 0, expect mvp = (0,0)570 //CASE 4.1.1.1.1: ref_idx = 0, left MV = 0, top MV != 0, expect mvp = (0,0)
567 memset (sDqLayer.pRefIndex[0], 0, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (int8_t));571 memset (sDqLayer.pRefIndex[0], 0, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t));
568 InitRandomLayerMvData (&sDqLayer); //reset Mv data572 InitRandomLayerMvData (&sDqLayer); //reset Mv data
569 sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1] = 0; //left_mv = 0573 sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1] = 0; //left_mv = 0
570 sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][0] = sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][1] = 1; //top_mv != 0574 sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][0] = sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][1] = 1; //top_mv != 0
571 iAncMvp[0] = iAncMvp[1] = 0; //expect anchor result to 0575 iAncMvp[0] = iAncMvp[1] = 0; //expect anchor result to 0
572 TEST_SKIP_MV_PRED;576 TEST_SKIP_MV_PRED;
573 //CASE 4.1.1.1.2: ref_idx = 0, left MV != 0, top MV = 0, expect mvp = (0,0)577 //CASE 4.1.1.1.2: ref_idx = 0, left MV != 0, top MV = 0, expect mvp = (0,0)
574 memset (sDqLayer.pRefIndex[0], 0, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (int8_t));578 memset (sDqLayer.pRefIndex[0], 0, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t));
575 InitRandomLayerMvData (&sDqLayer); //reset Mv data579 InitRandomLayerMvData (&sDqLayer); //reset Mv data
576 sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1] = 1; //left_mv != 0580 sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1] = 1; //left_mv != 0
577 sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][0] = sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][1] = 0; //top_mv = 0581 sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][0] = sDqLayer.pMv[0][ TOP_MB_IDX][ TOP_MB_BLK][1] = 0; //top_mv = 0
@@ -593,16 +597,19 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 15 unmodified lines
593 iAncMvp[1] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1];597 iAncMvp[1] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1];
594 TEST_SKIP_MV_PRED;598 TEST_SKIP_MV_PRED;
595 //CASE 4.1.1.2: All I599 //CASE 4.1.1.2: All I
596 memset (sDqLayer.pMbType, MB_TYPE_INTRA16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t));600 for (i = 0; i < iTotalMbNum; ++i) {
601 sDqLayer.pMbType[i] = MB_TYPE_INTRA16x16;
602 }
597 //CASE 4.1.1.2.1: left P, expect mvp = left mv603 //CASE 4.1.1.2.1: left P, expect mvp = left mv
598 sDqLayer.pMbType[LEFT_MB_IDX] = MB_TYPE_16x16; //left P604 sDqLayer.pMbType[LEFT_MB_IDX] = MB_TYPE_16x16; //left P
599 iAncMvp[0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0];605 iAncMvp[0] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][0];
600 iAncMvp[1] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1];606 iAncMvp[1] = sDqLayer.pMv[0][LEFT_MB_IDX][LEFT_MB_BLK][1];
601 TEST_SKIP_MV_PRED;607 TEST_SKIP_MV_PRED;
602 //CASE 4.1.1.3: only top P, top ref_idx = 0, expect mvp = top mv608 //CASE 4.1.1.3: only top P, top ref_idx = 0, expect mvp = top mv
603 memset (sDqLayer.pMbType, MB_TYPE_INTRA16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t)); // All I MB609 for (i = 0; i < iTotalMbNum; ++i) { // All I MB
604 memset (sDqLayer.pRefIndex[0], 1, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (610 sDqLayer.pMbType[i] = MB_TYPE_INTRA16x16;
605 int8_t)); // All ref_idx = 1611 }
612 memset (sDqLayer.pRefIndex[0], 1, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t)); // All ref_idx = 1
606 sDqLayer.pMbType[TOP_MB_IDX] = MB_TYPE_16x16; //top P613 sDqLayer.pMbType[TOP_MB_IDX] = MB_TYPE_16x16; //top P
607 sDqLayer.pRefIndex[0][TOP_MB_IDX][TOP_MB_BLK] = 0; //top ref_idx = 0614 sDqLayer.pRefIndex[0][TOP_MB_IDX][TOP_MB_BLK] = 0; //top ref_idx = 0
608 iAncMvp[0] = sDqLayer.pMv[0][TOP_MB_IDX][TOP_MB_BLK][0];615 iAncMvp[0] = sDqLayer.pMv[0][TOP_MB_IDX][TOP_MB_BLK][0];
@@ -612,9 +619,10 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 3 unmodified lines
612 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)619 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)
613 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)620 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)
614 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;621 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;
615 memset (sDqLayer.pMbType, MB_TYPE_INTRA16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t)); // All I MB622 for (i = 0; i < iTotalMbNum; ++i) { // All I MB
616 memset (sDqLayer.pRefIndex[0], 1, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (623 sDqLayer.pMbType[i] = MB_TYPE_INTRA16x16;
617 int8_t)); // All ref_idx = 1624 }
625 memset (sDqLayer.pRefIndex[0], 1, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t)); // All ref_idx = 1
618 sDqLayer.pMbType[LEFT_TOP_MB_IDX] = MB_TYPE_16x16; //top P626 sDqLayer.pMbType[LEFT_TOP_MB_IDX] = MB_TYPE_16x16; //top P
619 sDqLayer.pRefIndex[0][LEFT_TOP_MB_IDX][LEFT_TOP_MB_BLK] = 0; //top ref_idx = 0627 sDqLayer.pRefIndex[0][LEFT_TOP_MB_IDX][LEFT_TOP_MB_BLK] = 0; //top ref_idx = 0
620 iAncMvp[0] = iAncMvp[1] = 0; //expect anchor result to 0628 iAncMvp[0] = iAncMvp[1] = 0; //expect anchor result to 0
@@ -623,18 +631,20 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 2 unmodified lines
623 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)631 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)
624 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)632 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)
625 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;633 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;
626 memset (sDqLayer.pMbType, MB_TYPE_INTRA16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t)); // All I MB634 for (i = 0; i < iTotalMbNum; ++i) { // All I MB
627 memset (sDqLayer.pRefIndex[0], 1, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (635 sDqLayer.pMbType[i] = MB_TYPE_INTRA16x16;
628 int8_t)); // All ref_idx = 1636 }
637 memset (sDqLayer.pRefIndex[0], 1, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t)); // All ref_idx = 1
629 sDqLayer.pMbType[RIGHT_TOP_MB_IDX] = MB_TYPE_16x16; //top P638 sDqLayer.pMbType[RIGHT_TOP_MB_IDX] = MB_TYPE_16x16; //top P
630 sDqLayer.pRefIndex[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK] = 0; //top ref_idx = 0639 sDqLayer.pRefIndex[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK] = 0; //top ref_idx = 0
631 iAncMvp[0] = sDqLayer.pMv[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK][0];640 iAncMvp[0] = sDqLayer.pMv[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK][0];
632 iAncMvp[1] = sDqLayer.pMv[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK][1];641 iAncMvp[1] = sDqLayer.pMv[0][RIGHT_TOP_MB_IDX][RIGHT_TOP_MB_BLK][1];
633 TEST_SKIP_MV_PRED;642 TEST_SKIP_MV_PRED;
634 //CASE 4.1.2: different neighbor slice idc for all P and ref_idx = 0, expect mvp = 0643 //CASE 4.1.2: different neighbor slice idc for all P and ref_idx = 0, expect mvp = 0
635 memset (sDqLayer.pMbType, MB_TYPE_16x16, sDqLayer.iMbWidth * sDqLayer.iMbHeight * sizeof (int8_t)); // All I MB644 for (i = 0; i < iTotalMbNum; ++i) { // All P MB
636 memset (sDqLayer.pRefIndex[0], 0, sDqLayer.iMbWidth * sDqLayer.iMbHeight * MB_BLOCK4x4_NUM * sizeof (645 sDqLayer.pMbType[i] = MB_TYPE_16x16;
637 int8_t)); // All ref_idx = 1646 }
647 memset (sDqLayer.pRefIndex[0], 0, iTotalMbNum * MB_BLOCK4x4_NUM * sizeof (int8_t)); // All ref_idx = 1
638 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)648 sDqLayer.iMbX = (rand() % (sDqLayer.iMbWidth - 2)) + 1; //1 ~ (mb_width - 2)
639 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)649 sDqLayer.iMbY = (rand() % (sDqLayer.iMbHeight - 2)) + 1; //1 ~ (mb_height - 2)
640 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;650 sDqLayer.iMbXyIndex = sDqLayer.iMbY * sDqLayer.iMbWidth + sDqLayer.iMbX;
@@ -649,7 +659,7 @@ TEST (PredMvTest, PredSkipMvFromNeighbor) { · 8 unmodified lines
649 //add new specific tests here659 //add new specific tests here
650 660
651 //normal tests661 //normal tests
652 int32_t i = 0;662 i = 0;
653 while (i++ < kiRandTime) {663 while (i++ < kiRandTime) {
654 InitRandomLayerData (&sDqLayer); //init MV data, as it would not affect the following logic test664 InitRandomLayerData (&sDqLayer); //init MV data, as it would not affect the following logic test
655 AnchorPredPSkipMvFromNeighbor (&sDqLayer, iAncMvp);665 AnchorPredPSkipMvFromNeighbor (&sDqLayer, iAncMvp);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t