基于SOPC的MPEG4視頻播放器
系數(shù)的二維數(shù)組QF[ v][ u]被反量化,產(chǎn)生重構(gòu)的DCT系數(shù)。該過程的實(shí)質(zhì)是以量化步長為倍數(shù)的乘法運(yùn)算。本文引用地址:http://butianyuan.cn/article/150225.htm
內(nèi)部編碼塊DC 系數(shù)的反量化過程不同于其他的AC系數(shù)。DC 反量化系數(shù)由一個常數(shù)因子intra_dc 與QF[ 0 ][0]相乘而得到。intra_dc 與編碼精度有關(guān),表1 顯示的即為兩者對應(yīng)關(guān)系。
AC 系數(shù)的反量化要用到兩個加權(quán)矩陣,分別用于內(nèi)部子塊和非內(nèi)部子塊。用戶也可以使用自定義的量化矩陣。
如果用QDCT 表示輸入已量化的AC 系數(shù),用DCT 表示反量化后的AC 系數(shù),那么AC 系數(shù)的IQ 變換公式如下:
式中,quantiser_scale 為0~112 之間的兩組數(shù)值,分別對應(yīng)不同的比特流控制狀態(tài)。但是在本系統(tǒng)采用的XviDCodec 版本中,比特流控制功能并沒有得到實(shí)現(xiàn),所以這里quantiser_scale 的取值固定。
反量化得到的結(jié)果通過飽和化,使其限制在[ - 2048 ,+ 2047 ]之間。
IQ 在FPGA 上按照圖3 的框圖進(jìn)行硬件實(shí)現(xiàn)。
反離散余弦變換
IDCT 是DCT 的逆過程,用于還原DCT 系數(shù)矩陣。
IDCT 過程可由下面的公式描述:
上式可視為一個2 個8 元向量的點(diǎn)積:
圖4 反離散余弦變換的硬件實(shí)現(xiàn)結(jié)構(gòu)
將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所示的結(jié)構(gòu)加以硬件實(shí)現(xiàn)。
評論