Limit the ME scanning range to 16 pixels from the end of the buffer
The block size is chosen randomly; if the block size is 16, LineFullSearch_c will read a block with 16 pixels from kiMaxPos; thus kiMaxPos cannot be larger than height-16, otherwise the calls end up with reads out of bounds.
This commit is contained in:
@@ -174,7 +174,7 @@ TEST_F(MotionEstimateTest, TestVerticalSearch) {
|
|||||||
pMvdCostY, pMvdCostX[ iCurMeBlockQpelPixX ],
|
pMvdCostY, pMvdCostX[ iCurMeBlockQpelPixX ],
|
||||||
m_iMaxSearchBlock, m_iWidth,
|
m_iMaxSearchBlock, m_iWidth,
|
||||||
INTPEL_NEEDED_MARGIN,
|
INTPEL_NEEDED_MARGIN,
|
||||||
m_iHeight-INTPEL_NEEDED_MARGIN, true );
|
m_iHeight-INTPEL_NEEDED_MARGIN-16, true );
|
||||||
|
|
||||||
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
||||||
bFoundMatch = (sMe.sMv.iMvX==0
|
bFoundMatch = (sMe.sMv.iMvX==0
|
||||||
@@ -235,7 +235,7 @@ TEST_F(MotionEstimateTest, TestHorizontalSearch) {
|
|||||||
pMvdCostX, pMvdCostY[ iCurMeBlockQpelPixY ],
|
pMvdCostX, pMvdCostY[ iCurMeBlockQpelPixY ],
|
||||||
m_iMaxSearchBlock, m_iWidth,
|
m_iMaxSearchBlock, m_iWidth,
|
||||||
INTPEL_NEEDED_MARGIN,
|
INTPEL_NEEDED_MARGIN,
|
||||||
m_iWidth-INTPEL_NEEDED_MARGIN, false );
|
m_iWidth-INTPEL_NEEDED_MARGIN-16, false );
|
||||||
|
|
||||||
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
||||||
bFoundMatch = (sMe.sMv.iMvY==0
|
bFoundMatch = (sMe.sMv.iMvY==0
|
||||||
@@ -303,7 +303,7 @@ TEST_F(MotionEstimateTest, TestVerticalSearch_SSE41)
|
|||||||
pMvdCostY, pMvdCostX[ iCurMeBlockQpelPixX ],
|
pMvdCostY, pMvdCostX[ iCurMeBlockQpelPixX ],
|
||||||
m_iMaxSearchBlock, m_iWidth,
|
m_iMaxSearchBlock, m_iWidth,
|
||||||
INTPEL_NEEDED_MARGIN,
|
INTPEL_NEEDED_MARGIN,
|
||||||
m_iHeight-INTPEL_NEEDED_MARGIN, true );
|
m_iHeight-INTPEL_NEEDED_MARGIN-16, true );
|
||||||
|
|
||||||
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
||||||
bFoundMatch = (sMe.sMv.iMvX==0
|
bFoundMatch = (sMe.sMv.iMvX==0
|
||||||
@@ -369,7 +369,7 @@ TEST_F(MotionEstimateTest, TestHorizontalSearch_SSE41)
|
|||||||
pMvdCostX, pMvdCostY[ iCurMeBlockQpelPixY ],
|
pMvdCostX, pMvdCostY[ iCurMeBlockQpelPixY ],
|
||||||
m_iMaxSearchBlock, m_iWidth,
|
m_iMaxSearchBlock, m_iWidth,
|
||||||
INTPEL_NEEDED_MARGIN,
|
INTPEL_NEEDED_MARGIN,
|
||||||
m_iWidth-INTPEL_NEEDED_MARGIN, false );
|
m_iWidth-INTPEL_NEEDED_MARGIN-16, false );
|
||||||
|
|
||||||
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
//the last selection may be affected by MVDcost, that is when smaller MvY will be better
|
||||||
bFoundMatch = (sMe.sMv.iMvY==0
|
bFoundMatch = (sMe.sMv.iMvY==0
|
||||||
|
|||||||
Reference in New Issue
Block a user