專利名稱:硬件多標(biāo)準(zhǔn)視頻解碼器裝置的制作方法
技術(shù)領(lǐng)域:
本文所描述的領(lǐng)域涉及視頻解碼。更明確地說,本發(fā)明涉及一種硬件多標(biāo)準(zhǔn)視頻解 碼器裝置。
背景技術(shù):
通常使用許多不同編碼標(biāo)準(zhǔn)中的一者來編碼數(shù)字視頻流。舉例來說,可壓縮數(shù)字視 頻流以便轉(zhuǎn)換成需要較少位的數(shù)據(jù)格式。此壓縮可為無損失的,使得可在解碼后重新創(chuàng) 建原始視頻流,或可為有損失的,使得不能重新創(chuàng)建原始視頻流的精確復(fù)本,但其中對(duì) 壓縮數(shù)據(jù)的解碼更加有效率。
當(dāng)前,存在大量視頻編碼標(biāo)準(zhǔn),且新標(biāo)準(zhǔn)正不斷出現(xiàn)。當(dāng)前視頻編碼標(biāo)準(zhǔn)的實(shí)例包 括JPEG (聯(lián)合圖像專家組)、MPEG (運(yùn)動(dòng)圖片專家組)、MPEG-2、 MPEG-3、 MPEG-4、 H.263、 H.263+、 H.264和例如里爾視頻(Real Video)和視窗媒體(Windows Media) 等專有標(biāo)準(zhǔn)。為了充分實(shí)現(xiàn)數(shù)字視頻的益處,用戶需要能使用能夠解碼所有一般編碼標(biāo) 準(zhǔn)的解碼器。
串流視頻的許多重要用途與實(shí)時(shí)通信相關(guān)。舉例來說,視頻電話需要實(shí)時(shí)視頻解碼, 以使得其可與相應(yīng)音頻信號(hào)同步。因此,還需要向用戶提供實(shí)時(shí)視頻解碼以提供與實(shí)時(shí)
通信相關(guān)的應(yīng)用。此外,會(huì)出現(xiàn)用戶需要解碼多個(gè)視頻流的情況。舉例來說,當(dāng)前正在 進(jìn)行視頻電話通話的用戶從與其通話的人員處接收附加圖像。在此實(shí)例中,在解碼對(duì)通 話必要的圖像的同時(shí),必須維持對(duì)視頻電話流的實(shí)時(shí)解碼。
當(dāng)前,使用兩種可用方法中的一者來執(zhí)行視頻解碼單標(biāo)準(zhǔn)硬件視頻解碼器;和基 于軟件的可編程核心,其可根據(jù)一個(gè)或一個(gè)以上視頻標(biāo)準(zhǔn)來解碼視頻流。單標(biāo)準(zhǔn)硬件視 頻解碼器可提供實(shí)時(shí)解碼功能性。然而,為了解碼使用特定編碼標(biāo)準(zhǔn)所編碼的視頻流,
用戶必須具有用于所述特定標(biāo)準(zhǔn)的硬件視頻解碼器。由于存在大量廣泛使用的視頻編碼 標(biāo)準(zhǔn),所以用戶將需要許多不同的單標(biāo)準(zhǔn)硬件視頻解碼器以存取使用不同視頻編碼標(biāo)準(zhǔn) 所編碼的數(shù)字視頻,從而對(duì)用戶造成相當(dāng)大的金錢成本。此外,典型計(jì)算機(jī)系統(tǒng)不具有 添加大量單標(biāo)準(zhǔn)硬件視頻解碼器的能力,從而進(jìn)一步限制用戶可存取的視頻流的數(shù)目。 當(dāng)前基于軟件的可編程核心視頻解碼器可用于提供使用一個(gè)或一個(gè)以上視頻編碼 標(biāo)準(zhǔn)的解碼??删幊毯诵囊曨l解碼器可包括用于加速解碼功能性的硬件加速。然而,可編程核心執(zhí)行所有解碼。可編程核心視頻解碼器通常具有高處理額外開銷,效率低下, 且比單標(biāo)準(zhǔn)硬件視頻解碼器消耗多得多的功率。此外,因?yàn)榻獯a受整個(gè)計(jì)算機(jī)系統(tǒng)的處 理要求的支配,所以可編程核心視頻解碼器不能夠持續(xù)提供實(shí)時(shí)視頻解碼。
因此,當(dāng)前可用的數(shù)字視頻解碼器不能夠提供用于大量廣泛使用的視頻編碼標(biāo)準(zhǔn)的 實(shí)時(shí)視頻解碼。此外,當(dāng)前可用的數(shù)字視頻解碼器不能夠提供用于使用大量廣泛使用的 視頻編碼標(biāo)準(zhǔn)所編碼的多個(gè)流的同時(shí)視頻解碼。此外,當(dāng)前可用的數(shù)字視頻解碼器不能 夠同時(shí)解碼多個(gè)視頻流,其中至少一個(gè)視頻流需要實(shí)時(shí)解碼。因此,需要一種克服現(xiàn)有 技術(shù)所具有的限制的新數(shù)字視頻解碼器。所述新數(shù)字視頻解碼器應(yīng)提供用于多個(gè)不同視 頻標(biāo)準(zhǔn)的實(shí)時(shí)視頻解碼功能性。新數(shù)字視頻解碼器還應(yīng)提供用于使用多個(gè)不同視頻標(biāo)準(zhǔn) 所編碼的多個(gè)視頻流的同時(shí)視頻解碼功能性。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種硬件多標(biāo)準(zhǔn)視頻解碼器裝置,其用于提供用于多個(gè)不同視 頻編碼標(biāo)準(zhǔn)的視頻解碼功能性。本發(fā)明的實(shí)施例能夠提供用于所述多個(gè)視頻編碼標(biāo)準(zhǔn)的 每一者的實(shí)時(shí)解碼。
在一個(gè)實(shí)施例中,本發(fā)明提供一種硬件多標(biāo)準(zhǔn)視頻解碼器裝置。所述硬件多標(biāo)準(zhǔn)視 頻解碼器裝置的命令剖析器可操作以存取視頻流且可操作以識(shí)別用于編碼視頻流的視 頻編碼標(biāo)準(zhǔn)。硬件多標(biāo)準(zhǔn)視頻解碼器裝置還包括用于執(zhí)行與解碼視頻流相關(guān)聯(lián)的操作的 多個(gè)硬件解碼塊,其中所述多個(gè)硬件解碼塊的不同子集用于解碼使用不同視頻編碼標(biāo)準(zhǔn) 所編碼的視頻流。在一個(gè)實(shí)施例中,硬件多標(biāo)準(zhǔn)視頻解碼器裝置實(shí)施在耦合到印刷電路 板的集成電路中,其中印刷電路板耦合到連接器,以便以可移除方式將印刷電路板耦合 到計(jì)算機(jī)系統(tǒng)。
在一個(gè)實(shí)施例中,命令剖析器可操作以激活所述多個(gè)硬件解碼塊的用于解碼用于編 碼視頻流的第一經(jīng)識(shí)別視頻編碼標(biāo)準(zhǔn)的第一子集,使得不與解碼所述視頻流相關(guān)聯(lián)的硬 件解碼塊不被激活。在一個(gè)實(shí)施例中,命令剖析器可操作以激活所述多個(gè)硬件解碼塊的 用于解碼用于編碼視頻流的第二經(jīng)識(shí)別視頻編碼標(biāo)準(zhǔn)的第二子集,使得不與解碼所述視
頻流相關(guān)聯(lián)的硬件解碼塊不被激活。
在一個(gè)實(shí)施例中,所述多個(gè)硬件解碼塊實(shí)施在多級(jí)宏塊層級(jí)管線內(nèi)。在一個(gè)實(shí)施例 中,命令剖析器可操作以在多級(jí)宏塊層級(jí)管線的一個(gè)級(jí)處沒有接收到視頻流的數(shù)據(jù)的情 況下停用所述級(jí)內(nèi)的硬件解碼塊。在一個(gè)實(shí)施例中,硬件多標(biāo)準(zhǔn)視頻解碼器裝置在完全 解碼視頻流之后對(duì)存儲(chǔ)器單元進(jìn)行存取。在一個(gè)實(shí)施例中,硬件多標(biāo)準(zhǔn)視頻解碼器裝置進(jìn)一步包括用于對(duì)已解碼視頻流執(zhí)行 后處理操作的硬件后處理塊。在一個(gè)實(shí)施例中,命令剖析器可操作以在命令剖析器處所 接收的視頻流是已解碼視頻流的情況下停用多個(gè)硬件解碼塊,使得硬件后處理塊對(duì)已解 碼視頻流執(zhí)行后處理操作。在一個(gè)實(shí)施例中,硬件后處理塊包含濾波器。
在另一實(shí)施例中,本發(fā)明提供一種用于解碼視頻流的方法,其中使用硬件多標(biāo)準(zhǔn)視 頻解碼器裝置來實(shí)施所述方法。存取視頻流。識(shí)別用于編碼所述視頻流的視頻標(biāo)準(zhǔn)。確 定硬件多標(biāo)準(zhǔn)視頻解碼器裝置的多個(gè)硬件解碼塊中的用于解碼所述視頻流的硬件解碼 塊子集,其中所述多個(gè)硬件解碼塊的不同子集可操作以解碼使用不同視頻編碼標(biāo)準(zhǔn)所編 碼的視頻流。使用所述硬件解碼塊子集解碼所述視頻流。
在一個(gè)實(shí)施例中,多個(gè)寄存器包含存儲(chǔ)器表面指標(biāo)寄存器和幀層級(jí)參數(shù)寄存器。在 一個(gè)實(shí)施例中,硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置進(jìn)一歩包括用于對(duì)至少一個(gè)已解碼視頻 流執(zhí)行后處理操作的硬件后處理塊。
在一個(gè)實(shí)施例中,多個(gè)視頻流包含至少一個(gè)數(shù)字靜止圖像流和一數(shù)字電影流。在本 實(shí)施例中,多個(gè)視頻流的若干部分為數(shù)字靜止圖像流和數(shù)字電影流的宏塊。在另一實(shí)施 例中,多個(gè)視頻流包含多個(gè)數(shù)字電影流。在本實(shí)施例中,多個(gè)視頻流的若干部分為多個(gè) 數(shù)字電影流的宏塊。
在另一實(shí)施例中,本發(fā)明提供一種用于解碼多個(gè)視頻流的方法,其中使用硬件多流 多標(biāo)準(zhǔn)視頻解碼器裝置實(shí)施所述方法。存取多個(gè)視頻流。識(shí)別用于編碼所述視頻流的視 頻標(biāo)準(zhǔn)。確定硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置的多個(gè)硬件解碼塊中的用于解碼所述視頻 流的硬件解碼塊子集,其中所述多個(gè)硬件解碼塊的不同子集可操作以解碼使用不同視頻 編碼標(biāo)準(zhǔn)所編碼的視頻流。使用所述硬件解碼塊子集解碼所述多個(gè)視頻流。在一個(gè)實(shí)施 例中,激活所述多個(gè)硬件解碼塊子集,使得不與解碼所述多個(gè)視頻流相關(guān)聯(lián)的硬件解碼 塊不被激活。
概括地說,本發(fā)明揭示一種硬件多標(biāo)準(zhǔn)視頻解碼器裝置。命令剖析器存取視頻流并
識(shí)別用于編碼所述視頻流的視頻編碼標(biāo)準(zhǔn)。多個(gè)硬件解碼塊執(zhí)行與解碼所述視頻流相關(guān) 聯(lián)的操作,其中所述多個(gè)硬件解碼塊的不同子集用于解碼使用不同視頻編碼標(biāo)準(zhǔn)所編碼
的視頻流。
在附式中以實(shí)例方式而非以限制方式說明本發(fā)明,在附圖中相同參考數(shù)字指代 相似元件且其中 -圖1說明根據(jù)本發(fā)明一個(gè)實(shí)施例的計(jì)算機(jī)系統(tǒng)的基本組件的概觀圖。 圖2A說明根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)施在印刷電路板上的示范性硬件視頻解碼器 卡的圖。
圖2B說明根據(jù)本發(fā)明一個(gè)實(shí)施例的包括硬件多標(biāo)準(zhǔn)視頻解碼器裝置的示范性結(jié)構(gòu)的圖。
圖3說明根據(jù)本發(fā)明一個(gè)實(shí)施例描繪硬件多標(biāo)準(zhǔn)視頻解碼器裝置的內(nèi)部組件的方框圖。
圖4說明根據(jù)本發(fā)明一個(gè)實(shí)施例描繪示范性硬件多標(biāo)準(zhǔn)視頻解碼器裝置的內(nèi)部組 件的方框圖。
圖5說明根據(jù)本發(fā)明實(shí)施例的用于解碼視頻流的方法的流程圖,其中使用硬件多標(biāo) 準(zhǔn)視頻解碼器裝置實(shí)施所述方法。
圖6展示根據(jù)本發(fā)明一個(gè)實(shí)施例描繪硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置的內(nèi)部組件 的圖。
圖7A和圖7B展示根據(jù)本發(fā)明實(shí)施例描繪多個(gè)視頻流的示范性交錯(cuò)部分的圖。 圖8說明根據(jù)本發(fā)明實(shí)施例的用于解碼多個(gè)視頻流的方法的流程圖,其中使用硬件
多流多標(biāo)準(zhǔn)視頻解碼器裝置實(shí)施所述方法。
圖9說明根據(jù)本發(fā)明實(shí)施例的用于處理視頻流的無序宏塊的方法的流程圖。 圖IOA和圖IOB說明根據(jù)本發(fā)明實(shí)施例的幀的宏塊的示范性旋轉(zhuǎn)的圖。 圖11說明根據(jù)本發(fā)明實(shí)施例的用于旋轉(zhuǎn)幀宏塊的方法的流程圖。
具體實(shí)施例方式
現(xiàn)將詳細(xì)參看本發(fā)明的優(yōu)選實(shí)施例,在附圖中說明其實(shí)例。盡管將結(jié)合優(yōu)選實(shí)施例 描述本發(fā)明,但將了解并不希望將本發(fā)明限于這些實(shí)施例。相反,本發(fā)明希望涵蓋替代 方案、修改和等效物,所述替代方案、修改和等效物可包括在如所附權(quán)利要求書界定的 本發(fā)明精神和范圍內(nèi)。此外,在以下對(duì)本發(fā)明實(shí)施例的詳細(xì)描述中,陳述許多具體細(xì)節(jié) 以便提供對(duì)本發(fā)明的徹底理解。然而,所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到可在沒有這些具體 細(xì)節(jié)的情況下實(shí)踐本發(fā)明。在其它實(shí)例中,尚未詳細(xì)描述眾所周知的方法、程序、組件 和電路,以免不必要地混淆本發(fā)明實(shí)施例的各方面。
符號(hào)和術(shù)語
按照程序、步驟、邏輯塊、處理和對(duì)計(jì)算機(jī)存儲(chǔ)器內(nèi)的數(shù)據(jù)位的操作的其它符號(hào)表 示而展現(xiàn)下列詳細(xì)描述的某些部分。這些描述和表示是數(shù)據(jù)處理領(lǐng)域的技術(shù)人員用來最有效地將其工作主旨傳達(dá)給所屬領(lǐng)域的其它技術(shù)人員的手段。本文中大體上將程序、計(jì) 算機(jī)執(zhí)行歩驟、邏輯塊、過程等構(gòu)思為導(dǎo)致所需結(jié)果的自相容歩驟或指令序列。所述步 驟是需要對(duì)物理量進(jìn)行物理操縱的歩驟。通常(盡管未必),這些量采取能夠在計(jì)算機(jī) 系統(tǒng)中存儲(chǔ)、傳送、組合、比較和以另外方式操縱的電信號(hào)或磁信號(hào)的形式。主要由于 通常使用的原因,已經(jīng)證明有時(shí)將這些信號(hào)稱作位、值、元件、符號(hào)、字符、項(xiàng)、數(shù)字 等是方便的。
然而,應(yīng)記住所有這些和類似術(shù)語將與適當(dāng)物理量相關(guān)聯(lián)且僅僅是應(yīng)用于這些量的 便利標(biāo)記。除非另有從以下論述顯而易見的明確陳述,否則將了解在本發(fā)明中,利用例 如"識(shí)別"或"存取"或"執(zhí)行"或"解碼"或"激活"或"停用"或"確定"或"處 理"或"接收"或"緩沖"或"排序"或"轉(zhuǎn)發(fā)"或"剖析"或"交錯(cuò)"或"旋轉(zhuǎn)"或 "重新定位"或"存儲(chǔ)"等術(shù)語的論述始終指代以下裝置的動(dòng)作和過程硬件多標(biāo)準(zhǔn)視 頻解碼器裝置(例如,圖3的硬件多標(biāo)準(zhǔn)視頻解碼器裝置150)、硬件多流多標(biāo)準(zhǔn)視頻 解碼器裝置(例如,圖6的硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置600)、微碼引擎(例如, 圖2B的微碼引擎260)、旋轉(zhuǎn)引擎(例如,圖4的旋轉(zhuǎn)引擎450)或類似電子計(jì)算裝置, 其操縱表示為計(jì)算機(jī)系統(tǒng)的寄存器和存儲(chǔ)器內(nèi)的物理(電子)量的數(shù)據(jù)并將其轉(zhuǎn)換成類 似地表示為計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其它此類信息存儲(chǔ)、傳輸或顯示裝置內(nèi)的物理 量的其它數(shù)據(jù)。
計(jì)算機(jī)系統(tǒng)平臺(tái)
圖1說明示范性計(jì)算機(jī)系統(tǒng)100,可在其上實(shí)踐本發(fā)明的實(shí)施例。通常,計(jì)算機(jī)系 統(tǒng)100包含總線IIO,其用于傳送信息;處理器IOI,其與總線IIO耦合且用于處理 信息和指令;易失性存儲(chǔ)器102,還稱作隨機(jī)存取存儲(chǔ)器(RAM),其與總線110耦合 且用于存儲(chǔ)用于處理器101的信息和指令;以及非易失性存儲(chǔ)器103,本文還稱作只讀 存儲(chǔ)器(ROM),其與總線110耦合且用于存儲(chǔ)用于處理器101的靜態(tài)信息和指令。
在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)IOO包含可選的數(shù)據(jù)存儲(chǔ)裝置104 (例如磁盤或光盤 和磁盤驅(qū)動(dòng)器),其與總線110耦合且用于存儲(chǔ)信息和指令。在一個(gè)實(shí)施例中,計(jì)算機(jī) 系統(tǒng)100包含用于向計(jì)算機(jī)用戶顯示信息的可選用戶輸出裝置,例如耦合到總線UO 的顯示裝置105;用于將信息和命令選擇傳送到處理器101的可選用戶輸入裝置,例如 耦合到總線110的包括字母數(shù)字和功能鍵的字母數(shù)字輸入裝置106;和/或用于將用戶輸 入信息和命令選擇傳送到處理器101的可選用戶輸入裝置,例如耦合到總線110的光標(biāo) 控制裝置107。此外,可選的輸入/輸出(I/O)裝置108用于將計(jì)算機(jī)系統(tǒng)IOO耦合到 (例如)網(wǎng)絡(luò)上。在一個(gè)實(shí)施例中,計(jì)算機(jī)系統(tǒng)IOO還包含硬件多標(biāo)準(zhǔn)視頻解碼器裝置150,在本文 中還稱作解碼器裝置150,其用于解碼使用多個(gè)視頻編碼標(biāo)準(zhǔn)中的一者編碼的視頻流。 解碼器裝置150包括多個(gè)硬件解碼塊,其用于執(zhí)行所述多個(gè)視頻編碼標(biāo)準(zhǔn)所需的解碼操 作。應(yīng)了解,解碼器裝置150可經(jīng)配置以解碼根據(jù)視頻編碼標(biāo)準(zhǔn)的任何組合的視頻,其 中包括數(shù)字靜止圖像和數(shù)字電影。舉例來說,解碼器裝置150可經(jīng)配置以解碼使用 JPEG、 MPEG-4、 H.263、 H.263+、 H.264和視窗媒體(Windows Media) (WMV9/VC-1) 格式中的任一者編碼的視頻。
應(yīng)了解,解碼器裝置150可實(shí)施為離散組件、經(jīng)設(shè)計(jì)以經(jīng)由連接器(例如,AGP 槽、PCI-Express槽等)耦合到計(jì)算機(jī)系統(tǒng)100的離散圖形卡、離散集成電路電路小片 (例如,直接安裝在母板上)或包括在計(jì)算機(jī)系統(tǒng)芯片集組件的集成電路電路小片內(nèi)的 集成解碼器裝置。此外,可包括用于解碼器裝置150的本地圖形存儲(chǔ)器以用于數(shù)據(jù)存儲(chǔ)。
圖2A說明根據(jù)本發(fā)明一個(gè)實(shí)施例的實(shí)施在印刷電路板上的示范性硬件視頻解碼器 卡200的圖。硬件視頻解碼器卡200包括印刷電路板(PCB) 210、集成電路(IC)芯 片220、數(shù)據(jù)線225和連接器230。 IC芯片220包括硬件多標(biāo)準(zhǔn)視頻解碼器裝置150。 連接器230經(jīng)配置以用于經(jīng)由計(jì)算機(jī)系統(tǒng)的連接器(例如,AGP槽、PCI-Express槽等) 耦合到計(jì)算機(jī)系統(tǒng)(例如,圖1的計(jì)算機(jī)系統(tǒng)100)。數(shù)據(jù)線225用于在計(jì)算機(jī)系統(tǒng)與 IC芯片220之間傳送數(shù)據(jù)(例如,位流)。
圖2B說明根據(jù)本發(fā)明一個(gè)實(shí)施例的包括硬件多標(biāo)準(zhǔn)視頻解碼器裝置150的示范性 結(jié)構(gòu)250的圖。結(jié)構(gòu)250包括微碼引擎260、硬件多標(biāo)準(zhǔn)視頻解碼器裝置150和存儲(chǔ)器 270。在一個(gè)實(shí)施例中,微碼引擎260控制硬件多標(biāo)準(zhǔn)視頻解碼器裝置150的操作。微 碼引擎260包括硬件多標(biāo)準(zhǔn)視頻解碼器裝置150必須執(zhí)行的操作,從而充當(dāng)機(jī)器指令與 硬件裝置解碼器150之間的轉(zhuǎn)譯層。在一個(gè)實(shí)施例中,在微碼引擎260中進(jìn)行位流剖析 和可變長(zhǎng)度解碼(VLD)。解碼器裝置150使用存儲(chǔ)器270以對(duì)己接收的視頻流執(zhí)行解 碼和后處理操作。在圖3的存儲(chǔ)器330處描述操作存儲(chǔ)器270的一個(gè)實(shí)施例。
參看圖2B,在一個(gè)實(shí)施例中,本發(fā)明提供在微碼引擎260處重新排序宏塊。如下 所述,解碼器裝置150支持不同后處理操作,例如環(huán)路內(nèi)去塊(例如,在環(huán)路內(nèi)去塊濾 波器440處)和環(huán)路外去塊和/或去環(huán)(例如,在環(huán)路外濾波器442處)。在各種實(shí)施例 中,環(huán)路內(nèi)去塊需要以光柵掃描次序在環(huán)路內(nèi)去塊濾波器處接收宏塊。然而,例如H.264 等某些視頻標(biāo)準(zhǔn)支持以非光柵掃描次序傳輸和接收宏塊。因此,本發(fā)明提供以光柵掃描 次序排序宏塊,以支持用于支持以非光柵掃描次序傳輸和接收宏塊的視頻標(biāo)準(zhǔn)的環(huán)路內(nèi) 去塊。在一個(gè)實(shí)施例中,在微碼引擎260處執(zhí)行預(yù)處理操作。在一個(gè)實(shí)施例中,在微碼引 擎260中進(jìn)行位流剖析和可變長(zhǎng)度解碼(VLD)。微碼引擎260經(jīng)配置以在將宏塊發(fā)送 到硬件解碼器裝置150之前排序所述宏塊。微碼引擎260緩沖一個(gè)幀的壓縮數(shù)據(jù)。在一 個(gè)實(shí)施例中,微碼引擎260緩沖一個(gè)幀的運(yùn)行長(zhǎng)度編碼壓縮數(shù)據(jù)。在一個(gè)實(shí)施例中,微 碼引擎260剖析傳入位流且接著執(zhí)行VLD。如果微碼引擎260檢測(cè)到無序宏塊,那么 其緩沖所述數(shù)據(jù)并等待接收所有宏塊。微碼引擎260接著以光柵掃描次序排序宏塊并將 其發(fā)送到硬件解碼器裝置150。
通過在宏塊仍為壓縮數(shù)據(jù)時(shí)緩沖宏塊,微碼引擎260僅需要緩沖最多一個(gè)幀的運(yùn)行 長(zhǎng)度編碼壓縮數(shù)據(jù),其比解碼的視頻數(shù)據(jù)少很多。此外,緩沖壓縮宏塊還節(jié)省功率。經(jīng) 由無線電接收的視頻流還常遭受許多誤差。將位流剖析分割到微碼引擎260還具有改進(jìn) 誤差恢復(fù)的優(yōu)點(diǎn)。
硬件多標(biāo)準(zhǔn)視頻解碼器裝置結(jié)構(gòu)
圖3展示根據(jù)本發(fā)明一個(gè)實(shí)施例描述硬件多標(biāo)準(zhǔn)視頻解碼器裝置150的內(nèi)部組件的 圖。如圖3中所說明,解碼器裝置150包括命令剖析器305、多個(gè)硬件解碼塊310到318、 硬件后處理塊320和存儲(chǔ)器330。解碼器裝置150可操作以解碼多個(gè)視頻編碼標(biāo)準(zhǔn)。
命令剖析器305用于存取視頻流302 (例如,位流)。視頻流302是根據(jù)多個(gè)視頻 編碼標(biāo)準(zhǔn)中的一者所編碼的壓縮視頻流。應(yīng)了解,視頻流302可包括數(shù)字靜止圖像數(shù)據(jù) (例如,JPEG編碼的)或數(shù)字電影數(shù)據(jù)(例如,MPEG-4)。在一個(gè)實(shí)施例中,從微碼 引擎(例如,圖2B的微碼引擎260)接收視頻流302。命令剖析器305識(shí)別用于編碼 視頻流302的視頻編碼標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,在命令剖析器305存取視頻流302之前 執(zhí)行位流剖析和可變長(zhǎng)度解碼(VLD)??赏ㄟ^主機(jī)CPU (例如,圖1的處理器101) 或微碼引擎(例如,圖2B的微碼引擎260)執(zhí)行位流剖析和VLD。命令剖析器305還 通過控制時(shí)鐘循環(huán)來控制數(shù)據(jù)移動(dòng)通過解碼器裝置150。
所述多個(gè)硬件解碼塊310到318用于執(zhí)行與解碼所述視頻流相關(guān)聯(lián)的操作。應(yīng)了解, 硬件解碼塊310到318代表根據(jù)視頻解碼器150內(nèi)實(shí)施的視頻標(biāo)準(zhǔn)解碼視頻流所需的不 同解碼功能。例如MPEG-4等視頻編碼標(biāo)準(zhǔn)需要執(zhí)行特定操作以解碼視頻流,使得所有 MPEG-4解碼器均能夠解碼MPEG-4視頻流。應(yīng)了解,根據(jù)各種標(biāo)準(zhǔn)執(zhí)行解碼所需的操 作對(duì)于所屬領(lǐng)域的技術(shù)人員是眾所周知的。
在一個(gè)實(shí)施例中,解碼器裝置150的硬件解碼塊經(jīng)配置以在宏塊層級(jí)(例如,8x8 像素宏塊)執(zhí)行操作。然而,應(yīng)了解,解碼器裝置150可包括在其它尺寸層級(jí)(例如幀 層級(jí))執(zhí)行操作的硬件解碼塊。硬件解碼塊310到318的不同子集用于解碼使用不同視頻編碼標(biāo)準(zhǔn)編碼的視頻流。 舉例來說,第一示范性視頻標(biāo)準(zhǔn)需要在解碼視頻流中使用硬件解碼塊312和316。第二 示范性視頻標(biāo)準(zhǔn)需要在解碼視頻流中使用硬件解碼塊310、 312、 314和318。因此,在 本發(fā)明的各種實(shí)施例中,僅將解碼視頻流所需的那些硬件解碼塊用于解碼使用已識(shí)別的 視頻標(biāo)準(zhǔn)編碼的視頻流。
在一個(gè)實(shí)施例中,命令剖析器305可操作以僅激活用于解碼己接收的視頻流所需要 的那些硬件解碼塊,使得不與解碼所述視頻流相關(guān)聯(lián)的硬件解碼塊不被激活。舉例來說, 激活用于解碼第一經(jīng)識(shí)別視頻編碼標(biāo)準(zhǔn)的第一硬件解碼塊子集(例如,硬件解碼塊312 和316),使得不與解碼所述視頻流相關(guān)聯(lián)的硬件解碼塊(例如,硬件解碼塊310、 314 和318)不被激活。在另一實(shí)例中,激活用于解碼第二經(jīng)識(shí)別視頻編碼標(biāo)準(zhǔn)的第二解碼 塊子集(例如,硬件解碼塊310、 312、 314和318),使得不與解碼所述視頻流相關(guān)聯(lián) 的硬件解碼塊(例如,硬件解碼塊316)不被激活。在一個(gè)實(shí)施例中,命令剖析器305 是解碼器裝置150中的唯一活動(dòng)組件。根據(jù)經(jīng)識(shí)別的視頻標(biāo)準(zhǔn)和數(shù)據(jù)流來按需要激活硬 件解碼塊。
在一個(gè)實(shí)施例中,解碼器裝置150的硬件解碼塊實(shí)施在多級(jí)宏塊層級(jí)管線內(nèi)。如圖 3中所展示,解碼器裝置150實(shí)施為三級(jí)宏塊層級(jí)管線,其中包含包括硬件解碼塊310 和312的管線級(jí)1以及包括硬件解碼塊314、 316和318的管線級(jí)2。在一個(gè)實(shí)施例中, 命令剖析器305引導(dǎo)視頻流302的宏塊進(jìn)入管線級(jí)1的硬件解碼塊。在一個(gè)實(shí)施例中, 一個(gè)以上宏塊可駐留在管線級(jí)1中,而管線級(jí)2和3限于僅有一個(gè)常駐宏塊。在一個(gè)實(shí) 施例中,硬件解碼塊312、 316和318位于剩余數(shù)據(jù)路徑中,且硬件解碼塊310和314 位于預(yù)測(cè)數(shù)據(jù)路徑中。在一個(gè)實(shí)施例中,剩余數(shù)據(jù)路徑處理誤差或差異數(shù)據(jù),且預(yù)測(cè)路 徑存取與先前幀或宏塊相關(guān)聯(lián)的數(shù)據(jù)。
在一個(gè)實(shí)施例中,命令剖析器305可操作以在多級(jí)宏塊層級(jí)管線的一個(gè)級(jí)處沒有接 收到所述視頻流的數(shù)據(jù)的情況下停用所述級(jí)內(nèi)的硬件解碼塊。舉例來說,在視頻流302 的解碼中,在視頻流302的最后數(shù)據(jù)離開管線級(jí)1且在管線級(jí)1處沒有接收到數(shù)據(jù)時(shí), 停用管線級(jí)1的所有硬件解碼塊。因此,通過停用管線級(jí)的所有硬件解碼塊來實(shí)現(xiàn)額外 功率節(jié)省,即使需要那些硬件解碼塊用于與視頻流302相關(guān)聯(lián)的視頻標(biāo)準(zhǔn)。
在一個(gè)實(shí)施例中,直到視頻流302被完全解碼,視頻流302才進(jìn)入或離開存儲(chǔ)器
330。應(yīng)了解,存儲(chǔ)器330可以是外部存儲(chǔ)器單元(例如,圖1的易失性存儲(chǔ)器102或
非易失性存儲(chǔ)器103)或解碼器裝置150的嵌入存儲(chǔ)器單元。通過直到完全解碼視頻流
302之后才存取存儲(chǔ)器330,解碼器裝置150使用較少功率。在一個(gè)實(shí)施例中,解碼器裝置150進(jìn)一步包括用于對(duì)已解碼視頻流執(zhí)行后處理操作 的硬件后處理塊320。在一個(gè)實(shí)施例中,硬件后處理塊320包括去塊濾波器。應(yīng)了解,
去塊濾波器可以是環(huán)路內(nèi)去塊濾波器或環(huán)路外去塊和/或去環(huán)濾波器。環(huán)路內(nèi)去塊濾波
器在存取存儲(chǔ)器330之前執(zhí)行去塊操作。環(huán)路外去塊和去環(huán)濾波器對(duì)從存儲(chǔ)器330存取 的數(shù)據(jù)執(zhí)行去塊和去環(huán)操作。然而,應(yīng)了解硬件后處理塊320可執(zhí)行任何類型的后處理 操作。此外,可存在用以執(zhí)行多個(gè)后處理操作的任何數(shù)目的硬件后處理塊320。
在一個(gè)實(shí)施例中,命令剖析器305可操作以在視頻流302為已解碼的視頻流的情況 下停用所有硬件解碼塊,使得硬件后處理塊320對(duì)己解碼的視頻流執(zhí)行后處理操作。換 句話說,解碼器裝置150還可僅用作硬件后處理裝置。如果在解碼器裝置150處接收到 己解碼的視頻流,那么停用所有硬件解碼塊,且對(duì)所述已解碼的視頻流進(jìn)行后處理操作。
圖4說明根據(jù)本發(fā)明一個(gè)實(shí)施例描述示范性硬件多標(biāo)準(zhǔn)視頻解碼器裝置400 (還稱 作解碼器裝置400)的內(nèi)部組件的方框圖。解碼器裝置400經(jīng)配置以作為JPEG、MPEG-4、 H.263、 H.263+、 H.264或WMV9/VC-1解碼器中的任一者操作。因此,解碼器裝置400 包括用于執(zhí)行用于解碼使用JPEG、 MPEG-4、 H.263、 H.263+、 H.264或WMV9/VC-1 標(biāo)準(zhǔn)中的任一者編碼的視頻流所必需的所有解碼操作的硬件解碼塊。然而,應(yīng)了解本發(fā) 明可靈活用于支持其它視頻標(biāo)準(zhǔn),且本發(fā)明不希望限于圖4中所描述的實(shí)施例。
如圖4中所說明,解碼器裝置400包括命令剖析器402、多個(gè)硬件解碼塊、多個(gè)硬 件后處理塊和存儲(chǔ)器460。命令剖析器402用于存取視頻流401 (例如,位流)。應(yīng)了解, 視頻流401可包括數(shù)字靜止圖像數(shù)據(jù)(例如,JPEG編碼的)或數(shù)字電影數(shù)據(jù)(例如, MPEG-4)。在一個(gè)實(shí)施例中,從微碼引擎(例如,圖2B的微碼引擎260)接收視頻流 401。視頻流401是根據(jù)多個(gè)視頻編碼標(biāo)準(zhǔn)中的一者所編碼的壓縮視頻流。命令剖析器 402識(shí)別用于編碼視頻流401的視頻編碼標(biāo)準(zhǔn)。在一個(gè)實(shí)施例中,在命令剖析器402存 取視頻流401之前執(zhí)行位流剖析和可變長(zhǎng)度解碼(VLD)。位流剖析和VLD可由主機(jī) CPU(例如,圖1的處理器101)或微碼引擎執(zhí)行。應(yīng)了解,如果視頻流401是使用不 同于解碼器裝置400經(jīng)配置以解碼的視頻標(biāo)準(zhǔn)的視頻標(biāo)準(zhǔn)而編碼的,那么不執(zhí)行解碼操 作。在一個(gè)實(shí)施例中,命令剖析器402向計(jì)算機(jī)系統(tǒng)發(fā)送指示,指示不能對(duì)使用非支持 標(biāo)準(zhǔn)編碼的視頻流執(zhí)行解碼。
在識(shí)別用于編碼視頻流401的視頻標(biāo)準(zhǔn)后,命令剖析器402將視頻流401的宏塊引 導(dǎo)到用于所識(shí)別視頻標(biāo)準(zhǔn)的適當(dāng)硬件解碼塊。在一個(gè)實(shí)施例中,命令剖析器激活用于所 識(shí)別視頻標(biāo)準(zhǔn)的適當(dāng)硬件解碼塊,使得不需要用于所識(shí)別視頻標(biāo)準(zhǔn)的硬件解碼塊被停 用。命令剖析器402還通過控制時(shí)鐘循環(huán)來控制數(shù)據(jù)移動(dòng)通過解碼器裝置400。在一個(gè)實(shí)施例中,命令剖析器402是解碼器裝置400中的唯一活動(dòng)組件。根據(jù)所識(shí)別的視頻標(biāo) 準(zhǔn)和數(shù)據(jù)流來按需要激活硬件解碼塊。
解碼器裝置400的硬件解碼塊包括幀內(nèi)預(yù)測(cè)模式引擎404、運(yùn)動(dòng)向量(MV)預(yù)測(cè) 引擎406、系數(shù)(例如,運(yùn)行長(zhǎng)度(RD)或去量化)引擎408、 AC/DC (例如,AC/DC 預(yù)測(cè)或去量化)預(yù)測(cè)引擎410、幀內(nèi)預(yù)測(cè)引擎414、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、 4x4反向變換引擎418、 8x8反向離散余弦變換(IDCT)引擎420、 IDCT格式轉(zhuǎn)換器引 擎422、幀內(nèi)預(yù)測(cè)緩沖器432、預(yù)測(cè)取樣434和剩余塊436。解碼器裝置400進(jìn)一步包 括多路復(fù)用器405、 409、 417、 419、 439和加法器435。解碼器裝置400還視情況包括 硬件后處理塊環(huán)路內(nèi)去塊濾波器440、環(huán)路外濾波器442和旋轉(zhuǎn)引擎450。
解碼器裝置400實(shí)施在具有剩余路徑和預(yù)測(cè)路徑的三級(jí)宏塊層級(jí)管線內(nèi)。在一個(gè)實(shí) 施例中, 一個(gè)以上宏塊可駐留在管線級(jí)1中,而管線級(jí)2和3限于僅有一個(gè)常駐宏塊。 剩余路徑包括系數(shù)引擎408、 AC/DC預(yù)測(cè)引擎410、 4x4反向變換引擎418、 8x8 IDCT 引擎420、 IDCT格式轉(zhuǎn)換器引擎422和剩余塊436。預(yù)測(cè)路徑包括幀內(nèi)預(yù)測(cè)模式引擎 404、 MV預(yù)測(cè)引擎406、幀內(nèi)預(yù)測(cè)引擎414、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、幀內(nèi) 預(yù)測(cè)緩沖器432和預(yù)測(cè)取樣434。
如上所述,解碼器裝置400可操作以解碼根據(jù)JPEG、 MPEG-4、 H.263、 H.263+、 H.264或WMV9/VC-1標(biāo)準(zhǔn)的任一者的視頻流。所描述的硬件解碼塊執(zhí)行根據(jù)所支持標(biāo) 準(zhǔn)所需要的所有解碼操作。硬件解碼塊的具體操作是眾所周知的且為所屬領(lǐng)域的技術(shù)人 員所了解,如所述標(biāo)準(zhǔn)的每一者中描述所述操作。因此,本文不詳細(xì)描述硬件解碼塊的 具體操作。
在一個(gè)實(shí)施例中,在預(yù)測(cè)路徑中將MV參數(shù)和幀內(nèi)預(yù)測(cè)參數(shù)分別傳遞到MV預(yù)測(cè) 引擎406和幀內(nèi)預(yù)測(cè)模式引擎404。這些引擎基于已編程視頻標(biāo)準(zhǔn)計(jì)算實(shí)際運(yùn)動(dòng)向量或 幀內(nèi)預(yù)測(cè)模式,且將其分別傳遞到運(yùn)動(dòng)補(bǔ)償引擎416或幀內(nèi)預(yù)測(cè)引擎4M。運(yùn)動(dòng)補(bǔ)償引 擎416或幀內(nèi)預(yù)測(cè)引擎414計(jì)算所預(yù)測(cè)的數(shù)據(jù)。在一個(gè)實(shí)施例中,運(yùn)動(dòng)補(bǔ)償引擎416 包括旋轉(zhuǎn)引擎415。旋轉(zhuǎn)引擎415用于旋轉(zhuǎn)參考幀以與傳入視頻幀對(duì)準(zhǔn)。每當(dāng)在解碼視 頻流中使用運(yùn)動(dòng)補(bǔ)償引擎時(shí),激活旋轉(zhuǎn)引擎415。同時(shí),在系數(shù)引擎408、 AC/DC預(yù)測(cè) 引擎410、 4x4反向變換引擎418、 8x8 IDCT引擎420和IDCT格式轉(zhuǎn)換器引擎422的 所需子集中處理誤差數(shù)據(jù)。
將所恢復(fù)的誤差數(shù)據(jù)添加到已預(yù)測(cè)的數(shù)據(jù),且接著將其進(jìn)一步傳遞到管線級(jí)3。如 果必要的話,進(jìn)一步處理所得數(shù)據(jù)且將其寫入到存儲(chǔ)器460以待顯示。環(huán)路內(nèi)去塊濾波 器用于H264和WMV9/VC-1模式中。在WMV9/VC-1模式中,環(huán)路內(nèi)去塊濾波器440用于實(shí)施重疊平滑濾波。環(huán)路外濾波器442可用于任何視頻流以改進(jìn)已解碼圖像的質(zhì) 量。在一個(gè)實(shí)施例中,環(huán)路外濾波器442與解碼器裝置400的其余部分同時(shí)運(yùn)行。在將 幀解碼到存儲(chǔ)器460中之后應(yīng)觸發(fā)環(huán)路外濾波器442。已解碼的圖像還可在寫入到管線 級(jí)3中的存儲(chǔ)器460之前在旋轉(zhuǎn)引擎450處予以旋轉(zhuǎn)。
硬件多標(biāo)準(zhǔn)視頻解碼器裝置針對(duì)所支持視頻標(biāo)準(zhǔn)的示范性操作 以下實(shí)施例描述解碼器裝置400針對(duì)所支持視頻標(biāo)準(zhǔn)中的每一者的操作-JPEG: JPEG解碼不需要預(yù)測(cè)路徑的硬件解碼塊,因?yàn)镴PEG視頻流用于重新創(chuàng)建 數(shù)字靜止圖像。因此,針對(duì)JPEG解碼全部停用幀內(nèi)預(yù)測(cè)模式引擎404、 MV預(yù)測(cè)引擎 406、幀內(nèi)預(yù)測(cè)引擎414、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、幀內(nèi)預(yù)測(cè)緩沖器432和預(yù) 測(cè)取樣434。而且,JPEG解碼不需要4x4反向變換引擎418,其因此被停用。命令剖析 器402激活系數(shù)引擎408、 AC/DC預(yù)測(cè)引擎410、 8x8 IDCT引擎420、抽取IDCT引擎 438、 IDCT格式轉(zhuǎn)換器引擎422和剩余塊436。命令剖析器402將來自視頻流401的數(shù) 據(jù)路由通過用于解碼JPEG編碼視頻流的活動(dòng)硬件解碼塊。應(yīng)了解,由硬件解碼塊所執(zhí) 行的操作和操作順序是由JPEG標(biāo)準(zhǔn)規(guī)定的。
JPEG解碼僅需要使用8x8 IDCT引擎420和抽取IDCT引擎438中的一者。在一個(gè) 實(shí)施例中,命令剖析器402可操作以識(shí)別針對(duì)所述視頻流激活8x8 IDCT引擎420和抽 取IDCT引擎438中的哪一者。激活8x8 IDCT引擎420以用于完全解碼視頻流,而在 視頻流指示抽取的情況下激活抽取IDCT引擎438。 IDCT格式轉(zhuǎn)換器引擎422可操作 以執(zhí)行格式轉(zhuǎn)換。舉例來說,IDCT格式轉(zhuǎn)換器引擎422可在任何下列格式之間執(zhí)行格 式轉(zhuǎn)換YUV 4:4:4、 YUV 4:2:2、 YUV 4:2:2R禾Q YUV 4:2:0。應(yīng)了解,還可執(zhí)行其它格 式轉(zhuǎn)換,且IDCT格式轉(zhuǎn)換器引擎422不限于所列舉的格式。
已解碼的JPEG視頻流離開管線級(jí)2。在一個(gè)實(shí)施例中,已解碼的JPEG視頻流存 儲(chǔ)在存儲(chǔ)器330中。在另一實(shí)施例中,在將已解碼的JPEG視頻流存儲(chǔ)于存儲(chǔ)器330中
之前對(duì)其執(zhí)行后處理操作。
MPEG-4/H.263: MPEG-4和H.263解碼對(duì)于解碼器裝置400的用途來說彼此非常 相似。明確地說,MPEG-4標(biāo)準(zhǔn)需要MPEG-4解碼器可操作以解碼H.263編碼的視頻流。 MPEG-4和H.263解碼不需要幀內(nèi)預(yù)測(cè)模式引擎404、幀內(nèi)預(yù)測(cè)引擎414、 IDCT格式轉(zhuǎn) 換器引擎422和4x4反向變換引擎418,其均被停用。此外,還針對(duì)后處理操作停用環(huán) 路內(nèi)去塊濾波器440。因此,命令剖析器激活MV預(yù)測(cè)引擎406、系數(shù)引擎408、 AC/DC 預(yù)測(cè)引擎410、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、 8x8 IDCT引擎420、幀內(nèi)預(yù)測(cè)緩沖 器432、預(yù)測(cè)取樣434和剩余塊436。命令剖析器402將來自視頻流401的數(shù)據(jù)路由通過用于解碼MPEG-4或H.263編碼視頻流的活動(dòng)硬件解碼塊。應(yīng)了解,由硬件解碼塊執(zhí) 行的操作和操作順序是由MPEG-4和H.263標(biāo)準(zhǔn)規(guī)定的。
命令剖析器402可操作以將宏塊引導(dǎo)到適當(dāng)剩余路徑或預(yù)測(cè)路徑硬件解碼塊。在一 個(gè)實(shí)施例中,可在管線級(jí)1內(nèi)的MV預(yù)測(cè)引擎406處處理預(yù)測(cè)幀(P幀)的同時(shí),在剩 余路徑的系數(shù)引擎408和AC/DC預(yù)測(cè)引擎410處處理內(nèi)幀(I幀)。在管線級(jí)2處同步 I幀和P幀。命令剖析器402還可操作以激活8x8 IDCT引擎420的適當(dāng)硬件解碼塊。
已解碼的MPEG-4/H.263視頻流離開管線級(jí)2。在一個(gè)實(shí)施例中,已解碼的 MPEG-4/H.263視頻流存儲(chǔ)在存儲(chǔ)器330中。在另一實(shí)施例中,在將己解碼的 MPEG-4/H.263視頻流存儲(chǔ)于存儲(chǔ)器330中之前對(duì)其執(zhí)行后處理操作。在另一實(shí)施例中, 在環(huán)路外濾波器442處對(duì)已解碼的MPEG-4/H.263視頻流執(zhí)行后處理操作。在一個(gè)實(shí)施 例中,環(huán)路外濾波器442是去塊濾波器。在另一實(shí)施例中,環(huán)路外濾波器442是去環(huán)濾 波器。在另一實(shí)施例中,環(huán)路外濾波器442是去塊濾波器和去環(huán)濾波器兩者。應(yīng)了解, 環(huán)路外濾波器442可實(shí)施為任何去塊和/或去環(huán)濾波器。
H.263+: H.263+解碼類似于如上所述的MPEG-4/H.263解碼。H.263+將解碼操作的 一部分移位到VLD,其在命令剖析器402存取視頻流401之前執(zhí)行。除了不需要且因 此停用幀內(nèi)預(yù)測(cè)模式引擎404、幀內(nèi)預(yù)測(cè)引擎414、 4x4反向變換引擎418和環(huán)路外濾 波器442之外,命令剖析器402還停用系數(shù)引擎408和AC/DC預(yù)測(cè)引擎410。在其它 方面,H,263+解碼類似于如上所述的MPEG-4/H.263解碼。應(yīng)了解,由硬件解碼塊執(zhí)行 的操作和操作順序是由H.263+標(biāo)準(zhǔn)規(guī)定的。
H.264: H.264解碼不需要AC/DC預(yù)測(cè)引擎410、 8x8 IDCT引擎420和IDCT格式 轉(zhuǎn)換器引擎422,其均被停用。因此,命令剖析器402激活幀內(nèi)預(yù)測(cè)模式引擎404、 MV 預(yù)測(cè)引擎406、系數(shù)引擎408、幀內(nèi)預(yù)測(cè)引擎414、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、 4x4反向變換引擎418、幀內(nèi)預(yù)測(cè)緩沖器432、預(yù)測(cè)取樣434和剩余塊436。幀內(nèi)預(yù)測(cè)緩 沖器432可操作以存儲(chǔ)來自先前宏塊的頂行像素,使得幀內(nèi)預(yù)測(cè)引擎414可在處理下一 行宏塊時(shí)存取先前"調(diào)平"像素。命令剖析器402將來自視頻流401的數(shù)據(jù)路由通過用 于解碼H.264編碼視頻流的活動(dòng)硬件解碼塊。應(yīng)了解,由硬件解碼塊執(zhí)行的操作和操作 順序是由H.264標(biāo)準(zhǔn)規(guī)定的。
命令剖析器402可操作以將宏塊引導(dǎo)到適當(dāng)剩余路徑或預(yù)測(cè)路徑硬件解碼塊。在一 個(gè)實(shí)施例中,可在管線級(jí)1內(nèi)在剩余路徑和預(yù)測(cè)路徑處同時(shí)處理多個(gè)幀。在管線級(jí)2 處同步所述幀。
已解碼的H.264視頻流離開管線級(jí)2。在一個(gè)實(shí)施例中,在將已解碼的H.264視頻流存儲(chǔ)于存儲(chǔ)器330中之前對(duì)其執(zhí)行環(huán)路內(nèi)后處理操作。在另一實(shí)施例中,在環(huán)路外濾 波器442處對(duì)已解碼的H.264視頻流執(zhí)行環(huán)路外后處理操作。應(yīng)了解,環(huán)路外濾波器 442可實(shí)施為任何去塊濾波器和/或去環(huán)濾波器。
WMV9/VC-1: WMV9/VC-1解碼不需要幀內(nèi)預(yù)測(cè)模式引擎404和幀內(nèi)預(yù)測(cè)引擎414 , 其均被停用。因此,命令剖析器402激活MV預(yù)測(cè)引擎406、系數(shù)引擎408、 AC/DC預(yù) 測(cè)引擎410、旋轉(zhuǎn)引擎415、運(yùn)動(dòng)補(bǔ)償引擎416、 4x4反向變換引擎418、 8^8 IDCT引 擎420、幀內(nèi)預(yù)測(cè)緩沖器432、預(yù)測(cè)取樣434和剩余塊436。命令剖析器402將來自視 頻流401的數(shù)據(jù)路由通過用于解碼WMV9/VC-1編碼視頻流的活動(dòng)硬件解碼塊。應(yīng)了解, 由硬件解碼塊執(zhí)行的操作和操作順序是由WMV9/VC-1標(biāo)準(zhǔn)規(guī)定的。
命令剖析器402可操作以將宏塊引導(dǎo)到適當(dāng)剩余路徑或預(yù)測(cè)路徑硬件解碼塊。在一 個(gè)實(shí)施例中,可在管線級(jí)1內(nèi)在剩余路徑和預(yù)測(cè)路徑處同時(shí)處理多個(gè)幀。在管線級(jí)2 處同步所述幀。
已解碼的WMV9/VC-1視頻流離開管線級(jí)2。在一個(gè)實(shí)施例中,在將已解碼的 WMV9/VC-1視頻流存儲(chǔ)于存儲(chǔ)器330中之前對(duì)其執(zhí)行環(huán)路內(nèi)后處理操作。在一個(gè)實(shí)施 例中,環(huán)路內(nèi)去塊濾波器440用于實(shí)施重疊平滑濾波。在另一實(shí)施例中,在環(huán)路外濾波 器442處對(duì)己解碼的WMV9/VC-1視頻流執(zhí)行后處理操作。應(yīng)了解,環(huán)路外濾波器442 可實(shí)施為任何去塊和/或去環(huán)濾波器。
后處理操作
解碼器裝置400的管線級(jí)3包括三個(gè)硬件后處理塊環(huán)路內(nèi)去塊濾波器440、環(huán)路 外濾波器442和旋轉(zhuǎn)引擎450。環(huán)路內(nèi)去塊濾波器440用于H.264和WMV9/VC-1模式 中。在一個(gè)實(shí)施例中,在WMV9/VC-1模式中,環(huán)路內(nèi)去塊濾波器440用于實(shí)施重疊平 滑濾波。
環(huán)路外濾波器442可用于任何視頻流以改進(jìn)已解碼圖像的質(zhì)量。在一個(gè)實(shí)施例中, 環(huán)路外濾波器442與解碼器裝置400的剩余部分同時(shí)運(yùn)行。在將幀解碼到存儲(chǔ)器460 中之后應(yīng)觸發(fā)環(huán)路外濾波器442。
應(yīng)了解,任何去塊和/或去環(huán)濾波器可用于環(huán)路外濾波器442。舉例來說,國際標(biāo)準(zhǔn) 化組織(ISO)(用于監(jiān)督可在裝置150中實(shí)施的許多視頻標(biāo)準(zhǔn)的組織)常常在標(biāo)準(zhǔn)化 出版物中包括所建議的去塊濾波器。舉例來說,環(huán)路外濾波器442可包括ISO出版物 ISO/IEC 14496-2,2001的F.3.1章節(jié)中所描述的去塊濾波器。
己解碼的圖像還可在寫入到管線級(jí)3中的存儲(chǔ)器460之前在旋轉(zhuǎn)引擎450處加以旋
轉(zhuǎn)。旋轉(zhuǎn)引擎450經(jīng)配置以基于所指示的旋轉(zhuǎn)度而提供運(yùn)行中宏塊旋轉(zhuǎn),其中旋轉(zhuǎn)各個(gè)宏塊并將其放置在所述幀的新位置中。參看以下對(duì)圖IOA、 10B和ll的論述,以獲得 對(duì)旋轉(zhuǎn)引擎450的操作的詳細(xì)論述。
用于使用硬件多標(biāo)準(zhǔn)視頻解碼器裝置解碼視頻流的方法
圖5說明根據(jù)本發(fā)明實(shí)施例的用于解碼視頻流的方法500的流程圖,其中使用硬件 多標(biāo)準(zhǔn)視頻解碼器裝置實(shí)施所述方法。雖然在方法500中揭示了具體步驟,但所述步驟 為示范性的。也就是說,本發(fā)明實(shí)施例完全適合于執(zhí)行各種其它歩驟或圖5中所述的步 驟的變型。在一個(gè)實(shí)施例中,通過圖3的解碼器裝置150執(zhí)行方法500。
在過程500的歩驟510處,存取視頻流。在步驟520處,識(shí)別用于編碼所述視頻流 的視頻標(biāo)準(zhǔn)。硬件多標(biāo)準(zhǔn)視頻解碼器裝置經(jīng)配置以根據(jù)多個(gè)視頻標(biāo)準(zhǔn)解碼所述視頻流。
在歩驟530處,確定硬件多標(biāo)準(zhǔn)視頻解碼器裝置的多個(gè)硬件解碼塊中的用于解碼所 述視頻流的硬件解碼塊子集。所述多個(gè)硬件解碼塊的不同子集可操作以解碼使用不同視 頻編碼標(biāo)準(zhǔn)編碼的視頻流。在一個(gè)實(shí)施例中,如歩驟540處所展示,激活所述硬件解碼 塊子集,使得不與解碼所述視頻流相關(guān)聯(lián)的硬件解碼塊不被激活。
在步驟550處,使用所述硬件解碼塊子集來解碼視頻流。在一個(gè)實(shí)施例中,如步驟 560處所展示,如果在多級(jí)宏塊層級(jí)管線的一個(gè)級(jí)處沒有接收到視頻流的數(shù)據(jù),那么停 用所述級(jí)內(nèi)的硬件解碼塊。應(yīng)了解,步驟540和560提供額外功率節(jié)省且是可選的。
在步驟570處,在解碼所述視頻流之后存取存儲(chǔ)器單元。在一個(gè)實(shí)施例中,將已解 碼的視頻流存儲(chǔ)在存儲(chǔ)器中以供顯示。在一個(gè)實(shí)施例中,如步驟580處所展示,對(duì)已解 碼的視頻流進(jìn)行后處理操作。應(yīng)了解,可在執(zhí)行步驟570之前或之后執(zhí)行后處理操作。 在一個(gè)實(shí)施例中,旋轉(zhuǎn)己解碼的視頻流。在另一實(shí)施例中,將環(huán)路內(nèi)去塊濾波器應(yīng)用于 已解碼的視頻流。在存取存儲(chǔ)器單元之前,執(zhí)行旋轉(zhuǎn)和環(huán)路內(nèi)去塊。在一個(gè)實(shí)施例中, 在存取存儲(chǔ)器單元之后,將環(huán)路外去塊和去環(huán)濾波器應(yīng)用于已解碼的視頻流。
使用硬件多標(biāo)準(zhǔn)視頻解碼器裝置解碼使用不同視頻標(biāo)準(zhǔn)編碼的多個(gè)流
本發(fā)明的硬件多標(biāo)準(zhǔn)視頻解碼器裝置的實(shí)施例還可操作以同時(shí)解碼多個(gè)視頻流。交 錯(cuò)所述視頻流的若干部分,例如宏塊或幀。解碼器裝置連續(xù)存取經(jīng)交錯(cuò)的部分。因此, 解碼器裝置對(duì)經(jīng)交錯(cuò)的部分執(zhí)行解碼操作。舉例來說,可對(duì)兩個(gè)視頻流的宏塊執(zhí)行解碼 操作。交錯(cuò)所述視頻流,使得所述視頻流的宏塊交替。在每一時(shí)鐘循環(huán)中,可對(duì)交替的 視頻流執(zhí)行解碼操作。
圖6展示根據(jù)本發(fā)明一個(gè)實(shí)施例描繪硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置600的內(nèi)部組 件的圖。如圖6中所說明,解碼器裝置600包括視頻流交錯(cuò)器605、命令剖析器305、 多個(gè)硬件解碼塊310到318、硬件后處理塊320、存儲(chǔ)器330、寄存器集610和寄存器集620。解碼器裝置600可操作以解碼多個(gè)視頻編碼標(biāo)準(zhǔn),且以類似于圖3的解碼器裝 置150的方式操作。解碼器裝置600不同于解碼器裝置150,因?yàn)榧拇嫫骷?10和620 允許解碼器裝置600同時(shí)解碼多個(gè)視頻流。
視頻流交錯(cuò)器605可操作以存取多個(gè)視頻流并交錯(cuò)所述視頻流的若干部分。如圖所 示,視頻流交錯(cuò)器605存取視頻流601和602。然而,應(yīng)了解視頻流交錯(cuò)器605可操作 以接收任何數(shù)目的視頻流,且不限于圖6中所展示的實(shí)施例。在一個(gè)實(shí)施例中,從微碼 引擎(例如,圖2B的微碼引擎260)接收視頻流601和602。
圖7A和7B展示根據(jù)本發(fā)明實(shí)施例的描繪多個(gè)視頻流的示范性交錯(cuò)部分的圖。參 看圖7A,展示兩個(gè)交錯(cuò)視頻流,其中一個(gè)流為靜止圖像視頻流(例如,JPEG)且另一 個(gè)流為數(shù)字電影流(例如,MPEG-4)。如圖所示,在視頻流僅包括一個(gè)數(shù)字電影流的情 況下,可在宏塊層級(jí)處交錯(cuò)視頻流。明確地說,靜止圖像宏塊704和708與數(shù)字電影宏 塊702和706交錯(cuò),使得來自每一視頻流的宏塊在交錯(cuò)流700內(nèi)交替。在宏塊層級(jí)處交 錯(cuò)視、頻流的情況下,解碼器裝置600的軟件驅(qū)動(dòng)器緩沖系統(tǒng)存儲(chǔ)器中的宏塊數(shù)據(jù)以管理 交錯(cuò)視頻流的解碼。
參看圖7B,展示了兩個(gè)交錯(cuò)的視頻流,其中所述兩個(gè)流都為數(shù)字電影流。如圖所 示,在視頻流包括多個(gè)數(shù)字電影流的情況下,在幀層級(jí)處交錯(cuò)視頻流。明確地說,第一 數(shù)字電影幀752和756與第二數(shù)字電影幀754和758交錯(cuò),使得來自每一視頻流的幀在 交錯(cuò)流750內(nèi)交替。在幀層級(jí)處交錯(cuò)視頻流的情況下,解碼器裝置600的軟件驅(qū)動(dòng)器緩 沖系統(tǒng)存儲(chǔ)器中的幀數(shù)據(jù)以管理交錯(cuò)視頻流的解碼。
參看圖6,命令剖析器305、硬件解碼塊310到318、硬件后處理塊320和存儲(chǔ)器 330如圖3所述那樣操作。通過命令剖析器305將剩余數(shù)據(jù)和其它解碼器參數(shù)傳遞到解 碼器裝置。將把來自命令剖析器305的數(shù)據(jù)路由到剩余路徑(硬件解碼塊312、 316和 318)或預(yù)測(cè)路徑(硬件解碼塊310和314)。在預(yù)測(cè)路徑將制備/取出先前幀或先前宏塊 的數(shù)據(jù)的情況下,剩余路徑將處理誤差或差異數(shù)據(jù)。
為了管理交錯(cuò)視頻流的解碼,在管線級(jí)1中維持兩個(gè)寄存器集610和620。在一個(gè)
實(shí)施例中,寄存器集610和620分別存儲(chǔ)存儲(chǔ)器表面指標(biāo)612和622,且分別存儲(chǔ)幀層
級(jí)參數(shù)614和624。所述寄存器集的每一者用于存儲(chǔ)與視頻流中的一者相關(guān)聯(lián)的參數(shù)。
舉例來說,寄存器集610用于存儲(chǔ)與視頻流601相關(guān)聯(lián)的參數(shù),且寄存器集620用于存
儲(chǔ)與視頻流602相關(guān)聯(lián)的參數(shù)。 一旦在管線級(jí)1中處理了一個(gè)視頻流的任一部分,適當(dāng)
參數(shù)便與剩余數(shù)據(jù)或預(yù)測(cè)數(shù)據(jù)一起以包形式傳遞到下游管線級(jí)2和3?;诤陦K具有靜
止圖像還是數(shù)字電影類型而將已解碼的數(shù)據(jù)路由到存儲(chǔ)器中的適當(dāng)區(qū)域。應(yīng)了解,解碼器裝置600可經(jīng)配置以通過添加適當(dāng)數(shù)目的寄存器集來解碼任何數(shù)目的視頻流,使得待 解碼的每一流具有相關(guān)聯(lián)的寄存器集。
圖8說明根據(jù)本發(fā)明實(shí)施例的用于解碼多個(gè)視頻流的方法800的流程圖,其中使用 硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置實(shí)施所述方法。雖然在方法800中揭示了具體步驟,但 所述歩驟為示范性的。也就是說,本發(fā)明的實(shí)施例完全適合于執(zhí)行各種其它步驟或圖8 中所述的歩驟的變型。在一個(gè)實(shí)施例中,由圖6的解碼器裝置600執(zhí)行方法800。
在過程800的步驟810處,存取多個(gè)視頻流。在步驟820處,識(shí)別用于編碼所述視 頻流的視頻標(biāo)準(zhǔn)。硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置經(jīng)配置以根據(jù)多個(gè)視頻標(biāo)準(zhǔn)解碼視頻 流。在步驟830處,交錯(cuò)所述視頻流的若干部分。在一個(gè)實(shí)施例中,在視頻流僅包括一 個(gè)數(shù)字電影流的情況下,交錯(cuò)所述視頻流的若干宏塊。在另一實(shí)施例中,在視頻流包括 多個(gè)數(shù)字電影流的情況下,交錯(cuò)所述視頻流的若干幀。應(yīng)了解,可以任何次序執(zhí)行步驟 820和830。
在步驟840處,確定硬件多標(biāo)準(zhǔn)視頻解碼器裝置的多個(gè)硬件解碼塊中的用于解碼所 述多個(gè)視頻流的硬件解碼塊子集。所述多個(gè)硬件解碼塊的不同子集可操作以解碼使用不 同視頻編碼標(biāo)準(zhǔn)編碼的視頻流。在一個(gè)實(shí)施例中,如歩驟850處所展示,激活所述硬件 解碼塊子集,使得不與解碼所述視頻流相關(guān)聯(lián)的硬件解碼塊不被激活。
在步驟860處,使用所述硬件解碼塊子集解碼所述視頻流。在歩驟870處,在解碼 所述視頻流之后存取存儲(chǔ)器單元。在一個(gè)實(shí)施例中,將己解碼的視頻流存儲(chǔ)在存儲(chǔ)器中 以供顯示。在一個(gè)實(shí)施例中,如步驟880處所展示,對(duì)至少一個(gè)已解碼的視頻流進(jìn)行后 處理操作。應(yīng)了解,可在執(zhí)行步驟870之前或之后執(zhí)行后處理操作。在一個(gè)實(shí)施例中, 旋轉(zhuǎn)已解碼的視頻流。在另一實(shí)施例中,將環(huán)路內(nèi)去塊濾波器應(yīng)用于已解碼的視頻流。 在存取存儲(chǔ)器單元之前執(zhí)行旋轉(zhuǎn)和環(huán)路內(nèi)去塊。在一個(gè)實(shí)施例中,在存取存儲(chǔ)器單元之 后,將環(huán)路外去塊和去環(huán)濾波器應(yīng)用于已解碼的視頻流。
處理視頻流的無序宏塊
參看圖2B,在一個(gè)實(shí)施例中,本發(fā)明提供在微碼引擎260處緩沖和重新排序宏塊。 本發(fā)明提供以光柵掃描次序排序宏塊以支持用于支持以非光柵掃描次序傳輸和接收宏 塊的視頻標(biāo)準(zhǔn)的環(huán)路內(nèi)去塊。微碼引擎260經(jīng)配置以接收表示視頻流的幀的宏塊的壓縮 數(shù)據(jù)。在一個(gè)實(shí)施例中,至少一個(gè)宏塊被無序接收。微碼引擎260經(jīng)配置以緩沖所述壓 縮數(shù)據(jù)且經(jīng)配置為以光柵掃描次序排序所述幀的宏塊。
圖9說明根據(jù)本發(fā)明實(shí)施例的用于處理視頻流的無序宏塊的方法900的流程圖。雖 然在方法900中揭示了具體步驟,但所述步驟為示范性的。也就是說,本發(fā)明的實(shí)施例完全適合于執(zhí)行各種其它步驟或圖9中所述的步驟的變型。在一個(gè)實(shí)施例中,由圖2B 的微碼引擎260執(zhí)行方法900。
在方法900的步驟910處,接收表示視頻流的幀的宏塊的壓縮數(shù)據(jù),其中至少一個(gè) 宏塊被無序接收。在步驟920處,緩沖所述壓縮數(shù)據(jù)。在一個(gè)實(shí)施例中,在微碼引擎 260的緩沖器處緩沖所述壓縮數(shù)據(jù)。在步驟930處,剖析視頻流且對(duì)視頻流執(zhí)行VLD。 應(yīng)了解,歩驟930為可選的,且視頻流剖析和VLD可通過硬件解碼器裝置執(zhí)行。應(yīng)進(jìn) 一歩了解,在歩驟930處可對(duì)視頻流執(zhí)行其它或額外預(yù)處理操作。
在步驟935處,確定視頻流是否需要環(huán)路內(nèi)去塊。在一個(gè)實(shí)施例中,壓縮數(shù)據(jù)包括 是否要對(duì)視頻流執(zhí)行環(huán)路內(nèi)去塊的指示。如果需要環(huán)路內(nèi)去塊,那么以光柵掃描次序排 序幀的宏塊,如歩驟940處所展示。在一個(gè)實(shí)施例中,在以光柵掃描次序排序宏塊之前, 緩沖幀的所有宏塊。接著,方法900前進(jìn)到步驟950?;蛘?,如果不需要環(huán)路內(nèi)去塊, 那么方法900直接前進(jìn)到歩驟950。
在歩驟950處,解碼視頻流。在一個(gè)實(shí)施例中,以光柵掃描次序解碼宏塊。在一個(gè) 實(shí)施例中,由硬件多標(biāo)準(zhǔn)視頻解碼器裝置(例如,圖3的解碼器裝置150或圖4的解碼 器裝置400)解碼視頻流。在一個(gè)實(shí)施例中,根據(jù)圖5的方法500解碼視頻流。
在步驟960處,對(duì)已解碼的宏塊執(zhí)行宏塊層級(jí)環(huán)路內(nèi)去塊。在步驟970處,存取存 儲(chǔ)器單元。在一個(gè)實(shí)施例中,將已去塊且已解碼的視頻流存儲(chǔ)在存儲(chǔ)器中以供顯示。
在步驟980處,對(duì)己解碼的幀執(zhí)行幀層級(jí)環(huán)路外后處理。在一個(gè)實(shí)施例中,環(huán)路外 后處理包括去塊和去環(huán)操作。應(yīng)了解,歩驟980為可選的。接著,方法900返回到步驟 970,在歩驟970處存取存儲(chǔ)器單元。在一個(gè)實(shí)施例中,將已去塊、已去環(huán)且已解碼的 視頻流存儲(chǔ)在存儲(chǔ)器中以供顯示。
通過在宏塊仍為壓縮數(shù)據(jù)時(shí)緩沖宏塊,微碼引擎260僅需要緩沖最多一個(gè)幀的運(yùn)行 長(zhǎng)度編碼壓縮數(shù)據(jù),其比經(jīng)解碼的視頻數(shù)據(jù)少很多。此外,緩沖壓縮宏塊還節(jié)省功率。 經(jīng)由無線電接收的視頻流還常遭受許多誤差。將位流剖析分割到微碼引擎260還具有改
進(jìn)誤差恢復(fù)的優(yōu)點(diǎn)。
視頻流的宏塊的運(yùn)行中旋轉(zhuǎn)
本發(fā)明的實(shí)施例提供一種用于在將視頻流寫入到存儲(chǔ)器之前"運(yùn)行中"旋轉(zhuǎn)視頻流 的旋轉(zhuǎn)引擎。本發(fā)明的實(shí)施例能夠通過在接收到視頻流的宏塊時(shí)將其旋轉(zhuǎn)并基于所述旋
轉(zhuǎn)在幀內(nèi)重新定位宏塊來旋轉(zhuǎn)視頻流。本發(fā)明的實(shí)施例能夠通過在將已解碼宏塊寫入到 存儲(chǔ)器之前對(duì)宏塊進(jìn)行操作來旋轉(zhuǎn)視頻流而不需要對(duì)經(jīng)解碼幀進(jìn)行第二遍處理。
在一個(gè)實(shí)施例中,本發(fā)明提供一種旋轉(zhuǎn)引擎,其經(jīng)配置以根據(jù)旋轉(zhuǎn)度來旋轉(zhuǎn)視頻流的幀的宏塊并將所述宏塊重新定位到所述幀內(nèi)的新位置,其中新位置是基于旋轉(zhuǎn)度的。 在一個(gè)實(shí)施例中,視頻解碼器裝置進(jìn)一步包括用于存儲(chǔ)宏塊以供顯示的存儲(chǔ)器。在一個(gè) 實(shí)施例中,所述旋轉(zhuǎn)引擎經(jīng)配置以在存取存儲(chǔ)器之前旋轉(zhuǎn)宏塊并在幀內(nèi)重新定位所述宏 塊。
圖IOA和10B說明根據(jù)本發(fā)明實(shí)施例的幀的宏塊的示范性旋轉(zhuǎn)的圖。盡管圖10A 和10B描述圖4的旋轉(zhuǎn)引擎450的操作,但應(yīng)了解所描述的實(shí)施例可在任何類型的視 頻解碼器裝置內(nèi)實(shí)施,且不限于使用圖4的硬件多標(biāo)準(zhǔn)視頻解碼器裝置400。舉例來說, 旋轉(zhuǎn)引擎可包括在單標(biāo)準(zhǔn)硬件解碼器或軟件解碼器內(nèi)。
參看圖IOA,圖1000說明使用圖4的旋轉(zhuǎn)引擎450來旋轉(zhuǎn)幀1010。幀1010包括 許多宏塊。宏塊1012被展示為旋轉(zhuǎn)引擎450處所接收的第一宏塊。在一個(gè)實(shí)施例中, 以光柵掃描次序接收宏塊,其中宏塊1012是所接收的第一宏塊,因?yàn)槠涫亲笊戏降暮?塊。
旋轉(zhuǎn)引擎450經(jīng)配置以旋轉(zhuǎn)宏塊1012并將宏塊1012重新定位到幀1010中的新位 置。旋轉(zhuǎn)和重新定位是基于與視頻流相關(guān)聯(lián)的旋轉(zhuǎn)度的。旋轉(zhuǎn)度指示要如何旋轉(zhuǎn)視頻流。 舉例來說,旋轉(zhuǎn)度可以是順時(shí)針方向九十度、逆時(shí)針方向九十度、 一百八十度或任何其 它旋轉(zhuǎn)度。
圖1000說明旋轉(zhuǎn)引擎450的使用順時(shí)針方向九十度旋轉(zhuǎn)度的操作。將宏塊1012 旋轉(zhuǎn)順時(shí)針方向九十度。旋轉(zhuǎn)引擎450還重新定位宏塊1012,使得已旋轉(zhuǎn)的宏塊1012 (展示為已旋轉(zhuǎn)幀1020中的宏塊1022)處于相對(duì)于幀1020的所有其它宏塊的相同位置。
本發(fā)明的實(shí)施例還提供在宏塊層級(jí)上旋轉(zhuǎn)幀,其中無序接收宏塊。參看圖IOB,圖 1050說明使用圖4的旋轉(zhuǎn)引擎450來旋轉(zhuǎn)幀1060。宏塊1062被展示為旋轉(zhuǎn)引擎450 處所接收的第一宏塊。在本實(shí)施例中,未以光柵掃描次序接收宏塊,因?yàn)楹陦K1062是 所接收的第一宏塊但不是左上方宏塊。
旋轉(zhuǎn)引擎450經(jīng)配置以旋轉(zhuǎn)宏塊1062并將宏塊1062重新定位到幀1060中的新位 置。圖1050說明旋轉(zhuǎn)引擎450的使用順時(shí)針九十度旋轉(zhuǎn)度的操作。以順時(shí)針九十度旋 轉(zhuǎn)宏塊1062。旋轉(zhuǎn)引擎450還重新定位宏塊1062,使得已旋轉(zhuǎn)的宏塊1062 (展示為已 旋轉(zhuǎn)幀1070中的宏塊1072)處于相對(duì)于幀1070的所有其它宏塊的相同位置。
圖11說明根據(jù)本發(fā)明實(shí)施例的用于旋轉(zhuǎn)幀的宏塊的方法uoo的流程圖。雖然方法 1100中揭示了具體步驟,但所述步驟為示范性的。也就是說,本發(fā)明的實(shí)施例完全適 合于執(zhí)行各種其它步驟或圖11中所述的步驟的變型。在一個(gè)實(shí)施例中,由圖4的旋轉(zhuǎn) 引擎450執(zhí)行方法1100。在步驟1110處,解碼視頻流。在一個(gè)實(shí)施例中,由硬件多標(biāo)準(zhǔn)視頻解碼器裝置(例 如,圖3的解碼器裝置150或圖4的解碼器裝置400)解碼視頻流。在一個(gè)實(shí)施例中, 根據(jù)圖5的方法500來解碼視頻流。應(yīng)了解,步驟1110為可選的,且所述視頻流在處 理之前已經(jīng)被解碼。
在步驟1120處,存取所述視頻流的旋轉(zhuǎn)度。在一個(gè)實(shí)施例中,旋轉(zhuǎn)度是以下各項(xiàng) 中的一者順時(shí)針方向九十度、逆時(shí)針方向九十度和一百八十度。然而,應(yīng)了解,可使 用任何旋轉(zhuǎn)度。在步驟1130處,存取視頻流的宏塊。
在歩驟1140處,根據(jù)旋轉(zhuǎn)度旋轉(zhuǎn)宏塊。在步驟1150處,將宏塊重新定位到幀內(nèi)的 新位置,其中新位置是基于旋轉(zhuǎn)度的。應(yīng)了解,重新定位宏塊以使得宏塊處于相對(duì)于曾 經(jīng)旋轉(zhuǎn)的幀的所有其它宏塊的相同位置。在一個(gè)實(shí)施例中,在存取存儲(chǔ)器之前執(zhí)行宏塊 的旋轉(zhuǎn)和宏塊的重新定位。
在步驟1160處,將宏塊存儲(chǔ)在存儲(chǔ)器內(nèi)以供顯示。在一個(gè)實(shí)施例中,如步驟1170 處所展示,對(duì)已解碼的宏塊執(zhí)行去塊操作。應(yīng)了解,步驟1170為可選的。此外,應(yīng)了 解步驟U70可包括執(zhí)行環(huán)路內(nèi)去塊或環(huán)路外去塊和去環(huán)。
以此方式,本發(fā)明的實(shí)施例提供一種新硬件多標(biāo)準(zhǔn)視頻解碼器裝置結(jié)構(gòu),其支持根 據(jù)多個(gè)視頻標(biāo)準(zhǔn)對(duì)視頻流進(jìn)行基于硬件的解碼。本發(fā)明的實(shí)施例能夠?yàn)樗龆鄠€(gè)視頻編 碼標(biāo)準(zhǔn)中的每一者提供實(shí)時(shí)解碼。本發(fā)明的實(shí)施例提供對(duì)已解碼視頻流的后處理操作。 本發(fā)明的一個(gè)實(shí)施例提供一種硬件解碼器裝置,其提供對(duì)使用JPEG、 MPEG-4、 H.263、 H.263+、 H.264和WMV9/VC-1視頻標(biāo)準(zhǔn)中的任一者的視頻流進(jìn)行視頻解碼。
本發(fā)明的實(shí)施例提供一種硬件多流多標(biāo)準(zhǔn)視頻解碼器裝置,其用于提供用于多個(gè)不 同視頻編碼標(biāo)準(zhǔn)的同時(shí)視頻解碼功能性。本發(fā)明的實(shí)施例能夠同時(shí)解碼多個(gè)交錯(cuò)視頻 流。
本發(fā)明的實(shí)施例提供一種視頻解碼器結(jié)構(gòu),其用于提供對(duì)視頻流進(jìn)行環(huán)路內(nèi)去塊而 不需要用于以光柵掃描次序排序宏塊的額外存儲(chǔ)器。本發(fā)明的實(shí)施例能夠在微碼引擎中 排序視頻流的宏塊。本發(fā)明的實(shí)施例能夠提供對(duì)使用多個(gè)所支持視頻標(biāo)準(zhǔn)中的一者編碼 的視頻流進(jìn)行解碼和環(huán)路外去塊和/或去環(huán)。
本發(fā)明的實(shí)施例提供一種用于在將視頻流寫入到存儲(chǔ)器之前"運(yùn)行中"旋轉(zhuǎn)視頻流 的旋轉(zhuǎn)引擎。本發(fā)明的實(shí)施例能夠通過在接收視頻流的宏塊時(shí)將其旋轉(zhuǎn)并基于所述旋轉(zhuǎn) 在幀內(nèi)重新定位宏塊來旋轉(zhuǎn)視頻流。本發(fā)明的實(shí)施例能夠通過在將已解碼的宏塊寫入到 存儲(chǔ)器之前對(duì)宏塊進(jìn)行操作來旋轉(zhuǎn)視頻流而不需要對(duì)經(jīng)解碼幀進(jìn)行第二遍處理。
出于說明和描述目的,已經(jīng)展現(xiàn)了先前對(duì)本發(fā)明具體實(shí)施例的描述。不希望所述描述為詳盡的或?qū)⒈景l(fā)明限于所揭示的精確形式,且鑒于以上教示能夠作出許多修改和變 化。選擇并描述所述實(shí)施例是為了最好地解釋本發(fā)明的原理和其實(shí)際應(yīng)用,進(jìn)而使得所 屬領(lǐng)域的其他技術(shù)人員能夠以適于所預(yù)期的特定用途的各種修改來最好地利用本發(fā)明 和各種實(shí)施例。希望本發(fā)明的范圍由所附權(quán)利要求書和其等效物界定。
權(quán)利要求
1.一種用于解碼的方法,所述方法是使用硬件多標(biāo)準(zhǔn)視頻解碼器裝置來實(shí)施的,所述方法包含存取第一視頻流,所述第一視頻流是多個(gè)視頻流中的一者;識(shí)別用于編碼所述第一視頻流的第一視頻標(biāo)準(zhǔn);確定所述硬件多標(biāo)準(zhǔn)視頻解碼器裝置的多個(gè)硬件解碼塊中的用于解碼所述第一視頻流的第一硬件解碼塊子集,其中所述多個(gè)硬件解碼塊的不同子集可操作以解碼使用不同視頻編碼標(biāo)準(zhǔn)編碼的視頻流;和使用所述第一硬件解碼塊子集解碼所述第一視頻流。
2. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含激活所述硬件解碼塊子集,使得與解 碼所述第一視頻流不相關(guān)聯(lián)的硬件解碼塊不被激活。
3. 根據(jù)權(quán)利要求1所述的方法,其中所述多個(gè)硬件解碼塊在多級(jí)宏塊層級(jí)管線內(nèi)實(shí) 施。
4. 根據(jù)權(quán)利要求3所述的方法,其進(jìn)一步包含如果在所述多級(jí)宏塊層級(jí)管線的一個(gè) 級(jí)處未接收到所述第一視頻流的數(shù)據(jù),那么停用所述級(jí)內(nèi)的硬件解碼塊。
5. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一步包含在所述解碼所述第一視頻流之后存取 存儲(chǔ)器單元。
6. 根據(jù)權(quán)利要求1所述的方法,其進(jìn)一歩包含-存取所述多個(gè)視頻流;識(shí)別用于所述多個(gè)視頻流中的視頻流的第二視頻標(biāo)準(zhǔn); 交錯(cuò)所述多個(gè)視頻流的若干部分;確定所述多個(gè)硬件解碼塊中的多個(gè)硬件解碼塊子集;和 使用所述多個(gè)硬件解碼塊子集解碼所述多個(gè)視頻流。
7. 根據(jù)權(quán)利要求6所述的方法,其中所述多個(gè)視頻流包含至少一個(gè)數(shù)字靜止圖像流 和一數(shù)字電影流。
8. 根據(jù)權(quán)利要求7所述的方法,其中所述多個(gè)視頻流的所述部分是所述數(shù)字靜止圖 像流和所述數(shù)字電影流的幀。
9. 根據(jù)權(quán)利要求6所述的方法,其中所述多個(gè)視頻流包含多個(gè)數(shù)字電影流。
10. 根據(jù)權(quán)利要求9所述的方法,其中所述多個(gè)視頻流的所述部分是所述多個(gè)數(shù)字電 影流的宏塊。
全文摘要
本發(fā)明提供一種硬件多標(biāo)準(zhǔn)視頻解碼器裝置。命令剖析器存取視頻流并識(shí)別用于編碼所述視頻流的視頻編碼標(biāo)準(zhǔn)。多個(gè)硬件解碼塊執(zhí)行與解碼所述視頻流相關(guān)聯(lián)的操作,其中所述多個(gè)硬件解碼塊的不同子集用于解碼使用不同視頻編碼標(biāo)準(zhǔn)編碼的視頻流。
文檔編號(hào)H04B1/66GK101322321SQ200680045591
公開日2008年12月10日 申請(qǐng)日期2006年12月6日 優(yōu)先權(quán)日2005年12月9日
發(fā)明者伊格修斯·B·錢德拉蘇維塔, 哈里克里什納·M·雷迪, 約萊·莫卡加塔 申請(qǐng)人:輝達(dá)公司