基于FPGA NiosII的MPEG-4視頻播放器設計
AC系數(shù)的反量化要用到兩個加權矩陣,分別用于內部子塊和非內部子塊。用戶也可以使用自定義的量化矩陣。如果用QDCT表示輸入已量化的AC系數(shù),用DCT表示反量化后的AC系數(shù),那么AC系數(shù)的IQ變換公式如下:
式中,quantiser_scale為0~112之間的兩組數(shù)值,分別對應不同的比特流控制狀態(tài)。但是在本系統(tǒng)采用的XviDCodec版本中,比特流控制功能并沒有得到實現(xiàn),所以這里quantiser_scale的取值固定。
反量化得到的結果通過飽和化,使其限制在[-2048,+2047]之間。
IQ在FPGA上按照圖3的框圖進行硬件實現(xiàn)。
2.1.2 反離散余弦變換
IDCT是DCT的逆過程,用于還原DCT系數(shù)矩陣。
IDCT過程可由下面的公式描述:
將8元的輸入向量[X0,X1,X2,X3,X4,X5,X6,X7]分成奇元素[X1,X3,X5,X7]和偶元素[Xo,X2,X4,X6],8×8矩陣則用2個4×4矩陣來代替,奇元素和偶元素分別與這2個矩陣v和u相乘,生成2個4×4向量p和q,通過加減向量p和q,可得到輸出向量x。
算法可以表示成下面的公式:
基于8×8矩陣的IDCT算法,在FPGA上按照圖4所示的結構加以硬件實現(xiàn)。
2.1.3 運動補償
運動補償是一種大量、單調的運算。為了能實現(xiàn)運動補償,采用了多級、多個運算單元并行流水運算的方式,如圖5所示。
評論