專利名稱:用于視頻圖像的誤差消除方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明背景1.本發(fā)明的領(lǐng)域本發(fā)明涉及視頻編碼和解碼,尤其涉及用于在進(jìn)行視頻編碼和解碼中用于消除誤差的方法和裝置。
2.相關(guān)技術(shù)的描述音頻與視頻壓縮和解壓縮技術(shù)的進(jìn)步以及超大規(guī)模集成技術(shù)一起已經(jīng)創(chuàng)建了新能力和新市場(chǎng)。這些新能力和新市場(chǎng)包括在計(jì)算機(jī)中和在小光盤上的數(shù)字聲頻和視頻的存儲(chǔ),以及從直播衛(wèi)星上對(duì)數(shù)字音頻和視頻信號(hào)的發(fā)送。
這種進(jìn)步的實(shí)現(xiàn)在某種程度上是借助于在壓縮和解壓縮的不同方案之間提供兼容性的國(guó)際標(biāo)準(zhǔn)。這種標(biāo)準(zhǔn)之一是稱之為″JPEG″(聯(lián)合攝影專家組)的標(biāo)準(zhǔn)。以后開發(fā)的標(biāo)準(zhǔn)稱之為″MPEG1″。這是由運(yùn)動(dòng)圖象專家組同意的第一組標(biāo)準(zhǔn)。還有另一個(gè)標(biāo)準(zhǔn)是″ITU-TH.261″,是特別用于視頻電訊會(huì)議的一個(gè)視頻壓縮標(biāo)準(zhǔn)。雖然每一標(biāo)準(zhǔn)都是針對(duì)一種具體的應(yīng)用設(shè)計(jì)的,但是所有的這些標(biāo)準(zhǔn)有許多共同之處。
MPEG1是針對(duì)儲(chǔ)存和分配音頻和動(dòng)態(tài)視頻設(shè)計(jì)的,強(qiáng)調(diào)的是圖象質(zhì)量。其特征包括隨機(jī)存取,快進(jìn)和反向重放。MPEG1用作視頻激光唱片和許多視頻游戲的基礎(chǔ)。用于MPEG1的原始頻道帶寬和圖像清晰度是基于隨即可得到的記錄介質(zhì)確定的。MPEG1的目標(biāo)是使用12厘米直徑的光盤以1.416Mbps的比特速率重放所記錄的數(shù)字聲頻和視頻,其中1.15Mbps被分配給視頻。
在MPEG1標(biāo)準(zhǔn)之下產(chǎn)生的壓縮比特?cái)?shù)據(jù)流隱含著去定義用于這種比特?cái)?shù)據(jù)流的解壓縮算法。但是,該壓縮算法能夠在MPEG1標(biāo)準(zhǔn)的規(guī)程內(nèi)改變,從而使得可能實(shí)現(xiàn)與壓縮比特?cái)?shù)據(jù)流的產(chǎn)生有關(guān)的特有優(yōu)點(diǎn)。
以后開發(fā)的MPEG2標(biāo)準(zhǔn)把MPEG1的基本概念擴(kuò)展到覆蓋一個(gè)更寬的應(yīng)用范圍。雖然MPEG2標(biāo)準(zhǔn)的主要應(yīng)用是以4Mbps到9Mbps的比特率的廣播質(zhì)量視頻的所有數(shù)字傳輸,但是似乎該MPEG2標(biāo)準(zhǔn)對(duì)于其它應(yīng)用也可以是有用的,例如在數(shù)字視盤(DVD)上全長(zhǎng)度動(dòng)畫的存儲(chǔ),具有的清晰度至少幾乎是和由目前12英寸直徑激光唱片提供的清晰度一樣好。
MPEG2標(biāo)準(zhǔn)取決于三種類型的編碼圖象。I(″幀內(nèi)″)圖象是作為一個(gè)獨(dú)立的靜止圖象場(chǎng)或幀編碼。這種I圖象允許在一個(gè)視頻信息流中有隨機(jī)存取點(diǎn)。如此,I圖象將每秒大約出現(xiàn)兩次。I圖象還被使用在場(chǎng)景切割(例如在動(dòng)畫面的電影中)出現(xiàn)的場(chǎng)合。
P(“預(yù)測(cè)”)圖象是關(guān)于最近的在前I或P圖象的場(chǎng)或幀編碼,導(dǎo)致正向預(yù)測(cè)處理。通過(guò)使用運(yùn)動(dòng)補(bǔ)償,P圖象允許比I圖象更大的壓縮,并且還用作對(duì)于B圖象和未來(lái)的P圖象的一個(gè)基準(zhǔn)。
B(“雙向”)圖象是使用最靠近(相對(duì)于顯示次序)的過(guò)去和未來(lái)的I或P圖象作為基準(zhǔn)的場(chǎng)或幀產(chǎn)生雙向預(yù)測(cè)。通過(guò)對(duì)兩個(gè)圖象進(jìn)行平均,使B圖象提供最大的壓縮并且增加信號(hào)噪聲比。這種I、P和B圖象在轉(zhuǎn)讓給Sony公司的美國(guó)專利5,386,234和5,481,553中被更徹底地描述,并且所說(shuō)的這兩個(gè)美國(guó)專利在此被引作參考。
一組圖象(″GOP″)是一個(gè)或多個(gè)編碼的圖象系列,協(xié)助隨機(jī)存取和編輯。GOP值是在編碼過(guò)程中構(gòu)成。因?yàn)镮圖象是更靠近在一起,所以該I圖象的GOP值較小,對(duì)于運(yùn)動(dòng)的響應(yīng)更好。但是壓縮級(jí)別卻較低。
在一個(gè)編碼的比特?cái)?shù)據(jù)流中,GOP必須以一個(gè)I圖象開始并且可以按照任何順序跟隨隨意數(shù)目的I、P或B圖象。在顯示次序中,GOP必須以I或B圖象開始而以I或P圖象結(jié)束。因此,最小的GOP尺寸是單一I圖象,而最大的尺寸是不受限制的。
以更詳細(xì)方式,
圖1示出一個(gè)MPEG2編碼器100的簡(jiǎn)化方框圖。在離散余弦變換器102和運(yùn)動(dòng)矢量發(fā)生器104上提供了包括宏數(shù)據(jù)塊信息和運(yùn)動(dòng)補(bǔ)償信息的視頻信息流。每個(gè)8×8數(shù)據(jù)塊(象素或誤差項(xiàng))被離散余弦變換器102處理,以便產(chǎn)生水平和垂直掃描頻率系數(shù)的一個(gè)8×8數(shù)據(jù)塊。量化器106量化該頻域誤差系數(shù)的8×8數(shù)據(jù)塊,從而限制允許值的數(shù)目。
利用人的量化誤差的知覺,較高的頻率通常被量化得比越低的頻率要粗糙。這導(dǎo)致許多頻域誤差系數(shù)是零,尤其在較高的頻率。
量化器106的輸出由一個(gè)鋸齒波掃描器108處理,以直流成分開始,依照頻率增加的次序產(chǎn)生一個(gè)量化頻率系數(shù)的線性數(shù)據(jù)流。這就產(chǎn)生連續(xù)的零系數(shù)的長(zhǎng)段(long runs),并被送到可變長(zhǎng)度編碼器110。
該量化頻域誤差系數(shù)的線性數(shù)據(jù)流首先由該可變長(zhǎng)度編碼器110作行程編碼。在該行程編碼過(guò)程中,該量化頻域誤差系數(shù)的線性數(shù)據(jù)流被轉(zhuǎn)換成一系列行程幅度(即行程量級(jí))對(duì)。每個(gè)行程幅度對(duì)指示零系數(shù)的數(shù)目以及結(jié)束該行程的非零系數(shù)的幅度。
例如,假定一個(gè)誤差系數(shù)的字符串如下(1)原始誤差系數(shù)000060000038因此,當(dāng)該誤差系數(shù)的字符串被可變長(zhǎng)度編碼時(shí),根據(jù)上面描述的編碼規(guī)則,獲得下列編碼行程量級(jí)對(duì)(2)編碼的行程量級(jí)對(duì)(4,6)(5,3)(0,8)當(dāng)然,隨著零系數(shù)的數(shù)目增加,該誤差系數(shù)數(shù)據(jù)將由該可變長(zhǎng)度編碼更有效地壓縮。
在可變長(zhǎng)度編碼器110編碼該行程量級(jí)對(duì)之后,其隨即對(duì)與該行程量級(jí)對(duì)作Huffman編碼。在該Huffman編碼中,根據(jù)該行程量級(jí)對(duì)是否包括在通常出現(xiàn)的行程量級(jí)對(duì)的一個(gè)列表中而不同地編碼該行程量級(jí)對(duì)。如果該正在被Huffman編碼的行程量級(jí)對(duì)是在通常出現(xiàn)對(duì)的列表中,則隨后它將被編碼成對(duì)應(yīng)于該行程量級(jí)對(duì)的一個(gè)預(yù)定的可變長(zhǎng)度碼字。另一方面,如果該行程量級(jí)對(duì)不是在該列表中,則該行程量級(jí)對(duì)被編碼為一個(gè)預(yù)定的符號(hào)(例如一個(gè)逸出符號(hào))跟隨著一個(gè)固定長(zhǎng)度碼,以便避免長(zhǎng)碼字并且降低實(shí)現(xiàn)它的費(fèi)用。
可變長(zhǎng)度編碼器110的行程編碼和Huffman編碼的輸出提供一個(gè)編碼的視頻比特?cái)?shù)據(jù)流。圖象類型確定電路112確定該編碼的幀是否是一個(gè)P圖象、I圖象或B圖象。在P或I圖象的情況下,圖象類型確定電路110使得運(yùn)動(dòng)矢量發(fā)生器104產(chǎn)生一個(gè)適當(dāng)?shù)倪\(yùn)動(dòng)矢量,隨即提供到可變長(zhǎng)度編碼器110。這種運(yùn)動(dòng)矢量被隨即編碼并且與可變長(zhǎng)度編碼器110的輸出結(jié)合。
參考圖2和3,解釋運(yùn)動(dòng)補(bǔ)償?shù)母拍?。運(yùn)動(dòng)補(bǔ)償通過(guò)除去在圖象之間的時(shí)間冗余度而改進(jìn)P和B圖象的壓縮。對(duì)于MPEG 2,其操作在宏數(shù)據(jù)塊等級(jí)。例如,在其它宏數(shù)據(jù)塊之中一個(gè)在前的幀200包括一個(gè)宏數(shù)據(jù)塊202,由16行的16個(gè)象素(稱之為″象素″)組成。運(yùn)動(dòng)補(bǔ)償依靠這種事實(shí),即除場(chǎng)景切割外,大多數(shù)的圖像從一幀到另外一幀保持在相同的位置,而其它圖像僅移動(dòng)一個(gè)短距離。因此,這種運(yùn)動(dòng)能夠被描述為一個(gè)二維運(yùn)動(dòng)矢量,該運(yùn)動(dòng)矢量指定從一個(gè)先前的解碼幀的何處檢取一個(gè)宏數(shù)據(jù)塊以便由此預(yù)測(cè)一個(gè)當(dāng)前宏數(shù)據(jù)塊的象素值。所以,一個(gè)當(dāng)前幀302的宏數(shù)據(jù)塊300能夠由一個(gè)二維運(yùn)動(dòng)矢量304所修改的宏數(shù)據(jù)塊202(圖2)表示??梢岳斫猓@種宏數(shù)據(jù)塊300可以是在可以不在先前幀200中的環(huán)繞宏數(shù)據(jù)塊202的相同的邊界之內(nèi)。
在使用運(yùn)動(dòng)補(bǔ)償壓縮一個(gè)宏數(shù)據(jù)塊之后,其既包括預(yù)測(cè)(通常稱之為″運(yùn)動(dòng)矢量″)量,又包括在基準(zhǔn)宏數(shù)據(jù)塊和正在編碼的宏數(shù)據(jù)塊之間的暫態(tài)差(通常稱之為″誤差項(xiàng)″)。
返回到圖1,當(dāng)從可變長(zhǎng)度編碼器110輸出的這種編碼的視頻比特?cái)?shù)據(jù)流被記錄在例如光盤的一個(gè)記錄介質(zhì)上、并且如此的記錄信息被重放用于本地使用時(shí),雖然不是完全無(wú)錯(cuò)誤,但是該解碼的(編碼的)視頻比特?cái)?shù)據(jù)流通常是錯(cuò)誤充分地少,使得不要求附加技術(shù)來(lái)補(bǔ)償在該解碼視頻比特?cái)?shù)據(jù)流中的誤差。這樣一個(gè)編碼的視頻比特?cái)?shù)據(jù)流通常被稱之為一個(gè)″節(jié)目數(shù)據(jù)流″。當(dāng)從可變長(zhǎng)度編碼器110輸出的編碼視頻比特?cái)?shù)據(jù)流由例如衛(wèi)星或電纜傳輸系統(tǒng)傳輸時(shí),或者直接地來(lái)自可變長(zhǎng)度編碼器110或者來(lái)自在其上已經(jīng)記錄了編碼的視頻比特?cái)?shù)據(jù)流的記錄介質(zhì),都將增加在該解碼的視頻比特?cái)?shù)據(jù)流中的誤差的可能性。這樣的一個(gè)編碼的比特?cái)?shù)據(jù)流通常被稱之為″傳輸數(shù)據(jù)流″。
因?yàn)楫?dāng)解碼該編碼的視頻比特?cái)?shù)據(jù)流信號(hào)時(shí),傳統(tǒng)的錯(cuò)誤檢測(cè)和校正系統(tǒng),例如隔行系統(tǒng),要求一個(gè)有效的額外開銷量以及數(shù)據(jù)處理量,所以當(dāng)前視頻解碼系統(tǒng)依靠誤差消除作為相對(duì)的糾錯(cuò)。與嘗試重建損失的或惡化的數(shù)據(jù)的糾錯(cuò)相比,誤差消除的目標(biāo)是產(chǎn)生能夠替代該損失或者惡化數(shù)據(jù)的數(shù)據(jù),其中在由該產(chǎn)生的數(shù)據(jù)建立的圖像中的任何偏差(通常在宏數(shù)據(jù)塊級(jí)別)都不大可能由一個(gè)觀看依靠這樣的誤差消除產(chǎn)生的視頻圖像的觀眾所察覺。
因此,希望提供一種方法和裝置用于把視覺效果的誤差消除到觀眾察覺上可以忽略的程度,并且這種方法和裝置適應(yīng)不同類型的可用信息以及可以用于提供這種誤差消除。
本發(fā)明概述本發(fā)明的一個(gè)目的是提供一種方法和裝置用于在壓縮的視頻信號(hào)解碼期間進(jìn)行誤差消除。
本發(fā)明的進(jìn)一步的目的是提供一種方法和裝置,用于檢測(cè)出不產(chǎn)生非法句法的錯(cuò)誤。
本發(fā)明的一個(gè)特征是使用運(yùn)動(dòng)矢量的暫態(tài)預(yù)測(cè),以便產(chǎn)生一個(gè)宏數(shù)據(jù)塊,其將有效地消除在一個(gè)數(shù)據(jù)流中的誤差。
本發(fā)明的一個(gè)特征是把一個(gè)當(dāng)前宏數(shù)據(jù)塊的DC系數(shù)與一個(gè)預(yù)測(cè)系數(shù)進(jìn)行比較,以便確定已經(jīng)出現(xiàn)的一個(gè)不產(chǎn)生非法句法的誤差。
本發(fā)明的優(yōu)點(diǎn)是改進(jìn)對(duì)于在一個(gè)數(shù)據(jù)流中的誤差進(jìn)行誤差消除的質(zhì)量。
本發(fā)明的進(jìn)一步的優(yōu)點(diǎn)是改進(jìn)對(duì)于在一個(gè)數(shù)據(jù)流中的誤差進(jìn)行檢測(cè)的質(zhì)量。
根據(jù)本發(fā)明的一個(gè)方面,用于消除誤差的一個(gè)裝置包括一個(gè)檢測(cè)器,用于檢測(cè)在表示當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中出現(xiàn)的誤差;一個(gè)系統(tǒng),用于根據(jù)在當(dāng)前宏數(shù)據(jù)塊的正向基準(zhǔn)幀和用于該當(dāng)前宏數(shù)據(jù)塊的正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值而估計(jì)至少一個(gè)運(yùn)動(dòng)矢量;以及一個(gè)系統(tǒng),用于根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊。根據(jù)本發(fā)明的另外一個(gè)方面,一種用于消除誤差的方法包括步驟檢測(cè)在表示當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中出現(xiàn)的誤差;根據(jù)在當(dāng)前宏數(shù)據(jù)塊的正向基準(zhǔn)幀和用于該當(dāng)前宏數(shù)據(jù)塊的正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值而估計(jì)至少一個(gè)運(yùn)動(dòng)矢量;以及根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊。
當(dāng)參照下列附圖以及描述時(shí),本發(fā)明的這些以及其它目的、特征以及優(yōu)點(diǎn)將變得顯見。
附圖的簡(jiǎn)要描述圖1是MPEG 2視頻編碼器的一個(gè)簡(jiǎn)化方框圖。
圖2是在一個(gè)先前幀之內(nèi)的宏數(shù)據(jù)塊的實(shí)例。
圖3是在一個(gè)當(dāng)前幀之內(nèi)的宏數(shù)據(jù)塊的實(shí)例。
圖4是本發(fā)明MPEG 2視頻解碼器的簡(jiǎn)化方框圖。
圖5是本發(fā)明運(yùn)動(dòng)補(bǔ)償系統(tǒng)的一個(gè)框圖。
圖6是一個(gè)狀態(tài)圖,示出地址生成的參考組塊的取得控制以及圖5的控制單元。
圖7是流程圖,表示用于根據(jù)本發(fā)明的估計(jì)宏數(shù)據(jù)塊的方法。
圖8是流程圖,表示用于根據(jù)本發(fā)明的估計(jì)在暫態(tài)域中的運(yùn)動(dòng)矢量的方法。
圖9是流程圖,表示用于根據(jù)本發(fā)明的估計(jì)在空間域中的運(yùn)動(dòng)矢量的方法。
圖10是流程圖,表示使用估算的運(yùn)動(dòng)矢量估計(jì)宏數(shù)據(jù)塊的方法。
圖11是流程圖,表示不使用估算的運(yùn)動(dòng)矢量估計(jì)宏數(shù)據(jù)塊的方法。
優(yōu)選實(shí)施例的詳細(xì)描述參考圖4,示出MPEG 2解碼器400的一個(gè)框圖。解碼器400使用兩個(gè)內(nèi)部總線,GBUS 402和RBUS 404。在本發(fā)明的該優(yōu)選實(shí)施例中,GBUS402是一個(gè)64位總線,被用于在DRAM 406和在下面描述的解碼器400的特定數(shù)據(jù)塊之間的數(shù)據(jù)傳送。在本發(fā)明的該優(yōu)選實(shí)施例中,DRAM406是一個(gè)靜態(tài)DRAM,盡管可以使用其它類型的存儲(chǔ)器。RBUS 404是一個(gè)8比特總線,主要是用于通過(guò)簡(jiǎn)化的指令系統(tǒng)計(jì)算(″RISC″)CPU408控制特定的數(shù)據(jù)塊。如在下面更具體地描述的那樣,RISC CPU 408被耦合到GBUS 402和RBUS 404,其操作控制特定的數(shù)據(jù)塊的功能,而且執(zhí)行視頻比特?cái)?shù)據(jù)流解碼的一部分。
解碼器400包括一個(gè)耦合到GBUS 402和RBUS 404的多路信號(hào)分解器410。類似地,視頻解碼器412、音頻解碼器414、主機(jī)接口416、信箱單元418和輔助圖象/垂直消隱期解碼器420的每一個(gè)都被耦合到GBUS 402和RBUS 404。RBUS控制器422、NTSC/PAL編碼器424、視頻后置濾波器/屏幕顯示系統(tǒng)426和音頻時(shí)鐘產(chǎn)生器428都被耦合到RBUS404。音頻時(shí)鐘產(chǎn)生器428輸出端一個(gè)時(shí)鐘信號(hào)ACLK。存儲(chǔ)控制器430被耦合到GBUS 402。
提供時(shí)鐘信號(hào)SCLK的時(shí)鐘產(chǎn)生器432耦合到主機(jī)接口416。信箱單元418的輸出被提供到屏幕顯示系統(tǒng)426的視頻后置濾波器。輔助圖象/垂直消隱期解碼器420被耦合到屏幕顯示系統(tǒng)426的視頻后置濾波器,其系統(tǒng)輸出到NTSC/PAL編碼器424。輔助圖象/垂直消隱期解碼器420被耦合到屏幕顯示系統(tǒng)426的視頻后置濾波器。主機(jī)處理器434與主機(jī)接口416連接。
在本發(fā)明的優(yōu)選實(shí)施例中,當(dāng)被用于DVD中時(shí),輔助圖象/垂直消隱期解碼器420和信箱單元418是硬布線單元。信箱單元418執(zhí)行對(duì)通過(guò)GBUS 402提供的一個(gè)視頻比特?cái)?shù)據(jù)流的一個(gè)4抽頭垂直濾波和二次取樣,并且操作控制該視頻后置濾波器/屏幕顯示系統(tǒng)426。輔助圖象/垂直消隱期解碼器420將該輔助圖象(″SP″)和在該視頻比特?cái)?shù)據(jù)流中的垂直消隱期(″VBI″)信息解碼。通常,輔助圖象比特?cái)?shù)據(jù)流包括字幕或菜單項(xiàng)。例如包括karaoke和菜單亮光區(qū)。因?yàn)閂BI比特?cái)?shù)據(jù)流和SP比特?cái)?shù)據(jù)流在句法和功能上非常相似(在MPEG 2規(guī)范之下),所以用于解碼比特?cái)?shù)據(jù)流的兩個(gè)類型的功能被結(jié)合到單一輔助圖象/垂直消隱期解碼器420中。所以在本發(fā)明的優(yōu)選實(shí)施例中,VBI比特?cái)?shù)據(jù)流的解碼出現(xiàn)在垂直消隱過(guò)程中,而SP比特?cái)?shù)據(jù)流解碼出現(xiàn)在動(dòng)態(tài)顯示期間。
在本發(fā)明的優(yōu)選實(shí)施例中,在非DVD操作中,該輔助圖象/垂直消隱期解碼器420解碼該比特?cái)?shù)據(jù)流并且顯示在屏幕上(″OSD″)。但是在DVD操作中,OSD比特?cái)?shù)據(jù)流不由屏幕顯示系統(tǒng)426的視頻后置濾波器解碼。
RISC CPU 408將該視頻比特?cái)?shù)據(jù)流解析,以便控制解碼器400。RISC CPU 408還部分地將該視頻比特?cái)?shù)據(jù)流(例如解碼比如標(biāo)題的高層數(shù)據(jù))解碼并且通過(guò)RBUS 404控制在解碼器400中的各種其它單元。解析的一部分也由輔助圖象/視頻消隱期解碼器420執(zhí)行。更詳細(xì)地,RISC CPU 408能夠被用于通過(guò)RBUS 404改變一個(gè)SP窗口的位置。所以,用戶能夠通過(guò)一個(gè)到CPU 404的命令,以y坐標(biāo)作為一參數(shù)而上下移動(dòng)SP窗口。
信箱單元418實(shí)質(zhì)上是一個(gè)具有可下載系數(shù)的垂直抽樣濾波器。信箱單元418抽取具有4∶3比例的一個(gè)幀的有效畫面。因此對(duì)于PAL序列來(lái)說(shuō),信箱單元418把一個(gè)720×576幀轉(zhuǎn)換成一個(gè)720×432幀。對(duì)于NTSC序列來(lái)說(shuō),信箱單元418把一個(gè)720×480幀轉(zhuǎn)換成一個(gè)720×360幀。但是,在兩者情況中的有效的圖象面積都是相對(duì)于一個(gè)顯示區(qū)集中的。
主機(jī)處理器434和RISC CPU 408使用DRAM 406以便交換信息、命令和狀態(tài)信息。在本發(fā)明的優(yōu)選實(shí)施例中,處理器434和CPU 408具有彼此中斷的能力。操作中,CPU 408提供一個(gè)主機(jī)命令分析程序執(zhí)行來(lái)自主機(jī)處理器434的命令。在一個(gè)命令的執(zhí)行期間由主機(jī)處理器434執(zhí)行的典型順序是1.主機(jī)處理器434把一個(gè)命令寫到DRAM 406并且中斷CPU 408。
2.CPU 408來(lái)自DRAM 406讀出命令和參數(shù)。
3.CPU 408通過(guò)把一個(gè)狀態(tài)變量寫入到DRAM 406承認(rèn)該命令。
4.CPU 408的命令分析程序解析該命令并且執(zhí)行該命令。
5.一旦結(jié)束該命令,CPU 408中斷主機(jī)處理器434以便報(bào)告狀態(tài)。另外,CPU 408針對(duì)每個(gè)場(chǎng)同步輪詢一個(gè)DRAM命令緩存器(沒示出)。該緩存器是一個(gè)環(huán)形緩存器,其中寫指針由主機(jī)處理器434保持而讀指針由CPU 408保持。
視頻解碼器412包括一個(gè)反余弦離散的變換器、可變長(zhǎng)度解碼器436、運(yùn)動(dòng)補(bǔ)償單元438和離散余弦反變換器440。視頻解碼器412解碼通過(guò)GBUS 402接收的一個(gè)編碼的視頻數(shù)據(jù)流,并且通過(guò)RBUS 404提供一個(gè)解碼的數(shù)據(jù)流到NTSC/PAL編碼器424。NTSC/PAL編碼器把解碼的數(shù)據(jù)流轉(zhuǎn)換成一個(gè)模擬信號(hào),適合于在具有NTSC和/或PAL信號(hào)輸入端的電視監(jiān)視器上顯示。
多路信號(hào)分解器410在數(shù)據(jù)輸入解碼器400上工作。特別地,這種數(shù)據(jù)是處于數(shù)據(jù)包的形式,并且包括音頻、視頻并且多路轉(zhuǎn)換包的其它數(shù)據(jù)流。多路信號(hào)分解器410選擇期望的音頻數(shù)據(jù)包、視頻數(shù)據(jù)包和其它期望的信息包,但是抑制在該視頻比特?cái)?shù)據(jù)流中的其它數(shù)據(jù)包。例如,表示幾種語(yǔ)言的音頻數(shù)據(jù)包可以存在于該視頻比特?cái)?shù)據(jù)流中?;趤?lái)自主機(jī)處理器434的命令,多路信號(hào)分解器410只選擇那些對(duì)應(yīng)于被選定用于表現(xiàn)相應(yīng)視頻數(shù)據(jù)包的音頻數(shù)據(jù)包。
主機(jī)接口416提供用于主機(jī)處理器434的無(wú)隙的接口。RBUS控制器422在RBUS 404上發(fā)送信息并且作為一個(gè)用于RBUS 404的裁決器。時(shí)鐘產(chǎn)生器432提供一個(gè)時(shí)鐘信號(hào)SCLK到在解碼器400中的各種單元,而音頻時(shí)鐘產(chǎn)生器428提供一個(gè)時(shí)鐘信號(hào)ACLK到一個(gè)數(shù)字-模擬轉(zhuǎn)換器(沒示出),該數(shù)字-模擬轉(zhuǎn)換器通過(guò)GBUS 402接收來(lái)自音頻解碼器414的數(shù)字聲頻信號(hào)。這些數(shù)字聲頻信號(hào)被轉(zhuǎn)換成其能夠被人感覺的模擬信號(hào)。
現(xiàn)參考圖5解釋圖4的視頻解碼器412的運(yùn)動(dòng)補(bǔ)償系統(tǒng)。運(yùn)動(dòng)補(bǔ)償單元500包括一個(gè)地址產(chǎn)生和控制單元502。該地址產(chǎn)生和控制單元502對(duì)應(yīng)于圖4的存儲(chǔ)控制器430。地址產(chǎn)生和控制單元502接受來(lái)自可變長(zhǎng)度解碼器436的運(yùn)動(dòng)矢量并且計(jì)算參考宏數(shù)據(jù)塊的一個(gè)初始地址?;谶@種計(jì)算,地址產(chǎn)生并且控制單元502發(fā)出一個(gè)數(shù)據(jù)傳送請(qǐng)求到存儲(chǔ)控制器單元430。在本發(fā)明的優(yōu)選實(shí)施例中,數(shù)據(jù)傳送在對(duì)準(zhǔn)在8字節(jié)邊界的64比特(8字節(jié))分段出現(xiàn)。當(dāng)數(shù)據(jù)從DRAM 406返回時(shí),該數(shù)據(jù)被鎖存在該運(yùn)動(dòng)補(bǔ)償單元500中。這些鎖存數(shù)據(jù)的每一8比特單元被隨即運(yùn)行通過(guò)水平并且垂直半象素濾波器504,并且該產(chǎn)生的數(shù)據(jù)被存儲(chǔ)在預(yù)測(cè)RAM(隨機(jī)存取存儲(chǔ)器)506中。
由于基準(zhǔn)數(shù)據(jù)塊的初始地址可能不是對(duì)準(zhǔn)在該8字節(jié)定位地址,所以在預(yù)測(cè)RAM 506的輸入端需要進(jìn)行多路復(fù)用。對(duì)于I圖象來(lái)說(shuō)不需要預(yù)測(cè),因此該運(yùn)動(dòng)補(bǔ)償單元就處在空閑狀態(tài)。但是對(duì)于P和B圖象來(lái)說(shuō),是需要預(yù)測(cè)數(shù)據(jù)以便由解碼該重建單元508重建解碼的圖象數(shù)據(jù)。在B圖象的情況下,該預(yù)測(cè)數(shù)據(jù)是通過(guò)對(duì)于兩個(gè)這種預(yù)測(cè)進(jìn)行平均而獲得的,就是說(shuō)在此時(shí)的半象素濾波器的輸出和來(lái)自預(yù)測(cè)RAM 506的在一個(gè)正向預(yù)測(cè)之后存儲(chǔ)值進(jìn)行平均而獲得的。重建單元508支持該半象素濾波器504進(jìn)行的平均。
一個(gè)估計(jì)RAM 510保存在該離散余弦反變換器440中變換的系數(shù)數(shù)據(jù)。此時(shí)的運(yùn)動(dòng)補(bǔ)償單元500發(fā)出一個(gè)數(shù)據(jù)傳送請(qǐng)求并且開始重建。該重建主要地包括把來(lái)自存儲(chǔ)在估計(jì)RAM 510中的離散余弦反變換的輸出的符號(hào)數(shù)目添加到用于非幀內(nèi)數(shù)據(jù)塊的半象素濾波器504的輸出(存儲(chǔ)在預(yù)測(cè)RAM 506中)。但是對(duì)于幀內(nèi)數(shù)據(jù)塊來(lái)說(shuō),不需要該添加。在這種情況下,當(dāng)出現(xiàn)圖象的重建時(shí),在其被鎖存在該重建單元508的輸出端以前,該加法器輸出被削波。
現(xiàn)參考圖6的狀態(tài)圖,解釋一個(gè)狀態(tài)機(jī)600,其表示該地址產(chǎn)生和控制單元502的關(guān)于從DRAM406傳送基準(zhǔn)圖像數(shù)據(jù)的功能以及一個(gè)宏數(shù)據(jù)塊的結(jié)構(gòu)。從一個(gè)起始狀態(tài)602開始,狀態(tài)機(jī)600前進(jìn)到一個(gè)獲取地址狀態(tài)604。如果沒有運(yùn)動(dòng)補(bǔ)償被用于構(gòu)成該宏數(shù)據(jù)塊,則狀態(tài)機(jī)600進(jìn)入一個(gè)y0等待狀態(tài)606。如果只有反向運(yùn)動(dòng)補(bǔ)償被使用,則狀態(tài)機(jī)600進(jìn)入狀態(tài)608以便獲取或取得一個(gè)先前的宏數(shù)據(jù)塊b,其將用作一個(gè)基準(zhǔn)宏數(shù)據(jù)塊。但是如果正向運(yùn)動(dòng)補(bǔ)償被使用,則隨即狀態(tài)機(jī)600進(jìn)入狀態(tài)610以便獲取或取得一個(gè)正向宏數(shù)據(jù)塊f,其將用作一個(gè)基準(zhǔn)宏數(shù)據(jù)塊。狀態(tài)機(jī)600隨即進(jìn)入y0等待狀態(tài)606。如果基于正向宏數(shù)據(jù)塊f以及先前的宏數(shù)據(jù)塊b兩者而構(gòu)成該宏數(shù)據(jù)塊,則狀態(tài)機(jī)600隨即從狀態(tài)610進(jìn)入到狀態(tài)608,以便也獲取或取得一個(gè)先前的宏數(shù)據(jù)塊。在這樣一個(gè)實(shí)例中,正向以及先前的宏數(shù)據(jù)塊都將用作基準(zhǔn)宏數(shù)據(jù)塊。
在狀態(tài)606,狀態(tài)機(jī)600等待關(guān)于一個(gè)基準(zhǔn)宏數(shù)據(jù)塊或幾個(gè)宏數(shù)據(jù)塊的將要被接收的亮度數(shù)據(jù)。在狀態(tài)612,重建將要被構(gòu)成的宏數(shù)據(jù)塊的亮度部分。在狀態(tài)614,狀態(tài)機(jī)600等待關(guān)于一個(gè)基準(zhǔn)宏數(shù)據(jù)塊或幾個(gè)宏數(shù)據(jù)塊的將要被接收的色度數(shù)據(jù)。在狀態(tài)618,出現(xiàn)將要被構(gòu)成的宏數(shù)據(jù)塊的色度部分的重建。一旦色度數(shù)據(jù)重建結(jié)束,狀態(tài)機(jī)600進(jìn)入到狀態(tài)620,等候一個(gè)指令以便構(gòu)成一個(gè)新宏數(shù)據(jù)塊。
類似于先前構(gòu)成宏數(shù)據(jù)塊的情況,狀態(tài)機(jī)600隨后獲取地址1狀態(tài)622。如果沒有運(yùn)動(dòng)補(bǔ)償被用于構(gòu)成該宏數(shù)據(jù)塊,則狀態(tài)機(jī)600進(jìn)入一個(gè)y1等待狀態(tài)624。如果只有反向運(yùn)動(dòng)補(bǔ)償被使用,則狀態(tài)機(jī)600進(jìn)入狀態(tài)626以便獲取或取得一個(gè)先前的宏數(shù)據(jù)塊b1,其將用作一個(gè)基準(zhǔn)宏數(shù)據(jù)塊。但是如果正向運(yùn)動(dòng)補(bǔ)償被使用,則隨即狀態(tài)機(jī)600進(jìn)入狀態(tài)628以便獲取或取得一個(gè)正向宏數(shù)據(jù)塊f1,其將用作一個(gè)基準(zhǔn)宏數(shù)據(jù)塊。狀態(tài)機(jī)600隨即進(jìn)入y1等待狀態(tài)624。如果基于正向宏數(shù)據(jù)塊f1以及先前的宏數(shù)據(jù)塊b1兩者而構(gòu)成該新宏數(shù)據(jù)塊,則狀態(tài)機(jī)600隨即從狀態(tài)628進(jìn)入到狀態(tài)626,以便也獲取或取得一個(gè)先前的宏數(shù)據(jù)塊b1。在這樣一個(gè)實(shí)例中,正向宏數(shù)據(jù)塊f1以及先前的宏數(shù)據(jù)塊b1都將用作基準(zhǔn)宏數(shù)據(jù)塊。
在狀態(tài)624,狀態(tài)機(jī)600等待關(guān)于一個(gè)基準(zhǔn)宏數(shù)據(jù)塊或幾個(gè)宏數(shù)據(jù)塊的將要被接收的亮度數(shù)據(jù)。在狀態(tài)630,重建將要被構(gòu)成的宏數(shù)據(jù)塊的亮度部分。在狀態(tài)632,狀態(tài)機(jī)600等待關(guān)于一個(gè)基準(zhǔn)宏數(shù)據(jù)塊或幾個(gè)宏數(shù)據(jù)塊的將要被接收的色度數(shù)據(jù)。在狀態(tài)634,出現(xiàn)將要被構(gòu)成的宏數(shù)據(jù)塊的色度部分的重建。一旦色度數(shù)據(jù)重建結(jié)束,狀態(tài)機(jī)600則回到起始狀態(tài)602。
隨著圖6描述的狀態(tài)轉(zhuǎn)移,一旦如在狀態(tài)604或622中獲得一個(gè)地址,就進(jìn)行取樣以便確定是否需要對(duì)于一個(gè)宏數(shù)據(jù)塊作運(yùn)動(dòng)補(bǔ)償。對(duì)于需要運(yùn)動(dòng)補(bǔ)償基準(zhǔn)計(jì)算的編碼的圖象來(lái)說(shuō),狀態(tài)機(jī)600將等待,直到可變長(zhǎng)度解碼器436的運(yùn)動(dòng)矢量FIFO存儲(chǔ)器不被空的為止。地址產(chǎn)生和控制單元502隨后產(chǎn)生一個(gè)對(duì)于運(yùn)動(dòng)矢量的請(qǐng)求。一個(gè)用于X(水平)而一個(gè)用于Y(垂直)的運(yùn)動(dòng)矢量成分的兩個(gè)連續(xù)請(qǐng)求被作出。一旦該地址產(chǎn)生和控制單元502獲得兩個(gè)運(yùn)動(dòng)矢量的成分,則計(jì)算出該基準(zhǔn)數(shù)據(jù)塊的地址。地址產(chǎn)生和控制單元502隨后發(fā)送一個(gè)對(duì)于數(shù)據(jù)傳送的請(qǐng)求到存儲(chǔ)控制器單元。
如上所述,當(dāng)運(yùn)動(dòng)矢量指向一個(gè)子象素位置而不是一個(gè)準(zhǔn)確的象素位置時(shí),為了更精確地表示一個(gè)P或B圖象,需要產(chǎn)生半象素?cái)?shù)據(jù)。
在本發(fā)明的優(yōu)選實(shí)施例中,誤差消除的最小單元是一個(gè)數(shù)據(jù)片一個(gè)數(shù)據(jù)片包括一系列連續(xù)的宏數(shù)據(jù)塊。為了消除這種誤差,使用暫態(tài)預(yù)測(cè)或空間預(yù)測(cè)估算運(yùn)動(dòng)矢量。在空間預(yù)測(cè)的情況下,來(lái)自成功解碼宏數(shù)據(jù)塊的象素被復(fù)制以便使用在對(duì)于具有一個(gè)數(shù)據(jù)誤差的宏數(shù)據(jù)塊的解碼中。在暫態(tài)預(yù)測(cè)的情況下,來(lái)自成功解碼宏數(shù)據(jù)塊的運(yùn)動(dòng)矢量被用于預(yù)測(cè)一個(gè)新運(yùn)動(dòng)矢量場(chǎng),以便將該具有一個(gè)數(shù)據(jù)誤差的宏數(shù)據(jù)塊解碼。
更詳細(xì)地說(shuō),如果在對(duì)于一個(gè)編碼的視頻比特?cái)?shù)據(jù)流進(jìn)行解碼的過(guò)程中,一個(gè)幀K丟失一個(gè)宏數(shù)據(jù)塊或一個(gè)宏數(shù)據(jù)塊的一部分(如由于一個(gè)數(shù)據(jù)誤差),則該基本概念是如果如果存在一個(gè)來(lái)自幀K-2的一個(gè)目標(biāo)的運(yùn)動(dòng)(即在幀K前兩幀),則能夠假定該運(yùn)動(dòng)將很可能從幀K-2繼續(xù)直到幀K。因此,假定該運(yùn)動(dòng)將基本上是線性的?;谶@種假定,本發(fā)明估算象素和運(yùn)動(dòng)矢量,這種估計(jì)方法取決于對(duì)于這種估計(jì)來(lái)說(shuō)可用的數(shù)據(jù)。
在使用這種估算象素和/或運(yùn)動(dòng)矢量中,實(shí)際的誤差消除被推遲到以后的一個(gè)數(shù)據(jù)片出現(xiàn)為止。當(dāng)測(cè)到一個(gè)誤差時(shí),這種誤差連同其位置一起被記錄。特別地,關(guān)于這種誤差和其位置的數(shù)據(jù)被寫入到一個(gè)寄存器,并且在隨后的第二或第三數(shù)據(jù)片之后,發(fā)出一個(gè)中斷指令,以便實(shí)現(xiàn)使用估算的象素和/或運(yùn)動(dòng)矢量的該宏數(shù)據(jù)塊的處理。在本發(fā)明的優(yōu)選實(shí)施例中,當(dāng)被應(yīng)用到隔行視頻圖象時(shí),盡管每宏數(shù)據(jù)塊的四個(gè)運(yùn)動(dòng)矢量可供使用,但是只有兩個(gè)運(yùn)動(dòng)矢量被利用,詳細(xì)描述如下。
現(xiàn)在參考圖7,更詳細(xì)地解釋本發(fā)明的誤差消除。一旦已經(jīng)檢測(cè)到一個(gè)誤差并且已經(jīng)發(fā)出一個(gè)中斷指令,則誤差消除算法起始于步驟700。該運(yùn)動(dòng)補(bǔ)償單元438首先在步驟702在時(shí)域試圖估算運(yùn)動(dòng)矢量。圖8示出這種一種方法。該算法起始于步驟800。在步驟802,運(yùn)動(dòng)補(bǔ)償單元438確定是否可以得到一個(gè)解碼的運(yùn)動(dòng)矢量用于由矢量p定位的宏數(shù)據(jù)塊的正向基準(zhǔn)幀。該運(yùn)動(dòng)矢量被指定為MV(k-m,
),其中k是當(dāng)前幀,而m是在當(dāng)前幀和正向基準(zhǔn)幀之間的索引差值。如果否,則不執(zhí)行在該時(shí)域中的運(yùn)動(dòng)矢量估計(jì)并且該算法到步驟804,指示出是一個(gè)失敗的嘗試。如果可得到一個(gè)解碼運(yùn)動(dòng)矢量用于在由該矢量p定位的宏數(shù)據(jù)塊的一個(gè)正向基準(zhǔn)幀,則算法進(jìn)到步驟806,確定是否可得到用于在下列二者之間的差值的一個(gè)解碼運(yùn)動(dòng)矢量,這二者是(1)在由該矢量p定位的宏數(shù)據(jù)塊的正向基準(zhǔn)幀;以及(2)在由該矢量p定位的宏數(shù)據(jù)塊的一個(gè)正向基準(zhǔn)幀的一個(gè)解碼運(yùn)動(dòng)矢量;其中這種解碼的運(yùn)動(dòng)矢量是由MV(k-m,
)表示的。如果否,該算法進(jìn)入步驟804以便指示出是一個(gè)失敗的嘗試。如果可得到,則算法進(jìn)入步驟808,在該步驟確定一個(gè)用于在由矢量p定位的宏數(shù)據(jù)塊之處的當(dāng)前幀、第k個(gè)幀的估算運(yùn)動(dòng)矢量。如此估算的運(yùn)動(dòng)矢量取值相等于在下列二者之間的差值(1)在由該矢量p定位的宏數(shù)據(jù)塊的正向基準(zhǔn)幀;以及(2)在由該矢量p定位的宏數(shù)據(jù)塊的一個(gè)正向基準(zhǔn)幀的一個(gè)解碼運(yùn)動(dòng)矢量。該算法隨后進(jìn)入步驟810,指示在該時(shí)域中的一個(gè)成功的運(yùn)動(dòng)矢量估計(jì)。
返回圖7,在步驟704確定在時(shí)域中的運(yùn)動(dòng)矢量估計(jì)是否成功。如果是,則算法進(jìn)入步驟706,其中基于該估算的運(yùn)動(dòng)矢量把用于對(duì)主題宏數(shù)據(jù)塊進(jìn)行估計(jì)的運(yùn)動(dòng)矢量更新。如果在時(shí)域中的運(yùn)動(dòng)矢量估計(jì)是不成功的,則算法進(jìn)入步驟708,在空間域執(zhí)行運(yùn)動(dòng)矢量估計(jì)。用于如此估計(jì)的算法在圖9中示出。該算法起始于圖9的步驟900并且進(jìn)入步驟902,其中確定是否可得到用于定位在該正在估計(jì)的宏數(shù)據(jù)塊之上的宏數(shù)據(jù)塊的一個(gè)解碼的運(yùn)動(dòng)矢量。這種運(yùn)動(dòng)矢量是由MV(k,
(1,0))表示的。如果否,則在步驟904指示出是一個(gè)失敗。如果可得到用于定位在該正在估計(jì)的宏數(shù)據(jù)塊之上的宏數(shù)據(jù)塊的一個(gè)解碼的運(yùn)動(dòng)矢量,則用于當(dāng)前幀、由矢量p-MV(k,
)定位的宏數(shù)據(jù)塊之處的第k幀的運(yùn)動(dòng)矢量在步驟906被估算為等于該解碼的運(yùn)動(dòng)矢量,定位在緊鄰該正在估計(jì)的宏數(shù)據(jù)塊之上的宏數(shù)據(jù)塊運(yùn)動(dòng)矢量MV(k,
(1,0)),其中(1,0)是指示一個(gè)行索引為1而列索引為0的矢量。該算法隨后進(jìn)入步驟908,指示在該空間域中的一個(gè)連續(xù)的運(yùn)動(dòng)矢量估計(jì)。
再一次返回圖7,在步驟710,作出是否已經(jīng)成功地在空間域?qū)崿F(xiàn)一個(gè)運(yùn)動(dòng)矢量估計(jì)的確定。如果已經(jīng)作出這樣的一個(gè)確定(步驟908),則隨后在步驟706更新用于該當(dāng)前宏數(shù)據(jù)塊的運(yùn)動(dòng)矢量。隨后在步驟712僅使用估算的運(yùn)動(dòng)矢量估算該當(dāng)前宏數(shù)據(jù)塊,不論該運(yùn)動(dòng)矢量是在步驟702在時(shí)域估算的或是在步驟708在空間域估算的。
如在圖10中示出,在步驟1000開始利用該估算的運(yùn)動(dòng)矢量估計(jì)宏數(shù)據(jù)塊。在步驟1002,用于當(dāng)前幀的估算的宏數(shù)據(jù)塊、由估算的運(yùn)動(dòng)矢量p-MB(k,
)定位的宏數(shù)據(jù)塊之處的第k幀被估算為等于下面兩者的差值的解碼的宏數(shù)據(jù)塊(1)由矢量P定位在該宏數(shù)據(jù)塊的正向基準(zhǔn)幀;(2)用于當(dāng)前幀、由矢量p定位在該宏數(shù)據(jù)塊之處的第k幀的估算運(yùn)動(dòng)矢量。解碼的宏數(shù)據(jù)塊被指定為MB(k-m,
-MV(k,
)),其中m是在當(dāng)前幀和一個(gè)正向基準(zhǔn)幀之間的幀索引差值。一旦在步驟712完成該當(dāng)前宏數(shù)據(jù)塊的估計(jì),該算法在步驟714結(jié)束。
返回到圖7的步驟710,如果在空間域中的運(yùn)動(dòng)矢量估計(jì)不成功,則在步驟716在不使用一個(gè)估算的運(yùn)動(dòng)矢量的條件下估算當(dāng)前宏數(shù)據(jù)塊。步驟716在圖11中詳述。在圖11中,不使用一個(gè)估算的運(yùn)動(dòng)矢量的宏數(shù)據(jù)塊估計(jì)起始于步驟1100。在步驟1102,確定是否可得到用于由矢量p,MB(k-1,
)定位的當(dāng)前幀(第k幀是該當(dāng)前幀)前面的幀的宏數(shù)據(jù)塊。如果可得到這樣的宏數(shù)據(jù)塊,則在步驟1104把由矢量p定位的該當(dāng)前宏數(shù)據(jù)塊估算為相等于用于在由該矢量p定位的當(dāng)前幀前面的幀的宏數(shù)據(jù)塊。隨后算法在步驟714結(jié)束。
如果得不到用于由矢量p定位的當(dāng)前幀(第k幀是該當(dāng)前幀)前面的幀的宏數(shù)據(jù)塊,則在步驟1106確定是否可得到用于由矢量p定位但是由在同一個(gè)列中-1行索引、MB(k,
-(1,0))是P的當(dāng)前幀的宏數(shù)據(jù)塊,其中(1,0)是把一個(gè)行指數(shù)指示為1和列指數(shù)指示為0的一個(gè)矢量。如果可得到這樣的一個(gè)宏數(shù)據(jù)塊,則在步驟1108把當(dāng)前宏數(shù)據(jù)塊(用于當(dāng)前幀、由矢量p定位的第k幀)估算為相等于用于由該矢量p定位的當(dāng)前幀的宏數(shù)據(jù)塊,但是由負(fù)1行和同一個(gè)列、MP(k,
-(1,0))索引。隨后算法在步驟714結(jié)束。
如果確定得不到用于由矢量p定位但是由在同一個(gè)列中-1行索引的當(dāng)前幀的宏數(shù)據(jù)塊,則在步驟1110確定是否可得到用于緊鄰在將被估算得宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊MB(k,p+(1,0)),其中(1,0)是把一個(gè)行指數(shù)指示為1和列指數(shù)指示為0的一個(gè)矢量。如果可得到用于緊鄰在將被估算得宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊,則在步驟1112把由矢量p定位的宏數(shù)據(jù)塊之處的用于該當(dāng)前幀、第k幀的估算的宏數(shù)據(jù)塊估算為相等于用于緊鄰將要估算的宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊,MB(k,
+(1,0))。該算法隨后在步驟714結(jié)束。在得不到用于緊鄰在將被估算得宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊的情況下,則沒有估算運(yùn)動(dòng)矢量的宏數(shù)據(jù)塊估計(jì)失敗,如步驟1114表明。在這種情況下,該宏數(shù)據(jù)塊可被保持為空白。
應(yīng)該理解,盡管本發(fā)明已經(jīng)針對(duì)編碼的視頻比特?cái)?shù)據(jù)流的解碼作出了描述,但是本發(fā)明也適用于一個(gè)視頻比特?cái)?shù)據(jù)流的編碼,其中在編碼期間或在之后作誤差檢測(cè),并且該誤差在記錄或傳輸之前被消除。
盡管只是詳細(xì)描寫了特定的實(shí)施例,但是本專業(yè)的普通的技術(shù)人員將無(wú)疑理解許多不背離于此指教的改進(jìn)。但是所有的這種改進(jìn)都包含在所附的權(quán)利要求中。
權(quán)利要求
1.一種在對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的方法,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該方法包括步驟檢測(cè)(700)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn);根據(jù)在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和在當(dāng)前宏數(shù)據(jù)塊(702)之處用于該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差,估計(jì)至少一個(gè)運(yùn)動(dòng)矢量;和根據(jù)估算的至少一個(gè)運(yùn)動(dòng)矢量(712)估計(jì)該當(dāng)前宏數(shù)據(jù)塊。
2.權(quán)利要求1的方法,其中該被估算的至少一個(gè)運(yùn)動(dòng)矢量等于在當(dāng)前宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于在當(dāng)前宏數(shù)據(jù)塊(808)之處的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差。
3.權(quán)利要求1的方法,其中根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊的步驟包括估算在等于一個(gè)差值的解碼的宏數(shù)據(jù)塊的估算的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊,該差值是在由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的估算的運(yùn)動(dòng)矢量之間的差值(1002)。
4.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的方法,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該方法包括步驟檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn)(700);根據(jù)用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼運(yùn)動(dòng)矢量,估計(jì)至少一個(gè)運(yùn)動(dòng)矢量(708);和根據(jù)估算的至少一個(gè)運(yùn)動(dòng)矢量(712)估計(jì)該當(dāng)前宏數(shù)據(jù)塊。
5.權(quán)利要求4的方法,其中該估算的至少一個(gè)運(yùn)動(dòng)矢量相等于用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼運(yùn)動(dòng)矢量(906)。
6.權(quán)利要求4的方法,其中根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊的步驟包括估算在等于一個(gè)差值的解碼的宏數(shù)據(jù)塊的估算的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊,該差值是在由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的估算的運(yùn)動(dòng)矢量之間的差值(1002)。
7.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的方法,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該方法包括步驟檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn)(1100);和如果可得到用于由一個(gè)矢量定位的當(dāng)前幀前面的一個(gè)幀的宏數(shù)據(jù)塊(1002),則估算相等于用于由該矢量定位的當(dāng)前幀前面的幀的宏數(shù)據(jù)塊(1004)的矢量定位的當(dāng)前宏數(shù)據(jù)塊;否則(1002)如果可得到用于由一個(gè)矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊(1106),則估算相等于由該矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊(1108)的當(dāng)前宏數(shù)據(jù)塊;否則(1106),如果可得到用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的一個(gè)解碼的宏數(shù)據(jù)塊(1110),則估算用于相等于用于將要被估算的該宏數(shù)據(jù)塊之上緊鄰定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊的該當(dāng)前幀的當(dāng)前宏數(shù)據(jù)塊(1112)。
8.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的方法,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該方法包括步驟檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn)(700);如果可得到在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和用于在該當(dāng)前宏數(shù)據(jù)塊之處的該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值(806),則估算相等于在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和用于在該當(dāng)前宏數(shù)據(jù)塊之處的該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值(808)的至少一個(gè)運(yùn)動(dòng)矢量;并且,如果不是(806),則如果可得到用于定位在緊鄰當(dāng)前宏數(shù)據(jù)塊之上的一個(gè)解碼的運(yùn)動(dòng)矢量(902),則估算相等于該用于定位在緊鄰當(dāng)前宏數(shù)據(jù)塊之上的一個(gè)解碼的運(yùn)動(dòng)矢量的至少一個(gè)運(yùn)動(dòng)矢量(906);估算相等于由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀與用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的該估算的運(yùn)動(dòng)矢量的差值(1002)的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊;并且如果不能得到用于在該當(dāng)前宏數(shù)據(jù)塊之上緊鄰定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼的運(yùn)動(dòng)矢量(710),則如果可得到用于由一個(gè)矢量定位的一個(gè)當(dāng)前幀前面的一幀的一個(gè)宏數(shù)據(jù)塊(1102),則估算相等于用于由該矢量定位的該當(dāng)前幀前面的該幀的宏數(shù)據(jù)塊(1104)的矢量定位的該當(dāng)前宏數(shù)據(jù)塊(1104);并且如果不是(1102),則如果可得到用于由一個(gè)矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊(1106),則估算相等于由該矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊的當(dāng)前宏數(shù)據(jù)塊(1108);并且,如果不是(1106),則如果可得到用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的一個(gè)解碼的宏數(shù)據(jù)塊(1110),則估算相等于用于將要被估算的該宏數(shù)據(jù)塊之上緊鄰定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊的當(dāng)前幀的當(dāng)前宏數(shù)據(jù)塊(1112)。
9.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的設(shè)備,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該設(shè)備包括一個(gè)檢測(cè)器(700),檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn);裝置(702),根據(jù)在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和在當(dāng)前宏數(shù)據(jù)塊之處用于該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差,估計(jì)至少一個(gè)運(yùn)動(dòng)矢量;和裝置(712),根據(jù)估算的至少一個(gè)運(yùn)動(dòng)矢量估計(jì)該當(dāng)前宏數(shù)據(jù)塊。
10.權(quán)利要求9的設(shè)備,其中該被估算的至少一個(gè)運(yùn)動(dòng)矢量等于在當(dāng)前宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差(808)。
11.權(quán)利要求9的設(shè)備,其中根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊的裝置包括裝置(1002),估算等于一個(gè)差值的解碼的宏數(shù)據(jù)塊的估算的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊,該差值是在由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的估算的運(yùn)動(dòng)矢量之間的差值。
12.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的設(shè)備,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該設(shè)備包括一個(gè)檢測(cè)器(700),檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn);裝置(708),根據(jù)用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼運(yùn)動(dòng)矢量,估計(jì)至少一個(gè)運(yùn)動(dòng)矢量;和裝置(712),根據(jù)估算的至少一個(gè)運(yùn)動(dòng)矢量估計(jì)該當(dāng)前宏數(shù)據(jù)塊。
13.權(quán)利要求12的設(shè)備,其中估算的至少一個(gè)運(yùn)動(dòng)矢量相等于用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼運(yùn)動(dòng)矢量(906)。
14.權(quán)利要求12的設(shè)備,其中根據(jù)該估算的至少一個(gè)運(yùn)動(dòng)矢量而估計(jì)該當(dāng)前宏數(shù)據(jù)塊的裝置包括裝置(1002),估算等于一個(gè)差值的解碼的宏數(shù)據(jù)塊的估算的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊,該差值是在由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀和用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的估算的運(yùn)動(dòng)矢量之間的差值。
15.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的設(shè)備,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該設(shè)備包括一個(gè)檢測(cè)器(1100),檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn);和裝置(1102),用于確定是否可得到用于由一個(gè)矢量定位的當(dāng)前幀前面的一個(gè)幀的宏數(shù)據(jù)塊,如果此裝置(1102)可得到,則估算相等于用于由該矢量定位的當(dāng)前幀前面的該幀的宏數(shù)據(jù)塊的矢量定位的該當(dāng)前宏數(shù)據(jù)塊(1104);否則(1102),如果可得到用于由一個(gè)矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊(1106),則估算相等于由該矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊的該當(dāng)前宏數(shù)據(jù)塊(1108);否則(1106),如果可得到用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的一個(gè)解碼的宏數(shù)據(jù)塊(1110),則估算相等于用于將要被估算的該宏數(shù)據(jù)塊之上緊鄰定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊的當(dāng)前幀的當(dāng)前宏數(shù)據(jù)塊(1112)。
16.一種對(duì)編碼的視頻比特?cái)?shù)據(jù)流解碼的同時(shí)消除誤差的設(shè)備,其中的當(dāng)前宏數(shù)據(jù)塊由基準(zhǔn)幀的數(shù)據(jù)和至少一個(gè)運(yùn)動(dòng)矢量表示,該設(shè)備包括一個(gè)檢測(cè)器(700),檢測(cè)在表示該當(dāng)前宏數(shù)據(jù)塊的數(shù)據(jù)中的一個(gè)誤差的出現(xiàn);裝置(806),用于確定是否可得到在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和用于在該當(dāng)前宏數(shù)據(jù)塊之處的該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值,如果可得到該裝置(806),則估算相等于在當(dāng)前宏數(shù)據(jù)塊之處的一個(gè)正向基準(zhǔn)幀和用于在該當(dāng)前宏數(shù)據(jù)塊之處的該正向基準(zhǔn)幀的一個(gè)解碼的運(yùn)動(dòng)矢量之間的差值的至少一個(gè)運(yùn)動(dòng)矢量(808);如果,得不到(806),則如果可得到用于定位在緊鄰當(dāng)前宏數(shù)據(jù)塊之上的一個(gè)解碼的運(yùn)動(dòng)矢量(902),則估算相等于該用于定位在緊鄰當(dāng)前宏數(shù)據(jù)塊之上的一個(gè)解碼的運(yùn)動(dòng)矢量的至少一個(gè)運(yùn)動(dòng)矢量(906);和裝置(1002),用于估算相等于由該矢量定位的宏數(shù)據(jù)塊之處的正向基準(zhǔn)幀與用于由該矢量定位的宏數(shù)據(jù)塊之處的當(dāng)前幀的該估算的運(yùn)動(dòng)矢量的差值的該估算的運(yùn)動(dòng)矢量定位的一個(gè)宏數(shù)據(jù)塊之處的當(dāng)前宏數(shù)據(jù)塊;并且如果不能得到用于在該當(dāng)前宏數(shù)據(jù)塊之上緊鄰定位的一個(gè)宏數(shù)據(jù)塊的一個(gè)解碼的運(yùn)動(dòng)矢量(710),則如果可得到用于由一個(gè)矢量定位的一個(gè)當(dāng)前幀前面的一幀的一個(gè)宏數(shù)據(jù)塊(1102),則估算相等于用于由該矢量定位的該當(dāng)前幀前面的該幀的宏數(shù)據(jù)塊的矢量定位的當(dāng)前宏數(shù)據(jù)塊(1104);并且如果得不到(1102),則如果可得到用于由一個(gè)矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊(1106),則估算相等于由該矢量p定位但是由在同一個(gè)列中的減1行索引的當(dāng)前幀的宏數(shù)據(jù)塊的當(dāng)前宏數(shù)據(jù)塊(1108);并且,如果得不到(1106),則如果可得到用于緊鄰當(dāng)前宏數(shù)據(jù)塊之上定位的宏數(shù)據(jù)塊的一個(gè)解碼的宏數(shù)據(jù)塊(1110),則估算相等于用于將要被估算的該宏數(shù)據(jù)塊之上緊鄰定位的宏數(shù)據(jù)塊的解碼的宏數(shù)據(jù)塊的用于該當(dāng)前幀的當(dāng)前宏數(shù)據(jù)塊(1112)。
全文摘要
一種用于消除在視頻比特?cái)?shù)據(jù)流解碼期間的誤差的方法和裝置。利用估算、如有可能利用在時(shí)域中的一個(gè)運(yùn)動(dòng)矢量進(jìn)行誤差消除。假設(shè)該運(yùn)動(dòng)基本穩(wěn)定地保持在兩個(gè)隨后幀之間,丟失的數(shù)據(jù)塊的暫態(tài)估計(jì)則使用來(lái)自一個(gè)隨后幀中的數(shù)據(jù)塊中的一個(gè)估算的運(yùn)動(dòng)矢量。如果在該時(shí)域中估計(jì)是不可能的,則在空間域估算運(yùn)動(dòng)矢量(708)。根據(jù)估算的運(yùn)動(dòng)矢量(712),估算一個(gè)宏數(shù)據(jù)塊。如果在該時(shí)域估計(jì)不可能,則不使用估算的運(yùn)動(dòng)矢量估計(jì)宏數(shù)據(jù)塊(716)。
文檔編號(hào)H04N5/21GK1256048SQ98805118
公開日2000年6月7日 申請(qǐng)日期1998年3月6日 優(yōu)先權(quán)日1997年3月13日
發(fā)明者T·奧茲塞利克, 游耿三, S·C·加德雷 申請(qǐng)人:索尼電子有限公司