編碼:

藍色的前向編碼流程:
以宏塊為輸入單位介紹優于以幀為單位介紹。
Fn為即將進行編碼的宏塊,由原始圖像中16*16像素構成。每個宏塊要么采用幀內模式編碼,要么采用幀間模式編碼。不管是哪種編碼模式,預測宏塊P都是基于重建幀生成的。在幀內模式中,預測宏塊P是由當前幀經過編碼、解碼和重建生成的(注意,采用未經過濾波的樣本uF`n來生成P)。在幀間模式中,預測宏塊是通過一個或者多個參考幀經過運動補償預測生成的。在圖中,參考幀就是之前編碼得到的幀F`n-1;不過,并不只是一個參考幀,每個預測宏塊P都是由一個或者兩個,之前或者之后的,已經經過編碼和重建所生成的幀中的對應宏塊所生成的。
當前宏塊減去預測宏塊P生成殘差宏塊Dn。殘差宏塊Dn經過變換、量化后生成X,由一系列變換量化系數組成。然后,對這些系數進行重排序和熵編碼。熵編碼生成的系數,附上解碼宏塊所需要的附加信息生成壓縮比特流,(附加信息有宏塊預測模式,量化步長,描述如何對宏塊進行運動補償的運動矢量信息,等等)。壓縮比特流被傳到網絡抽象層(NAL)以發射或者儲存。
粉紅色的重建流程:
為了生成重建幀以編碼以后的宏塊,將量化后的宏塊殘差系數X進行解碼。系數X經過反量化,反變換生成殘差宏塊Dn`。此時的殘差宏塊與原先的殘差宏塊Dn并不相同,原因是在量化過程中引入了失真。所以,Dn`是變形了的Dn。
預測宏塊P與Dn`相加生成重建宏塊uF`n(原宏塊的變形了的宏塊)。為了減小塊效應失真,引入了專門的濾波器。濾波之后的宏塊就是重建宏塊F`n,一系列的重建宏塊組成了參考幀。(實際上,這里的參考幀,與解碼端生成的最終圖像完全一致)
解碼:

從NAL中,解碼器取得壓縮比特流。數據元素經過熵解碼和重排序生成一系列量化后的系數X。經過反量化和反變換生成Dn`(與編碼端的Dn`一致)。使用從比特流中解碼出來的頭信息,解碼器生成預測宏塊P,與先前在編碼器中生成的預測宏塊P一致。P與Dn`相加生成uF`n,然后經過濾波,生成解碼宏塊F`n。
從兩幅圖表和上面的討論可以發現:編碼器的重建流程的目的是為了確保編碼端和解碼端使用一致的參考幀來生成預測宏塊P。如果參考幀不一致,那么編碼端和解碼端的預測宏塊P就不一致,導致在編碼端和解碼端之間生成漸增的誤差或者“漂移”。