專利名稱:經(jīng)幀內(nèi)編碼視頻的并行解碼的制作方法
技術(shù)領(lǐng)域:
所揭示的實施例涉及視頻解碼。
背景技術(shù):
蜂窩式電話向其用戶提供遠多于僅進行無線電話呼叫和接收無線電話呼叫能力 的功能性。蜂窩式電話制造商將越來越多的功能性并入其蜂窩式電話中以針對用戶的 興趣來與其它蜂窩式電話制造商進行競爭,舉例來說,蜂窩式電話制造商可將視頻接 收能力嵌入其蜂窩式電話中。蜂窩式電話將能夠用來接收從衛(wèi)星傳輸?shù)膲嚎s視頻信息
流、將所述壓縮視頻信息解碼成視頻、及在蜂窩式電話的顯示器上顯示所述視頻。因 此,蜂窩式電話用戶可在蜂窩式電話的顯示器上觀看衛(wèi)星電勢節(jié)目。然而,制造商也 想廉價地制造蜂窩式電話。在一個實例中,使用較陳舊的半導體處理技術(shù)來實現(xiàn)蜂窩 式電話的數(shù)字處理電路,以降低制作蜂窩式電話的集成電路的成本。使用較陳舊處理 技術(shù)比使用更高速度的較新處理技術(shù)更便宜。
在一個實例中,較陳舊處理技術(shù)限制可實現(xiàn)到約一百兆赫的數(shù)字信號處理器的時鐘速度。期望能夠使用此較陳舊技術(shù)來對VGA(640 x 480像素)壓縮視頻信息進行每秒 三十個幀的視頻解碼,以及在蜂窩式電話的顯示器上實時顯示所得VGA分辨率的視 頻。遺憾的是, 一百兆赫的數(shù)字信號處理器不具有充足的通過量來實施所需量的處理。 以每秒三十個幀對VGA視頻流進行解碼將需要具有250到300兆赫時鐘頻率的數(shù)字 信號處理器。因此,如果使用廉價的半導體處理技術(shù),那么蜂窩式電話僅可能以所需 的每秒三十個幀的幀速率來顯示三分之一的所需分辨率圖像。
除成本之外,也可存在的原因是限制對蜂窩式電話內(nèi)的數(shù)字信號處理電路進行時 鐘計時的時鐘信號的頻率。
發(fā)明內(nèi)容
期望的一種解決方案是在不限制可在蜂窩式電話上解碼和觀看的視頻的分辨率 的情況下允許使用受限制的時鐘速率。
某一量的經(jīng)編碼視頻(舉例來說,H.264視頻或MPEG4視頻)包含一序列的經(jīng)編碼 部分。每一經(jīng)編碼部分含有關(guān)于如何重構(gòu)所述視頻的幀中的對應(yīng)像素宏塊的信息。某 些部分是經(jīng)幀內(nèi)編碼的。對經(jīng)幀內(nèi)編碼部分的解碼利用解碼一個或一個以上其它部分 的結(jié)果。可將所述其它部分稱為"前驅(qū)"。整個視頻幀的重構(gòu)涉及識別不具有尚未解
碼的前驅(qū)部分的部分??稍诖俗R別中使用稱為"前驅(qū)表"的表。接著起始對每一此經(jīng) 識別部分的解碼。在大致完成對一部分的解碼(至少重構(gòu)到高達解塊點)時,接著檢驗 待解碼的剩余部分以識別不具有尚未解碼的前驅(qū)的部分。同樣,接著起始對每一此經(jīng) 識別部分的解碼。重復識別不具有未解碼前驅(qū)的部分且接著起始對那些經(jīng)識別部分的 解碼的此過程直到已解碼所述幀的所有部分。
通過實施此方法,起始對多個部分的解碼以便同時解碼多個部分??稍诓煌墓?作實體上解碼每一此部分,借此與一次僅可解碼一個部分的解碼方法相比增加對整個 幀的解碼速率。由于對經(jīng)重構(gòu)前驅(qū)宏塊的解塊濾波可毀壞在對其它相依部分進行幀內(nèi) 解碼時所需的信息(經(jīng)重構(gòu)除且經(jīng)預(yù)濾波的信息),因此將經(jīng)預(yù)濾波的前驅(qū)信息存儲 在緩沖器中以供隨后在對相依部分進行幀內(nèi)解碼期間使用,借此促進對多個部分的同 時解碼。
在一個實施例中,將所述量的經(jīng)編碼視頻作為網(wǎng)絡(luò)抽象層(NAL)單元^f立流接收到 蜂窩式電話上。所述蜂窩式電話內(nèi)的基帶處理器集成電路中的一組并行數(shù)字信號處理 器對所述位流進行實時解碼。因此,所述基帶處理器集成電路包含視頻CODEC(編碼 器/解碼器)功能性。在所述方法識別可同時解碼的部分之后,由各種并行數(shù)字信號處
理器來并行解碼所述經(jīng)識別部分。通過在多個數(shù)字信號處理器上分配工作負載,可以 充足高的幀速率來再現(xiàn)較高分辨率的視頻幀,而未必增加所述基帶處理器集成電路內(nèi) 的數(shù)字信號處理器的最大處理器時鐘速率。將所得高分辨率的視頻幀從所述基帶處理 器集成電路輸出并再現(xiàn)于蜂窩式電話的顯示器上以供觀看。在一個實例中,將彩色 VGA幀(640 x 480像素)的H.264視頻流接收到蜂窩式電話上并使用一組并4于數(shù)字信號 處理器以每秒三十個幀的幀速率來實時解碼,其中所述數(shù)字信號處理器的每一者具有 一百兆赫的最大時鐘速率。
以下詳細說明中描述額外方法和結(jié)構(gòu)。此發(fā)明內(nèi)容的意圖不在于界定本發(fā)明。本 發(fā)明由權(quán)利要求書界定。
圖1是根據(jù)一個新穎方面的移動通訊裝置的框圖。
圖2是接收到圖1的移動通信裝置上的視頻流的簡化圖。
圖3圖解說明將從圖2的視頻流重構(gòu)的一個幀。
圖4是圖解說明可如何根據(jù)H.264標準來重構(gòu)圖3的幀的簡化圖。
圖5是圖解說明由圖1的移動通信裝置實施的新穎方法的流程圖。
圖6圖解說明歸因于H.264標準的前驅(qū)宏塊關(guān)系。
圖7是宏塊幀的圖式。圖2的視頻流中存在針對圖7的幀中的每一宏塊的經(jīng)編碼 宏塊信息部分(EMIP)。
圖8-10圖解說明產(chǎn)生前驅(qū)表的步驟。
圖11是從實施圖8-10的步驟所產(chǎn)生的前驅(qū)表的圖式。
圖12-23圖解說明實施圖5的方法的步驟以重構(gòu)以圖2的流形式傳送到圖1的移 動通信裝置的視頻幀的結(jié)果。
圖24圖解說明在對宏塊X進行幀內(nèi)解碼時可能需要的經(jīng)重構(gòu)值(經(jīng)重構(gòu)但未經(jīng)濾 波的值)帶。
圖25及26圖解說明以經(jīng)預(yù)濾波信息加載緩沖器以供隨后在所述幀內(nèi)的隨后幀內(nèi) 解碼時使用。
圖27圖解說明針對MPEG4編碼算法的前驅(qū)宏塊關(guān)系。
具體實施例方式
圖1是移動通信裝置1的框圖。在此實例中,移動通信裝置1是蜂窩式電話,其 包含射頻集成電路(RFIC) 2、基帶處理器集成電路(BPIC) 3和顯示器4。 RFIC 2包含模 擬電路,其用于從天線5接收RF蜂窩式電話信號、處理信號并將其轉(zhuǎn)換成數(shù)字形式 以及將所得數(shù)字信息傳遞到BPIC 3。 RFIC 2也包含用于以下操作的電路從BPIC 3 接收數(shù)字信息、處理數(shù)字信息并將其轉(zhuǎn)換成模擬形式以及從天線5傳輸信息作為RF 信號。除支持蜂窩式電話通信外,BPIC 3還用作用于運行各種應(yīng)用層程序的硬件平臺。 所述實例中的此一應(yīng)用是視頻解碼應(yīng)用。BPIC 3包含視頻CODEC(編碼器/解碼器)功 能性。以H.264格式的視頻信息流是從衛(wèi)星傳輸?shù)?。視頻RF信號由RFIC2接收并以 H.264網(wǎng)絡(luò)抽象層(NAL)單元的位流6的形式傳遞到BPIC 3。根據(jù)協(xié)議將位流6分段 并傳遞到BPIC 3。 BPIC 3的ARM處理器部分7根據(jù)所述協(xié)議再匯編位流6并將呈 NAL單元9形式的位流6置于存儲器8中。
圖2視頻信息位流6的簡化圖。在此處圖解說明的簡化實例中,位流6包含一二 十個宏塊信息部分的序列。在圖2中這些宏塊信息部分被標記為0到19。每一部分包 含三個子部分,此處將其稱為"經(jīng)編碼的宏塊信息部分"(EMIP)。舉例來說,假定宏 塊信息部分MB0在位流7中。此部分MBO包含第一EMIPIO,其指示如何重構(gòu)宏 塊MBO的Y亮度信息;第二 EMIP 11,其指示如何重構(gòu)宏塊MBO的Cr色度信息; 和第三EMIP12,其指示如何重構(gòu)宏塊MBO的Cb色度信息。在此特定實例中,宏塊
是16x16像素信息塊。
可將其中每一像素包含亮度和色度信息的像素信息幀組織成三個幀(也稱為字
段), 一個用于Y亮度、 一個用于Cr色度且一個用于Cb色度。當在顯示器4上再現(xiàn) 幀時,來自三個幀的對應(yīng)亮度和色度值被組合并在紅色-綠色-藍色(RGB)色空間中轉(zhuǎn) 換。YCrCb到RGB的轉(zhuǎn)換由BPIC 3的移動顯示器處理器(MDP)部分13來執(zhí)行。將 RGB像素信息供應(yīng)到顯示器4以供再現(xiàn)。
圖3圖解說明亮度幀。圖2的部分MBO的EMIP 10含有關(guān)于如何為圖3的幀中 的宏塊MBO重構(gòu)亮度信息的信息,圖2的部分MB1中的亮度信息EMIP含有關(guān)于如
何為圖3的宏塊MB1重構(gòu)亮度信息的信息等等。
圖4是圖解說明可如何根據(jù)R264標準來重構(gòu)圖3的幀的簡化圖。采用簡化術(shù)語 來促進對圖4中所描繪的過程的解釋。對于有關(guān)如何處理NAL單元位流以及如何重構(gòu) 視頻信息幀的額外細節(jié),參見H.264標準(舉例來說,參見ITU-T視頻編碼專家組 (VCEG),建議H.264/ISO/lEC 14496-10 "先進的視頻編碼"2003)。簡化以下對應(yīng)于圖 4的說明是出于說明性目的,因為其表示H.264/AVC依從解碼器的單線程實施方案。
ARM處理器部分7從存儲器8檢索NAL單元9。 NAL單元9包含標頭和其它信 息。每一 NAL標頭的含義由H.264標準規(guī)定。如塊14所指示對NAL標頭進行譯碼, 且如塊15所指示對剩余信息執(zhí)行熵拆包。所述剩余信息包含符號。在表中査找每一符 合以識別對應(yīng)的位串。將所得位串(其對應(yīng)于所述符合)并置以形成經(jīng)量化的系數(shù)(X) 流。對塊14和15兩者的處理均由ARM處理器7來執(zhí)行,且將所得經(jīng)量化系數(shù)流以 及經(jīng)譯碼的標頭信息寫回到存儲器8中。在此實例中,可以約1千兆赫來對ARM處 理器7進行時鐘計時。
已認識到在此項技術(shù)中可將對塊14的NAL標頭譯碼稱為"NAL標頭解碼"且在 此項技術(shù)中可將對塊15的熵拆包稱為"熵解碼"。然而,此處不將對塊14和15的處 理稱為解碼。而是,此處將術(shù)語"解碼"用于描述其它處理,包含逆變換、幀間解碼、 幀內(nèi)解碼(參見圖4中的虛線42)。
基帶處理器集成電路3的數(shù)字信號處理器(DSP)部分16檢索經(jīng)量化系數(shù)(X)并根 據(jù)H.264標準重新?lián)Q算所述系數(shù)。此重新?lián)Q算反轉(zhuǎn)在對幀進行H.264編碼期間所執(zhí)行 的換算。此重新?lián)Q算由圖4的塊17來圖解說明。DSP部分16和ARM處理器部分7 兩者可從存儲器8讀取以及寫入到存儲器8。存儲器8是處理器可讀媒體。ARM處理 器部分7和DSP部分16兩者均執(zhí)行存儲在其它處理器可讀媒體(未顯示)上的單獨 指令集,所述其它處理器可讀媒體分別是ARM處理器部分7和DSP部分165的一部 分。
DSP部分16接著根據(jù)H.264標準中的規(guī)定來對經(jīng)重新?lián)Q算的系數(shù)進行逆變換。 此逆變換反轉(zhuǎn)在對幀進行H.264編碼期間所執(zhí)行的變換。逆變換的應(yīng)用由圖4的塊18 圖解說明。結(jié)果是像素的差別信息(D)。按宏塊掃描線次序來排序差別像素值以便首先 輸出第一宏塊的差別像素值,且接著輸出第二宏塊的差別像素值且依此類推。
差別像素信息(D)宏塊已經(jīng)幀間編碼或經(jīng)幀內(nèi)編碼。在圖4的實例中,"經(jīng)幀 間編碼"意指至少部分地基于來自另一幀(不是當前正被重構(gòu)的幀)中的另一塊的像 素信息來編碼宏塊。舉例來說,可通過從先前幀(視頻信息中先于正被重構(gòu)幀的幀) 中的對應(yīng)宏塊中減去正被編碼宏塊來對差別像素信息(D)進行幀間編碼。接著對此 差別像素信息進行變換、量化、換算、打包以及熵打包以形成經(jīng)幀間編碼的EMIP。
"幀內(nèi)編碼"意指至少部分地基于來自當前幀中的另一塊的像素信息來對宏塊進 行編碼。舉例來說,可通過從沿著相同幀中的相鄰宏塊的邊緣的像素信息中減去正被 編碼宏塊的像素信息來對差別像素信息(D)進行幀內(nèi)編碼。接著對此差別像素信息進行變換、量化、換算、打包以及熵打包以形成經(jīng)幀內(nèi)編碼的EMIP。對于額外的細節(jié), 參見H.264標準。
舉例來說,如果正被解碼的當前EMIP是經(jīng)幀間編碼的EMIP,那么塊19致使將 來自先前幀的合適像素供應(yīng)(在圖4中由開關(guān)符合20來符號化)到加法器(在圖4 中由加法節(jié)點符號21來符號化)。從宏塊所供應(yīng)的像素稱為預(yù)測宏塊(P)。纟每差別宏 塊(D)像素值添加到宏塊P像素值以產(chǎn)生經(jīng)重構(gòu)(但未經(jīng)濾波)宏塊(UF)的像素值。另 一方面,如果正被解碼的當前EMIP是經(jīng)幀內(nèi)編碼的EMIP,那么塊22和23致使將當 前幀的先前經(jīng)解碼宏塊的一部分供應(yīng)(在圖4中由開關(guān)符號20來符號化)到加法器 21。所供應(yīng)宏塊的所述部分稱為預(yù)測宏塊(P)。將差別宏塊D的每一像素值添加到來自 宏塊P的像素值以產(chǎn)生經(jīng)重構(gòu)(但未經(jīng)濾波)宏塊(UF)的像素值。在此幀內(nèi)解碼中, 應(yīng)注意預(yù)測宏塊(P)的所述部分不是取自解塊濾波器塊25的輸出的經(jīng)濾波宏塊的一部 分,而是取自加法器21的輸出的經(jīng)預(yù)濾波宏塊的一部分。有多種方式將預(yù)測宏塊(P) 的所述部分用于從經(jīng)幀內(nèi)編碼的EMIP產(chǎn)生經(jīng)重構(gòu)的宏塊。對于這些多種方式的細節(jié), 參見H.264標準。
正被解碼的當前EMIP是幀間編碼的還是幀內(nèi)編碼的是由位流中的標頭信息確定 的。圖4的塊24使用此標頭信息來控制采用幀間解碼還是采用幀內(nèi)解碼。因此將塊 24圖解說明為控制開關(guān)符號20的位置。
此經(jīng)重構(gòu)宏塊的幀可在所述幀的各種宏塊之間呈現(xiàn)塊效應(yīng)和不連續(xù)性。根據(jù) H.264,對相鄰的經(jīng)重構(gòu)宏塊之間的邊界進行濾波以幫助降低塊效應(yīng)。此濾波有時稱為 "解塊濾波"且在圖4中由塊23來表示。解塊濾波器25輸出經(jīng)重構(gòu)且經(jīng)濾波的當前 宏塊(F)26。將宏塊(F)26與相同幀中的其它類似經(jīng)重構(gòu)宏塊一起存儲于存儲器8中以 便產(chǎn)生經(jīng)重構(gòu)宏塊的整個幀27。經(jīng)重構(gòu)幀27存儲于圖1中的存儲器8中。如上所解 釋,移動顯示器處理器13檢索幀27、將其轉(zhuǎn)換成RGB格式并將RGB像素幀供應(yīng)到 顯示器4以供再現(xiàn)。當開始將NAL單元進一步解碼成對應(yīng)于下一幀的位流6時,便可 使用剛剛完成的經(jīng)重構(gòu)及經(jīng)濾波的幀27來解碼經(jīng)幀間編碼的EMIP。圖4中由塊19 來圖解說明對此先前經(jīng)重構(gòu)及經(jīng)濾波幀的存儲。在當前所述實施例中,是使用BPIC3 以每秒三十個VGA(640x480像素)幀的速率來解碼H.264位流。BPIC 3具有一個ARM 處理器7(1千兆赫最大時鐘速率)和DSP 16, DSP 16涉及六個并行DSP處理器(每一 DSP處理器具有100 MHz的最大時鐘速率)。
圖5是圖解說明新穎方法的流程圖,所述新穎方法允許一百兆赫的DSP處理器以 每秒三十個幀的速率來將NAL單元的H.264位流解碼成VGA。圖5的方法涉及可稱 為"前驅(qū)表"的內(nèi)容。以下將解釋如何導出前驅(qū)表。在解釋前驅(qū)表之后,接著解釋圖 5的方法中的各步驟。
圖6圖解說明一組五個宏塊A、 B、 C、 D和X。宏塊X是待解碼的當前宏塊。 由于使用H.264中的幀內(nèi)編碼各解塊,對宏塊X的解碼可需要解碼宏塊C和D的結(jié) 果。因此在大致上已對宏塊C和D進行解碼(重新?lián)Q算、逆變換及重構(gòu)至少到高達解
塊點)之前,不能執(zhí)行對宏塊X的解碼。這是因為如果宏塊X是經(jīng)幀內(nèi)編碼的,那么 其解碼將需要圖4中的塊22含有經(jīng)重構(gòu)(當未經(jīng)濾波)宏塊C和D。因此,將宏塊C 和D說成是宏塊X的"前驅(qū)"宏塊。此關(guān)系(取決于所采用幀內(nèi)編碼各解塊的類型的 細節(jié))用于產(chǎn)生前驅(qū)表。
圖7是宏塊幀的圖式。每一宏塊右上角落處的數(shù)目是宏塊數(shù)目。每一宏i央中心處 的數(shù)目是所述宏塊的前驅(qū)計數(shù)值。最初,表中的所有前驅(qū)計數(shù)值是未知的且因此在圖 7中表示為"X"。
在第一步驟中,相對于圖7的幀來放置圖6的宏塊結(jié)構(gòu),以使得圖6的宏塊結(jié)構(gòu) 的宏塊X設(shè)置于圖7的宏塊MB0上方。此在圖8的左邊部分中予以圖解說明。變暗 的宏塊表示圖6的宏塊結(jié)構(gòu)的宏塊。如由圖8所指示,由于宏塊C和D在幀邊界的外 側(cè),因此可對宏塊X進行解碼而無需等待對任何其它宏塊的解碼。因此將宏塊MBO 說成是不具有前驅(qū)。如圖8的右邊部分中所圖解說明,MBO的前驅(qū)計數(shù)值是零(此 表示MBO不具有前驅(qū))。
接下來,將圖6的宏塊結(jié)構(gòu)向右移位以使得圖6的宏塊結(jié)構(gòu)的宏塊X設(shè)置于宏塊 MB1上方。此在圖9的左邊部分中予以圖解說明。宏塊C仍在幀邊界的外側(cè),但宏塊 D現(xiàn)在在MBl上方.因此,必須可對宏塊MB1進行解碼之前對宏塊MB0進行解碼。 因此將MB1說成是具有一個前驅(qū)宏塊(MBO)。如圖9的右邊部分中所圖解說明,MB1 的前驅(qū)計數(shù)值是l(此表示MB1具有一個前驅(qū))。
接下來,將圖6的宏塊結(jié)構(gòu)向右移位以使得圖6的宏塊結(jié)構(gòu)的宏塊X設(shè)置于宏塊 MB2上方。此在圖IO的左邊部分中予以圖解說明。宏塊C仍在幀邊界的外側(cè),但宏 塊D現(xiàn)在在MB1上方。因此,必須在可對宏塊MB2進行解碼之前對宏塊MB1進行 解碼。因此將MB2說成是具有一個前驅(qū)宏塊(MB1)。如圖10的右邊部分中所圖解說 明,MB2的前驅(qū)計數(shù)值是l(此表示MB2具有一個前驅(qū))。
針對圖7的幀的多個行,按掃描線次序從左到右逐行地向下重復跨越^ 述幀的宏 塊移位圖6的宏塊結(jié)構(gòu)的此過程直到填入前驅(qū)表中的每一前驅(qū)計數(shù)值。
圖11圖解說明所得前驅(qū)表。此表用于圖5的方法。最初,在圖5的方法中,接 收視頻信息(在圖5中的步驟100)。視頻信息包含幀的多個EMIP。 一些EMIP是經(jīng) 幀間編碼的,且另一些EMIP是經(jīng)幀內(nèi)編碼的。舉例來說,視頻信息可以是圖l的位 流6。
接下來(步驟101),識別不具有尚未解碼的前驅(qū)EMIP的一個或一個以上EMIP。 在一個實例中,在DSP 16上執(zhí)行的控制實體過程從存儲器8中檢索圖11的前驅(qū)表。 MBO的零前驅(qū)計數(shù)值指示MBO的EMIP是不具有仍未解碼的前驅(qū)EMIP的EMIP。
接下來(步驟102),起始對步驟101中所識別的EMIP的解碼。對這些EMIP的每 一者的解碼是由不同的工作實體來執(zhí)行。在一個實例中,DSP 16包含六個并行DSP 處理器。每一DSP處理器均以一百兆赫速率來時鐘計時。采用管道式架構(gòu),其中使用 經(jīng)交錯的一百兆赫時鐘信號對每一相應(yīng)DSP處理器進行時鐘計時。從在DSP 16上執(zhí)
行的軟件的觀點來看,似乎可使用六個單獨的DSP處理器來執(zhí)行代碼。每一 DSP處 理器執(zhí)行單獨的指令線程且被視為不同工作實體。所有線程從單獨的隊列接收要做的 工作。
在當前所述的實例中,在步驟101中僅識別出一個EMIP且此是MBO的EMIP。 將MBO的此EMIP置于共享隊列上。第一線程(在圖1中標記為T1)拾取MB0的此EMIP 用于在第一虛擬DSP處理器上進行解碼并根據(jù)圖4的方法來解碼MBO的EMIP。
圖12圖解說明處理中的此階段。只要對EMIP未大致完成(大致完成意指解碼 完成到獲得經(jīng)重構(gòu)但未經(jīng)濾波宏塊(UF)的點),此狀態(tài)持續(xù)。當確定己經(jīng)大致上完成了 對EMIP的解碼(步驟103)時,那么過程流便返回到步驟101。在圖32-23的圖式中, 將其EMIP已經(jīng)大致解碼的宏塊表示為填有交叉影線的塊。從步驟103,解碼還繼續(xù) 以便對經(jīng)重構(gòu)宏塊(UF)進行解塊濾波以產(chǎn)生經(jīng)重構(gòu)且經(jīng)濾波的宏塊。輸出所得經(jīng)重 構(gòu)且經(jīng)濾波的宏塊(步驟104)并將其積累起來以開始經(jīng)重構(gòu)且經(jīng)濾波的幀的形成。
在當前所述實例中, 一旦大致上完成了對宏塊MBO的解碼,便使用圖12的前驅(qū) 表來執(zhí)行不具有前驅(qū)EMIP的一個或一個以上EMIP的識別(步驟101)。在前驅(qū)表中, 將MBO是其前驅(qū)的所有宏塊的前驅(qū)計數(shù)值遞減1。將其遞減1是因為其前驅(qū)(MBO)中 的一者現(xiàn)在已充分解碼。在當前所述實例中,MB0是MB1的前驅(qū)。如由圖13所指示, 將MB1的前驅(qū)計數(shù)值從1遞減到0。其前驅(qū)計數(shù)值為0的任何宏塊都不具有任何前驅(qū)。 因此,在步驟101中將MB1識別為是不具有尚未解碼的前驅(qū)EMIP的EMIP。
接下來(步驟102),起始對MB1的EMIP的解碼。在當前實例中,將MB1的EMIP 置于共享隊列上。由于線程T1現(xiàn)在是空閑的,因此線程T1可從隊列中檢索MB1的 EMIP且開始對其進行解碼。當對MB1的EMIP的解碼已經(jīng)大致完成(步驟103)時,那 么處理便返回到步驟101。解碼還繼續(xù)以便對MB1的經(jīng)重構(gòu)宏塊(UF)進行解塊濾波以 產(chǎn)生MB1的經(jīng)重構(gòu)且經(jīng)濾波的宏塊。
當對MB1的EMIP的解碼致使處理返回到步驟101時,將MB1是其前驅(qū)的所有 宏塊的前驅(qū)計數(shù)值遞減。如圖14中所圖解說明,此導致宏塊MB2和MB5的前驅(qū)計 數(shù)值被遞減。應(yīng)注意圖6的宏塊相依結(jié)構(gòu)指示MB1是MB2和MB5兩者的前驅(qū)。遞 減導致宏塊MB2和MB5的前驅(qū)計數(shù)值從1改變到0。因此在步驟101中將MB2和 MB5的EMIP識別為是不具有尚未解碼的前驅(qū)EMIP的EMIP。
在當前所述實例中,將MB2和MB5的EMIP推到共享工作隊列上作為針對先前 MB的最后一個處理步驟。DSP線程T1從隊列中取出MB2的EMP,且線程T2從隊 列中取出MB5的EMIP。此是圖15中所圖解說明的處理狀態(tài)。此時,使用多個不同 的工作實體(在此情況下,兩個線程)來對不僅一個而是兩個EMIP同時進行解碼。
當這些EMIP中的一者被大致解碼時,那么處理便從決策步驟103向后接續(xù)到步 驟IOI。在當前所述的簡化實例中,對所有EMIP的解碼花費相同的時間量。因此, 在步驟103中將MB2的EMIP和MB5的EMIP同時確定為被大致解碼。經(jīng)大致解碼 的MB2是MB3和MB6兩者的前驅(qū)。因此,步驟101涉及將MB3和MB6的前驅(qū)計
數(shù)值遞減。同樣,經(jīng)大致解碼的MB5是MB6的前驅(qū)。因此,步驟101涉及將MB3 的前驅(qū)計數(shù)值遞減一次且涉及將MB6的前驅(qū)計數(shù)值遞減兩次。如圖16中所圖解說明, 將MB3和MB6的前驅(qū)計數(shù)值降低到0。由于MB3和MB6的前驅(qū)計數(shù)值為零,因此 將其EMIP識別(步驟101)為是不具有尚未解碼的前驅(qū)EMIP的EMPS。起始對經(jīng)識 別EMIP的解碼(步驟102)。如圖16中所圖解說明,將MB3和MB6的EMIP推到共 享隊列上。線程Tl從隊列中取出MB3的EMIP且線程T2從隊列中取出MB6的EMIP。 因此,通過不同的工作實體(在此情況下,不同的線程)對MB3和MB6的EMIP同 時進行解碼。
處理以此方式跨越幀的宏塊而繼續(xù)進行。在當前所述實例中,通過圖16-23的圖 式的序列來陳述對EMIP的處理。應(yīng)注意控制實體實施的方法(在DSP 16上執(zhí)行的過 程)致使在整個過程中的不同點(參見圖16和18)來同時處理三個EMIP。在圖1中, 以DSP 16內(nèi)的塊來圖解說明執(zhí)行此并行處理的三個工作實體(三個指令線程Tl、 T2 和T3)。
用于經(jīng)預(yù)濾波值的緩沖器同時對一群組EMIP進行解碼是可能的,因為解碼所 述群組中的每一 EMIP所需的信息并不依賴于解碼所述群組中待同時解碼的其它 EMIP的結(jié)果。如圖6中所指示,對宏塊X的經(jīng)幀內(nèi)編碼EMIP的解碼需要首先對宏 塊C和D的EMIP進行解碼。更明確來說,對宏塊X的幀內(nèi)解碼可能需要所述解碼由 沿著宏塊B的底邊緣的值帶引起且可能需要所述解碼由沿著宏塊D的右邊緣的值帶引 起且可能需要所述解碼由宏塊A的右下角落處的小值塊引起。圖24圖解說明在對宏 塊X進行幀內(nèi)解碼時可能需要的此值帶。在H.264的實例中,此帶是一個值寬且沿著 宏塊D的右邊緣向上延伸穿過宏塊A右下角(一個值)并從左到右跨越宏塊B的底 邊緣,且在所述路途的約四分之一處延伸到宏塊C中。
在以上陳述的圖12-23的解碼流中對MB7的解碼中,如果將MB7的EMIP重構(gòu) 以產(chǎn)生經(jīng)預(yù)濾波的宏塊值(UF),并接著在繼續(xù)解碼下一 EMIP之前對那些經(jīng)預(yù)濾波的 宏塊值(UF)進行解塊濾波,且如果未存儲經(jīng)預(yù)濾波的宏塊值(UF),那么在對宏塊MB8 的EMIP進行解碼(參見圖17)時,針對MB7的右邊緣的經(jīng)預(yù)濾波宏塊值(UF)將不能用 于對MB8的EMIP的幀內(nèi)解碼。類似地,在對宏塊MB 12的EMIP進行解碼(參見圖 1.8)時,針對MB7的底邊緣的經(jīng)預(yù)濾波宏塊值(UF)將不能用于對MB12的EMIP的幀 內(nèi)解碼。為存取這些經(jīng)預(yù)濾波值以用于對其它宏塊的EMIP的后續(xù)解碼,在進行解塊 濾波之前將正被解碼的EMIP的底邊緣經(jīng)預(yù)濾波值帶存儲到緩沖器中。類似地,為存 取這些經(jīng)預(yù)濾波值以用于對其它宏塊的EMIP的后續(xù)解碼,將正被解碼的EMIP的右 邊緣經(jīng)預(yù)濾波值帶存儲到緩沖器中。
圖25圖解說明緩沖器28,其用于存儲供在對相同幀中的后續(xù)EMIP進行解碼時 使用的經(jīng)預(yù)濾波的重構(gòu)值。緩沖器28包含數(shù)個垂直延伸的列區(qū)段29-32和數(shù)個水平延 伸的行區(qū)段33-37。箭頭38圖解說明當對宏塊MB7的EMIP的解碼大致完成時,將沿 著其底邊緣的經(jīng)預(yù)濾波值帶存儲于緩沖器28的對應(yīng)部分35中。部分35是緩沖器28
對應(yīng)于含有宏塊MB7的宏塊列的部分。這些值保持在緩沖器28中直到對宏塊MB12 的EMIP進行解碼。在對宏塊MB12的EMIP進行解碼時,可使用緩沖器28的部分 35中的值來進行幀內(nèi)解碼。幀的宏塊的優(yōu)先次序確保在宏塊MB12的EMIP之前所述 列中沒有宏塊的EMIP將被解碼。因此,當列中的宏塊的EMIP大致完成時,便將其 底部的經(jīng)預(yù)濾波值帶寫入到緩沖器28對應(yīng)于所述列的部分中。接著可將這些存儲的經(jīng) 預(yù)濾波值用于對所述列中正下方的宏塊EMIP的解碼。
圖26圖解說明當對宏塊MB7的EMIP的解碼大致完成時,將沿著其右邊緣的經(jīng) 預(yù)濾波值帶存儲到緩沖器28的對應(yīng)部分30中。部分30是緩沖器28對應(yīng)于含有宏塊 MB7的宏塊行的部分。這些值保持在緩沖器28中直到對宏塊MB8的EMIP進行解碼。 在對宏塊MB8的EMIP進行解碼時,可使用緩沖器28的部分30中的值來進行幀內(nèi)解 碼。宏塊的優(yōu)先次序確保在宏塊MB8的EMIP之前所述行中沒有宏塊的EMIP將被解 碼。因此,當行中的宏塊的EMIP大致完成時,便將其右邊緣的經(jīng)預(yù)濾波值帶寫入到 緩沖器28對應(yīng)于所述行的部分中。接著可將這些存儲的經(jīng)預(yù)濾波值用于對所述行中正 右方的宏塊EMIP的解碼。
從圖24中注意到對宏塊X的EMIP進行幀內(nèi)解碼可能需要來自宏塊A的經(jīng)重構(gòu) 但未經(jīng)濾波的值(宏塊A的右下角落)。因此部分30-32的每一者在所述部分的頂部處 含有額外值。在圖26的實例中,當對宏塊MB7的解碼大致完成時,將MB7中的右 邊緣的經(jīng)預(yù)濾波值帶寫入到緩沖器28中的下部分30中且將來自部分35的右邊角落的 經(jīng)預(yù)濾波值寫入到部分30的頂部。部分35的右邊角落是對MB2的先前處理的結(jié)果。 接著將MB7的底部水平邊緣帶寫入到緩沖器28中的部分35,如圖25中所圖解說明。 接著對宏塊MB8的EMIP的幀內(nèi)解碼可使用列部分30頂部中的值、以及列部分30 底部中的值以及行部分36中的值??蓪⒉糠?9-32稱為緩沖器28的"列"部分,這 是因為部分29-32形成列(即便每一部分29-32對應(yīng)于一宏塊行)。可將部分33-37稱為 緩沖器28的"行"部分,這是因為部分33-37形成行(即便每一部分33-37對應(yīng)于一宏 塊列)。在一個有利方面中,將緩沖器28設(shè)置在DSP16內(nèi)的存儲器中而不是設(shè)置在存 儲器8中以降低DSP16執(zhí)行幀內(nèi)解碼操作所需的跨越總線41的存儲器存取次數(shù)。雖 然以上正文中將圖25圖解說明及描述為在圖26之前,但由圖26中的線39和40所圖 解說明的列緩沖器更新操作是在由圖25中的線38所描述的操作之前執(zhí)行的。
除H.264之外的解碼算法以上陳述的用于同時解碼多個EMIP的方法可應(yīng)用于 解碼使用除H.264以外的編碼算法編碼的EMIP。提供以上對H.264 EMIP的解碼的說 明作為實例。為將所述方法應(yīng)用于解碼使用另一編碼算法編碼的EMIP,確定將根據(jù) 所述編碼算法解碼的塊的前驅(qū)。在一個實例中,接著應(yīng)用這些前驅(qū)與待解碼的所述塊 的關(guān)系應(yīng)以產(chǎn)生優(yōu)先表。接著將所述優(yōu)先表用于對EMIP的解碼以確定既定EMIP的 所有前驅(qū)何時已被充分解碼。當確定了既定EMIP的所有前驅(qū)已被充分解碼時,接著 起始對既定EMIP的解碼??稍诓煌墓ぷ鲗嶓w上起始對EMIP的解碼以便同時對多 個EMIP進行解碼。 圖27圖解說明用于MPEG4編碼算法的前驅(qū)宏塊關(guān)系。在圖27中所圖解說明的 所述組的四個宏塊A、 B、 C和X中,宏塊X是待解碼的當前宏塊。宏塊B和D是宏 塊X的前驅(qū)。以采用圖6的前驅(qū)關(guān)系來產(chǎn)生用于H.264的圖11的前驅(qū)表相同的方式, 采用圖27中所圖解說明的前驅(qū)關(guān)系來產(chǎn)生用于MPEG4的前驅(qū)表。采用類似圖25和 26中的緩沖器28的緩沖器來存儲在對一個EMIP進行MPEG4解碼中所產(chǎn)生的經(jīng)預(yù)濾 波且經(jīng)重構(gòu)的值??稍陔S后使用所存儲的經(jīng)預(yù)濾波且經(jīng)重構(gòu)的值來對所述幀中的另一 EMIP進行幀內(nèi)解碼。以此方式,可利用此專利文件中陳述的用于同時解碼多個EMIP 的方法來解碼使用除H.264和MPEG4以外的編碼算法編碼的視頻信息。
盡管上文出于指導目的而描述某些特定實施例,但是本發(fā)明并不限于此。不需要 以信息流形式將經(jīng)編碼的視頻信息接收到解碼裝置上,而是通過從存儲器中讀取經(jīng)編 碼的視頻信息而將其接收到解碼裝置上。舉例來說,可將存儲器中的經(jīng)編碼視頻作為 文件來存儲和檢索。能夠解碼EMIP的工作實體可以是軟件線程,以使得圖5的整體 方法在軟件中實現(xiàn)。另一選擇是,工作實體可以是不同的專用硬件處理單元??墒褂?軟件來將對EMIP的解碼推到用于這些專用硬件處理單元的隊列上。另一選擇是,可 使用專用硬件來將對EMIP的解碼推到用于硬件處理單元的隊列上。所述解碼方法未 必體現(xiàn)于移動通信裝置上,而是可體現(xiàn)于另一裝置上。在一個實施例中,所述解碼方 法由在個人計算機上執(zhí)行的視頻讀取器(舉例來說,視窗媒體播放器)應(yīng)用程序來執(zhí)行。 所述解碼方法可由體現(xiàn)于電視、視頻磁盤播放器以及其它視頻解碼和觀看裝置中的視 頻解碼硬件及/或軟件來執(zhí)行。因此,可在不違背權(quán)利要求書中所陳述的本發(fā)明范圍的 前提下實踐所述特定實施例的各種特征的各種修改、變型及組合。
權(quán)利要求
1.一種方法,其包括(a)接收多個幀的視頻信息,其中所述幀中的一者的所述視頻信息包括多個經(jīng)編碼的宏塊信息部分(EMIP),其中所述EMIP中的一些EMIP是經(jīng)幀間編碼的,且其中所述EMIP中的其它EMIP是經(jīng)幀內(nèi)編碼的;(b)識別所述一個幀中不具有尚未解碼的前驅(qū)EMIP的一個或一個以上所述EMIP;(c)起始對在(b)中所識別的每一EMIP的解碼;及(d)在至少大致完成對(c)中所起始的任一EMIP的所述解碼之后返回到(b),其中通過同時對多個經(jīng)幀內(nèi)編碼的EMIP進行解碼來執(zhí)行(b)、(c)和(d)多次。
2、 如權(quán)利要求l所述的方法,其中所述視頻信息包括以下中的至少一者H.264 視頻信息和MPEG4視頻信息。
3、 如權(quán)利要求1所述的方法,其中在(c)中所起始的所述解碼包括l)產(chǎn)生經(jīng)預(yù) 濾波的經(jīng)重構(gòu)像素信息宏塊,和2)對所述經(jīng)預(yù)濾波的經(jīng)重構(gòu)像素信息宏塊進行解塊濾 波以產(chǎn)生經(jīng)濾波的經(jīng)重構(gòu)像素信息宏塊。
4、 如權(quán)利要求3所述的方法,其中所述返回到(b)在與所述解塊濾波正發(fā)生的相 同時間發(fā)生。
5、 如權(quán)利要求3所述的方法,其中所述返回到(b)在已完成所述解塊濾波之后發(fā)生。
6、 如權(quán)利要求3所述的方法,其中在(d)中的所述大致完成后,存儲某一量的所 述經(jīng)預(yù)濾波的經(jīng)重構(gòu)像素信息宏塊,且其中隨后在對所述幀的所述EMIP中的另一者 的幀內(nèi)解碼中使用所述量的所存儲信息。
7、 如權(quán)利要求1所述的方法,其中對所述多個經(jīng)幀內(nèi)編碼的EMIP的所述同時 解碼涉及對第一經(jīng)幀內(nèi)編碼的EMIP的解碼和對第二經(jīng)幀內(nèi)編碼的EMIP的解碼,對 所述第一經(jīng)幀內(nèi)編碼的EMIP的所述解碼花費的時間比對所述第二經(jīng)幀內(nèi)編碼的 EMIP的所述解碼長。
8、 如權(quán)利要求1所述的方法,其中(b)的所述識別涉及使用前驅(qū)表,所述前驅(qū)表 包含所述幀的每一 EMIP的前驅(qū)計數(shù)值,其中特定EMIP的所述前驅(qū)計數(shù)值指示尚未 解碼的前驅(qū)EMIP的數(shù)目。
9、 如權(quán)利要求8所述的方法,其進一步包括在完成或大致完成對經(jīng)幀內(nèi)編碼的EMIP的前驅(qū)EMIP中的一者的解碼后,遞減 所述經(jīng)幀內(nèi)編碼的EMIP的所述前驅(qū)計數(shù)值。
10、 如權(quán)利要求1所述的方法,其中(b)涉及識別所述一個幀中不具有尚未解碼的 前驅(qū)EMIP的多個EMIP,且其中(c)涉及起始對在(b)中所識別的所述多個EMIP的每一者的解碼。
11、 如權(quán)利要求l所述的方法,其中所述幀是亮度信息幀,所述視頻信息進一步 包括對應(yīng)于所述幀亮度信息的兩個色度信息幀。
12、 如權(quán)利要求l所述的方法,其中(c)的所述起始涉及l(fā))起始通過第一線程對 第一 EMIP的解碼,和2)起始通過第二線程對第二 EMIP的解碼。
13、 如權(quán)利要求l所述的方法,其中(c)的所述起始涉及l(fā))起始通過第一硬件解 碼引擎對第一 EMIP的解碼,和2)起始通過第二硬件解碼引擎對第二 EMIP的解碼。
14、 如權(quán)利要求1所述的方法,其中在(a)中接收的所述視頻信息包括網(wǎng)絡(luò)抽象層 (NAL)單元流。
15、 如權(quán)利要求l所述的方法,其中將所述視頻信息存儲在存儲器中,且其中在 (a)中將所述視頻信息從所述存儲器接收到基帶處理集成電路上。
16、 一種存儲在處理器可讀媒體上的處理器可執(zhí)行指令集,所述指令包括(a) 識別某一量的視頻信息中的一個或一個以上經(jīng)編碼的宏塊信息部分(EMIP), 其中所述量的視頻信息包含經(jīng)幀內(nèi)編碼的EMIP和經(jīng)幀間編碼的EMIP,且其中所識別 的每一 EMIP是不具有尚未解碼的前驅(qū)EMIP的EMIP;(b) 起始對在(a)中所識別的每一EMIP的解碼;及(c) 在至少大致完成步驟(a)中所起始的對任一 EMIP的所述解碼之后返回到(a), 其中執(zhí)行(a)、 (b)和(c)多次直到所述量的視頻信息被解碼為止,且其中對所述量的視頻 信息的所述解碼涉及對多個經(jīng)幀內(nèi)編碼的EMIP的同時解碼。
17、 如權(quán)利要求16所述的處理器可執(zhí)行指令集,其中對所述量的視頻信息的所 述解碼產(chǎn)生經(jīng)重構(gòu)的亮度信息幀。
18、 如權(quán)利要求16所述的處理器可執(zhí)行指令集,其中所述視頻信息是取自由以 下組成的群組H.264視頻信息、MPEG4視頻信息。
19、 一種適于接收經(jīng)編碼的視頻信息的系統(tǒng),所述經(jīng)編碼的視頻信息包含經(jīng)幀內(nèi) 編碼的部分和經(jīng)幀間編碼的部分,所述系統(tǒng)包括多個工作實體,其中每一工作實體可操作以對所述經(jīng)編碼的視頻信息的一部分進 行視頻幀內(nèi)解碼以產(chǎn)生經(jīng)重構(gòu)量的像素信息;及控制實體,其可操作以識別不具有尚未視頻解碼的任何前驅(qū)部分的一個或一個以 上部分,所述控制實體接著致使所述多個工作實體中的選定一者對所述經(jīng)識別部分的 每一者進行視頻解碼,其中所述控制實體致使所述多個工作實體對所識別的部分進行 解碼,以使得同時對至少一些所述經(jīng)幀內(nèi)編碼的部分進行幀內(nèi)解碼且使得產(chǎn)生經(jīng)重構(gòu) 的像素信息幀。
20、 如權(quán)利要求19所述的系統(tǒng),其中所述工作實體取自由以下組成的群組指令線程、專用硬件處理單元。
21、 如權(quán)利要求19所述的系統(tǒng),其中接收到所述系統(tǒng)上的所述經(jīng)編碼的視頻信 息取自由以下組成的群組H.264經(jīng)視頻編碼的信息、MPEG4經(jīng)視頻編碼的信息。
22、 如權(quán)利要求19所述的系統(tǒng),其中所述控制實體使用前驅(qū)表來識別所述一個 或一個以上部分,所述前驅(qū)表包含對應(yīng)于每一部分的前驅(qū)計數(shù)值。
23、 如權(quán)利要求19所述的系統(tǒng),其中所述系統(tǒng)取自由以下組成的群組基帶處 理器集成電路、視頻CODEC(編碼器/解碼器)集成電路、個人計算機和在所述個人計 算機上執(zhí)行的視頻解碼應(yīng)用層軟件。
24、 一種適于接收經(jīng)編碼的視頻信息的系統(tǒng),所述經(jīng)編碼的視頻信息包含經(jīng)幀內(nèi) 編碼的部分和經(jīng)幀間編碼的部分,所述系統(tǒng)包括多個工作實體,其中每一工作實體可操作以對所述經(jīng)編碼的視頻信息的一部分進 行視頻幀內(nèi)解碼以產(chǎn)生經(jīng)重構(gòu)量的像素信息;及用于以下操作的裝置l)使用優(yōu)先表來識別不具有尚未視頻解碼的任何前驅(qū)部分 的一個或一個以上部分,及2)致使所述多個工作實體中的選定一者對所述經(jīng)識別部分 的每一者進行視頻解碼。
25、 如權(quán)利要求24所述的系統(tǒng),其中至少一些所述經(jīng)幀內(nèi)編碼的部分是同時幀 內(nèi)解碼的。
26、 一種對某一量的視頻信息進行解碼的方法,所述視頻信息包括以下中的至少 一者H.264視頻信息和MPEG4視頻信息,所述方法包括同時對所述量的第一部分,所述量的第二部分和所述量的第三部分進行幀內(nèi)解 碼,其中對所述第一部分的所述幀內(nèi)解碼產(chǎn)生幀中的第一宏塊行中的第一經(jīng)重構(gòu)的宏塊,其中對所述第二部分的所述幀內(nèi)解碼產(chǎn)生所述幀中的第二宏塊行中的第二經(jīng)重構(gòu) 的宏塊,且其中對所述第三部分的所述幀內(nèi)解碼產(chǎn)生所述幀中的第三宏塊行中的第三 經(jīng)重構(gòu)的宏塊。
全文摘要
一種視頻流(例如H.264視頻)包含經(jīng)幀內(nèi)編碼的部分。解碼經(jīng)幀內(nèi)編碼的部分利用解碼所述幀中的一個或一個以上其它部分(稱為前驅(qū))的結(jié)果。幀重構(gòu)涉及識別不具有尚未解碼的前驅(qū)部分的部分且接著起始對所述經(jīng)識別部分的解碼。當對一部分的解碼大致完成時,接著檢驗待解碼的剩余部分以識別不具有尚未解碼的前驅(qū)的部分。通過實施此方法,可同時解碼多個部分??稍诓煌墓ぷ鲗嶓w上解碼每一部分,從而增加對整個幀的解碼速率。由于對前驅(qū)進行解塊濾波會毀壞對其它部分進行幀內(nèi)解碼時所需的信息,因此將經(jīng)預(yù)濾波的前驅(qū)信息存儲于緩沖器中以供隨后在幀內(nèi)解碼期間使用,從而促進對多個部分的同時解碼。
文檔編號H04N7/26GK101371587SQ200780002584
公開日2009年2月18日 申請日期2007年1月25日 優(yōu)先權(quán)日2006年1月25日
發(fā)明者杰森·羅伊·史密斯, 阿拉溫德·巴斯卡拉 申請人:高通股份有限公司