基于SOPC的MPEG4視頻播放器
系數的二維數組QF[ v][ u]被反量化,產生重構的DCT系數。該過程的實質是以量化步長為倍數的乘法運算。本文引用地址:http://www.104case.com/article/150225.htm
內部編碼塊DC 系數的反量化過程不同于其他的AC系數。DC 反量化系數由一個常數因子intra_dc 與QF[ 0 ][0]相乘而得到。intra_dc 與編碼精度有關,表1 顯示的即為兩者對應關系。
AC 系數的反量化要用到兩個加權矩陣,分別用于內部子塊和非內部子塊。用戶也可以使用自定義的量化矩陣。
如果用QDCT 表示輸入已量化的AC 系數,用DCT 表示反量化后的AC 系數,那么AC 系數的IQ 變換公式如下:
式中,quantiser_scale 為0~112 之間的兩組數值,分別對應不同的比特流控制狀態。但是在本系統采用的XviDCodec 版本中,比特流控制功能并沒有得到實現,所以這里quantiser_scale 的取值固定。
反量化得到的結果通過飽和化,使其限制在[ - 2048 ,+ 2047 ]之間。
IQ 在FPGA 上按照圖3 的框圖進行硬件實現。
反離散余弦變換
IDCT 是DCT 的逆過程,用于還原DCT 系數矩陣。
IDCT 過程可由下面的公式描述:
上式可視為一個2 個8 元向量的點積:
圖4 反離散余弦變換的硬件實現結構
將8 元的輸入向量[ X0 , X1 , X2 , X3 , X4 , X5 , X6 ,X7 ]分成奇元素[ X1 , X3 , X5 , X7 ]和偶元素[ X0 , X2 , X4 ,X6 ] ,8 ×8 矩陣則用2 個4 ×4 矩陣來代替,奇元素和偶元素分別與這2 個矩陣v 和u 相乘,生成2 個4 ×4 向量p 和q,通過加減向量p 和q ,可得到輸出向量x。
算法可以表示成下面的公式:
基于8 ×8 矩陣的IDCT 算法,在FPGA 上按照圖4所示的結構加以硬件實現。
評論