出錯的宏塊(圖中灰色表示)根據上、下、左、右四個方向相鄰宏塊的不同分割情況及預測類型進行插值。將最后的結果中進行比較,選取邊界像素差值之和最小者為最優的EC方案。其步驟為:
1、判斷相鄰宏塊左上角8*8塊的預測模式是否大于REGMODE_SPLITTED,如果大于,則表示該宏塊由4個不同類型的8*8塊組成。否則,說明該宏塊4個8*8塊預測模式相同。
2、如果相鄰宏塊由4個不同類型的8*8塊組成,則首先選取第一個最鄰近的8*8塊(圖中用Split1表示)的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量。以該預測模式和運動向量對錯誤宏塊做EC,并計算邊界像素差值之和。然后選取第二個最鄰近的8*8塊(圖中用Split2表示)的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量做同樣處理。
3、如果相鄰宏塊的4個8*8的塊預測模式相同,則直接選用左上角8*8塊的預測模式和運動向量作為錯誤宏塊的預測模式和運動向量做處理。
4、最后比較所有預測模式和運動向量計算出的邊界像素差值之和,最小者即為最佳。
預測模式為REGMODE_INTER_COPY:
既為幀間復制宏塊。此時運動向量為0,錯誤宏塊各像素值直接使用參考幀中同樣位置的值
預測模式為REGMODE_INTER_PRED:
既為幀間預測宏塊。
幀內宏塊是利用上下左右宏塊的邊界像素采用雙線性內插
?
?