專(zhuān)利名稱(chēng):Mpeg標(biāo)準(zhǔn)視頻解碼方法和視頻解碼器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種MPEG視頻解碼方法和MPEG視頻解碼器。
背景技術(shù):
近年來(lái),本領(lǐng)域的技術(shù)人員作出了艱巨的努力以提供用于在移動(dòng)設(shè)備如移動(dòng)電話(huà)或個(gè)人數(shù)字助理(personal digital assistant,PDA)中再現(xiàn)活動(dòng)圖像的方法。由于移動(dòng)設(shè)備要求功耗低,因此它們不可避免地在帶寬和存儲(chǔ)容量方面存在限制,從而需要一種能以更高速度工作且更高效利用存儲(chǔ)器的活動(dòng)圖像解碼器。
盡管已經(jīng)提出各種活動(dòng)圖像壓縮標(biāo)準(zhǔn),但H.263和MPEG-4簡(jiǎn)單協(xié)議子集(profile)被認(rèn)為是移動(dòng)無(wú)線通信的最佳選擇。MPEG-4對(duì)信道錯(cuò)誤提供一定的容限,包括適用于受限帶寬的各種功能,并且定義流視頻協(xié)議子集。MPEG-4具有高數(shù)據(jù)壓縮率。為了支持高數(shù)據(jù)壓縮率,需要相當(dāng)大量的編碼器和解碼器計(jì)算。簡(jiǎn)而言之,MPEG-4的復(fù)雜結(jié)構(gòu)使得難以實(shí)現(xiàn)可以執(zhí)行適于MPEG-4的實(shí)時(shí)操作的軟件。
圖1是示出MPEG視頻數(shù)據(jù)分層結(jié)構(gòu)的圖。該分層結(jié)構(gòu)由六層組成序列層、圖像組(group of picture,GOP)層、圖像層110、像條(slice)層120、宏塊層130以及像塊(block)層140。在圖1中,示出圖像層110及下面層120、130和140。
參照?qǐng)D1,圖像層110是由具有預(yù)定長(zhǎng)度的像條111組成的畫(huà)面圖像,并且像條層120是由任意數(shù)目的宏塊構(gòu)成的像帶(band)。宏塊層130由宏塊組成,其中每個(gè)宏塊包含六個(gè)8×8像素塊即四個(gè)亮度信號(hào)Y像塊以及兩個(gè)色差信號(hào)(Cb和Cr)像塊。像塊層140由8×8像素塊組成,并且包括離散余弦變換(discrete cosine transform,DCT)系數(shù)信息。
宏塊層130包括運(yùn)動(dòng)向量信息。運(yùn)動(dòng)向量信息是通過(guò)對(duì)當(dāng)前宏塊與前一宏塊的運(yùn)動(dòng)向量之差進(jìn)行編碼而獲得的值。
以下,在說(shuō)明MPEG-4視頻解碼器的結(jié)構(gòu)和操作之前,將簡(jiǎn)短描述MPEG-4編碼方法。
輸入視頻對(duì)象平面(Video object plane,VOP)分成多個(gè)宏塊。VOP是MPEG-4編碼過(guò)程中的基本數(shù)據(jù)單元。在該過(guò)程期間,宏塊的每個(gè)8×8像塊經(jīng)過(guò)DCT和量化。然后,通過(guò)使用變長(zhǎng)編碼方法對(duì)量化DCT系數(shù)和量化寬度進(jìn)行編碼。該整個(gè)過(guò)程稱(chēng)作幀內(nèi)編碼。
一個(gè)單獨(dú)的編碼過(guò)程開(kāi)始于使用運(yùn)動(dòng)檢測(cè)方法如像塊匹配。該技術(shù)包括比較時(shí)間上相鄰VOP中的宏塊。在確定與目標(biāo)宏塊之差最小的預(yù)測(cè)宏塊之后,獲得運(yùn)動(dòng)變化信號(hào)或運(yùn)動(dòng)向量。預(yù)測(cè)宏塊VOP稱(chēng)作參考VOP。通過(guò)根據(jù)運(yùn)動(dòng)向量對(duì)參考VOP執(zhí)行運(yùn)動(dòng)補(bǔ)償,可以獲得預(yù)測(cè)宏塊。然后,運(yùn)動(dòng)變化經(jīng)過(guò)DCT,并且DCT系數(shù)經(jīng)過(guò)量化。通過(guò)使用變長(zhǎng)編碼方法對(duì)量化DCT系數(shù)、運(yùn)動(dòng)向量和量化寬度進(jìn)行編碼。
接收方通過(guò)使用變長(zhǎng)解碼方法對(duì)壓縮編碼VOP數(shù)據(jù)進(jìn)行解碼。通過(guò)對(duì)量化的DCT系數(shù)執(zhí)行反量化和反DCT來(lái)恢復(fù)差值信號(hào)。然后,根據(jù)運(yùn)動(dòng)向量獲得預(yù)測(cè)宏塊,并且將其加到差值信號(hào),從而再現(xiàn)圖像數(shù)據(jù)。
圖2是傳統(tǒng)的MPEG-4視頻解碼器的方框圖。參照?qǐng)D2,傳統(tǒng)的MPEG-4視頻解碼器200包括多路分解器210,用于輸入到其中的MPEG-4視頻位流;紋理(texture)解碼單元220,用于執(zhí)行紋理解碼;重構(gòu)VOP存儲(chǔ)單元230;以及運(yùn)動(dòng)補(bǔ)償單元240。
紋理解碼單元220包括變長(zhǎng)解碼器(variable length decoder,VLD)221、反向掃描器222、反量化器223以及反離散余弦變換器224。運(yùn)動(dòng)補(bǔ)償單元240包括運(yùn)動(dòng)解碼器241、VOP存儲(chǔ)器242以及運(yùn)動(dòng)補(bǔ)償器243。
以下將描述一般的幀間再現(xiàn)方法。除了運(yùn)動(dòng)補(bǔ)償過(guò)程之外,幀內(nèi)再現(xiàn)與幀間再現(xiàn)相同。
通過(guò)對(duì)位流進(jìn)行語(yǔ)法分析,分離出首標(biāo),并且提取出圖像數(shù)據(jù)。然后,變長(zhǎng)解碼器221通過(guò)圖像數(shù)據(jù)的霍夫曼(Huffman)解碼來(lái)創(chuàng)建DCT系數(shù),并且反向掃描器222通過(guò)反向掃描來(lái)創(chuàng)建與圖像數(shù)據(jù)具有相同次序的數(shù)據(jù)。
反量化器223對(duì)經(jīng)過(guò)反向掃描的數(shù)據(jù)進(jìn)行反量化,并且反離散余弦變換器224通過(guò)執(zhí)行DCT來(lái)創(chuàng)建差值圖像。當(dāng)創(chuàng)建差值圖像時(shí),通過(guò)逐宏塊地重復(fù)執(zhí)行解碼(repeatedly performing macroblock-wise decoding)來(lái)生成差值圖像VOP。然后,將重構(gòu)差值圖像VOP存儲(chǔ)在VOP存儲(chǔ)器242中。當(dāng)通過(guò)紋理解碼完成差值圖像VOP時(shí),利用運(yùn)動(dòng)向量執(zhí)行運(yùn)動(dòng)解碼。
運(yùn)動(dòng)解碼器241通過(guò)對(duì)運(yùn)動(dòng)向量進(jìn)行解碼來(lái)創(chuàng)建預(yù)測(cè)圖像。運(yùn)動(dòng)補(bǔ)償器243將該預(yù)測(cè)圖像加到存儲(chǔ)在VOP存儲(chǔ)器242中的差值圖像,并且創(chuàng)建解碼圖像。
圖3是在圖2所示的傳統(tǒng)MPEG-4視頻解碼器200中執(zhí)行的解碼方法300的流程圖。參照?qǐng)D3,在步驟S301,通過(guò)對(duì)當(dāng)前宏塊的首標(biāo)進(jìn)行解碼來(lái)獲得當(dāng)前宏塊信息。在步驟S302,獲得運(yùn)動(dòng)向量,并且在步驟S303,將解碼運(yùn)動(dòng)向量存儲(chǔ)在運(yùn)動(dòng)向量存儲(chǔ)器中。然后,在步驟S304,對(duì)DCT系數(shù)進(jìn)行解碼。
在步驟S305,通過(guò)反向掃描解碼DCT系數(shù)來(lái)創(chuàng)建差值圖像宏塊,在步驟S306對(duì)經(jīng)過(guò)反向掃描的DCT系數(shù)進(jìn)行反量化,并且在步驟S307,對(duì)反量化DCT系數(shù)執(zhí)行反離散余弦變換。在步驟308,將差值圖像宏塊記錄在幀緩沖區(qū)中。
然后,在步驟S309,判定是否已解碼完屬于一幀的所有宏塊。
如果判定尚未解碼完屬于一幀的所有宏塊,則重復(fù)步驟S301至S308,直到生成一幀。
如果判定已解碼完屬于一幀的所有宏塊,也就是,如果完成一幀,則在步驟S310執(zhí)行運(yùn)動(dòng)補(bǔ)償。運(yùn)動(dòng)補(bǔ)償表示創(chuàng)建預(yù)測(cè)圖像宏塊的過(guò)程。通過(guò)訪問(wèn)運(yùn)動(dòng)向量存儲(chǔ)器,獲得運(yùn)動(dòng)向量,并且將其施加于前一圖像數(shù)據(jù)以產(chǎn)生預(yù)測(cè)圖像宏塊。
然后,在步驟S311,將經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)圖像幀加到存儲(chǔ)在幀緩沖區(qū)中的差值圖像。當(dāng)將經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)念A(yù)測(cè)圖像幀加到存儲(chǔ)在幀緩沖區(qū)中的差值圖像幀時(shí),創(chuàng)建解碼圖像幀。
圖4是示出根據(jù)傳統(tǒng)MPEG-4視頻解碼方法用來(lái)生成解碼圖像的單元幀的圖。參照?qǐng)D4,在現(xiàn)有技術(shù)中,解碼的圖像VOP 430是通過(guò)相加預(yù)測(cè)圖像VOP 410與差值圖像VOP 420來(lái)生成的。
具體地說(shuō),預(yù)測(cè)圖像的宏塊1到16組成預(yù)測(cè)圖像VOP 410,并且差值圖像的宏塊1’到16’組成差值圖像VOP 420。然后,通過(guò)將預(yù)測(cè)圖像VOP 410的宏塊1到16加到差值圖像VOP 420的宏塊1’到16’,生成解碼的圖像VOP430的宏塊1”到16”。換句話(huà)說(shuō),通過(guò)相加預(yù)測(cè)圖像VOP 410的宏塊1與差值圖像VOP 420的宏塊1’,生成解碼的圖像VOP 430的宏塊1”。通過(guò)相加預(yù)測(cè)圖像VOP410的宏塊2與差值圖像VOP 420的宏塊2’,生成解碼的圖像VOP 430的宏塊2”。以相同的方式,通過(guò)相加預(yù)測(cè)圖像VOP 410的宏塊3到16與差值圖像VOP 420的宏塊3’到16’,生成解碼的圖像VOP 430的其余宏塊3”到16”。
根據(jù)前述的傳統(tǒng)解碼方法,解碼圖像存儲(chǔ)在當(dāng)前幀存儲(chǔ)器中并且保持直到對(duì)下一幀被解碼。當(dāng)前幀存儲(chǔ)器總是以最近的解碼圖像進(jìn)行填充。因此,即使在當(dāng)前解碼圖像與前一圖像相同的情況下,當(dāng)前圖像也不必要地經(jīng)過(guò)用來(lái)生成前一圖像的相同過(guò)程。傳統(tǒng)方法的這一方面致使解碼過(guò)程的效率降低。
此外,根據(jù)傳統(tǒng)解碼方法,首先執(zhí)行反DCT,將完整差值圖像幀存儲(chǔ)在幀緩沖區(qū)中,然后執(zhí)行運(yùn)動(dòng)補(bǔ)償。因此,即使在運(yùn)動(dòng)向量為0的像塊中,也需要根據(jù)前一圖像創(chuàng)建預(yù)測(cè)圖像,并且存儲(chǔ)預(yù)測(cè)圖像宏塊。由于運(yùn)動(dòng)向量為0表示前一圖像與預(yù)測(cè)圖像的一部分相同,因此與前一圖像分開(kāi)存儲(chǔ)預(yù)測(cè)圖像是浪費(fèi)存儲(chǔ)空間。
而且,根據(jù)傳統(tǒng)技術(shù),順序執(zhí)行紋理解碼和運(yùn)動(dòng)補(bǔ)償。因此,在變長(zhǎng)解碼過(guò)程期間所生成的運(yùn)動(dòng)向量存儲(chǔ)在存儲(chǔ)器中,直到被引用以進(jìn)行運(yùn)動(dòng)補(bǔ)償。在這種情況下,運(yùn)動(dòng)向量存儲(chǔ)器必須足以支持VOP中的宏塊數(shù)。
在對(duì)高壓縮率數(shù)據(jù)進(jìn)行解碼的情況下,反DCT和運(yùn)動(dòng)補(bǔ)償可能不是總是必要的。然而,通過(guò)省略這些例程而獲得的性能改善不適用于傳統(tǒng)MPEG-4視頻解碼器。在創(chuàng)建解碼圖像過(guò)程中,通過(guò)相加差值圖像與預(yù)測(cè)圖像,傳統(tǒng)的MPEG-4視頻解碼器進(jìn)一步受到存儲(chǔ)器要求的約束。
發(fā)明內(nèi)容
本發(fā)明提供一種能夠節(jié)省存儲(chǔ)容量并且提高解碼速度的MPEG視頻解碼方法和MPEG視頻解碼器。
根據(jù)本發(fā)明的一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼方法。該方法包括根據(jù)解碼的運(yùn)動(dòng)向量值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)向量解碼的數(shù)據(jù)執(zhí)行運(yùn)動(dòng)補(bǔ)償;根據(jù)解碼的DCT系數(shù)值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)臄?shù)據(jù)執(zhí)行反離散余弦變換(inverse discrete cosine transformation,IDCT);以及根據(jù)兩個(gè)判定步驟的結(jié)果,生成解碼圖像。
最好但不是必須,判定是否執(zhí)行運(yùn)動(dòng)補(bǔ)償?shù)牟襟E包括判定解碼的運(yùn)動(dòng)向量是否為0;以及如果解碼的運(yùn)動(dòng)向量為0,則判定不執(zhí)行運(yùn)動(dòng)補(bǔ)償,而如果解碼的運(yùn)動(dòng)向量不為0,則判定執(zhí)行運(yùn)動(dòng)補(bǔ)償。
最好但不是必須,判定是否執(zhí)行反DCT的步驟包括判定各解碼的DCT系數(shù)值是否為0;以及如果各解碼的DCT系數(shù)值為0,則判定不執(zhí)行反DCT,而如果任何解碼的DCT系數(shù)值不為0,則判定執(zhí)行反DCT。
根據(jù)本發(fā)明的另一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼方法。該方法包括生成預(yù)測(cè)圖像宏塊;生成差值圖像宏塊;通過(guò)相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼的圖像宏塊;將解碼的圖像宏塊寫(xiě)入幀緩沖區(qū)(buffer);以及通過(guò)循環(huán)執(zhí)行前面的步驟,而以解碼的圖像宏塊填充幀緩沖區(qū)。
根據(jù)本發(fā)明的另一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼方法。該方法包括根據(jù)解碼的運(yùn)動(dòng)向量值生成預(yù)測(cè)圖像宏塊;將預(yù)測(cè)圖像宏塊寫(xiě)入宏塊緩沖區(qū);根據(jù)解碼的DCT系數(shù)值,生成差值圖像宏塊;通過(guò)將差值圖像宏塊加到寫(xiě)入在宏塊緩沖區(qū)中的預(yù)測(cè)圖像宏塊來(lái)生成解碼的圖像宏塊;以及將解碼的圖像宏塊寫(xiě)入幀緩沖區(qū)。
最好但不是必須,生成預(yù)測(cè)圖像宏塊的步驟包括判定解碼的運(yùn)動(dòng)向量是否為0;如果解碼的運(yùn)動(dòng)向量為0,則判定前一圖像宏塊作為預(yù)測(cè)圖像宏塊;以及如果解碼的運(yùn)動(dòng)向量不為0,則通過(guò)對(duì)前一圖像宏塊執(zhí)行運(yùn)動(dòng)補(bǔ)償來(lái)生成預(yù)測(cè)圖像宏塊。
最好但不是必須,生成差值圖像宏塊的步驟包括判定各解碼的DCT系數(shù)值是否為0;如果各解碼的DCT系數(shù)值為0,則判定不生成差值圖像宏塊;以及如果任何解碼的DCT系數(shù)值不為0,則通過(guò)執(zhí)行反DCT來(lái)生成差值圖像宏塊。在此,如果不生成差值圖像宏塊,則跳過(guò)將差值圖像加到預(yù)測(cè)圖像。
根據(jù)本發(fā)明的另一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼器。該MPEG視頻解碼器包括運(yùn)動(dòng)向量判定器,根據(jù)解碼的運(yùn)動(dòng)向量值判定是否執(zhí)行運(yùn)動(dòng)補(bǔ)償;以及DCT系數(shù)判定器,根據(jù)解碼的DCT系數(shù)值判定是否執(zhí)行反離散余弦變換(IDCT)。在此,根據(jù)運(yùn)動(dòng)向量判定器和DCT系數(shù)判定器的判定對(duì)MPEG視頻流進(jìn)行解碼。
最好但不是必須,如果解碼的運(yùn)動(dòng)向量為0,則運(yùn)動(dòng)向量判定器判定不執(zhí)行運(yùn)動(dòng)補(bǔ)償,而如果解碼的運(yùn)動(dòng)向量不為0,則判定執(zhí)行運(yùn)動(dòng)補(bǔ)償。
最好但不是必須,如果各解碼的DCT系數(shù)值為0,則DCT系數(shù)判定器判定不執(zhí)行反DCT,而如果任何解碼的DCT系數(shù)值不為0,則判定執(zhí)行反DCT。
根據(jù)本發(fā)明的另一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼器。該MPEG視頻解碼器包括預(yù)測(cè)圖像計(jì)算單元,生成預(yù)測(cè)圖像宏塊;差值圖像計(jì)算單元,生成差值圖像宏塊;宏塊緩沖區(qū),其中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊;以及幀緩沖區(qū),在通過(guò)在宏塊緩沖區(qū)中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼的圖像宏塊之后,將解碼圖像宏塊寫(xiě)入該幀緩沖區(qū)中。
根據(jù)本發(fā)明的另一個(gè)說(shuō)明性方面,提供一種示例性MPEG視頻解碼器。該MPEG視頻解碼器包括預(yù)測(cè)圖像計(jì)算單元,根據(jù)解碼的運(yùn)動(dòng)向量值生成預(yù)測(cè)圖像宏塊;差值圖像計(jì)算單元,根據(jù)解碼的DCT系數(shù)值生成差值圖像宏塊;宏塊緩沖區(qū),其中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊;以及幀緩沖區(qū),在通過(guò)在宏塊緩沖區(qū)中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼圖像宏塊之后,將解碼圖像宏塊寫(xiě)入該幀緩沖區(qū)。
最好但不是必須,預(yù)測(cè)圖像計(jì)算單元包括運(yùn)動(dòng)向量判定器,判定解碼的運(yùn)動(dòng)向量是否為0;以及運(yùn)動(dòng)補(bǔ)償器,根據(jù)判定結(jié)果執(zhí)行運(yùn)動(dòng)補(bǔ)償。
最好但不是必須,差值圖像計(jì)算單元包括DCT系數(shù)判定器,判定各個(gè)解碼的DCT系數(shù)值是否為0;以及反離散余弦變換器,根據(jù)判定結(jié)果執(zhí)行反DCT。
附圖簡(jiǎn)述通過(guò)參照附圖對(duì)本發(fā)明的示例性實(shí)施例進(jìn)行詳細(xì)描述,本發(fā)明的上述和其他特性、優(yōu)點(diǎn)將變得更加清楚,其中圖1是示出MPEG視頻數(shù)據(jù)分層結(jié)構(gòu)的圖;圖2是傳統(tǒng)的MPEG-4視頻解碼器的方框圖;圖3是在圖2所示的MPEG-4視頻解碼器中執(zhí)行的傳統(tǒng)MPEG-4視頻解碼方法的流程圖;圖4是示出根據(jù)傳統(tǒng)的MPEG-4視頻解碼方法、用來(lái)生成解碼圖像的單元幀的圖;圖5是示出根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的MPEG-4視頻解碼方法,經(jīng)過(guò)處理然后用來(lái)生成解碼圖像的單元數(shù)據(jù)的圖;圖6是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的MPEG-4視頻解碼器的方框圖;圖7是圖6所示的預(yù)測(cè)圖像計(jì)算單元的方框圖;圖8是圖6所示的差值圖像計(jì)算單元的方框圖;圖9是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的在MPEG-4視頻解碼器中執(zhí)行的解碼方法的流程圖;圖10A是示出DCT系數(shù)為0的像塊的比率的表;圖10B是示出運(yùn)動(dòng)向量為0的像塊的比率的表;以及圖10C是比較根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的算法性能與傳統(tǒng)算法性能的表。
具體實(shí)施例方式
下面將參照附圖對(duì)本發(fā)明進(jìn)行更詳細(xì)的描述。
首先,在下面段落中將描述根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的MPEG-4視頻解碼方法。更具體地說(shuō),該描述將詳細(xì)說(shuō)明如何處理單元數(shù)據(jù)來(lái)生成解碼圖像。
通過(guò)在宏塊級(jí)而不是VOP級(jí)處理數(shù)據(jù),本發(fā)明節(jié)省MPEG-4解碼所需的存儲(chǔ)器容量。在本發(fā)明中,生成預(yù)測(cè)圖像宏塊,然后將其記錄在宏塊緩沖區(qū)中。然后,生成差值圖像宏塊,并且將其加到宏塊緩沖區(qū)中的預(yù)測(cè)圖像宏塊。然后,將相加結(jié)果寫(xiě)入幀緩沖區(qū)。例如,如圖5所示,將預(yù)測(cè)圖像宏塊510寫(xiě)入宏塊緩沖區(qū)530,然后將差值圖像宏塊520加到寫(xiě)入在宏塊緩沖區(qū)530中的宏塊510,從而生成解碼的圖像宏塊。然后,將解碼的圖像宏塊寫(xiě)入幀緩沖區(qū)540的預(yù)定部分例如541、542或543。
在本發(fā)明中,當(dāng)生成預(yù)測(cè)圖像宏塊和差值圖像宏塊時(shí),首先判定運(yùn)動(dòng)向量是否為0以及DCT系數(shù)值是否為0。具體地說(shuō),只有運(yùn)動(dòng)向量不為0,才執(zhí)行運(yùn)動(dòng)補(bǔ)償。當(dāng)運(yùn)動(dòng)向量為0時(shí),不執(zhí)行運(yùn)動(dòng)補(bǔ)償。只有DCT系數(shù)值不為0,才生成差值圖像。當(dāng)各DCT系數(shù)值為0時(shí),直接使用前一差值圖像,而不生成新差值圖像。
圖6是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的MPEG-4視頻解碼器600的方框圖。參照?qǐng)D6,MPEG-4視頻解碼器600包括由預(yù)測(cè)圖像計(jì)算單元620和差值圖像計(jì)算單元630組成的逐宏塊(macroblock-wise)處理單元610、宏塊緩沖區(qū)640以及幀緩沖區(qū)650。
預(yù)測(cè)圖像計(jì)算單元620對(duì)運(yùn)動(dòng)向量進(jìn)行解碼,判定解碼運(yùn)動(dòng)向量是否滿(mǎn)足預(yù)定條件,然后根據(jù)該判定結(jié)果執(zhí)行運(yùn)動(dòng)補(bǔ)償。差值圖像計(jì)算單元630對(duì)DCT系數(shù)進(jìn)行解碼,判定解碼DCT系數(shù)是否滿(mǎn)足預(yù)定條件,然后根據(jù)該判定結(jié)果生成差值圖像。
宏塊緩沖區(qū)640通過(guò)對(duì)由預(yù)測(cè)圖像計(jì)算單元620創(chuàng)建的預(yù)測(cè)圖像宏塊與由差值圖像計(jì)算單元630創(chuàng)建的差值圖像宏塊進(jìn)行相加,生成解碼的圖像宏塊。
幀緩沖區(qū)650單獨(dú)地從宏塊緩沖區(qū)640接收解碼圖像宏塊,然后將它們存儲(chǔ)在單個(gè)幀中。
圖7是圖6所示的預(yù)測(cè)圖像計(jì)算單元620的方框圖。參照?qǐng)D7,預(yù)測(cè)圖像計(jì)算單元620包括運(yùn)動(dòng)向量解碼器621、運(yùn)動(dòng)向量判定器622以及運(yùn)動(dòng)補(bǔ)償器623。
運(yùn)動(dòng)向量解碼器621通過(guò)使用變長(zhǎng)解碼方法對(duì)運(yùn)動(dòng)向量進(jìn)行解碼。運(yùn)動(dòng)向量判定器622判定由運(yùn)動(dòng)向量解碼器621解碼出的運(yùn)動(dòng)向量是否為0。是否執(zhí)行運(yùn)動(dòng)補(bǔ)償依賴(lài)于該判定結(jié)果。如果解碼的運(yùn)動(dòng)向量為0,則不執(zhí)行運(yùn)動(dòng)補(bǔ)償,并且在隨后的解碼過(guò)程中使用前一幀宏塊。如果解碼的運(yùn)動(dòng)向量不為0,則執(zhí)行運(yùn)動(dòng)補(bǔ)償。
運(yùn)動(dòng)補(bǔ)償器623參考解碼的運(yùn)動(dòng)向量對(duì)前一幀宏塊執(zhí)行運(yùn)動(dòng)補(bǔ)償。如果解碼的運(yùn)動(dòng)向量為0,則將前一幀宏塊直接寫(xiě)入宏塊緩沖區(qū)640。否則,將通過(guò)對(duì)前一幀宏塊執(zhí)行運(yùn)動(dòng)補(bǔ)償而獲得的宏塊寫(xiě)入宏塊緩沖區(qū)640。
因此,由預(yù)測(cè)圖像計(jì)算單元620將預(yù)測(cè)圖像宏塊寫(xiě)入宏塊緩沖區(qū)640。
圖8是圖6所示的差值圖像計(jì)算單元630的方框圖。參照?qǐng)D8,差值圖像計(jì)算單元630包括DCT系數(shù)解碼器631、DCT系數(shù)判定器632、反量化器633以及反離散余弦變換器634。
DCT系數(shù)解碼器631通過(guò)使用變長(zhǎng)解碼方法對(duì)DCT系數(shù)進(jìn)行解碼。DCT系數(shù)判定器632判定由DCT系數(shù)解碼器631解碼出的各DCT系數(shù)值是否為0。是否執(zhí)行反量化和反DCT依賴(lài)于該判定結(jié)果。如果各解碼DCT系數(shù)值為0,則不執(zhí)行反DCT,從而不生成差值圖像。如果任何解碼DCT系數(shù)值不為0,則執(zhí)行反DCT。
反量化器633對(duì)量化DCT系數(shù)進(jìn)行反量化,并且反離散余弦變換器634對(duì)反量化DCT系數(shù)執(zhí)行IDCT。
因此,由差值圖像計(jì)算單元630生成差值圖像宏塊。在由于各DCT系數(shù)值均為0而不生成差值圖像的情況下,省略相加差值圖像宏塊與預(yù)測(cè)圖像宏塊的過(guò)程。只有當(dāng)生成差值圖像時(shí),才執(zhí)行相加過(guò)程,并且將相加過(guò)程結(jié)果寫(xiě)入宏塊緩沖區(qū)640。
以解碼圖像宏塊填充宏塊緩沖區(qū)640,其中,這些宏塊單獨(dú)地發(fā)送到幀緩沖區(qū)650。
圖9是根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的在MPEG-4視頻解碼器中執(zhí)行的解碼方法S900的流程圖。參照?qǐng)D9,在步驟S901,對(duì)宏塊首標(biāo)進(jìn)行解碼。
在步驟S902,使用變長(zhǎng)解碼方法對(duì)運(yùn)動(dòng)向量進(jìn)行解碼。
在步驟S903,判定解碼運(yùn)動(dòng)向量是否為0。
如果解碼運(yùn)動(dòng)向量為0,則該方法進(jìn)入步驟S906。這種情況表示前一圖像幀宏塊沒(méi)有任何運(yùn)動(dòng)變化,從而前一圖像幀宏塊與當(dāng)前圖像幀宏塊相同。在該場(chǎng)景中,不執(zhí)行運(yùn)動(dòng)補(bǔ)償,并且將前一圖像幀宏塊寫(xiě)入宏塊緩沖區(qū)作為當(dāng)前圖像幀宏塊。因此,如果當(dāng)前圖像與前一圖像相同,則宏塊緩沖區(qū)利用存儲(chǔ)在幀存儲(chǔ)器中的前一圖像信息。
如果運(yùn)動(dòng)向量不為0,則在步驟S904參考解碼運(yùn)動(dòng)向量對(duì)前一圖像幀宏塊執(zhí)行運(yùn)動(dòng)補(bǔ)償。
在步驟S905,將運(yùn)動(dòng)補(bǔ)償結(jié)果寫(xiě)入宏塊緩沖區(qū)。
然后,在步驟S906,使用變長(zhǎng)解碼方法對(duì)DCT系數(shù)進(jìn)行解碼。
在步驟S907,判定各個(gè)解碼的DCT系數(shù)是否為0。如果各個(gè)解碼的DCT系數(shù)為0,這意味著當(dāng)前圖像與前一圖像之間不存在任何差別,則該方法直接進(jìn)入步驟S911,而不執(zhí)行紋理解碼即不執(zhí)行反DCT。
然而,如果解碼DCT系數(shù)不為0,則通過(guò)在步驟S908執(zhí)行反量化并且在步驟S909執(zhí)行反DCT來(lái)生成差值圖像。
然后,在步驟S910,將差值圖像宏塊加到已經(jīng)寫(xiě)入在宏塊緩沖區(qū)中的預(yù)測(cè)圖像宏塊,并且在步驟S911將相加結(jié)果寫(xiě)入幀緩沖區(qū)。
然后,在步驟S912,判定是否已解碼完屬于一幀的所有宏塊。如果已經(jīng)解碼完單個(gè)幀的所有宏塊,則完成整個(gè)解碼過(guò)程。但是,如果尚有所要解碼的任何剩余宏塊,則該方法返回至步驟S901。
由于本發(fā)明允許對(duì)每個(gè)宏塊立即執(zhí)行運(yùn)動(dòng)補(bǔ)償和紋理解碼,因此不需要運(yùn)動(dòng)向量存儲(chǔ)器支持VOP中的宏塊數(shù)。
以下,參照?qǐng)D10A到10C,將描述根據(jù)本發(fā)明一個(gè)示例性實(shí)施例的MPEG視頻解碼方法的各種性能模擬。
在圖10A到10C所示的模擬中,在基于Windows 2000的Intel奔騰III866MHz PC平臺(tái)上使用Microsoft reference(Microsoft參考)源的優(yōu)化變化形式。另外,使用Akiyo(QCIF)、Foreman(CIF)和Mobile(CIF)作為測(cè)試圖像。數(shù)據(jù)被壓縮至具有1∶30的I幀與P幀之比,并且不執(zhí)行雙向預(yù)測(cè)。運(yùn)動(dòng)補(bǔ)償已被執(zhí)行。使用H.263量化方法,然后通過(guò)施加不同量化參數(shù)(QP)即5、12和20到每個(gè)測(cè)試圖像Akiyo、Foreman和Mobile來(lái)獲得九個(gè)圖像。
圖10A示出各測(cè)試圖像中未經(jīng)過(guò)紋理解碼的像塊的比率,并且圖10B示出每個(gè)測(cè)試圖像中未經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)南駢K的比率。
圖10C是示出如何使用這九個(gè)圖像來(lái)比較傳統(tǒng)的算法性能與優(yōu)化算法性能的表。圖10C示出優(yōu)化算法即本發(fā)明優(yōu)選實(shí)施例的解碼方法在解碼速度方面優(yōu)于傳統(tǒng)算法即Microsoft reference。在對(duì)測(cè)試圖像Akiyo和Foreman進(jìn)行解碼的情況下,優(yōu)化算法的解碼速度比傳統(tǒng)算法至少快兩倍并且與量化參數(shù)(QP)無(wú)關(guān)。
根據(jù)本發(fā)明的一個(gè)示例性實(shí)施例,可以通過(guò)在MPEG視頻解碼中逐宏塊地生成解碼圖像來(lái)節(jié)省存儲(chǔ)器容量。另外,在本發(fā)明的一個(gè)示例性實(shí)施例中,當(dāng)運(yùn)動(dòng)向量為0時(shí),不執(zhí)行運(yùn)動(dòng)補(bǔ)償,并且當(dāng)每個(gè)DCT系數(shù)值為0時(shí),不執(zhí)行反DCT。從而,可以大大提高解碼速度。
權(quán)利要求
1.一種MPEG視頻解碼方法,包括根據(jù)解碼的運(yùn)動(dòng)向量值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)向量解碼的數(shù)據(jù)執(zhí)行運(yùn)動(dòng)補(bǔ)償;根據(jù)多個(gè)解碼的DCT系數(shù)值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)臄?shù)據(jù)執(zhí)行反離散余弦變換(IDCT);以及根據(jù)兩個(gè)判定步驟的結(jié)果,生成解碼圖像。
2.如權(quán)利要求1所述的MPEG視頻解碼方法,其中,判定是否執(zhí)行運(yùn)動(dòng)補(bǔ)償?shù)牟襟E包括判定解碼的運(yùn)動(dòng)向量是否為0;以及如果解碼的運(yùn)動(dòng)向量為0,則判定不執(zhí)行運(yùn)動(dòng)補(bǔ)償,而如果解碼的運(yùn)動(dòng)向量不為0,則判定執(zhí)行運(yùn)動(dòng)補(bǔ)償。
3.如權(quán)利要求1所述的MPEG視頻解碼方法,其中,判定是否執(zhí)行反DCT的步驟包括判定各解碼的DCT系數(shù)值是否為0;以及如果各解碼的DCT系數(shù)值為0,則判定不執(zhí)行反DCT,而如果任何解碼的DCT系數(shù)值不為0,則判定執(zhí)行反DCT。
4.一種MPEG視頻解碼方法,包括生成預(yù)測(cè)圖像宏塊;生成差值圖像宏塊;通過(guò)相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼的圖像宏塊;將解碼的圖像宏塊寫(xiě)入幀緩沖區(qū);以及通過(guò)循環(huán)執(zhí)行前面的各步驟,而以解碼的圖像宏塊填充幀緩沖區(qū)。
5.一種MPEG視頻解碼方法,包括根據(jù)解碼的運(yùn)動(dòng)向量值生成預(yù)測(cè)圖像宏塊;將預(yù)測(cè)圖像宏塊寫(xiě)入宏塊緩沖區(qū);根據(jù)多個(gè)解碼的DCT系數(shù)值,生成差值圖像宏塊;通過(guò)將差值圖像宏塊加到寫(xiě)入在宏塊緩沖區(qū)中的預(yù)測(cè)圖像宏塊來(lái)生成解碼的圖像宏塊;以及將解碼的圖像宏塊寫(xiě)入幀緩沖區(qū)。
6.如權(quán)利要求5所述的MPEG視頻解碼方法,其中,生成預(yù)測(cè)圖像宏塊的步驟包括判定解碼的運(yùn)動(dòng)向量是否為0;如果解碼的運(yùn)動(dòng)向量為0,則判定前一圖像宏塊作為預(yù)測(cè)圖像宏塊;以及如果解碼的運(yùn)動(dòng)向量不為0,則通過(guò)對(duì)前一圖像宏塊執(zhí)行運(yùn)動(dòng)補(bǔ)償來(lái)生成預(yù)測(cè)圖像宏塊。
7.如權(quán)利要求5所述的MPEG視頻解碼方法,其中,生成差值圖像宏塊的步驟包括判定各解碼的DCT系數(shù)值是否為0;如果各解碼的DCT系數(shù)值為0,則判定不生成差值圖像宏塊;以及如果任何解碼的DCT系數(shù)值不為0,則通過(guò)執(zhí)行反DCT來(lái)生成差值圖像宏塊,其中,如果不生成差值圖像宏塊,則跳過(guò)將差值圖像加到預(yù)測(cè)圖像。
8.一種MPEG視頻解碼器,包括運(yùn)動(dòng)向量判定器,根據(jù)解碼的運(yùn)動(dòng)向量值判定是否執(zhí)行運(yùn)動(dòng)補(bǔ)償;以及DCT系數(shù)判定器,根據(jù)多個(gè)解碼的DCT系數(shù)值判定是否執(zhí)行反離散余弦變換(IDCT),其中,根據(jù)運(yùn)動(dòng)向量判定器和DCT系數(shù)判定器的判定對(duì)MPEG視頻流進(jìn)行解碼。
9.如權(quán)利要求8所述的MPEG視頻解碼器,其中,如果解碼的運(yùn)動(dòng)向量為0,則運(yùn)動(dòng)向量判定器判定不執(zhí)行運(yùn)動(dòng)補(bǔ)償,而如果解碼的運(yùn)動(dòng)向量不為0,則判定執(zhí)行運(yùn)動(dòng)補(bǔ)償。
10.如權(quán)利要求8所述的MPEG視頻解碼器,其中,如果各解碼的DCT系數(shù)值為0,則DCT系數(shù)判定器判定不執(zhí)行反DCT,而如果任何解碼的DCT系數(shù)值不為0,則判定執(zhí)行反DCT。
11.一種MPEG視頻解碼器,包括預(yù)測(cè)圖像計(jì)算單元,生成預(yù)測(cè)圖像宏塊;差值圖像計(jì)算單元,生成差值圖像宏塊;宏塊緩沖區(qū),其中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊;以及幀緩沖區(qū),在通過(guò)在宏塊緩沖區(qū)中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼的圖像宏塊之后,將解碼的圖像宏塊寫(xiě)入該幀緩沖區(qū)中。
12.一種MPEG視頻解碼器,包括預(yù)測(cè)圖像計(jì)算單元,根據(jù)解碼的運(yùn)動(dòng)向量值生成預(yù)測(cè)圖像宏塊;差值圖像計(jì)算單元,根據(jù)多個(gè)解碼的DCT系數(shù)值生成差值圖像宏塊;宏塊緩沖區(qū),其中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊;以及幀緩沖區(qū),在通過(guò)在宏塊緩沖區(qū)中相加預(yù)測(cè)圖像宏塊與差值圖像宏塊來(lái)生成解碼的圖像宏塊之后,將解碼的圖像宏塊寫(xiě)入該幀緩沖區(qū)中。
13.如權(quán)利要求12所述的MPEG視頻解碼器,其中,預(yù)測(cè)圖像計(jì)算單元包括運(yùn)動(dòng)向量判定器,判定解碼的運(yùn)動(dòng)向量是否為0;以及運(yùn)動(dòng)補(bǔ)償器,根據(jù)判定結(jié)果執(zhí)行運(yùn)動(dòng)補(bǔ)償。
14.如權(quán)利要求12所述的MPEG視頻解碼器,其中,差值圖像計(jì)算單元包括DCT系數(shù)判定器,判定各個(gè)解碼的DCT系數(shù)值是否為0;以及反離散余弦變換器,根據(jù)判定結(jié)果執(zhí)行反DCT。
全文摘要
提供一種MPEG視頻解碼方法和MPEG視頻解碼器。該方法包括根據(jù)解碼的運(yùn)動(dòng)向量值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)向量解碼的數(shù)據(jù)執(zhí)行運(yùn)動(dòng)補(bǔ)償;根據(jù)解碼的DCT系數(shù)值,判定是否對(duì)經(jīng)過(guò)運(yùn)動(dòng)補(bǔ)償?shù)臄?shù)據(jù)執(zhí)行反離散余弦變換(IDCT);以及根據(jù)這兩個(gè)判定的結(jié)果,生成解碼圖像。
文檔編號(hào)H04N7/50GK1505406SQ20031011964
公開(kāi)日2004年6月16日 申請(qǐng)日期2003年11月27日 優(yōu)先權(quán)日2002年11月29日
發(fā)明者安鐘學(xué), 車(chē)尚昌 申請(qǐng)人:三星電子株式會(huì)社