新聞中心

        EEPW首頁 > 消費電子 > 設(shè)計應用 > PC機的MPEG-4編碼原理及實現(xiàn)

        PC機的MPEG-4編碼原理及實現(xiàn)

        作者: 時間:2010-06-02 來源:網(wǎng)絡(luò) 收藏


        程序采用了以下策略選取相鄰塊。定義塊A,B,C,X的DC系數(shù)值分別為DC_A,DC_B,DC_C,DC_X。

        如果DC_A與DC_B的差小于DC_B與DC_C的差,則DC_A與DC_B在數(shù)值上比較接近,即在垂直方向上的數(shù)值比水平方向上更接近,所以采用DC_C來預測DC_X;反之,在水平方向的數(shù)值比較接近,即采用DC_A來預測DC_X。

        將當前塊的DC系數(shù)與用來預測的相鄰塊的DC系數(shù),經(jīng)過特定處理后做差,其差存放到當前塊的DC位置上,同時記錄此DC系數(shù)的預測方向。

        AC預測主要是針對8×8塊的第一行或者第一列AC系數(shù),其預測方向取決于當前塊DC系數(shù)的預測方向。如圖2所示,如果之前DC預測為水平預測,則當前塊X的第一列AC系數(shù)采用A塊的第一列AC系數(shù)預測,同時將X的第一列7個AC系數(shù)各自取絕對值后相加到變量S1(S1的初始值為0)上。將當前塊第一列AC系數(shù)與用來預測的相鄰塊A的第一列AC系數(shù)做差,其7個差值存放到當前塊的第一列AC系數(shù)的位置上,同時將7個差值各自取絕對值后相加到變量S2(S2的初始值為0)上。如果之前的DC預測為垂直預測,則只進行當前塊X的第一行AC系數(shù)預測,其預測步驟同第一列AC系數(shù)的預測一樣。

        有時AC預測會產(chǎn)生較大的預測誤差,并沒有達到節(jié)省位流的目的,因此必須判斷AC預測的有效性。在單個8×8小塊的AC預測中,用S1記錄了此小塊的第一行或第一列AC系數(shù)的絕對值之和,用S2記錄了第一行或第一列預測后7個差值的絕對和。以一個宏塊的6個8×8小塊為單位,將各個小塊的S1與S2之差相加,得到值S。如果S非零,則此宏塊進行AC預測,其標志ACpred_flag置1,否則此宏塊不進行AC預測,ACpred_flag置0。

        1.2.2 之字型掃描

        DC和AC預測之后,對8×8塊的系數(shù)進行之字形掃描,共有Zigzag,Zigzag_v(交替垂直掃描)和Zigzag_h(交替水平掃描)三種掃描方式。采用何種掃描方式由三個要素決定,即幀內(nèi)還是幀間預測,AC預測標志ACpred_flag的值,DC系數(shù)的預測方向。

        對于幀內(nèi)預測的宏塊,如果AC預測標志ACpredflag為0,則此宏塊中的6個8×8塊都使用Zigzag掃描;如果AC預測標志為1,則此宏塊中的6個8×8塊將根據(jù)各自的DC預測方向決定AC系數(shù)的掃描方向。如果DC預測為水平預測,則此8×8塊使用Zigzag_v掃描方式掃描系數(shù),否則使用Zigzag_h掃描方式。

        對于幀間預測的宏塊,其每個8×8塊統(tǒng)一采用Zigzag掃描方式掃描系數(shù)。

        8×8的系數(shù)矩陣經(jīng)過之字型掃描后,大部分非零系數(shù)集中在一個一維數(shù)組的前部,大部分零系數(shù)集中在此一維數(shù)組的后面,根據(jù)此特點便產(chǎn)生了游程

        1.2.3 游程和熵

        所謂游程編碼就是對8×8系數(shù)矩陣的AC系數(shù)進行特定的處理,使其成為個數(shù)更少的三維矢量(Last,Run,Level)。其中,Level代表非0系數(shù)的大小。Run代表Level前面連續(xù)0的個數(shù)。Last代表終止標志:其值為0時,表示Level后還有不為0的系數(shù);其值為1時表示該系數(shù)是最后不為0的數(shù);余下的系數(shù)全為0。游程編碼生成三維矢量,壓縮了數(shù)據(jù)量,然后根據(jù)Last,Run和Level的不同組合作為索引,找到對應Huffman編碼表中的碼字,生成碼流。


        關(guān)鍵詞: 實現(xiàn) 原理 編碼 MPEG-4 PC

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 武隆县| 安图县| 大姚县| 友谊县| 西平县| 屏南县| 郁南县| 锡林浩特市| 凤冈县| 申扎县| 澳门| 福安市| 青川县| 阿克苏市| 萍乡市| 德清县| 茌平县| 潜山县| 佳木斯市| 夏邑县| 昌平区| 突泉县| 安顺市| 潜山县| 绿春县| 都昌县| 普兰县| 江阴市| 洞口县| 南京市| 昌乐县| 墨江| 桦川县| 常宁市| 吴旗县| 普兰店市| 荣昌县| 桑日县| 保山市| 迁西县| 盐山县|