In TMuC0.5
In TComDataCU.cpp,
function : insertCollocated, line 2703
The original purpose of the above <break;> is to avoid multiple insertion. However, from the above code, the cMv is always inserted.
The fix uses <return;> instead of<break;>.
function : clearMVPCand, lines 3311, 3332 and function : clearMVPCand_one_fourth, line 3171
The test to reduce the list of AMVP is false, when HHI_IMVP is turned on. The test should be done only for the vertical component when HHI_IMVP is turned on.
function : clearMVPCand, lines 3290, 3292, 3369
The test to reduce the list of AMVP should be done only for the vertical component when HHI_IMVP is turned on (following the last fix).
In consequence, before processing this reduction, the vertical components of the AMVP list which are redundant should be erased, when HHI_IMVP is turned on.
This fix works like the function xUniqueMVPCand_one_fourth, line 3072.
In TDecEntropy.cpp,
In function decodeMVPIdx, lines 1010, 1013, 1082, 1085, 1154, 1157, 1124, 1227, 1295, 1298, 1365, 1369, 1502, 1505
Remplacement of iPartIdx by uiPartAddr for the functions : clearMVPCand_one_fourth and clearMVPCand
This parameter is used in these functions for the test: !pcCU->isSkip(uiPartAddr) when HHI_IMVP is turned on. This bug allowed IMVP for SKIP/DIRECT, that isn't correct.
In function decodeMVPIdx, lines 1036, 1046, 1108, 1118, 1179, 1189, 1259, 1267, 1320, 1330, 1391, 1401, 1528, 1538
Remplacement of iPartIdx by uiPartAddr for the same test: !pcSubCU->isSkip(uiPartAddr)
In TEncSearch.cpp,
In function predInterSearch, lines 3809, 3824, 3839, 3854, 3890, 3905, 3938, 3953
Remplacement of iPartIdx by uiPartAddr for the functions : clearMVPCand_one_fourth and clearMVPCand
This parameter is used in these functions for the test: !pcCU->isSkip(uiPartAddr) when HHI_IMVP is turned on. This bug allowed IMVP for SKIP/DIRECT, that isn't correct.
All these fixes are accessible with the flag HHI_IMVP_HHI in the branche TMuC_hhi-0.5.
Fixed in r129